2012-05-30 5 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_Vertex и glVertexPointer. Вы должны использовать glVertexAttribLPointer с соответствующим общим атрибутом атрибута вершин.

Смежные вопросы