2

3D グラフィック プロジェクトに取り組んでいるとき、立方体を描かなければならないという問題に出くわすことがよくあります。つまり、これまでのところ、すべての頂点、法線、および場合によってはテクスチャ座標を指定する以外に、描画するためのより良い方法を見つけていません。立方体の規則性を考えると、もっと良い方法があるはずだという気持ちを揺るがすことはできません。

それで、このようなものよりも簡単な方法はありますか:

    putNormal(geometryBuffer, 0, 0, 1);
    putVertex(geometryBuffer, x, y, 1);
    putNormal(geometryBuffer, 0, 0, 1);
    putVertex(geometryBuffer, x + 1, y, 1);
    putNormal(geometryBuffer, 0, 0, 1);
    putVertex(geometryBuffer, x + 1, y + 1, 1);
    putNormal(geometryBuffer, 0, 0, 1);
    putVertex(geometryBuffer, x, y + 1, 1);

    putNormal(geometryBuffer, -1, 0, 0);
    putVertex(geometryBuffer, x, y, 0);
    putNormal(geometryBuffer, -1, 0, 0);
    putVertex(geometryBuffer, x + 1, y, 0);
    putNormal(geometryBuffer, -1, 0, 0);
    putVertex(geometryBuffer, x + 1, y, 1);
    putNormal(geometryBuffer, -1, 0, 0);
    putVertex(geometryBuffer, x, y, 1);

    //and so on..
4

2 に答える 2

2

openGL ユーティリティ ライブラリ (GLU) は、球体、NURBS、二次曲線 (これらは立方体ではありません) などのより複雑な形状のためのいくつかのユーティリティを提供しますが、立方体は高速であるにもかかわらず、プログラマーは面を別様にレイアウトし、別のアイデアを持つ傾向があります。各頂点にバインドするものの数についてなので、考えられるほど完全に明白ではありません。

詳細については、http ://www.glprogramming.com/red/chapter11.html をご覧ください。

于 2013-05-18T11:52:03.253 に答える
0

次のように、パッケージ内glutSolidCubeのクラスのメソッドを使用します。GLUTcom.jogamp.opengl.util.gl2

 GLUT glut = new GLUT();
 glut.glutSolidCube(size);
于 2013-05-18T13:21:02.920 に答える