ผลต่างระหว่างรุ่นของ "PyOpenGL Programming"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
(ไม่แสดง 1 รุ่นระหว่างกลางโดยผู้ใช้คนเดียวกัน)
แถว 11: แถว 11:
 
* [[PyOpenGL Programming/Basic Vocabulary|Basic Vocabulary]]
 
* [[PyOpenGL Programming/Basic Vocabulary|Basic Vocabulary]]
 
* [[PyOpenGL Programming/Tutorial 1: First Program|Tutorial 1: First Program]]
 
* [[PyOpenGL Programming/Tutorial 1: First Program|Tutorial 1: First Program]]
 
== ความรู้พื้นฐาน ==
 
=== OpenGL ===
 
ผู้ใช้ OpenGL สามารถใช้มันวาดรูปทรงสองมิติหรือสามมิติได้ โดยระุบุรูปทรงและรูปร่างพื้นฐาน เช่น จุด เส้น และรูปหลายเหลี่ยม เป็นต้น แล้ว OpenGL จะทำหน้าที่สร้างภาพสามมิตินั้นไว้บนหน่วยความจำที่่เรียกว่า framebuffer ซึ่งเก็บข้อมูลสีของแต่ละ pixel บนหน้าจอเอาไว้
 
 
OpenGL เป็นไลบรารีที่เหมาะสมต่อการสร้างโปรแกรมที่มีการตอบสนองต่อผู้ใช้แบบทันทีทันควัน (interactive) เนื่องจากการวาดรูปใช้ GPU จึงทำได้อย่างรวดเร็ว แต่ GPU เองไม่สามารถสร้างรูปที่มีรายละเอียดสูง หรือมีการกระจายตัวของแสงในฉากที่ซับซ้อนได้ จึงไม่เหมาะสำหรับใช้สร้างภาพนิ่งคุณภาพสูงหรือภาพยนตร์สามมิติต่างๆ
 
 
OpenGL ทำหน้าที่'''สั่ง GPU ให้วาดรูปเท่านั้น''' มันไม่ได้จัดการการติดต่อกับผู้ใช้  ไม่ได้จัดการวินโดว์ที่โปรแกรมใช้ และมันก็ไม่สามารถหา framebuffer มาใช้เองได้ ดังนั้นต้องมีโค้ดส่วนอื่นมาจัดการเรื่องพวกนี้ให้
 
 
=== GLUT ===
 
GLUT ย่อมาจาก Open'''GL''' '''U'''tility '''T'''oolkit เป็นไลบรารีสำหรับจัดการส่วนติดต่อกับผู้ใช้และจัดการวินโดว์ให้ OpenGL กล่าวคือมันทำสิ่งที่ OpenGL ไม่ทำข้างบน GLUT เป็นไลบรารีที่เหมาะสมต่อการเรียน OpenGL เนื่องจากใช้งานง่ายและผู้ใช้ไม่ต้องเรียนรู้หรือจดจำอะไรมาก แต่ไม่เหมาะจะเอาไปใช้เขียนโปรแกรมประยุกต์จริงๆ  เนื่องจากไม่มี GUI Widget ให้ใช้เลย นอกจากนี้โปรแกรมจะต้องรับข้อมูลเข้าจา่กผู้่ใช้ตามที่ GLUT กำหนดเท่านั้น ไม่สามารถจัดการการอ่านข้อมูลเข้าได้เอง
 
 
== โปรแกรมแรก ==
 
<pre title="editor external">
 
from OpenGL.GL import *
 
from OpenGL.GLU import *
 
from OpenGL.GLUT import *
 
import sys
 
 
def display():
 
    glClearColor(0,0,0,0)
 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
 
   
 
    glBegin(GL_QUADS)
 
    glVertex2d(-0.5, -0.5)
 
    glVertex2d(0.5, -0.5)
 
    glVertex2d(0.5, 0.5)
 
    glVertex2d(-0.5, 0.5)
 
    glEnd()
 
   
 
    glutSwapBuffers()
 
 
if __name__=="__main__":
 
    glutInit(sys.argv)
 
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH)
 
    glutInitWindowSize(512, 512)
 
    glutCreateWindow("Test 01")
 
   
 
    glutDisplayFunc(display)
 
   
 
    glutMainLoop()
 
</pre>
 
=== คำสั่ง OpenGL ===
 

รุ่นแก้ไขปัจจุบันเมื่อ 17:32, 24 ตุลาคม 2551

OpenGL (ย่อมาจาก Open Graphics Library) เป็น Application Programming Interface (API) สำหรับควบคุม Graphics Processing Unit (GPU) ที่ใช้กันอย่างแพร่หลายในปัจจุบัน (เนื่องจากมี API แบบนี้ในโลกอยู่แค่สองตัว คือ OpenGL และ DirectX) จริงๆ แล้ว OpenGL เขียนขึ้นมาครั้งแรกเพื่อใช้กับภาษา C แต่หลังจากนั้นก็มีคนเขียนซอฟต์แวร์เพิ่มเติมให้ใ้ช้ OpenGL กับภาษาอื่นๆ เช่น Java, Pascal, Ruby, ฯลฯ ได้ PyOpenGL เป็นไลบรารีที่ทำให้ภาษาไพทอนใช้ OpenGL ได้ เอกสารนี้จะสอนวิธีการใช้ OpenGL ผ่านทาง PyOpenGL สร้างโปรแกรมเพื่อแสดงภาพสองมิติและสามมิติอย่างง่ายๆ

หากท่านต้องการอ่านเอกสารนี้ให้ได้อรรถรสมากที่สุด กรุณาใช้ Crunchy คุณสามารถดูวิดิทัศน์แสดงการติดตั้งและใช้ Crunchy ได้ที่นี่: วิธีการติดตั้งภาษา Python และ Crunchy

การติดตั้ง PyOpenGL

ก่อนติดตั้ง PyOpenGL คุณจะต้องติดตั้งภาษาไพทอนไว้ก่อนแล้ว เราแนะนำให้ติดตั้งภาษาไพทอนเวอร์ชัน 2.5.2 เนื่องจากมันเป็นเวอร์ชันที่ Crunchy สามารถทำงานร่วมด้วยอย่างราบรื่น

คุณสามารถดูวิดิทัศน์แสดงวิธีการติดตั้ง PyOpenGL ได้ที่นี่: http://access.cs.sci.ku.ac.th/~pramook/install-pyopengl/

สารบัญ