我想用着色器模仿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片段着色器
- 2. OpenGL着色器 - 重疊多個紋理
- 3. OpenGL着色器忽略紋理
- 4. OpenGl碎片着色器紋理速度
- 5. 的OpenGL ES着色器多紋理
- 6. 紋理內存tex2D基礎
- 7. iPhone模擬器:OpenGL ES:內部紋理格式
- 8. XNA - UV紋理或着色器紋理?
- 9. OpenGL傳遞打包的紋理座標到着色器
- 10. OpenGL:將FBO的深度紋理綁定到計算着色器
- 11. 內部紋理格式
- 12. THREE.JS着色器紋理
- 13. C++着色器,HLSL,如何發送到着色器,紋理? 「sampler2d」?
- 14. 基於紋理像素着色平面
- 15. Android上的照明+紋理着色器OpenGL ES(和Cardboard SDK)不顯示紋理
- 16. iPhone openGL ES 2.0紋理 - 爲片段着色器設置多個紋理
- 17. OpenGL GL_BGR不適用於紋理內部格式
- 18. OpenGL 2紋理內部格式GL_RGB8I,GL_RGB32UI等
- 19. OpenGL着色器?
- 20. 紋理映射和照明頂點着色器ErrorJava OpenGL
- 21. 片段着色器中的OpenGL紋理黑
- 22. 如何在opengl和cg着色器中使用3d紋理?
- 23. Opengl幾何着色器整數紋理獲取失敗
- 24. 使用OpenGL ES 2.0着色器的平滑紋理線條
- 25. OpenGL ES 2.0 SL從片段着色器寫入紋理
- 26. 試圖在OpenGL中使用着色器紋理球體
- 27. 帶有多個着色器程序的OpenGL多紋理
- 28. OpenGL ES:使用屏幕作爲着色器的輸入紋理
- 29. OpenGL - 頂點或片段着色器中的紋理映射?
- 30. 通過着色器的OpenGL投影紋理映射
內部格式如何影響着色器? – Luca 2010-04-08 19:54:19
@Luca你可能有一個紋理,例如只有一個通道(假設只有Red值,編碼在32位上)。現在,如果着色器至少需要兩個通道(例如紅色和綠色),則在提供單通道紋理時可能會遇到問題。 – wil 2013-02-28 02:43:27