這可能是一個小白的問題,但是,我一直沒能找到一個合適的答案:OpenGL ES的多紋理alpha混合問題
我在OpenGL ES的對象(其實,紫外線映射出口來自Blender),我想對它應用兩個紋理。準確地說,我有一個像地球一樣的球體,我想添加兩個紋理(日邊和夜邊)。
我曾經想過通過alpha映射,應該有可能以編程方式淡出一個紋理,並在運行時顯示另一個紋理,以便我的地球變成對地球的真實模擬。我有它背後的數學,即創建對象的每個面的阿爾法映射不是問題。
任何提示/指針如何實現?
感謝
這可能是一個小白的問題,但是,我一直沒能找到一個合適的答案:OpenGL ES的多紋理alpha混合問題
我在OpenGL ES的對象(其實,紫外線映射出口來自Blender),我想對它應用兩個紋理。準確地說,我有一個像地球一樣的球體,我想添加兩個紋理(日邊和夜邊)。
我曾經想過通過alpha映射,應該有可能以編程方式淡出一個紋理,並在運行時顯示另一個紋理,以便我的地球變成對地球的真實模擬。我有它背後的數學,即創建對象的每個面的阿爾法映射不是問題。
任何提示/指針如何實現?
感謝
你正在尋找能與texture combiners在OpenGL ES 1.1可達到的效果。默認情況下,您啓用的每個紋理單元都設置爲將前一個舞臺的輸出與當前紋理的顏色相乘。在第一個紋理單元的情況下,前一階段只是頂點顏色。通過更改紋理組合器狀態,您可以添加,減去,插入或取樣紋理樣本的點積。
鏈接頁面上的第二個和第三個插入兩個紋理之間的示例應該與您嘗試執行的操作非常相似。如果您比較兩個示例的源代碼,則應該看到它們幾乎完全相同,除了配置爲GL_SRC2_RGB
/GL_SRC2_ALPHA
和GL_OPERAND2_RGB
/GL_OPERAND2_ALPHA
。你需要在這裏指定什麼取決於你在哪裏/如何生成兩個紋理的混合因子。通過爲GL_SRC2_*
指定GL_PRIMARY_COLOR
,您可以從頂點顏色獲取信息,這在示例中未顯示。如果您的軟件需要在不支持OpenGL ES 2.0的較舊硬件上運行,則不幸這不是一種選擇。)