OpenGL ES:将单个浮点数传递给顶点着色器?

时间:2016-12-04 12:09:41

标签: ios opengl-es 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;
}

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

Reto Koradi得到了答案!在编译着色器以正确绑定它时,需要事先调用glBindAttribLocation。现在一切正常!

此外,在主持人要求之前,我不能接受他的答案作为正确答案,因为这是对我原来问题的评论。