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

Reply via email to