如果我创建一个双精度顶点缓冲区,例如:
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>
答案 0 :(得分:3)
你没有。至少,不是这样。
如果要使用OpenGL 4.x +的能力将双精度值读入着色器,那么<em>必须使用通用顶点属性。您不能再使用旧的固定功能gl_Vertex
和glVertexPointer
。您必须使用glVertexAttribLPointer
,并使用适当的通用顶点属性索引。