GLSL 1.2 Геометрия шейдеров, изменяющихся в vec4, является незаконной? - PullRequest
3 голосов
/ 04 января 2012

Я пытаюсь выяснить, что-то не так в драйверах моей видеокарты или просто в моем коде. Является ли следующее незаконным?

#version 120 
#extension GL_EXT_gpu_shader4 : enable
#extension GL_EXT_geometry_shader4 : enable

varying in vec4 something; // <------- this

void main() 
{ 
    for(int i = 0; i < gl_VerticesIn; ++i) 
    { 

        gl_Position = gl_PositionIn[i]; 

        EmitVertex(); 
    }
    EndPrimitive();
}

Это сбой на моем ноутбуке OSX 10.7 (NVIDIA 9400m / 9600m), и мне любопытно, а) Это действительно незаконно в GLSL 1.2 или это просто моя реализация? Есть ли какой-нибудь флаг, позволяющий передавать vec4 в геометрический шейдер в GLSL 1.2?

для записи: да, я знаю, что это намного проще в 1.3+, но я застрял с 1.2 на данный момент. Спасибо!

1 Ответ

4 голосов
/ 04 января 2012

Входными данными для геометрического шейдера являются массивы , а не отдельные значения. Это потому, что GS принимает примитив, который может состоять из нескольких вершин. * * * * * * * * * * * * * * * * * * * * * * * * * * Это массив, как и ваши пользовательские входные данные

...