質問: スケッチで作成された3DモデルをAndroid用にエクスポートする 私は単純な四角形を描画するためにアンドロイド上のOpenGLを使用して問題があります。 これは私がやったことです。 私はスケッチで単純な長方形を描きました。私は結果を使用してエクスポートしました 3Dモデルのcollada .daeファイル。私はその後、 .dae(xml)ファイルを作成し、配列に入れます。私はネイティブで配列をコピーした フォーマットをフロートバッファーに変換します。私はストライプを使って三角形を描きました モード。結果はほぼ矩形です。三角が欠けている 各表面。 ここにコードの関連部分と結果があります。 ``` public void draw(GL10 gl) { gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer); //Enable color tracking gl.glEnable(GL10.GL_COLOR_MATERIAL); for (int i=0; i<108/4; i=i+4) { myDrawColor(gl,i); gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,i,4);// mode, first, count } } ``` the result is shown here http://imgur.com/a/o3HTP
回答: 私はコードが動作している。 3つの問題がありました。 1. DrawArraysは、頂点配列を順方向に処理します。すなわち、一度に1つの要素を配列から描画し、次の要素に移動します。あなたはそれを通って前後することはできません。 2. .xmlファイル内のオフセットリストを使用して、頂点リスト内でglDrawElementsが使用される配列を作成しました。 3. オフセットの符号なしを使用する必要があります。私は整数を使っていて、うまくいかなかったのです。 ここで結果として得られるコードが動作します。問題は私のものでした。 sketchupから生成された.xmlファイルではありません。 ``` public void draw(GL10 gl) { gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer); gl.glColorPointer(4, GL10.GL_FLOAT, 0, mColorsBuffer); gl.glEnable(GL10.GL_COLOR_MATERIAL); // Enable color tracking gl.glEnable(GL10.GL_COLOR_MATERIAL); gl.glDrawElements(GL10.GL_TRIANGLES, myoffsets.length, GL10.GL_UNSIGNED_SHORT, mIndicesBuffer);//mode, count, type, indices } ```