glsl通过几何着色器问题

时间:2013-04-17 04:01:18

标签: opengl glsl geometry-shader

此时我有一个工作顶点和片段着色器。如果我完全删除了几何着色器,那么我会得到每个顶点都有颜色的预期立方体。但是添加了几何着色器后,根本就没有几何体显示出来。

顶点着色器:

#version 330 core

layout(location = 0) in vec3 vertexPosition_modelspace;
layout(location = 1) in vec3 vertexColor;

out VertexData
{
    vec3 color;
} vertex;

uniform mat4 MVP;

void main(){    

    gl_Position =  MVP * vec4(vertexPosition_modelspace,1); 
    vertex.color = vertexColor;
}

几何着色器:

#version 330

precision highp float;

in VertexData
{
    vec3 color;
} vertex[];

out vec3 fragmentColor;

layout (triangles) in;
layout (triangle_strip) out;
layout (max_vertices = 3) out;

void main(void)
{
    for (int i = 0; i > gl_in.length(); i++) {

        gl_Position = gl_in[i].gl_Position;
        fragmentColor = vertex[i].color;
        EmitVertex();
    }

    EndPrimitive();
}

Fragment Shader:

#version 330 core

in vec3 fragmentColor;

out vec3 color;

void main(){
    color = fragmentColor; 
}

我的显卡支持OpenGL 3.3。而且,正如我所说。它没有几何着色器。作为数据,我传递两个GLfloat数组,其中每个都是顶点或顶点颜色。

1 个答案:

答案 0 :(得分:6)

for (int i = 0; i > gl_in.length(); i++)   //note the '>'

这个循环条件从一开始就是假的,所以你不会发射任何顶点。您最有可能的意思是i < gl_in.length()