用CG代替GLSL是否可行?

时间:2013-01-20 01:50:43

标签: opengl glsl shader cg

http://http.developer.nvidia.com/Cg/TessellationControlShader.html

我对CG有一些疑问。

CG支持哪些OpenGL版本?在他们的网站上他们说

  

Opengl功能要求

     

OpenGL 1.0

这对我来说有点奇怪。对我来说,这意味着我需要至少使用OpenGL 1.0来使用CG中的所有OpenGL功能。所有新的OpenGL功能都缺失了吗?

计算着色器似乎也缺失了

  

GeometryShader,PixelShader,TessellationEvaluationShader,   VertexShader,FragmentProgram,GeometryProgram,   TessellationControlProgram,TessellationEvaluationProgram,   VertexProgram

CG现在是替代GLSL 4.x的可行替代方案吗?我可以在CG中编写所有可以在GLSL 4.3中编写的着色器吗?

3 个答案:

答案 0 :(得分:4)

  

CG现在是替代GLSL 4.x的可行替代方案吗?我可以在CG中编写所有可以在GLSL 4.3中编写的着色器吗?

没有。虽然一些OpenGL 4.x功能(例如曲面细分)从Cg 3.1开始暴露,但其他功能却没有。

Cg 3.1(及其OpenGL名称)中值得注意的缺失功能包括:

  • 计算着色器
  • 原子计数器
  • 着色器可写存储块(着色器存储块)
  • 着色器可写纹理(图像加载/存储)
  • 运行时着色器功能选择(着色器子程序)

一般来说,Cg往往比最新的OpenGL版本落后两三年。

答案 1 :(得分:4)

Cg has been end-of-lifed by NVidia so it will not be developed going forward

  

Cg Toolkit是一款不再受到积极开发或支持的传统NVIDIA工具包。 Cg 3.1是我们的最新版本,虽然我们继续向开发人员提供它,但我们不建议在新的开发项目中使用它,因为可能不支持未来的硬件功能。

所以我认为最好的答案是否。

答案 2 :(得分:3)

我很确定 OpenGL-1.0 是一个错字。 DirectX-11与 OpenGL-4.0 的功能级别有关。现在看一下Numpad上 4 下面的键是什么。

事实上,没有任何一款NVidia GPU只支持OpenGL配置文件,只支持OpenGL-1.0。 OpenGL-1.0的历史可以追溯到20年前。


  

CG现在是替代GLSL 4.x的可行替代方案吗?

好吧,我个人没有看到使用Cg的原因,除非您想要使用一组常用着色器支持OpenGL和DirectX。但是为什么要进行跨API兼容?如果您的目标是可移植性,那么OpenGL将胜过DirectX。

恕我直言,继续使用Cg的主要原因是,如果您必须维护已使用Cg的旧产品。请记住,在OpenGL使用高级着色语言之前很久就会引入Cg。

  

我可以在CG中编写所有可以在GLSL 4.3中编写的着色器吗?