OpenGL ES:将单个浮点数传递给顶点着色器?
OpenGL ES: Pass single float to vertex shader?
我正在尝试将单个浮点数传递给我的顶点着色器,以便我可以将 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 找到了答案!您需要在编译着色器时预先调用 glBindAttribLocation 以正确绑定它。现在一切正常!
此外,在版主要求我之前,我不能接受他的回答作为正确答案,因为它是对我原来问题的评论。
我正在尝试将单个浮点数传递给我的顶点着色器,以便我可以将 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 找到了答案!您需要在编译着色器时预先调用 glBindAttribLocation 以正确绑定它。现在一切正常!
此外,在版主要求我之前,我不能接受他的回答作为正确答案,因为它是对我原来问题的评论。