我正在尝试从6个整数顶点生成OpenGL图元。即6个整数值将生成4个自定义line_strip
。
首先,我尝试将6整数数组从“顶点”移动到“着色器”,然后为此做一个简单的测试,如下所示。
这是顶点着色器的代码:
#version 330
layout (location = 0) in int inVertex[6];
out int outVertex[6];
void main()
{
outVertex = inVertex;
}
对于几何着色器,它对一段进行硬编码:
#version 330
in int vertex[6];
layout (line_strip, max_vertices = 2) out;
void main()
{
gl_Position = vec4(-0.2, -0.2, 0.0, 1.0);
EmitVertex();
gl_Position = vec4(-0.2 +0.4, -0.2, 0.0, 1.0);
EmitVertex();
EndPrimitive();
}
但是我出现了空白屏幕。
如果我将顶点着色器修改为此:
#version 330
layout (location = 0) in int inVertex[6];
out int outVertex[6];
void main()
{
//outVertex = inVertex;
gl_Position = vec4(0.0, 0.0, 0.0, 0.0);
}
和几何着色器对此:
#version 330
//in int candle[6];
layout (points) in;
layout (line_strip, max_vertices = 2) out;
void main()
{
gl_Position = vec4(-0.2, -0.2, 0.0, 1.0);
EmitVertex();
gl_Position = vec4(-0.2 +0.4, -0.2, 0.0, 1.0);
EmitVertex();
EndPrimitive();
}
然后我在屏幕上看到了该段:
是否必须使用gl_Position?如果是这样,如何将其他变量一起传递给gl_Position以丰富我的顶点?
顶点着色器在顶点上运行(足够多)。它们与顶点数据具有1:1的对应关系:对于渲染操作中的每个顶点,您将获得一个输出顶点。
顶点着色器为每个顶点执行,因此输入和输出不是数组,它们是单个属性: