JOGL - Kiến thức cơ bản về vẽ
OpenGL API đã cung cấp các phương thức nguyên thủy để vẽ các phần tử đồ họa cơ bản như điểm, đỉnh, đường thẳng, v.v. Sử dụng các phương pháp này, bạn có thể phát triển các hình dạng như tam giác, đa giác và hình tròn. Ở cả hai chiều 2D và 3D. Chương này hướng dẫn bạn cách vẽ một đường cơ bản bằng JOGL trong chương trình Java.
Đối tượng Vẽ
Để truy cập các chương trình cụ thể cho nền tảng phần cứng và hệ điều hành cũng như nơi các thư viện được viết bằng các ngôn ngữ khác như C và C ++ (các ứng dụng gốc), Java sử dụng một khung lập trình được gọi là Java Native Interface (JNI). JOGL sử dụng giao diện này bên trong để truy cập các chức năng của OpenGL như thể hiện trong sơ đồ sau.
Tất cả bốn phương pháp của GLEventListenergiao diện có mã (các phương thức java JOGL) để gọi các hàm OpenGL trong nội bộ. Việc đặt tên cho các phương thức JOGL đó cũng tương tự như các quy ước đặt tên của OpenGL. Nếu tên hàm trong OpenGL làglBegin(), nó được sử dụng như gl.glBegin().
Bất cứ khi nào gl.glBegin() phương thức java JOGL được gọi, nó gọi nội bộ glBegin()phương pháp của OpenGL. Đây là lý do để cài đặt các tệp thư viện gốc trên hệ thống người dùng tại thời điểm cài đặt JOGL.
Phương thức Display ()
Đây là một phương pháp quan trọng chứa mã để phát triển đồ họa. Nó yêu cầuGLAutoDrawable đối tượng giao diện làm tham số của nó.
Các display()ban đầu phương thức nhận ngữ cảnh OpenGL bằng cách sử dụng đối tượng của giao diện GL (GL kế thừa giao diện GLBase chứa các phương thức để tạo tất cả các đối tượng ngữ cảnh OpenGL). Vì hướng dẫn này là về JOGL2, chúng ta hãy tạo một đối tượng GL2.
Đoạn mã sau cho biết cách tạo Đối tượng GL2 -
//Generating GL object
GL gl = drawable.getGL();
GL gl = drawable.getGL();
//Using this Getting the Gl2 Object
//this can be written in a single line like
final GL2 gl = drawable.getGL().getGL2();
Sử dụng đối tượng của giao diện GL2, người ta có thể truy cập các thành viên của giao diện này, do đó cung cấp quyền truy cập vào các chức năng OpenGL [1.0 ... 3.0].
Vẽ một đường
Giao diện GL2 chứa một danh sách rất lớn các phương pháp nhưng ở đây ba phương pháp quan trọng chính được thảo luận là glBegin(), glVertex()và glEnd().
Sr.No. | Phương pháp và Mô tả |
---|---|
1 | glBegin() Phương pháp này bắt đầu quá trình vẽ một đoạn thẳng. Nó lấy số nguyên chuỗi được xác định trước “GL_LINES” làm tham số, được kế thừa từ giao diện GL. |
2 | glVertex3f()/glVertex2f() Phương pháp này tạo ra đỉnh và chúng ta phải truyền tọa độ dưới dạng tham số 3f và 2f, lần lượt biểu thị tọa độ dấu chấm động 3 chiều và tọa độ dấu chấm động 2 chiều. |
3 | glEnd() kết thúc dòng |
Dưới đây là chương trình vẽ một đường cơ bản bằng JOGL -
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.JFrame;
public class Line implements GLEventListener {
@Override
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glBegin (GL2.GL_LINES);//static field
gl.glVertex3f(0.50f,-0.50f,0);
gl.glVertex3f(-0.50f,0.50f,0);
gl.glEnd();
}
@Override
public void dispose(GLAutoDrawable arg0) {
//method body
}
@Override
public void init(GLAutoDrawable arg0) {
// method body
}
public static void main(String[] args) {
//getting the capabilities object of GL2 profile
final GLProfile profile = GLProfile.get(GLProfile.GL2);
GLCapabilities capabilities = new GLCapabilities(profile);
// The canvas
final GLCanvas glcanvas = new GLCanvas(capabilities);
Line l = new Line();
glcanvas.addGLEventListener(l);
glcanvas.setSize(400, 400);
//creating frame
final JFrame frame = new JFrame ("straight Line");
//adding canvas to frame
frame.getContentPane().add(glcanvas);
frame.setSize(frame.getContentPane().getPreferredSize());
frame.setVisible(true);
}//end of main
}//end of classimport javax.media.opengl.GL2;