41得票4回答
'printf' in GLSL

在C语言中,我可以像这样调试代码: fprintf(stderr, "blah: %f", some_var); 在GLSL中,有没有办法让我在顶点或片段着色器中仅输出一个值?我不在乎速度,只想输出这个值。理想情况下,我希望有以下设置: 正常状态 = 正常运行GLSL着色器 按下键盘...

41得票3回答
GLSL多个着色器程序VS统一变量开关

我正在开发一个着色器管理架构,需要请教一些高级人士的问题。 1. 每个材质一个着色器程序 => 为程序中使用的每个材质创建一个着色器程序。 可能的缺点: 考虑到每个对象都可能拥有自己的材质,这会涉及大量glUseProgram调用。 需要创建大量的着色器程序对象。 比#2更复杂的架构。...

39得票2回答
如何将多个纹理传递给单个着色器?

我正在使用freeglut、GLEW 和DevIL 来 渲染一个带纹理的茶壶, 并使用顶点和片段着色器。在Ubuntu 14.04上,这一切都在OpenGL 2.0和GLSL 1.2上正常工作。 现在,我想为茶壶应用一个凹凸贴图。我的讲师显然不亲自泡茶,所以他不知道它们应该是光滑的。无论如何...

39得票1回答
将变量传递给OpenGL GLSL着色器

我正在编写一个使用GLSL着色器在纹理上执行变换的iPhone应用程序,但我在传递变量给我的GLSL着色器方面遇到了一些困难。 我已经阅读到可以让着色器读取部分OpenGL状态(我只需要只读访问此变量),但是我不确定这种交换该如何进行。 简而言之,我正在尝试获取在片段着色器之外创建的浮点值...

39得票7回答
如何获取片段的当前颜色?

我试图理解GLSL中的着色器,找到了一些有用的资源和教程,但对于应该是基础且微不足道的东西,我总是遇到了障碍:我的片段着色器如何检索当前片段的颜色? 你通过gl_FragColor = whatever来设置最终颜色,但显然那是一个输出值。你如何获取输入的原始颜色,以便进行计算?那必须在某个...

38得票3回答
GLSL中的顶点着色器属性映射

我正在编写一个带有GLSL着色器的小型渲染引擎: 每个网格(或子网格)都有多个顶点流(例如位置、法线、纹理、切线等),它们被合并到一个大的VBO中,并带有一个MaterialID。 每种材质都有一组纹理和属性(例如高光颜色、漫反射颜色、颜色纹理、法线贴图等) 然后我有一个GLSL着色器,其中包...

38得票13回答
WebGL - 是否有其他方法嵌入 HTML 中的着色器?

在WebGL中使用GLSL着色器的流行方式似乎是将它们嵌入到主html文件中。顶点着色器和片段着色器被嵌入到类似于以下标记中: <script id="shader-fs" type="x-shader/x-fragment"> 这是我在Mozilla开发者网络页面的WebG...

38得票3回答
归一化一个值是什么意思?

我目前正在学习OpenGL中的光照,其中涉及到GLSL中的一个函数normalize。根据OpenGL文档所述,该函数“计算两个向量的标准化乘积”。然而,仍然没有解释“标准化”是什么意思。我已经尝试在Google上寻找有关标准化乘积的信息,但似乎找不到任何相关内容。能否有人解释一下标准化的含义...

37得票4回答
在Eclipse中添加GLSL语法高亮显示

有没有一个 Eclipse 插件可以支持 GLSL 文件?我在谷歌上找到了一些古老的东西,但是无法使其正常工作。

36得票3回答
在OpenGL引擎中组织GLSL着色器

哪种方法更好? 使用一个拥有大量uniform变量的着色器程序来指定要使用的光源或要进行的映射(例如,我需要一个网格进行视差映射,另一个进行视差/高光映射)。我会创建一个缓存的uniform变量列表,用于惰性传输,并为每个下一个网格更改一些uniform变量,如果需要的话。 为每种需要的情...