我希望它在y轴上为0,这就是我所说的平地。

我正在用android制作游戏地板,我正在使用opengl es1。我有一个正方形要用作地板,因此显然我希望它与地面平整。我希望y轴为0,但是每当将其设置为y轴时,屏幕上就不会显示正方形。但是,如果我将所有y轴都设置为0.1,则该正方形将从屏幕中心悬停到右上角,而不是平放在地面上。

这是顶点数组:

float w = 10;
float h = 10;
float vertices[] ={
    0f, 0.1f, 0f,
    w, 0.1f, 0f,
    0f, 0.1f, -h,
    w,  0.1f, -h
};


然后将其存储在普通的float缓冲区中:

ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
    vbb.order(ByteOrder.nativeOrder());
    mFVertexBuffer = vbb.asFloatBuffer();
    mFVertexBuffer.put(vertices);
    mFVertexBuffer.position(0);


然后涉及到绘制:

gl.glDrawElements( GL10.GL_TRIANGLES,2*3, GL10.GL_UNSIGNED_BYTE, mIndexBuffer);


这正在建立平截头体,我认为这不会有所作为,但是...

public void onSurfaceChanged(GL10 gl, int width, int height) {
    gl.glViewport(0, 0, width, height);
    float aspectRatio;
    float zNear =.1f;
    float zFar = 1000f;
    float fieldOfView = 1f;
    float size;
    gl.glEnable(GL10.GL_NORMALIZE);
    aspectRatio=(float)width/(float)height;
    gl.glMatrixMode(GL10.GL_PROJECTION);
    size = zNear * (float)(Math.tan((double)(fieldOfView/2.0f)));
    gl.glFrustumf(-size, size, -size /aspectRatio,
            size /aspectRatio, zNear, zFar);
    gl.glMatrixMode(GL10.GL_MODELVIEW);
}


为什么不平坦?为什么在y轴为0时消失?
我正努力实现这一目标:


白色部分为地板。

最佳答案

您的物体“消失了”,因为您的物体没有高度。

就像您将无限薄的纸平放在眼前一样。如果纸张在您的视野上方或下方,则可以看到它,但是如果将它与眼睛完全平行,则看不到它。

对我来说,目前尚不清楚您期望它是什么样子。您希望该地板如何看,是从上方还是从某个角度看?您要它从屏幕的中心填充到底部吗?也许一个模型图像确实可以帮助您解释您要实现的目标。

07-27 16:25