Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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着色器的外观如何?适用于330版_Glsl_Shader - Fatal编程技术网

默认GLSL着色器的外观如何?适用于330版

默认GLSL着色器的外观如何?适用于330版,glsl,shader,Glsl,Shader,对于版本#330,默认的顶点、碎片和几何体GLSL着色器是什么样子的 我将通过Cg编译器使用#version 330GLSL version 3.30 NVIDIA,因为这是我的图形卡所支持的 对于默认着色器,我的意思是,当着色器程序关闭时,着色器执行与图形卡完全相同的操作 我找不到关于#version 330的好例子。我整天都在谷歌上搜索。不确定术语“默认着色器”是否被称为“普通”或“基本”,以及这是否就是我找不到它的原因 对330版书籍的任何推荐,或者到330版简易初学者教程的链接,都将非常

对于版本#330,默认的顶点、碎片和几何体GLSL着色器是什么样子的

我将通过Cg编译器使用
#version 330
GLSL version 3.30 NVIDIA,因为这是我的图形卡所支持的

对于默认着色器,我的意思是,当着色器程序关闭时,着色器执行与图形卡完全相同的操作

我找不到关于
#version 330
的好例子。我整天都在谷歌上搜索。不确定术语“默认着色器”是否被称为“普通”或“基本”,以及这是否就是我找不到它的原因

对330版书籍的任何推荐,或者到330版简易初学者教程的链接,都将非常好

#版本110中的一个普通顶点着色器示例执行默认顶点变换

#version 110

void main()
{
    gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
}
#版本110中的一个普通片段着色器示例将颜色变为红色

#version 110

void main()
{
    gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
OpenGL没有“默认”着色器。这看起来像是您想要的一个非常简单的着色器示例,该着色器将顶点变换为剪辑空间,并为其提供颜色,因此您可以:

顶点着色器:

#版本330
vec4垂直中的布局(位置=0);
均匀mat4投影;
统一mat4视图;
统一mat4模型;
void main()
{
gl_位置=投影*视图*模型*垂直;
}
片段着色器:

#版本330
out vec4 fragColor;
void main()
{
fragColor=vec4(1.0,0.0,0.0,1.0);
}
核心OpenGL 3.3配置文件放弃了对许多旧的固定函数的支持,比如矩阵堆栈。您需要处理自己的矩阵并将其发送到着色器。没有F转换,gl_位置几乎是唯一有效的gl_*变量

虽然GLBindAttributeLocation未被弃用,但定义顶点属性位置的首选方法是通过GLSL中的“布局(位置=x)”

在顶点着色器中,“属性”现在为“内”,“变化”现在为“外”。在片段着色器中,“变化”现在为“In”,而“gl_FragColor”由“out”变量定义。我相信gl_FragColor仍然有效,但现在可以使用out变量来定义颜色


非常好,教核心OpenGL和GLSL 3.30,我建议您使用它来帮助您了解更多关于GLSL的知识。还请记住,是您的朋友。

从技术角度讲,您不能在core GL 3.3中关闭着色器,因为在中删除了不使用着色器进行渲染的功能。OpenGL Wiki维护了一个(其中一个是我的),但没有一个拥有直接映射到固定功能的着色器。无论如何,这可能是学习基于着色器的编程最糟糕的方法。谢谢,我还看了《OpenGL 4.0着色语言烹饪书》,有一个类似的颜色三角形示例为我澄清了一切。我很困惑,所有的基本的/琐碎的事情都被弃用了,感觉就像有人在我下面挖出了我的手腕。