I’m sorry, but I’ve been trying to find an example of how to do 2D textures with JOGL and just keep failing. My code looks like this:
In reshape:
gl.glViewport(0, 0, width, height); // Reset The Current Viewport
gl.glMatrixMode(GL2.GL_PROJECTION); // Select The Projection Matrix
gl.glLoadIdentity(); // Reset The Projection Matrix
// hard coded values - this needs to change based on screen size
gl.glOrthof(0, GL_WIDTH, GL_HEIGHT, 0, -1, 1);
gl.glMatrixMode(GL2.GL_MODELVIEW); // Select The Modelview Matrix
gl.glLoadIdentity(); // Reset The Modelview Matrix
In draw:
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
gl.glClear(GL2.GL_DEPTH_BUFFER_BIT | GL2.GL_COLOR_BUFFER_BIT);
gl.glEnable(GL2.GL_TEXTURE_2D);
gl.glEnable(GL2.GL_BLEND);
gl.glBlendFunc(GL2.GL_ONE, GL2.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnableClientState(GL2.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL2.GL_COLOR_ARRAY);
gl.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
gl.glLoadIdentity();
final Texture mTest = TextureIO.newTexture(getClass().getResource("/images/glass.png"), false, TextureIO.PNG);
final float[] coordData = {
0, 0, //
0, 1, //
1, 0, //
1, 1,
};
final float[] vertices = {
0.0f, 0.0f, 0, // Left Bottom
0.0f, 128, 0, // Left Top
128, 0.0f, 0, // Right Bottom
128, 128, 0
};
// Setup the vertices into the buffer
verts = Buffers.newDirectFloatBuffer(vertices.length);
verts.put(vertices).position(0);
// Setup the texture coordinates
coords = Buffers.newDirectFloatBuffer(coordData.length);
coords.put(coordData).position(0);
mTest.enable(gl);
mTest.bind(gl);
gl.glLoadIdentity();
gl.glTranslatef(100, 100, 0);
gl.glVertexPointer(3, GL2.GL_FLOAT, 0, verts);
gl.glTexCoordPointer(2, GL2.GL_FLOAT, 0, coords);
gl.glDrawArrays(GL2.GL_TRIANGLE_STRIP, 0, 4);
I get a “Invalid memory access of location 0x0 rip=0x11cfae8ae” when it executes gl.glDrawArrays, and I just don’t understand what I’m doing wrong.
I’m almost positive I have the latest version, as I donwloaded from http://jogamp.org/ just the other day.
Any help would be greatly appreciated.
Thank you.