不同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 ?