试图将潜水艇部分浸没在水中

时间:2017-05-04 02:49:59

标签: opengl graphics jogl

所以我正在做一个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处。所以此时的潜艇应该在水线之上。但这就是我所得到的。enter image description here

你可能会说,我对JOGL很新,任何帮助都会受到大力赞赏。

编辑:这就是我想要实现的目标

enter image description here

1 个答案:

答案 0 :(得分:2)

当您禁用深度测试时,您绘制到屏幕上的任何内容都将被绘制在已经存在的内容之上。这就是为什么水被放在潜艇上面的原因。

gl.glDisable(GL2.GL_DEPTH_TEST);

解决方案:不要禁用深度测试。