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

问题描述 投票:0回答:1

我正在尝试将单个浮点传递给我的顶点着色器,以便我可以将 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;
}
ios opengl-es vertex-shader
1个回答
0
投票

Reto Koradi 给出了答案!编译shader时需要提前调用glBindAttribLocation才能正确绑定。

© www.soinside.com 2019 - 2024. All rights reserved.