stl ファイルを読み取り、OpenGL ES 2.0 で表示するアプリケーションを作成しています。ハードコーディングされ、 onSurfaceCreated() メソッドで三角形リストに追加された三角形を表示することに成功しました。私が抱えている問題は、stl ファイルから三角形オブジェクトのリストを作成して描画しようとするときです。私が知る限り、頂点の座標はすべて有効で、適切な形式になっています。私はいつも件名のエラーを受け取ります。この問題のデバッグに問題があり、どうすればよいかわかりません。以下は、問題が発生する三角形クラスのコードのセクションです。具体的には、エラーはコード行にあります
mMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
MyRenderer.checkGlError("glGetUniformLocation");
public void draw(float[] mvpMatrix) {
// Add program to OpenGL environment
GLES20.glUseProgram(mProgram);
// get handle to vertex shader's vPosition member
mPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");
// Enable a handle to the facet vertices
GLES20.glEnableVertexAttribArray(mPositionHandle);
// Prepare the triangle coordinate data
GLES20.glVertexAttribPointer(mPositionHandle, COORDS_PER_VERTEX,
GLES20.GL_FLOAT, false,
vertexStride, vertexBuffer);
// get handle to fragment shader's vColor member
mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor");
// Set color for drawing the facet
GLES20.glUniform4fv(mColorHandle, 1, color, 0);
// get handle to shape's transformation matrix
mMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
MyRenderer.checkGlError("glGetUniformLocation");
// Apply the projection and view transformation
GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mvpMatrix, 0);
MyRenderer.checkGlError("glUniformMatrix4fv");
// Draw the facet
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vertexCount);
//If edge mode
//GLES20.glUniform4fv(mColorHandle, 1, edgeColor, 0);
//GLES20.glLineWidth(2.0f);
//GLES20.glDrawArrays(GLES20.GL_LINE_STRIP, 0, vertexCount);
// Disable vertex array
GLES20.glDisableVertexAttribArray(mPositionHandle);
}
このような状況をデバッグする方法についてのアイデアはありますか? また、プログラムの実行中に描画されるオブジェクトを追加/削除する最良の方法については、やや不明確です。オブジェクトのリストを保持し、onDraw でそれらをループするという私の考えは大丈夫ですか?