我想用着色器模仿OpenGL glTexEnv的行爲。這是相當複雜的功能,但應該可行。唯一的問題是該函數根據紋理基本內部格式的不同而工作。我如何從紋理中獲取這些信息?紋理基礎的內部格式與glTexImage2D函數一起給出,所以我必須將它保存到某個變量中,並根據綁定的紋理將其傳遞給着色器,或者使用OpenGL以某種方式得到它?OpenGL紋理基礎內部格式到着色器
0
A
回答
0
看來紋理混合值不是內置制服的一部分。
http://www.opengl.org/sdk/libs/OpenSceneGraph/glsl_quickref.pdf
一般有用於模仿的FFP的行爲方式有兩種:
- 一個大的着色器,將值傳遞給着色器...
- 創建着色器,爲每個行爲和內部格式例如,根據需要動態調整。
我更喜歡第二種方式,因爲它不會導致一個大而緩慢的全局着色器。 取而代之的是,你會得到小的特定着色器。
此外:這個常見問題被稱爲「組合着色器爆炸」問題。
0
不,紋理基礎內部格式不直接用於着色器。如果你不想自己存儲它,你可以隨時要求GL的價值把它傳遞給你的着色器。
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &outFormat)`
相關問題
- 1. 的OpenGL ES着色器多紋理
- 2. 紋理中的OpenGL片段着色器
- 3. OpenGL着色器忽略紋理
- 4. iPhone模擬器:OpenGL ES:內部紋理格式
- 5. OpenGL:將FBO的深度紋理綁定到計算着色器
- 6. OpenGL傳遞打包的紋理座標到着色器
- 7. THREE.JS着色器紋理
- 8. iPhone openGL ES 2.0紋理 - 爲片段着色器設置多個紋理
- 9. OpenGL GL_BGR不適用於紋理內部格式
- 10. OpenGL着色器?
- 11. 使用OpenGL ES 2.0着色器的平滑紋理線條
- 12. Opengl幾何着色器整數紋理獲取失敗
- 13. 片段着色器中的OpenGL紋理黑
- 14. OpenGL ES:使用屏幕作爲着色器的輸入紋理
- 15. 試圖在OpenGL中使用着色器紋理球體
- 16. 帶有多個着色器程序的OpenGL多紋理
- 17. OpenGL紋理格式,爲OpenGL創建圖像/紋理數據
- 18. OpenGL ES 2.0 - 如何僅使用着色器繪製紋理的一部分?
- 19. OpenGL,Shader Model 3.3紋理:黑色紋理?
- 20. OpenGL ES:如何用顏色着色紋理
- 21. openGL紋理只顯示紋理的紅色部分
- 22. OpenGL着色基本計算
- 23. OpenGL VBO着色器
- 24. 紋理上的片段着色器
- 25. GL_POINTS着色器中的紋理樣本
- 26. 三JS着色器庫 - 多紋理
- 27. 與紋理的香椿着色器
- 28. 片段着色器:從紋理
- 29. 在着色器中傳遞紋理
- 30. OpenGL CubeMapping黑色紋理
內部格式如何影響着色器? – Luca 2010-04-08 19:54:19
@Luca你可能有一個紋理,例如只有一個通道(假設只有Red值,編碼在32位上)。現在,如果着色器至少需要兩個通道(例如紅色和綠色),則在提供單通道紋理時可能會遇到問題。 – wil 2013-02-28 02:43:27