我使用相同的C++代碼渲染相同的場景,一次渲染到Windows上的本機OpenGL以及一次使用Emscripten渲染WebGL。場景中的所有內容看起來都完全一樣,除非我使用alpha!= 1.0進行渲染。所不同的是這樣的: OpenGL和WebGL之間的Alpha渲染區別
藍色立方體的顏色是(0.0, 0.0, 1.0, 0.5)
用於渲染立方體的着色器什麼都不做,除了繪製的顏色。
右邊是它與OpenGL的外觀,是預期的結果,只是半透明的藍色。左邊是Emscripten + WebGL的外觀。它看起來像它呈現的顏色實際上是(0.5, 0.5, 1.0, 0.5)
我使用的混合功能是標準:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
是否有某種差異與WebGL的阿爾法?什麼可能導致這種情況發生?
...接近題外話?請解釋 – shoosh
它可能是一個預乘與非預乘α的問題嗎? –
@WacławJasper我想過這個問題,但我真的不知道怎樣......左乘阿爾法將使它更暗,亮不,不是嗎? – shoosh