1

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

白い部分が床です。

4

1 に答える 1

2

オブジェクトには高さがないため、オブジェクトは「消える」状​​態です。

まるで目の前に無限に薄い紙を平らに持っているようなものです。紙が視野の上または下にある場合は見えますが、目と正確に平行に置くと見えません。

あなたがそれがどのように見えると期待するかは私には本当に明確ではありません。この床をどのように見せたいですか、上から見ますか、それとも斜めから見ますか?画面の中央から下に向かって塗りつぶしますか?たぶん、モックアップ画像はあなたが達成しようとしていることを説明するのに本当に役立つかもしれません。

于 2012-10-29T17:22:32.237 に答える