Hi,
just wanted to drop by to tell you about a nice little bug i just
encountered on my droid. Here's some sample code:
@Override
public void render(Application app)
{
GL11 gl = app.getGraphics().getGL11();
gl.glViewport( 0, 0, app.getGraphics().getWidth(),
app.getGraphics().getHeight() );
gl.glClearColor( 0.7f, 0.7f, 0.7f, 1 );
gl.glClear( GL11.GL_COLOR_BUFFER_BIT );
gl.glBindBuffer( GL11.GL_ARRAY_BUFFER, vboHandle );
gl.glEnableClientState( GL11.GL_VERTEX_ARRAY );
gl.glEnableClientState( GL11.GL_COLOR_ARRAY );
gl.glVertexPointer( 3, GL11.GL_FLOAT, 6 * 4, 0 );
gl.glColorPointer( 3, GL11.GL_FLOAT, 6 * 4, 3 * 4 );
gl.glDrawArrays( GL11.GL_TRIANGLES, 0, 3 );
}
@Override
public void setup(Application app)
{
ByteBuffer buffer = ByteBuffer.allocateDirect( 3 * 6 * 4 );
buffer.order(ByteOrder.nativeOrder());
FloatBuffer vertices = buffer.asFloatBuffer();
vertices.put( new float[] {
-0.5f, -0.5f, 0, 1, 0, 0,
0.5f, -0.5f, 0, 0, 1, 0,
0.0f, 0.5f, 0, 0, 0, 1,
});
vertices.flip();
GL11 gl = app.getGraphics().getGL11();
int[] handle = new int[1];
gl.glGenBuffers( 1, handle, 0 );
vboHandle = handle[0];
gl.glBindBuffer( GL11.GL_ARRAY_BUFFER, vboHandle );
gl.glBufferData( GL11.GL_ARRAY_BUFFER, 3 * 6 * 4, vertices,
GL11.GL_STATIC_DRAW );
gl.glBindBuffer( GL11.GL_ARRAY_BUFFER, 0 );
}
In the setup method i create a FloatBuffer holding three vertices,
each having 3 coordinates (x,y,z) and 3 color components (r,g,b). Next
i generate a vertex buffer object to store the vertex data in. As you
can see the vertex data is interleaved, so everything goes into a
single VBO.
In the render method i set the viewport and clear the screen first.
Next i bind the VBO and set the vertex and color pointer to start at
the correct positions in the interleaved vertex data in the VBO. This
code works perfectly fine on the desktop.
On my Droid it crashes horribly in glDrawArrays with a segfault. I
triple-checked everything i did with the OpenGL ES specs and i came to
the conclusion that i'm not doing anything wrong (also, as i said it
works on the desktop). By accident i changed the number of color
components from 3 to 4 (r,g,b,a) and finally it worked.
This seems like a bug in the Motorola Droid PowerVR drivers. Can
anyone confirm this?
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en