Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将传统GLSL着色器更新为现代GLSL_Glsl_Shader - Fatal编程技术网

将传统GLSL着色器更新为现代GLSL

将传统GLSL着色器更新为现代GLSL,glsl,shader,Glsl,Shader,我正在尝试更新我拥有的一个旧的GLSL 120着色器,尽管它的大部分都很简单,但以下是我遇到的问题: 顶点着色器:gl_FrontSecondaryColor,gl_FrontColor 片段着色器:gl\u颜色,gl\u第二颜色 问题是,对于3.x及以上版本,我还没有找到足够的替代方案 例如: gl\u FragColor的替代品是创建 layout (location = 0) out vec4 fragColor; 但对于上述另一种情况,具体如何处理 gl_FrontSecondaryC

我正在尝试更新我拥有的一个旧的GLSL 120着色器,尽管它的大部分都很简单,但以下是我遇到的问题:

顶点着色器:gl_FrontSecondaryColor,gl_FrontColor

片段着色器:gl\u颜色,gl\u第二颜色

问题是,对于3.x及以上版本,我还没有找到足够的替代方案

例如: gl\u FragColor的替代品是创建

layout (location = 0) out vec4 fragColor;
但对于上述另一种情况,具体如何处理

gl_FrontSecondaryColor,gl_FrontColor

这些只是顶点着色器输出。它们在任何方面都不特别

gl_颜色,gl_第二颜色

这些是神奇的片段着色器,可以在着色器中有效地执行条件逻辑。他们进行正面/背面测试,然后获取合适类型的正面或背面颜色

因此,如果要进行双面渲染,则必须自己进行测试。VS将输出一个前后值,FS将同时输入这两个值,但根据三角形的朝向选择要使用的值。指示当前面是正面还是背面。您可以使用它来选择要使用的输入值


如果你不做双面渲染。。。你不在乎。你只需要一个VS输出和一个FS输入。

OpenGL图形管道已经改变了很多,看看@MrKiwi是的,它已经改变了很多,但我指的是现代等价物是什么,就像你不再使用gl_FragColor、gl_ProjectViewMatrix等。相反,您可以创建自己的制服和变量。