2010-11-14 3 views
2

Я пытаюсь получить простой проход через геометрический шейдер для работы в Mac OS X 10.6. Код компилируется и связывается без проблем, но по какой-то причине геометрия не рисуется на экране. Вот мой шейдерный код:OpenGL Geometry Shader Mac OS X

#version 120 
#extension GL_EXT_geometry_shader4: enable 

void main() 
{ 
    gl_Position = gl_PositionIn[0]; 
    EmitVertex(); 

    EndPrimitive(); 
} 

Если бы кто-нибудь мог помочь, я был бы признателен.

ответ

2

Так, как выясняется, проблема не была в коде шейдера вообще. Очевидно, что при использовании версии 120 в геометрии шейдеров, вы должны установить входные и выходные тип следующим образом:

glProgramParameteriEXT(shaderProgramID, GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_POINTS); 
glProgramParameteriEXT(shaderProgramID, GL_GEOMETRY_VERTICES_OUT_EXT, GL_POINTS); 

После этого все работало отлично.

0

Геометрический шейдер работает на всех примитивах. Похоже, он подходит только для очков. Если вы не проходите в точках, вам нужно обработать все вершины gl_VerticesIn (count).

+0

Возможный план состоит в том, чтобы процесс шейдера превратил одну точку в более сложную геометрию. Прямо сейчас я прохожу только через отдельные точки. – LandonSchropp

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