GLSL穿透几何着色器问题

4

目前,我有一个工作正常的顶点着色器和片段着色器。如果完全删除几何着色器,则会得到每个顶点颜色的预期立方体。但是添加了几何着色器后,没有任何几何图形显示。

顶点着色器:

#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();
}

片段着色器:

#version 330 core

in vec3 fragmentColor;

out vec3 color;

void main(){
    color = fragmentColor; 
}

据我所知,我的显卡支持OpenGL 3.3版本。同时,我想说的是,在没有几何着色器的情况下,它也能正常工作。作为数据,我传入了两个GLfloat数组,分别代表顶点或顶点颜色。


当然首先要问的是:着色器是否编译成功并且程序链接成功?如果没有,信息日志显示了什么? - Christian Rau
1个回答

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接