在.cg文件中编写的OpenGL着色器代码与在vsh/fsh文件中编写的OpenGL着色器代码有什么区别?



我是一个OpenGL ES 2.0初学者,我不明白为什么不同类型的代码着色器。特别是.cg.vsh/.fsh的差异

Cg是由NVIDIA拥有和运行的着色语言。GLSLOpenGL的着色语言。Cg的工作原理是根据代表GLSL版本和着色器阶段类型的"配置文件"编译成某种形式的GLSL

如果你正在使用OpenGL ES,你应该忽略Cg。在OpenGL ES中不能使用Cg,因为ES版本的GLSL具有Cg无法满足的要求。所以如果你看到一些教程使用Cg,忽略它。

扩展名是完全无关的。使用任何对你来说最清楚的扩展;OpenGL不读取文件,所以它是由你来馈送着色字符串给glView。

如果您正在使用NvidiaCG工具包,您通常使用.cg作为文件扩展名,
但如果你正在使用GLSL着色器,你可以使用.vsh, .fsh, .frag, .vert.glsl

最新更新