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のとき、それは消えるのですか?私はこれを達成しようとしています:
白い部分が床です。