gpt4 book ai didi

opengl - 点的直通几何着色器

转载 作者:行者123 更新时间:2023-12-01 13:00:29 24 4
gpt4 key购买 nike

我在为点编写简单的直通几何着色器时遇到了一些问题。我认为它应该是这样的:

#version 330
precision highp float;

layout (points) in;
layout (points) out;

void main(void)
{
gl_Position = gl_in[0].gl_Position;
EmitVertex();
EndPrimitive();
}

当我没有指定几何着色器时,我在屏幕上显示了一堆点,但是当我尝试将此着色器链接到我的着色器程序时,没有显示任何点,也没有报告任何错误。

我正在使用 C# 和 OpenTK,但我认为这不是问题所在。

编辑:人们要求其他着色器,尽管我确实在没有使用几何着色器的情况下测试了这些着色器,并且它们在没有几何着色器的情况下也能正常工作。

顶点着色器:

void main()
{
gl_FrontColor = gl_Color;
gl_Position = ftransform();
}

片段着色器:

void main()
{
gl_FragColor = gl_Color;
}

最佳答案

我不太确定(没有几何着色器的实际经验),但您不必指定输出顶点的最大数量。在你的情况下它只是一个,所以试试

layout (points, max_vertices=1) out;

也许着色器编译成功是因为您仍然可以通过 API 指定顶点数(我认为至少在兼容性方面)。

编辑:您使用内置的可变gl_FrontColor(并在片段着色器中读取gl_Color),但随后在您不使用的几何着色器中不要将它传播到片段着色器(它不会自动传播)。

这给我们带来了另一个问题。您将新语法(如 gl_in)与旧的弃用语法(如 ftransform 和内置颜色变化)混合使用。也许这不是一个好主意,在这种情况下你遇到了问题,因为 gl_in 没有 gl_Colorgl_FrontColor 成员,如果我没记错的话。所以最好的办法是使用你自己的颜色变量作为顶点和几何着色器的 out 变量以及几何和片段着色器的 in 变量(但请记住in 必须是几何着色器中的数组)。

关于opengl - 点的直通几何着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6349656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com