我可以使用从顶点着色器到几何着色器的6个int数组吗?

问题描述 投票:1回答:2

我正在尝试从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();

}

但是我出现了空白屏幕。

enter image description here

如果我将顶点着色器修改为此:

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

}

然后我在屏幕上看到了该段:

enter image description here

是否必须使用gl_Position?如果是这样,如何将其他变量一起传递给gl_Position以丰富我的顶点?

opengl glsl shader vertex-shader geometry-shader
2个回答
3
投票

顶点着色器在顶点上运行(足够多)。它们与顶点数据具有1:1的对应关系:对于渲染操作中的每个顶点,您将获得一个输出顶点。


1
投票

顶点着色器为每个顶点执行,因此输入和输出不是数组,它们是单个属性:

© www.soinside.com 2019 - 2024. All rights reserved.