Sample code used to work in JOGL 1. How do I make it work in JOG 2?
Posted by s3a on Dec 25, 2011; 12:53am
URL: https://forum.jogamp.org/Sample-code-used-to-work-in-JOGL-1-How-do-I-make-it-work-in-JOG-2-tp3611162.html
Could someone please help me get the following JOGL 1 code to work in JOGL 2? The code is nothing mission-critical but I just want to see a before and after when converting to JOGL 2 so I can start to grasp the differences between the versions. (Ignore the questions in the actual code itself).
import java.nio.FloatBuffer;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
//import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.JFrame;
public class MyClass implements GLEventListener
{
public void init(GLAutoDrawable glad) {
// code
}
public void display(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
gl.glClearColor(0.1f, 0.5f, 1.0f, 0.7f);
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glViewport(0, 0, 300, 300);
// gl.glColor3f(1.0f, 1.0f, 1.0f);
// An array of 3 vectors which represents 3 vertices
/*static final */float[] g_vertex_buffer_data = {
-1.0f, -1.0f, 0.0f,
1.0f, -1.0f, 0.0f,
0.0f, 1.0f, 0.0f,
};
// This will identify our vertex buffer
int[] vertexbuffer = new int[1];
// Generate 1 buffer, put the resulting identifier in vertexbuffer
gl.glGenBuffers(1, vertexbuffer, 0);
// The following commands will talk about our 'vertexbuffer' buffer
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vertexbuffer[0]);
// Give our vertices to OpenGL.
// gl.glBufferData(GL.GL_ARRAY_BUFFER, 3/*sizeof(g_vertex_buffer_data)*/, null/*g_vertex_buffer_data*/, GL.GL_STATIC_DRAW); // WHAT DO I PUT AS THE SECOND PARAMETER?
gl.glBufferData(GL.GL_ARRAY_BUFFER, 12, FloatBuffer.wrap(g_vertex_buffer_data), GL.GL_STATIC_DRAW);
// 1rst attribute buffer : vertices
gl.glEnableVertexAttribArray(0);
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vertexbuffer[0]);
gl.glVertexAttribPointer(
0, // attribute 0. No particular reason for 0, but must match the layout in the shader.
3, // size
GL.GL_FLOAT, // type
false, // normalized?
0, // stride
/*(void*)*/0 // array buffer offset
);
gl.glColor3f(0.0f, 0.0f, 0.0f);
// Draw the triangle !
gl.glDrawArrays(GL.GL_TRIANGLES, 0, 3); // Starting from vertex 0; 3 vertices total -> 1 triangle
gl.glDisableVertexAttribArray(0);
gl.glFlush();
}
public void reshape(GLAutoDrawable glad, int i, int i1, int i2, int i3) {
// code
}
public void displayChanged(GLAutoDrawable glad, boolean bln, boolean bln1) {
// code
}
public static void main(String[] args) {
JFrame frame = new JFrame("TheFrame");
GLCanvas canvas = new GLCanvas();
canvas.addGLEventListener(new MyClass());
frame.add(canvas);
frame.setSize(300,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Any input would be greatly appreciated!
Thanks in advance!