JOGL - API สำหรับเทมเพลตพื้นฐาน

ด้วยการใช้โปรแกรม JOGL ทำให้สามารถวาดรูปทรงกราฟิกต่างๆเช่นเส้นตรงสามเหลี่ยมรูปร่าง 3 มิติรวมถึงเอฟเฟกต์พิเศษเช่นการหมุนแสงสี ฯลฯ ในการวาดวัตถุใน JOGL ก่อนอื่นเราต้องสร้างเฟรม JOGL พื้นฐาน . ด้านล่างนี้เป็นคลาสที่จำเป็นในการสร้างเฟรมพื้นฐาน

อินเทอร์เฟซ GLEventListener

เพื่อให้โปรแกรมของคุณสามารถใช้ JOGL graphical API ได้คุณต้องใช้งาน GLEventListenerอินเตอร์เฟซ. คุณสามารถค้นหาไฟล์GLEventListener อินเทอร์เฟซใน javax.media.opengl แพ็คเกจ

ตารางต่อไปนี้แสดงรายละเอียดของวิธีการต่างๆและคำอธิบายของ GLEventListener อินเตอร์เฟซ -

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

Void display(GLAutoDrawable drawable)

เรียกโดยอ็อบเจ็กต์ของอินเทอร์เฟซ GLAutoDrawable เพื่อเริ่มการแสดงผล OpenGL โดยไคลเอนต์ กล่าวคือวิธีนี้มีตรรกะที่ใช้ในการวาดองค์ประกอบกราฟิกโดยใช้ OpenGL API

2

Void dispose(GLAutoDrawable drawable)

วิธีนี้ส่งสัญญาณให้ผู้ฟังดำเนินการปล่อยทรัพยากร OpenGL ทั้งหมดต่อ GLContext แต่ละรายการเช่นหน่วยความจำบัฟเฟอร์และโปรแกรม GLSL

3

Void init(GLAutoDrawble drawable)

เรียกโดยอ็อบเจ็กต์ของอินเทอร์เฟซ GLAutoDrawable ทันทีหลังจากที่บริบท OpenGL ถูกเตรียมใช้งาน

4

Void reshape(GLAutoDrawble drawble, int x, int y, int width, int height)

เรียกโดยอ็อบเจ็กต์ของอินเทอร์เฟซ GLAutoDrawable ในระหว่างการทาสีใหม่ครั้งแรกหลังจากปรับขนาดส่วนประกอบแล้ว เรียกอีกอย่างว่าเมื่อใดก็ตามที่ตำแหน่งของส่วนประกอบบนหน้าต่างมีการเปลี่ยนแปลง

วิธีการทั้งหมดของ GLEventListener ต้องการวัตถุของ GLAutoDrawable อินเทอร์เฟซเป็นพารามิเตอร์

อินเตอร์เฟซ GLAutoDrawable

อินเทอร์เฟซนี้ให้กลไกตามเหตุการณ์ (GLEventListener) สำหรับการแสดงผล OpenGL GLAutoDrawable สร้างบริบทการแสดงผลหลักโดยอัตโนมัติซึ่งเชื่อมโยงกับ GLAutoDrawable ตลอดอายุการใช้งานของวัตถุ

ตารางต่อไปนี้แสดงรายละเอียดของวิธีการต่างๆและคำอธิบายของ GLAutoDrawable อินเตอร์เฟซ -

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

GL getGL()

ส่งคืนวัตถุไปป์ไลน์ GL ที่ใช้โดยอ็อบเจ็กต์ปัจจุบันของอินเตอร์เฟส GLAutoDrawable

2

void addGLEventListener(GLEventListener Listener)

เพิ่มผู้ฟังที่กำหนดไว้ที่ท้ายคิวที่เบิกได้ปัจจุบัน

3

void addGLEventListener(int index, GLEventListener listener)

เพิ่มผู้ฟังที่ระบุในดัชนีที่กำหนดของคิวที่ดึงได้นี้

4

void destroy()

Destroys ทรัพยากรทั้งหมดที่เกี่ยวข้องกับอ็อบเจ็กต์ของอินเทอร์เฟซ GLAutoDrawable นี้รวมถึง GLContext

Note- มีวิธีอื่น ๆ ในแพ็คเกจนี้ มีการกล่าวถึงวิธีการที่สำคัญเพียงไม่กี่วิธีที่เกี่ยวข้องกับเทมเพลตในอินเทอร์เฟซนี้

คลาส GLCanvas

GLCanvas และ GLJpanel เป็นสองคลาสหลักของ JOGL GUI ที่ใช้ GLAutoDrawable อินเทอร์เฟซซึ่งสามารถใช้เป็นพื้นผิวการวาดสำหรับคำสั่ง OpenGL

GLCanvas เป็นส่วนประกอบ AWT ที่มีน้ำหนักมากซึ่งรองรับการแสดงผล OpenGL นี่คือการใช้งานหลักของไฟล์AWTAutoGLDrawableอินเตอร์เฟซ. นอกจากนี้ยังสืบทอดjava.awt.Canvasชั้นเรียน. เนื่องจากเป็นส่วนประกอบที่มีน้ำหนักมากในบางกรณีGLJCanvasอาจรวมเข้ากับส่วนประกอบสวิงไม่ถูกต้อง ดังนั้นจึงต้องใช้ความระมัดระวังขณะใช้งานกับ Swing เมื่อใดก็ตามที่คุณประสบปัญหากับGLJCanvasจากนั้นคุณต้องใช้ GLJPanel ชั้นเรียน.

แผนภาพลำดับชั้นของคลาส GLCanvas ได้ดังรูปด้านล่าง -

  • GLEventistener อินเทอร์เฟซทำงานร่วมกับ GLCanvasชั้นเรียน. มันตอบสนองต่อการเปลี่ยนแปลงในGLCanvas ชั้นเรียนและตามคำขอวาดภาพที่ทำโดยพวกเขา

  • เมื่อใดก็ตาม GLCanvas คลาสเป็นอินสแตนซ์ไฟล์ init() วิธีการของ GLEventListenerถูกเรียกใช้ คุณสามารถแทนที่วิธีนี้เพื่อเริ่มต้นสถานะ OpenGL

  • เมื่อใดก็ตาม GLCanvas ถูกวาดขึ้นในขั้นต้น (สร้างอินสแตนซ์) หรือปรับขนาดไฟล์ reshape() วิธีการของ GLEventListenerถูกดำเนินการ ใช้เพื่อเริ่มต้นวิวพอร์ต OpenGL และเมทริกซ์การฉายภาพ เรียกอีกอย่างว่าเมื่อใดก็ตามที่มีการเปลี่ยนแปลงตำแหน่งของส่วนประกอบ

  • วิธีการแสดง () ของ GLEventListenerมีรหัสสำหรับการเรนเดอร์ฉาก 3 มิติ มันถูกเรียกใช้เมื่อใดก็ตามที่แสดง () วิธีการของGLCanvas ถูกเรียกใช้

ด้านล่างนี้คือตัวสร้างที่จำเป็นในการสร้างอินสแตนซ์คลาส GLCanvas

ซีเนียร์ No ตัวสร้างและคำอธิบาย
1

GLCanvas()

สร้างคอมโพเนนต์ GLCanvas ใหม่พร้อมชุดความสามารถของ OpenGL เริ่มต้นโดยใช้กลไกการเลือกความสามารถ OpenGL เริ่มต้นบนอุปกรณ์หน้าจอเริ่มต้น

2

GLCanvas(GLCapabilitiesImmutable)

สร้างคอมโพเนนต์ GLCanvas ใหม่พร้อมชุดความสามารถ OpenGL ที่ร้องขอโดยใช้กลไกการเลือกความสามารถของ OpenGL เริ่มต้นบนอุปกรณ์หน้าจอเริ่มต้น

ด้านล่างนี้เป็นวิธีการที่ใช้สำหรับการจัดการเหตุการณ์ของคลาส GLCanvas

เลขที่ วิธีการและคำอธิบาย
1

void addGLEventListener(GLEventListener listener)

เพิ่มผู้ฟังที่กำหนดไว้ที่ส่วนท้ายของคิวที่ดึงได้นี้

2

void addGLEventListener(int indexGLEventListener listener)

เพิ่มผู้ฟังที่ระบุในดัชนีที่กำหนดของคิวที่ดึงได้นี้

เพื่อสร้างอินสแตนซ์ GLCanvas คลาสคุณต้องการวัตถุของ GLCapabilitiesImmutable อินเทอร์เฟซซึ่งระบุชุดความสามารถของ OpenGL ที่ไม่เปลี่ยนรูป

วิธีหนึ่งในการรับวัตถุ CapabilitiesImmutable อินเทอร์เฟซคือการสร้างอินสแตนซ์ GLCapabilitiesคลาสซึ่งใช้อินเทอร์เฟซ ตัวอย่างของGLCapabilities สามารถใช้คลาสเพื่อตอบสนองวัตถุประสงค์

ระดับความสามารถของ GLC

คลาสนี้ระบุชุดของความสามารถ OpenGL ใช้วัตถุ GLCapabilities เป็นพารามิเตอร์ GLCapabilities คลาสอธิบายความสามารถที่ต้องการซึ่งบริบทการแสดงผลต้องรองรับเช่นโปรไฟล์ OpenGL

ด้านล่างนี้เป็นตัวสร้างเพื่อสร้างอินสแตนซ์คลาส GLCapabilities

เลขที่ วิธีการและคำอธิบาย
1

GLCapabilities(GLProfile glprofile)

สร้างวัตถุ GLCapabilities

เพื่อสร้างอินสแตนซ์ GLCanvas คุณต้องมีออบเจ็กต์ของ GLCapabilitiesImmutable interface ซึ่งระบุชุดความสามารถ OpenGL ที่ไม่เปลี่ยนรูป

วิธีหนึ่งในการรับวัตถุ CapabilitiesImmutable อินเทอร์เฟซคือการสร้างอินสแตนซ์ GLCapabilitiesคลาสซึ่งใช้อินเทอร์เฟซ อินสแตนซ์ของGLCapabilities สามารถใช้คลาสเพื่อตอบสนองวัตถุประสงค์

GLCapabilities ในทางกลับกันต้องใช้ไฟล์ GLProfile วัตถุ.

คลาส GLProfile

ตั้งแต่เปิดตัว OpenGL API หลายเวอร์ชัน คุณต้องระบุเวอร์ชันที่แน่นอนของ OpenGL API ที่ใช้ในโปรแกรมของคุณไปยัง Java Virtual Machine (JVM) ซึ่งทำได้โดยใช้ไฟล์GLProfile ชั้นเรียน.

get() วิธีการของคลาสนี้ยอมรับที่กำหนดไว้ล่วงหน้าที่แตกต่างกัน Stringวัตถุเป็นพารามิเตอร์ อ็อบเจ็กต์ String แต่ละตัวเป็นชื่อของอินเทอร์เฟซและแต่ละอินเทอร์เฟซรองรับ OpenGL บางเวอร์ชัน หากคุณเริ่มต้นคลาสนี้เป็นแบบคงที่และแบบซิงเกิลมันจะทำให้คุณมีซิงเกิลตันGLProfile วัตถุสำหรับแต่ละโปรไฟล์ JOGL ที่มีอยู่

ด้านล่างนี้คือต้นแบบของเมธอด get ของคลาส GLProfile

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

Static GLProfile get(String profile)

ใช้อุปกรณ์เริ่มต้น

เนื่องจากนี่เป็นวิธีการแบบคงที่คุณต้องเรียกใช้โดยใช้ชื่อคลาสและต้องใช้ตัวแปรสตริงคงที่ที่กำหนดไว้ล่วงหน้าเป็นพารามิเตอร์ มี 12 ตัวแปรดังกล่าวในคลาสนี้แต่ละตัวแสดงถึงการนำอินเตอร์เฟส GL ไปใช้งาน

GLProfile.get(GLProfile.GL2);

พารามิเตอร์ของ get () วิธีการ

ซีเนียร์ No ค่าสตริงที่กำหนดไว้ล่วงหน้า (ชื่ออินเตอร์เฟส) และคำอธิบาย
1

GL2

อินเทอร์เฟซนี้ประกอบด้วยเมธอด OpenGL [1.0 … 3.0] ทั้งหมดและส่วนขยายส่วนใหญ่ที่กำหนดไว้ในเวลาของข้อกำหนดนี้

2

GLES1

อินเทอร์เฟซนี้ประกอบด้วยเมธอด OpenGL ES [1.0 ... 1.1] ทั้งหมดรวมทั้งส่วนขยายส่วนใหญ่ที่กำหนดไว้ในเวลาของข้อกำหนดนี้

3

GLES2

อินเทอร์เฟซนี้ประกอบด้วยเมธอด OpenGL ES 2.0 ทั้งหมดรวมทั้งส่วนขยายส่วนใหญ่ที่กำหนดไว้ในเวลาของข้อกำหนดนี้

4

GLES3

อินเทอร์เฟซนี้ประกอบด้วยวิธีการ OpenGL ES 3.0 ทั้งหมดรวมทั้งส่วนขยายส่วนใหญ่ที่กำหนดไว้ในเวลาของข้อกำหนดนี้

5

GL2ES1

อินเทอร์เฟซนี้ประกอบด้วยชุดย่อยทั่วไปของ GL2 และ GLES1

6

GL2ES2

อินเทอร์เฟซนี้ประกอบด้วยชุดย่อยทั่วไปของ GL3, GL2 และ GLES2

7

GL2GL3

อินเทอร์เฟซนี้ประกอบด้วยชุดย่อยทั่วไปของ Core GL3 (OpenGL 3.1+) และ GL2

8

GL3

อินเทอร์เฟซนี้ประกอบด้วยเมธอดหลักของ OpenGL [3.1 ... 3.3] ทั้งหมดรวมทั้งส่วนขยายส่วนใหญ่ที่กำหนดไว้ในเวลาของข้อกำหนดนี้

9

GL3bc

อินเทอร์เฟซนี้ประกอบด้วยวิธีการที่เข้ากันได้กับ OpenGL [3.1 ... 3.3] ทั้งหมดรวมทั้งส่วนขยายส่วนใหญ่ที่กำหนดไว้ในเวลาของข้อกำหนดนี้

10

GL3ES3

อินเทอร์เฟซนี้ประกอบด้วยชุดย่อยทั่วไปของ Core GL3 (OpenGL 3.1+) และ GLES3 (OpenGL ES 3.0)

11

GL4

อินเทอร์เฟซนี้ประกอบด้วยเมธอดหลักของ OpenGL [4.0 ... 4.3] ทั้งหมดรวมทั้งส่วนขยายส่วนใหญ่ที่กำหนดไว้ในเวลาของข้อกำหนดนี้

12

GL4bc

อินเทอร์เฟซนี้มีโปรไฟล์ความเข้ากันได้ของ OpenGL [4.0 ... 4.3] ทั้งหมดรวมทั้งส่วนขยายส่วนใหญ่ที่กำหนดไว้ในเวลาของข้อกำหนดนี้

13

GL4ES3

อินเทอร์เฟซที่มีชุดย่อยทั่วไปของ Core GL4 (OpenGL 4.0+) และ GLES3 (OpenGL ES 3.0)

คลาส GLJPanel

เป็นส่วนประกอบ Swing น้ำหนักเบาซึ่งรองรับการแสดงผล OpenGL มีไว้เพื่อความเข้ากันได้กับ Swing

ลำดับชั้นของ GLJPanel

ด้านล่างนี้เป็นแผนภาพแสดงถึงลำดับชั้นของคลาส GLJPanel

ด้านล่างนี้เป็นตัวสร้างคลาส GLJPanel ที่หลากหลาย

เลขที่ ตัวสร้างและคำอธิบาย
1

GJPanel()

สร้างคอมโพเนนต์ GLJPanel ใหม่พร้อมชุดความสามารถ OpenGL เริ่มต้น

2

(GLCapabilitiesImmutable)

สร้างคอมโพเนนต์ GLJPanel ใหม่พร้อมชุดความสามารถ OpenGL ที่ร้องขอ

3

GLJPanel(GLCapabilitiesImmutable userCapsRequest, GLCapabilitiesChooser chooser)

สร้างส่วนประกอบ GLJPanel ใหม่

ด้านล่างนี้เป็นวิธีการของคลาส GLJPanel

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

void addGLEventListener(GLEventListener listener)

วิธีนี้จะเพิ่มผู้ฟังที่กำหนดไว้ที่ท้ายคิวที่ดึงได้นี้

2

void addGLEventListener(int indexGLEventListener listener)

วิธีนี้จะเพิ่มตัวฟังที่กำหนดไว้ที่ดัชนีที่กำหนดของคิวที่ดึงได้นี้