JOGL - พื้นฐานการวาดภาพ

OpenGL API ได้จัดเตรียมวิธีการดั้งเดิมสำหรับการวาดองค์ประกอบกราฟิกขั้นพื้นฐานเช่นจุดจุดยอดเส้น ฯลฯ ด้วยวิธีการเหล่านี้คุณสามารถพัฒนารูปทรงเช่นสามเหลี่ยมรูปหลายเหลี่ยมและวงกลม ทั้งในมิติ 2D และ 3D บทนี้สอนวิธีการวาดเส้นเบื้องต้นโดยใช้ JOGL ในโปรแกรม Java

การวาดวัตถุ

ในการเข้าถึงโปรแกรมที่เฉพาะเจาะจงสำหรับฮาร์ดแวร์และแพลตฟอร์มระบบปฏิบัติการและในกรณีที่ไลบรารีถูกเขียนในภาษาอื่นเช่น C และ C ++ (แอปพลิเคชันเนทีฟ) Java จะใช้กรอบการเขียนโปรแกรมที่เรียกว่า Java Native Interface (JNI). JOGL ใช้อินเทอร์เฟซนี้ภายในเพื่อเข้าถึงฟังก์ชัน OpenGL ดังแสดงในแผนภาพต่อไปนี้

ทั้งสี่วิธีของ GLEventListenerอินเทอร์เฟซมีรหัส (วิธี java JOGL) เพื่อเรียกใช้ฟังก์ชัน OpenGL ภายใน การตั้งชื่อของวิธีการ JOGL นั้นคล้ายคลึงกับหลักการตั้งชื่อของ OpenGL หากชื่อฟังก์ชันใน OpenGL คือglBegin()มันถูกใช้เป็น gl.glBegin().

เมื่อใดก็ตามที่ gl.glBegin() เรียกวิธีการของ java JOGL โดยจะเรียกใช้ไฟล์ glBegin()วิธีการของ OpenGL นี่คือเหตุผลในการติดตั้งไฟล์ไลบรารีเนทีฟบนระบบผู้ใช้ในขณะติดตั้ง JOGL

วิธีการแสดง ()

นี่เป็นวิธีการสำคัญที่เก็บรหัสสำหรับการพัฒนากราฟิก มันต้องใช้GLAutoDrawable วัตถุอินเทอร์เฟซเป็นพารามิเตอร์

display()วิธีการเริ่มต้นรับบริบท OpenGL โดยใช้อ็อบเจ็กต์ของอินเตอร์เฟส GL (GL สืบทอดอินเตอร์เฟส GLBase ซึ่งมีเมธอดในการสร้างอ็อบเจ็กต์บริบท OpenGL ทั้งหมด) เนื่องจากบทช่วยสอนนี้เกี่ยวกับ JOGL2 ให้เราสร้างวัตถุ GL2

ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้างวัตถุ 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();

การใช้อ็อบเจ็กต์ของอินเทอร์เฟซ GL2 เราสามารถเข้าถึงสมาชิกของอินเทอร์เฟซนี้ซึ่งจะให้การเข้าถึงฟังก์ชัน OpenGL [1.0 ... 3.0]

วาดเส้น

อินเทอร์เฟซ GL2 มีรายการวิธีการมากมาย แต่ที่นี่มีการกล่าวถึงสามวิธีที่สำคัญหลัก ๆ ได้แก่ glBegin(), glVertex()และ glEnd().

ซีเนียร์ วิธีการและคำอธิบาย
1

glBegin()

วิธีนี้เริ่มกระบวนการลากเส้น ใช้จำนวนเต็มสตริงที่กำหนดไว้ล่วงหน้า“ GL_LINES” เป็นพารามิเตอร์ซึ่งสืบทอดมาจากอินเตอร์เฟส GL

2

glVertex3f()/glVertex2f()

วิธีนี้สร้างจุดยอดและเราต้องส่งพิกัดเป็นพารามิเตอร์ 3f และ 2f ซึ่งแสดงถึงพิกัดจุดลอยตัว 3 มิติและพิกัดจุดลอยตัว 2 มิติตามลำดับ

3

glEnd()

สิ้นสุดบรรทัด

ด้านล่างนี้เป็นโปรแกรมวาดเส้นพื้นฐานโดยใช้ 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;