我试图将单个浮点数传递给我的顶点着色器,因此我可以将gl_PointSize设置为浮点数。但是,它没有工作,我认为这是由于我使用glVertexAttribPointer:
glVertexAttribPointer(1, 1, GLenum(GL_FLOAT), GLboolean(GL_FALSE), GLsizei(MemoryLayout<Vertex>.size), BUFFER_OFFSET(2 * MemoryLayout<Float>.size))
我需要缓冲区偏移量,因为我之前还使用glVertexAttribPointer设置位置:
glVertexAttribPointer(0, 2, GLenum(GL_FLOAT), GLboolean(GL_FALSE), GLsizei(MemoryLayout<Vertex>.size), BUFFER_OFFSET(0))
这是我的顶点结构:
struct Vertex {
var x, y, size: Float
}
这是顶点着色器:
attribute vec4 Position;
attribute float Size; // I tried vec4, no luck
void main(void) {
gl_PointSize = Size;
gl_Position = Position;
}
任何帮助将不胜感激!
答案 0 :(得分:0)
Reto Koradi得到了答案!在编译着色器以正确绑定它时,需要事先调用glBindAttribLocation。现在一切正常!
此外,在主持人要求之前,我不能接受他的答案作为正确答案,因为这是对我原来问题的评论。