一連の連続する unsigned int を属性として 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);
が、頂点シェーダーを入れると、何かを描画するはずだと思います。