2013-01-20 35 views
5

http://http.developer.nvidia.com/Cg/TessellationControlShader.html用CG代替GLSL是否可行?

我有一些關於CG的問題。

什麼是OpenGL版本CG支持?在其網站上他們的狀態

OpenGL功能要求

的OpenGL 1.0

這似乎有點奇怪我。對我而言,這意味着我需要至少使用OpenGL 1.0來使用CG中的所有OpenGL功能。因此,所有新的OpenGL功能都失蹤了?

另外,計算着色器似乎缺少

幾何着色器,PixelShader,TessellationEvaluationShader, VertexShader,FragmentProgram,GeometryProgram, TessellationControlProgram,TessellationEvaluationProgram, VertexProgram

是CG現在一個可行的替代方案取代GLSL 4.x?我可以使用GLSL 4.3編寫CG中所有着色器嗎?

回答

3

我很確定OpenGL-1.0是一個錯字。 DirectX-11的功能級別大概是OpenGL-4.0。現在看看數字鍵盤上的下面有什麼鍵。實際上,沒有一款NVidia GPU只支持OpenGL-1.0的OpenGL配置文件。 OpenGL-1.0可追溯到20年前。


是CG現在一個可行的替代方案,以取代GLSL 4.x的?

好吧,我個人沒有看到爲什麼要使用Cg,除非你想用普通着色器支持OpenGL和DirectX。但是,爲什麼你想跨API兼容?如果你的目標是可移植性,那麼OpenGL明顯勝過DirectX。

恕我直言,繼續使用Cg的主要原因是,如果您必須維護一個已經使用Cg的遺留產品。請記住Cg早在OpenGL擁有高級着色語言之前就已經推出了。

我可以在GLSL 4.3中編寫所有可以寫在CG中的着色器嗎?

是的。

+0

我同意,只是想補充一點,這不是沒有道理的有窗戶一切的後端的DirectX和OpenGL。事情是,在windows中的opengl驅動程序大多是非常糟糕的..這是一個讓我在開發中多次陷入困境的東西。 – fscan

+0

謝謝datenwolf。我通常會使用GLSL,但我開始學習unity3d(遊戲引擎),它使用cg作爲着色器。因爲Unity在windows和opengl下使用directx(Currenlty只支持opengl2.1)。我是初學者,我一次只想關注一種語言,所以我可以熟練使用CG,而不必擔心學習GLSL。 (至少現在) –

+1

@fscan:只有Windows的英特爾GPU驅動程序是恕我直言subpar OpenGL質量。 NVidia和AMD/ATI都在Windows中提供體面的OpenGL質量和性能。當然,你必須安裝從他們的網站獲得的驅動程序。微軟Windows附帶的驅動程序已經癱瘓。 – datenwolf

4

CG現在是替代GLSL 4.x的可行替代方案嗎?我可以使用GLSL 4.3編寫CG中所有着色器嗎?

不會。雖然一些OpenGL 4.x功能(如曲面細分)從Cg 3.1開始暴露,但其他OpenGL 4.x功能(例如曲面細分)不是。在CG 3.1(和它們的OpenGL名稱)

值得注意的缺少的功能包括:

  • 計算着色
  • 原子計數器
  • 着色器可寫存儲塊(着色器存儲塊)
  • 着色器可寫紋理(圖像加載/存儲)
  • 運行時着色器功能選擇(着色器子程序)

一般來說,Cg往往滯後於最新的OpenGL版本兩三年。

+1

有趣的事情已經改變。曾經是(〜2002),使用高級語言訪問OpenGL中NV硬件的尖端着色器硬件功能的唯一方法是通過Cg。那麼當時GL比Cg滯後2-3年,這就是使用Cg的原因。它肯定會擊敗編寫彙編語言着色器。 –

4

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

的CG工具包是一個傳統的NVIDIA工具不再正在積極開發或支持。 Cg 3.1是我們的最後一個版本,儘管我們會繼續向開發人員提供,但我們不建議在新開發項目中使用它,因爲未來的硬件功能可能不受支持。

所以我認爲最好的答案會是第