3

たとえば、倍精度の頂点バッファーを作成すると、次のようになります。

GLuint vertBuffer, spanBuffer, spanCount, patchSize, program; // already setup
glUseProgram (program);
glEnableClientState (GL_VERTEX_ARRAY);
glBindBuffer (GL_ARRAY_BUFFER, vertBuffer);
glVertexPointer (3, GL_DOUBLE, 0, 0);
glPatchParameteri (GL_PATCH_VERTICES, patchSize);
glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, spanBuffer);
glDrawElements (GL_PATCHES,  spanCount * patchSize, GL_UNSIGNED_INT, 0);

頂点シェーダーで倍精度データにアクセスするにはどうすればよいですか? 私はこれを行うことができるはずですか?

// GLSL VERTEX SHADER
#version 410

in dvec4 gl_Vertex;

void main ()
{
<snip>
4

1 に答える 1

3

あなたはそうしない。少なくとも、そうではありません。

OpenGL 4.x +の機能を使用して倍精度値をシェーダーに読み込む場合は、汎用頂点属性を使用する必要があります。古い固定機能gl_Vertexなどは使用できなくなりglVertexPointerました。glVertexAttribLPointer適切な汎用頂点属性インデックスとともに、を使用する必要があります。

于 2012-05-30T20:46:34.010 に答える