着色器语言之间是否存在重大差异?

时间:2010-06-25 17:49:11

标签: opengl graphics directx glsl hlsl

我目前正在学习GLSL。看起来,一旦你学习了一种着色器语言,学习其中一种语言并不会太困难。是否类似于学习像wxWidgets这样的小部件工具集然后切换到Qt?一旦你了解了一个小部件工具集中发生的事情,另一个工具集会做类似的事情,因为它们最终在某些时候做了几乎相同的事情?从一种着色器语言到另一种着色器语言有什么经验?

5 个答案:

答案 0 :(得分:6)

Cg和HLSL几乎相同(内置函数名称相同)。 GLSL看起来和感觉有点不同(即mix而不是lerp,使用类似main的函数),但整体转换仍然很容易。唯一的区别在于细节和各自的API(即矩阵存储顺序之类的东西)。

在着色语言之间切换比在GUI工具包之间切换更容易......

答案 1 :(得分:4)

HLSL与GLSL有一些差异。没有什么不同于我读过的东西。那里有一些翻译工具。有一个SourceForge项目HLSL To GLSL tool。另外,我相信NVidia Cg toolkit可以生成HLSL或GLSL。

答案 2 :(得分:1)

在我稍微有限的经验中,我同意这里的每个人他们非常非常相似,并且在它们之间切换不是问题。但是,请注意,就像大多数OpenGL / DirectX冲突的情况一样,我发现HLSl有一些更好的便利功能,使其使用起来更有趣。我在这里谈论小事,比如饱和。然而,除了微小的结构差异,如绕过输入,基本概念是百分之百相同。

享受!着色器非常有趣。

答案 3 :(得分:1)

你说得对 - GLSL / HLSL / Cg着色语言是C编程语言的子集,所以它们非常相似。

答案 4 :(得分:-3)

directx 3d的起源在于opengl。微软将opengl api重新编程到某一点,因此语言应该类似。