標籤:

不同GLSL版本之間的區別?

從1.10到4.50,最好每個版本一句話概括


一句話五塊錢


基本版本對應和變化,與ES 和 D3D 簡單對應如下,希望能有幫助

OpenGL GLSL

2.0 110

2.1 120

3.0 130

3.1 140

3.2 150

3.3 330

4.0 400

4.1 410

4.2 420

4.3 430

4.5 450

----------------------------------------------

OpenGL 與 D3D 的大致對應關係

OpenGL GLSL Direct3D Shader Model

2.1 120 9.0 2.0

3.3 330 10.0 4.0

4.2 420 11.0 5.0

-----------------------------------------------------

GL ES OpenGL D3D 功能描述

1.0 1.3 低於DX9 固定管線

1.1 1.5 低於DX9 固定管線

2.0 2.0 DX9 開始可編程管線,支持GLSL

3.0 3.0 DX10與DX9之間

OpenGL著色語言變化歷史,著色器的增加從2.0 開始...

OpenGL 2.0

從2.0開始,OpenGL 發生了重大的改變,最大的改變就是增加了自己的著色語言,版本為1.00,區別於之前使用的是固定管線,使用了新的版本號,從這個版本開始也不再限制紋理大小必須是2的冪次數。

OpenGL 3.0

編程模式被分為3種:

?兼容模式:傳統模式。

?核心模式:完全新的純可編程流水線模式,但是兼容廢棄特性。(API不再兼容舊的)

?核心向前兼容模式:完全不兼容廢棄特性,其它和核心模式相同。

OpenGL 3.2

增加了幾何著色器Geometry,存在於頂點著色器和像素著色器之間,Geometry的輸入為:點、線和三角形,輸出點為點、線帶和三角形帶,雖然從根本上來說都是頂點的處理,但是進入頂點著色器的是一次一個的頂點,而進入幾何著色器的是一次一批的頂點。

OpenGL 3.3

這個版本的shader model 4.0的OpenGL的最終版本,不再需要使用查詢輸入變數attribute的location,可以使用layout去指定位置,片元著色器中的內建變數也棄用了,取而代之的是自定義的out變數。

OpenGL 4.0

增加細分曲面著色器Tessellation,位置在Vertex 之後,Geometry 之前;增加最新的Shader Language 4.00的subroutine功能,能夠在在運行時刻不需要切換著色器,可以避免重新編譯,使用if判斷選擇不同功能等舊的方法,可以降低了切換著色器程序所帶來的巨大開銷。

OpenGL 4.3

增加可以用於並行計算的computer shader,可減輕CPU的計算負載;

uniform也可以使用layout進行指定。

OpenGL 4.5

增加直接狀態訪問DSA功能:直接訪問和修改OpenGL對象而無需綁定OpenGL對象(bind操作,例如glBindBuffer),提高應用程序和中間件的效率。

清除控制:應用程序可以在渲染環境切換之前控制清除Flush掛起的命令,用以提升在多線程應用程序中的性能。

與OpenGL ES 3.1 API和著色器兼容:開啟桌面平台上方便開發和執行最新的OpenGL ES應用程序。


樓主是不是問不同opengl版本。。。


推薦閱讀:

OpenGL ES2 對象樹繪製與 VBO組織問題?
現代OpenGL是怎麼繪製曲面的?
請問OpenGL的的頂點數據中position必須與color一一對應嗎?
如何正確理解 opengl 的 vao ?

TAG:OpenGL | OpenGLES |