我试图将一堆连续的无符号整数作为属性传递给我的 GLSL 着色器。
到目前为止,我想出了
s_number = glGetAttribLocation(shader, "number");
numberData = new GLuint[dotAmount];
for (GLuint i = 0; i < dotAmount; i++) {
numberData[i] = i;
}
glGenBuffers(1, &vertBuf);
glBindBuffer(GL_ARRAY_BUFFER, vertBuf);
glBufferData(
GL_ARRAY_BUFFER,
sizeof(dotAmount),
numberData,
GL_STATIC_DRAW
);
渲染函数是
glUseProgram(shader);
[..]
glEnableVertexAttribArray(s_number);
glBindBuffer(GL_ARRAY_BUFFER, vertBuf);
glVertexAttribPointer(
s_number,
1,
GL_UNSIGNED_INT,
GL_FALSE,
0,
BUFFER_OFFSET(0)
);
glDrawArrays(GL_POINTS, 0, dotAmount);
我尝试像这样在顶点着色器中使用数字:
attribute uint number;
(名称“vertBuf”实际上有点误导,因为它不是我想要传递的顶点数据)我使用的是 OpenGL 3 和着色器版本 1.3。
我想要实现的是,我希望着色器被执行dotAmount
多次。定位是在着色器中以数学方式完成的。但我得到的只是一个空白屏幕......
我很确定问题不在于着色器。我想绘制点,如果我放入gl_Position = vec4(0.0, 0.0, 0.0, 0.0);
顶点着色器,我认为它应该绘制一些东西。