1
因此,我正在做一個JOGL項目,在該項目中,我正在繪製一艘可以升起/下沉並在地圖中移動的潛艇 - 注意這張地圖只是一個巨大的quad_strip。無論如何,我有下面的代碼進行混合。試圖將潛水艇部分淹沒在水中
gl.glBlendFunc(GL2.GL_SRC_ALPHA, GL2.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL2.GL_BLEND);
gl.glDisable(GL2.GL_DEPTH_TEST);
gl.glColor4f(0.949f, 0.816f, 0.588f, 1f);
gridFloor.display(drawable);
submarine.setHeight(subHeight);
submarine.display(drawable);
gl.glColor4f(0.298f, 0.7333f, 0.909f, 0.04f);
gridSea.display(drawable);
gl.glFlush();
注意:gridfloor,submarine和gridsquare對象都是GLEventListners。
所以這一切都很好,很棒。當它打印時,我已經定位了潛艇在y = 2和y = 1.5時的海平面。所以這時的潛艇應該在水線之上。但這是我所取而代之的。
正如你可能會說,我對JOGL很陌生,任何幫助將大量讚賞。
編輯:這就是我想實現
老師引用 - 「通過啓用混合和禁用深度測試,使海面 表面半透明。」 -_-謝謝你,很喜歡 –
@RyanTurnbull:難道你的老師不會理解混合,在某個時刻和它一起苦苦掙扎,並且認爲加入了深度測試功能的加成並不會顯得完全錯誤?無論如何,正確的方法來渲染透明的東西是通過*深度測試__enabled __ *和*排序*混合幾何*遠到近*。 – datenwolf