2012-05-30 54 views
3

如果我创建了一个双精度顶点缓冲,例如:GLSL双精度顶点缓冲

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> 

回答

3

你不知道。至少,不是那样。

如果您要使用OpenGL 4.x +的双精度值读入着色器,那么您必须使用使用通用顶点属性。您不能再使用旧的固定功能gl_VertexglVertexPointer。您必须使用glVertexAttribLPointer,并使用适当的通用顶点属性索引。