วันเสาร์ที่ 11 กรกฎาคม พ.ศ. 2552

ติดตั้งระบบเพื่อการเขียนโปรแกรมด้วย OpenGL กับ C/C++ บน Windows






Visual C++ 2008 Express Edition
สำหรับ Visual C++ นั้นเป็น IDE ภาษา C/C++ บน Windows ที่ได้รับความนิยมมากที่สุด เวอร์ชันล่าสุดนีคือเวอร์ชัน 2008 โดยจะมี Express Edition ซึ่งสามารถโหลดมาใช้งานได้ฟรี มาดูวิธีการเซ็ตให้สามารถใช้ OpenGL/GLUT ได้กันครับ

ดาวน์โหลดไฟล์ GLUT 3.76 & freeglut 2.4.0 for VC++ 2008 นี้ไปครับ เป็นไฟล์ header และ libraryของ GLUT และ freeglut สำหรับ Visual C++ 2008 โดยเฉพาะแตกไฟล์ออกมา แล้วดับเบิลคลิกที่ไฟล์ install.bat โดยแบทช์ไฟล์ตัวนี้จะทำหน้าที่ในการ copy ไฟล์ glut.h ไปไว้ในโฟลเดอร์ include ของ VC++, copy ไฟล์ glut32.lib ไปไว้ในโฟลเดอร์ lib ของ VC++ และ copy ไฟล์ glut32.dll ไปไว้ในโฟลเดอร์ system32 ของ Windows ส่วนที่เหลือก็จะเป็นการ copy ไฟล์ header และ library ของ freeglut เสร็จเรียบร้อยแล้ว ลองสร้างโปรเจ็คใหม่ ชนิด Win32 Console Application เขียนโค้ดเรียกใช้ GLUT ใช้โค้ดของไฟล์ hello.c ในบทความที่แล้วก็ได้ครับ ลองคอมไพล์และรันดูว่ามีปัญหาอะไรหรือเปล่า




















Code::Blocks
มาดูวิธีการสำหรับ Code::Blocks กันบ้าง ตัวนี้เป็น IDE ที่มีข้อดีตรงที่ขนาดเล็ก ใช้ทรัพยากรเครื่องไม่มาก และเป็นโปรแกรม Open Source ใช้งานได้ฟรี 100% ครับ ดาวน์โหลดมาใช้ได้ที่เว็บของ Code::Blocks เลือกโหลดเอาไฟล์ ที่มี MinGW มาด้วย จากนั้นก็นำมาติดตั้งไปตามปกติ

ดาวน์โหลดไฟล์ glut-3.7.6-bin.zip จากเว็บของ Nate Robins มาแล้วแตกไฟล์ออกมา copy ไฟล์ glut.h เอาไปไว้ในโฟลเดอร์ include/GL ของ Code::Blocks ( ปกติอยู่ที่ C:\Program Files\CodeBlocks\MinGW\include\GL ) และ copy ไฟล์ glut32.dll เอาไปไว้ในโฟลเดอร์ system32 ของ Windows ( ปกติอยู่ที่ C:\Windows\system32 ) ก็เป็นอันเสร็จครับ

เปิด Code::Blocks มา คลิกที่ Create a new project คลิกที่ GLUT project แล้วคลิกปุ่ม Go

















กำหนด project title เป็น glut-demo กำหนดตำแหน่งโฟลเดอร์ที่ใช้เก็บ project เอาไว้ที่โฟลเดอร์ไหนก็ได้ เช่น My Documents แล้วคลิก Next ไป


















หน้าจอถัดมาเราจะต้องกำหนดตำแหน่งที่มี header file และ library file ของ GLUT อยู่ ให้คลิกที่ปุ่มสี่เหลีียมที่อยู่ท้ายช่อง เพื่อ Browse หาโฟลเดอร์ที่ต้องการ ให้เลือกไปที่โฟลเดอร์ของ MinGW ( ปกติอยู่ที่ C:\Program Files\CodeBlocks\MinGW ) แล้วคลิก Next


















ถัดไปก็เป็นการกำหนดโฟลเดอร์ที่เก็บไฟล์ binary จากการ make ก็ไม่ต้องเปลี่ยนแปลงอะไร คลิก Next ไป ก็เป็นอันเสร็จสิ้น

















แต่เราต้องแก้โค้ดโปรแกรมตัวอย่างกันเล็กน้อย ถึงจะคอมไพล์ได้ โดยการแทรกบรรทัดด้านล่าง เอาไว้ก่อนบรรทัด #ifdef __APPLE__














เสร็จแล้วลองคอมไพล์และรันโดยการกด F9 ถ้าไม่มีอะไรผิดพลาด โปรแกรมตัวอย่างก็จะรันได้ และเราก็สามารถเขียนโปรแกรมของเราเองจากโปรแกรมตัวอย่างนี้ได้เลย


















เรายังสามารถสร้าง project ที่เรียกใช้ OpenGL ควบคู่กับ Win32 API ได้ (ไม่ใช้ GLUT) โดยในหน้าจอ New from template นั้นให้เลือก OpenGL project แทนการเลือก GLUT project

Open GL คืออะไร








โอเพนจีแอล (OpenGL, เป็นตัวย่อของคำว่า Open Graphics Library) เป็นไลบรารีหรือคลังโปรแกรม(หรือชุดคำสั่ง) ด้านกราฟิกสามมิติ เพื่อส่งคำสั่งควบคุมการวาดภาพไปยังอุปกรณ์ฮาร์ดแวร์การประมวลผลภาพ โอเพนจีแอลสามารถใช้ได้ใน หลายระบบคอมพิวเตอร์ ในการเขียนโปรแกรมด้านคอมพิวเตอร์กราฟิกส์ โดยในคลังโปรแกรมจะมีชุดคำสั่งมีมากกว่า 250 ช่วยในการสร้างวัตถุ แปลงวัตถุ และสร้างภาพโดยให้แสงและเงา โดยเริ่มจากการกำหนดรูปทรงพื้นฐาน เช่น สี่เหลี่ยมลูกบาศก์หรือทรงกลม โอเพนจีแอลเป็นที่นิยมมากในอุตสาหกรรมผลิตแอนิเมชันวีดีโอเกม โดยในขณะเดียวกันก็เป็นคู่แข่งทางการค้ากับไดเร็กท์ทรีดี ( Direct3D) ของบริษัทไมโครซอฟท์) นอกจากการพัฒนาเพื่อวีดีโอเกมโอเพนจีแอลยังใช้ในทางด้านอื่นๆ รวมถึงการ การประมวลผลภาพ งานจำลองการทดลองเชิงวิทยาศาสตร์ และ การทำให้เห็นภาพของสารสนเทศ

ประวัติ

โอเพนจีแอล พัฒนาโดยบริษัท ซิลิกอนกราฟิก-SGI เพื่อเป็นมาตรฐานใหม่สำหรับการใช้งานคลังโปรแกรมโดยไม่ยึดติดกับแพลตฟอร์ม หรือระบบ ตั้งแต่ปี พ.ศ. 2535 (ค.ศ. 1992) โอเพนจีแอลได้พัฒนาภายใต้ข้อตกลงของคณะกรรมการทบทวนสถาปัตยกรรมโอเพนจีแอล หรือ โอเพนจีแอล เออาร์บี (OpenGL Architecture Review Board:ARB) ซึ่งประกอบไปด้วยผู้ผลิตฮาร์ดแวร์และซอฟต์แวร์ รวมถึงองคืกร อย่าง เอทีไอ คอมแพค อีวานซูเธอร์แลนด์ ฮิวเลต-แพคการ์ด ไอบีเอ็ม อินเทล อินเตอร์กราฟ เอ็นวิเดียไมโครซอฟท์ และ ซิลิกอนกราฟิกส์

ชุดคำสั่งใน โอเพนจีแอลเป็นมาตรฐานเดียวกันที่สามารถใช้ได้ทั้งบนเครื่องคอมพิวเตอร์ส่วนบุคคล และ สถานีงานกราฟิกส์ขั้นสูง (high-end graphics workstation) ในระบบปฏิบัติการที่แตกต่างกัน โดยไม่จำเป็นต้องแก้ไขชุดคำสั่งแต่อย่างใด (Write once, run anywhare)

ตัวอย่างชุดคำสั่งของโอเพนจีแอล

สร้างสามเหลี่ยมที่มี สีแดง เขียว และ น้ำเงิน


glBegin (GL_TRIANGLES) ;
glNormal3f ( 0.0, 1.0, 0.0) ;
glColor3f ( 1.0, 0.0, 0.0) ; glVertex3f ( 0.0, 0.0, -1.0) ;
glColor3f ( 0.0, 1.0, 0.0) ; glVertex3f ( 1.0, 0.0, 0.0) ;
glColor3f ( 0.0, 0.0, 1.0) ; glVertex3f ( 0.0, 0.0, 1.0) ;
glEnd () ;