Been getting a headache with some 2d Opengl coordinates and putting
them in a direct buffer.
I have a basic square defined as such
static float[] Coords = new float[] {
-0.5f,-0.5f,
0.5f,-0.5f,
0.5f,0.5f,
-0.5f,0.5f,
};
static FloatBuffer VertexBuffer;
This Works, but no guarantee of direct buffer, exception thrown when
indirect buffer is used
static {
VertexBuffer = FloatBuffer.wrap(Coords);
}
This runs, no segfault or anything, and when I iterate through the
buffer the size and values seem exactly the same (8 elements, ordered
just as the array). What happens though is that my draw() function
draws nothing, it works one way, but doesn't work the other way. I use
Direct Buffers in a lot of my other geometry. I have to get direct
buffers working or I know that my software might not be reliable.
static {
ByteBuffer bb =
ByteBuffer.allocateDirect(Coords.length*(Float.SIZE/
Byte.SIZE));
VertexBuffer = bb.asFloatBuffer();
for (int i=0; i< Coords.length; i++) {
VertexBuffer.put(i, Coords[i]);
}
}
My Drawing function is as follows, if it helps.
public void draw (GL10 gl) {
gl.glPushMatrix();
gl.glTranslatef(x,y,0);
gl.glScalef(width,height,0);
gl.glEnable(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glTexCoordPointer(2,GL10.GL_FLOAT,0, MapBuffer);
gl.glFrontFace(GL10.GL_CW);
gl.glVertexPointer(2,GL10.GL_FLOAT, 0, VertexBuffer);
gl.glBindTexture(GL10.GL_TEXTURE_2D, Textures[0]);
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 4);
gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
gl.glDisable(GL10.GL_VERTEX_ARRAY);
gl.glDisable(GL10.GL_COLOR_ARRAY);
gl.glPopMatrix();
}
--
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