所以我正在做一个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很新,任何帮助都会受到大力赞赏。
编辑:这就是我想要实现的目标
答案 0 :(得分:2)
当您禁用深度测试时,您绘制到屏幕上的任何内容都将被绘制在已经存在的内容之上。这就是为什么水被放在潜艇上面的原因。
gl.glDisable(GL2.GL_DEPTH_TEST);
解决方案:不要禁用深度测试。