2

Android OpenGL の Mesh (3dmax) を ByteBuffer にロードする方法は?

例:

float triangleCoords[] = {
    -0.5f, -0.25f      , 0, // 0,
 0.5f, -0.25f      , 0, // 1,
 0.0f, 0.559016994f, 0  // 2,
};

ByteBuffer vbb = ByteBuffer.allocateDirect(triangleCoords.length * _4_FLOAT_LENGTH);
vbb.order(ByteOrder.nativeOrder());
triangleVB = vbb.asFloatBuffer();
triangleVB.put(triangleCoords);
triangleVB.position(0);

配列や Coords のようなメッシュをロードする方法、またはこのジョブのライブラリを必要とする方法

4

1 に答える 1

0

基本的には、ファイルからデータ構造 (コード スニペットの頂点配列など) にデータをロードし、レンダリングのためにこれらを OpenGL に提供します (glDrawArraysたとえば、あなたの場合)。これは、Android、Windows、Plan9、OpenGL、または Direct3D で作業する場合でも、通常は同じ手順です。実装の詳細のみが重要であるため、この質問は少し広範です。

この 3DS ファイル形式の説明(質問にヒントがあります)を見ることができます。これらのファイルをロードするためのチュートリアルへのリンクもあります。3DS フォーマットは非常に読みやすいバイナリ フォーマットですが、最初はWavefront OBJ フォーマットを調べることもできます。これは、ほぼすべてのモデリング ソフトウェアがエクスポートできる単純な ASCII ファイル フォーマットです (ただし、これは 3DS にも当てはまります)。これらの形式を一連の単純な頂点配列にロードすると、数行のコードに要約されるはずです。

これらはあなたを始めるはずです。特定のプラットフォームでこれらのメッシュ読み込み機能を実装する際に特定の問題が発生した場合は、お気軽に、より具体的な質問をしてください。

于 2011-09-07T16:34:15.980 に答える