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 以正确绑定它。现在一切正常!

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