จากครั้งที่แล้วที่สอนลง OpenGL นะครับ วันนี้ก็จะมาสอนการเขียน OpenGL แบบเบื้องต้น (เบื้องต้นจริง ๆ)
เริ่มแรก เราจะมาสร้างเส้นตรง 1 เส้น กันก่อนนะครับ
#include<windows.h>
#include<gl/glut.h>
void init(void)
{
     glClearColor(1.0,1.0,1.0,0.0);
     glLineWidth(2.0);
     glMatrixMode(GL_PROJECTION);
     gluOrtho2D(0.0,300.0,0.0,300.0);
}
void Line(void)
{
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     glColor3f(1.0,0.0,0.0);
     glBegin(GL_LINES);
          glVertex2i(20,20);
          glVertex2i(150,150);
     glEnd();
     glFlush();
}
int main(int argc, char **argv) {
      glutInit(&argc, argv);
      glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
      glutInitWindowPosition(100,100);
      glutInitWindowSize(400,400);
      glutCreateWindow("Line Tutorial");
      init();
      glutDisplayFunc(Line);
      glutMainLoop();
}
ลองพิมพ์ตามนี้ แล้วคอมไพล์ดูครับ เราจะได้เส้นตรงออกมา 1 เส้นตามนี้
โดยใน OpenGL ระบบแกน (x,y) จะเริ่มนับ (0,0) ที่มุม ล่างซ้าย และเพิ่มขึ้นเรื่อย ๆ ตามแนวนอน และ แนวตั้ง
เริ่มอธิบายทีละคำสั่งละกัน
#include<windows.h>
#include<gl/glut.h>
เนื่องจากเราเขียนบนวินโดวส์เราเลยต้อง include windows.h และ include gl/glut.h เพื่อใช้งานคำสั่งต่าง ๆ เกี่ยวกับวินโดวส์
เมื่อเรา include glut.h แล้ว เราไม่ต้อง include glu.h และ gl.h อีก เพราะว่า glut.h ได้รวมทั้ง 2 ไว้ในตัวแล้ว
void init(void)
{
     glClearColor(1.0,1.0,1.0,0.0);  // เคลียร์หน้าต่างที่ใช้แสดงให้เป็นสีขาว
     glLineWidth(2.0);               // กำหนดความหนาของเส้น
     glMatrixMode(GL_PROJECTION);    // เพื่อกำหนดพารามิเตอร์สำหรับการมองภาพ โดยใช้งานร่วมกับฟังก์ชัน glOrtho2D()
     gluOrtho2D(0.0,300.0,0.0,300.0); //เพื่อฉายภาพ 2 มิติลงบนจอภาพ
}
init(void) เป็น Function ที่ใช้สำหรับกำหนดค่าเริ่มต้นของโปรแกรม
ต่อไปก็เป็นFunction Line ซึ่งเป็น Function สำหรับวาดเส้นของเราในครั้งนี้
void Line(void)
{
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //เพื่อเคลียร์ค่าสีในบัฟเฟอร์สี (color buffer) ซึ่งเก็บค่าสีแบ็คกราวนด์ของวินโดว์แสดงผลตามที่กำหนดค่าใน glClearColor() และเคลียร์ค่าใน Dept buffer
     glColor3f(1.0,0.0,0.0);          // กำหนดสีของเส้น
     glBegin(GL_LINES);               // เริ่มวาดเส้น
          glVertex2i(20,20);          // จุดเริ่มต้นของเส้น
          glVertex2i(150,150);        // จุดสุดท้ายของเส้น
     glEnd();                         // จบการวาดเส้น
     glFlush();                       // เป็นคำสั่งหนึ่งที่ให้แสดงรูทีนของ OpenGL ออกทางจอภาพ
}
ต่อไปเป็นส่วนหลักของโปรแกรมเรานั่นก็คือ function main
int main(int argc, char **argv) {
      glutInit(&argc, argv);                 //สร้างหน้าต่างแสดงผล
      glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);  //เป็นการตั้งค่าโหมดที่จะใช้แสดง
      glutInitWindowPosition(100,100);       //กำหนดตำแหน่งของหน้าต่างโดยเริ่มนับ (0,0) จากมุมบนซ้าย
      glutInitWindowSize(400,400);           //กำหนดขนาดเริ่มต้นของหน้าต่าง
      glutCreateWindow("Line Tutorial");     //ใส่ชื่อให้กับหน้าต่าง 
      init();                                //เรียก Function init(); ให้ทำงาน
      glutDisplayFunc(Line);                 //แสดงกราฟิกใน function ที่สร้างไว้ 
      glutMainLoop();                        //วนลูปการแสดงผลกราฟิก
}
เราสามารถที่จะปรับเปลี่ยนที่ตั้ง และความยาว ของเส้นตรง โดยเปลี่ยนพารามิเตอร์ในคำสั่งนี้
     glBegin(GL_LINES);
          glVertex2i(20,20);
          glVertex2i(150,150);
     glEnd();
จบกับเส้นตรง 1 เส้น แบบงง ๆ
คราวหน้าจะเป็นการสร้างวงกลมแบบง่าย ๆ นะครับ

Comments
ทำตามแล้ว error ตลอดเลยอะครับ บนเรียนตอนติดตั้งไม่มีปัญหาครับ แต่พอมาบนเรียนนี้แล้ว รันไม่ออกเลยครับ อยากทราบวิธีการทำ ว่าสร้าง project ยังไงอะครับ สร้างโปรเจคแบบบนเรียนแรก แล้วลบโค้ดทิ้ง แล้วกอปโค้ดนี้มาใส่หรอครับ ช่วยเหลือด้วยนะครับ อยากเขียนเป็นครับ ขอบคุณล่วงหน้าครับ
ทราบแล้วครับ
เดี๋ยวขอผ่านช่วงนี้ไปก่อน เดี๋ยวจะมาสอนนะครับ
ตอนนี้ไม่ว่าง + ไม่สบายด้วยอ่ะครับ
หวังว่าคงไม่รีบมากนะครับ
คับๆๆ ขอบคุณ ครับ