为什么我的地板不平坦?

时间:2012-10-29 17:01:19

标签: java android opengl-es

我希望它在y轴上为0,这就是我的意思是平坦到地面。

我正在使用机器人制作游戏的地板,我正在使用opengl 1.我有一个正在使用的正方形作为地板,所以很明显我希望它平放在地面上。我希望y轴为0,但每当我将其设置为此时,方块不在屏幕上。但如果我将所有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
};

然后我将它存储在普通的浮动缓冲区中:

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时,它会消失吗? 我想要实现这个目标:

白色部分在地板上。

1 个答案:

答案 0 :(得分:2)

你的物体正在“消失”,因为你的物体没有高度。

就像你拿着一张无限薄的纸片在你眼前一样平坦。如果纸张高于或低于您的视野,那么您可以看到它,但如果您将它与您的眼睛完全平行,您将无法看到它。

我不太清楚你期望它看起来像什么。你觉得这个地板看起来怎么样,你会从上面看,还是从一个角度看?你想让它从屏幕中心填充到底部吗?也许一个模型图像可以真正帮助解释你想要实现的目标。