5

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 中编写的着色器吗?

4

3 回答 3

4

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

不会。虽然某些 OpenGL 4.x 功能(例如曲面细分)从 Cg 3.1 开始公开,但其他功能则没有。

Cg 3.1(及其 OpenGL 名称)中明显缺失的功能包括:

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

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

于 2013-11-30T19:23:07.020 回答
4

Cg 已被 NVidia 淘汰,因此不会继续开发

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

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

于 2014-07-30T21:22:53.953 回答
3

我很确定OpenGL-1.0是一个错字。DirectX-11 是关于您使用OpenGL-4.0获得的功能级别。现在看看小键盘上4正下方是什么键。

事实上,没有一个 NVidia GPU 只支持低至 OpenGL-1.0 的 OpenGL 配置文件。OpenGL-1.0 可以追溯到 20 年前。


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

好吧,我个人看不出使用 Cg 的理由,除非你想用一组通用的着色器同时支持 OpenGL 和 DirectX。但是你为什么想要跨 API 兼容性呢?如果您的目标是可移植性,那么 OpenGL 显然胜过 DirectX。

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

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

是的。

于 2013-01-20T02:24:59.677 回答