【问题标题】:glsl double-precision vertex bufferglsl 双精度顶点缓冲区
【发布时间】:2012-05-30 20:30:32
【问题描述】:

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

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>

【问题讨论】:

    标签: opengl glsl opengl-4


    【解决方案1】:

    你没有。至少,不是那样。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多