0
私はアンドロイドでopenglを理解しようとしています。これは私のレンダーとキューブクラスです。問題はデバイス上でキューブが表示されていないことです。誰も私の理由を伝えることができますか?誰でも私の間違いを訂正できますか?すべてと私の英語OpenGlESは何も描画しません
のため申し訳ありませんおかげでレンダリング:
public class Prova implements GLSurfaceView.Renderer {
int wi,he;
public Prova(int wid,int hei){
this.wi=wid;
this.he=hei;
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
gl.glViewport(0,0,wi,he);
gl.glClearColor(255,255,255,0);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
Cube cube= new Cube(gl);
cube.draw(gl);
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
}
@Override
public void onDrawFrame(GL10 gl) {
}
}
キューブ:
public class Cube
{
private ByteBuffer byteBuffer;
private FloatBuffer floatBuffer;
private FloatBuffer colorBuffer;
float[] buffer={
0.5f,0.5f,0f,
-0.5f,0.5f,0f,
0.5f,-0.5f,0f,
-0.5f,-0.5f,0f,
0.5f,0.5f,-1f,
-0.5f,0.5f,-1f,
0.5f,-0.5f,-1f,
-0.5f,-0.5f,-1f
};
float[] color={
1f,0f,0f,0f,
1f,0f,0f,0f,
1f,0f,0f,0f,
1f,0f,0f,0f,
1f,0f,0f,0f,
1f,0f,0f,0f,
1f,0f,0f,0f,
1f,0f,0f,0f,
};
public Cube(GL10 gl10)
{
byteBuffer=ByteBuffer.allocateDirect(4*buffer.length);
byteBuffer.order(ByteOrder.nativeOrder());
floatBuffer= byteBuffer.asFloatBuffer();
floatBuffer.put(buffer);
floatBuffer.position(0);
byteBuffer=ByteBuffer.allocateDirect(4*color.length);
byteBuffer.order(ByteOrder.nativeOrder());
colorBuffer= byteBuffer.asFloatBuffer();
colorBuffer.put(color);
colorBuffer.position(0);
}
public void draw(GL10 gl10)
{
gl10.glVertexPointer(3, GL10.GL_FLOAT,0,floatBuffer);
gl10.glColorPointer(4,GL10.GL_FLOAT,0,colorBuffer);
gl10.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl10.glEnableClientState(GL10.GL_COLOR_ARRAY);
gl10.glDrawElements(GL10.GL_TRIANGLE_STRIP,36, GL10.GL_UNSIGNED_BYTE,floatBuffer);
gl10.glDisableClientState(GL10.GL_VERTEX_ARRAY);
}
}
あなたの 'onDrawFrame'メソッドはemtpyですか? – BDL
はい、ただし描画時に頂点を描画せず、サーフェスを作成した場合 –