我希望它在 y 轴上为 0,这就是我所说的平地。
我正在用 android 制作游戏的地板,我使用的是 opengl es 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时,它会消失?我正在努力实现这一目标:
白色部分是地板。