OpenGL和OpenGL Shading Language的關係?

時間 2021-06-01 02:21:04

1樓:freeze

你想要在螢幕上繪製一些圖形,你需要用到opengl。可以理解為一些可以直接跟顯示卡互動的API。這是基礎。

當你想要嚴格控制,你想畫什麼圖形的時候,並且控制好影象的各種各樣的效果,演算法,就需要用到 Shader了。

起初,沒有opengl shader。只有一堆操作顯示卡的API(opengl),怎麼利用opengl繪製圖形,有一套固定的流程,每一步都按照規劃設定好就可以了,只是提交的資料不同,設定的引數不同(狀態機)。我們把這一流程叫做 「固定管線」,而這些流程背後,有一些書籍,來解釋這些API和計算機影象學的原理(經典的是opengl紅寶石和藍寶書)。

畢竟API的介面有限,加上人們對於影象的控制力度變得越來越強,硬體,軟體,演算法各方面也在逐步發展。慢慢的,人們把固定管線當中,那些 「固定的一些API呼叫」 切分了出來,採用了另外一種方式(shader)來代替這些。

最早被替換的是 「頂點變換」 和 「畫素操作」 部分,也就是現在嘗說的 vertex shader 和 fragment shader(在DX中叫pixel shader)。

再後來,各種各樣的shader 就出來了(例如 gs , ts hs ds 等等),但是換湯不換藥,圖形渲染的大原理依然沒有發生實質性的變化。

所以,想要理解好shader,先理解渲染管線。

還有比較重要是理解opengl的 「狀態機」 概念。

2樓:每羊楊

OpenGL Shading Language(GLSL)屬於GPU程式設計,是OpenGL固定管線衍生出的可程式設計管線,可以隨你的需要給片段和頂點實現固定管線無法完成的操作。因為GLSL在GPU中運作所以叫GPU程式設計

3樓:沈劍鋒

OpenGL是乙個跨平台的2D/3D的圖形影象程式設計的API,換句話說就是你想要在電腦螢幕上畫乙個場景,那麼你就要用OpenGL這個語言來描述你的想法,這樣計算機聽懂了之後就由相關的硬體(顯示卡)幫你吧影象畫出來。

而shading language是著色器語言,有很多種,OpenGL當中一般使用GLSL這種,它是用來修改顯示卡工作方式步驟的,決定了顯示卡在理解了你的意思之後如何幫你把圖形畫出來。

打個簡單的比方,如果OpenGL是溝通你和計算機的鍵盤的話,那麼GLSL就是用來編寫鍵盤驅動的語言,預設情況下,你打乙個字母X,螢幕上就出現乙個X,你也可以用GLSL來改寫鍵盤的driver,讓你打乙個X,螢幕上出現乙個Y,甚至是一堆亂七八糟的其他東西。

OpenGL預設視點問題?

Maxim 如果你一開始繪製的是2D三角形,並且沒有進行任何的model view projection矩陣變換,那麼z分量其實作用不大。顯示在視窗上的座標都會被標量化為0到1之間。而鏡頭這個時候就是整個視窗,因為z在2D裡無法繪製,所以繪製的是x和y。你更改z分量,不管怎麼變,三角形在視窗中的大小...

學習opengl還有前途嗎?

只學OpenGL還不夠吧,顯示層面可以往引擎方面走,圖形,影象,遊戲等各領域,到了後面之後,依賴的是資料結構,演算法,設計模式,數學這些東西了。如果已經對GL比較熟了 會用 就繼續用,刷各種圖形學演算法,做各種渲染效果,畢竟GL或者Vulkan都是工具,演算法和數學才是靈魂,有趁手的工具不用反而浪費...

什麼型別的人需要學習 OpenGL?

塗鵬 對dx沒有研究,opengl還算熟悉。但就opengl和dx效率而言本人還是有發言權,工作需要在windows上做過opengl和dx11 native層的opengl es 的translator,在安兔兔3D場景渲染測試中,opengl 跑分在多數電腦上占上風。當然,不懂版本的驅動極大影響...