我正在尝试将单个浮点传递给我的顶点着色器,以便我可以将 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;
}
Reto Koradi 给出了答案!编译shader时需要提前调用glBindAttribLocation才能正确绑定。