1

我想将 3D OpenGL 游戏的用户界面元素放置在尽可能靠近近剪裁平面的位置,而不会被截断。例如,有了这个声明

Matrix.frustumM(mRenderer.mProjectionMatrix, 0, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 32.0f);

至少在理论上,图像在 z 值为 -1.0 时开始渲染。在实践中,我发现我必须在其后面稍微放置一个对象才能显示抽奖,并且数量取决于用户设备。例如,要绘制一个填充屏幕的正方形,我可能会使用:

final float[] squarePositionInterfaceData = {
            -1.0f, 1.0f, -1.0078125f,
            -1.0f, -1.0f, -1.0078125f,
            1.0f, 1.0f, -1.0078125f,
            -1.0f, -1.0f, -1.0078125f,
            1.0f, -1.0f, -1.0078125f,
            1.0f, 1.0f, -1.0078125f
};

这实际上画得稍微小一些,因为它不在 -1.0f 的近 z 平面上。我发现如果我使用 -1.0 作为 z 位置,但是,对象根本不绘制。我还发现对于 Matrix.orthoM 声明,我必须将对象稍微向后推,尽管这些声明没有失真,因为在调整绘制大小时没有考虑距离。

是否有用于将对象放置在尽可能靠近近 z 剪裁平面的标准距离,而不会被绝大多数用户设备截断?

4

0 回答 0