Yes, indeed. I mixed that up with the desktop GL specs at http://www.opengl.org/sdk/docs/man/xhtml/glColorPointer.xml. Now that's embarassing :)
On 14 Mrz., 19:07, Lance Nanek <[email protected]> wrote: > Doesn't the spec say it has to be 4? > > Fromhttp://www.khronos.org/opengles/sdk/1.1/docs/man/glColorPointer.xml > : > > > size > > Specifies the number of components per color. Must > > be 4. The initial value is 4. > > Fromhttp://java.sun.com/javame/reference/apis/jsr239/javax/microedition/k... > : > > > size specifies the number of components per color, and must be 4. > > On Mar 14, 12:47 pm, Mario Zechner <[email protected]> wrote: > > > 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

