Pergi ke kandungan

OpenGL/Cara melakar segitiga dengan mengunakan openGL

Daripada Wikibuku


contoh penuh coding OpenGL

[sunting]
    #include <GL/glut.h>
    void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(6.0, 1.0, 7.0);
    glBegin(GL_POLYGON);
    glVertex3f (0.50, 0.50, 0.0);
    glVertex3f (0.75, 0.25, 0.0);
    glVertex3f (0.75, 0.75, 0.0);
    glVertex3f (0.25, 0.75, 0.0);
    glEnd();
    glFlush ();}

    void init(void) 
{
    glClearColor (1.0, 0.0, 0.0, 0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}
    int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize (250, 250); 
    glutInitWindowPosition (100, 100);
    glutCreateWindow ("hello");
    init ();
    glutDisplayFunc(display); 
    glutMainLoop();

}

Penerangan coding di atas

[sunting]

Includes

[sunting]

glut.h adalah antara muka untuk GLUT (OpenGL utility Toolkit), satu lagi perpustakaan utiliti yang menyediakan antara muka pengguna bebas platform.

  #include <GL/glut.h>

Function

[sunting]

Fungsi display dengan parameter void

  void display(void){

Membersihkan semua pixels

  glClear(GL_COLOR_BUFFER_BIT);

Warna segitiga disetkan kepada 7.0, 2.0, 0.0 iaitu warna kuning

  glColor3f(7.0, 2.0, 0.0);

Melakar polygon (segitiga)

  glBegin(GL_POLYGON);
  glVertex3f (0.50, 0.50, 0.0);
  glVertex3f (0.75, 0.25, 0.0);
  glVertex3f (0.75, 0.75, 0.0);
  glVertex3f (0.25, 0.75, 0.0);

Melakar telah tamat.

  glEnd();

Pelaksanaan berkuat kuasa arahan GL dalam masa terhingga

  glFlush ();}

Fungsi init dengan parameter void

  void init(void) {

warna latar belakang disetkan kepada warna merah

  glClearColor (1.0, 0.0, 0.0, 0.0);

Nilai-nilai disetkan dan menentukan matriks yang matriks semasa

  glMatrixMode(GL_PROJECTION);

Menggantikan matriks dengan matriks identiti

  glLoadIdentity();

glOrtho menggambarkan transformasi yang menghasilkan unjuran selari. Matriks semasa (lihat glMatrixMode) didarab dengan matriks ini dan hasilnya menggantikan matriks semasa, seolah-olah glMultMatrix dipanggil dengan matriks berikut sebagai hujah.

  glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); }

Main

[sunting]

Setiap program C mengandungi fungsi () utama, di sini adalah salah satu yang terdapat dalam kebanyakan program OpenGL. Fungsi utama adalah bertanggungjawab untuk:

1. Memulakan GLUT;

2. mewujudkan windows yang menggunakan GLUT;

3. Memulakan apa-apa struktur data yang diperlukan untuk melakar sesuatu;

4. memberitahu fungsi-fungsi GLUT yang akan mengendalikan acara-acara windows;

5. memberitahu GLUT untuk memulakan start waiting untuk acara-acara.

  int main(int argc, char** argv){

Fungsi ini juga disetkan GLUT library supaya ia mesti diadakan before apa-apa fungsi GLUT lain.

  glutInit(&argc, argv);

Warna paparan kami akan dinyatakan sebagai merah, hijau dan magnitud komponen biru (GLUT_RGBA).

  glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);

Tentukan ketinggian dan lebar mana-mana windows dicipta iaitu 250x250.

  glutInitWindowSize (250, 250); 

Window akan diletakkan pada sudut atas kiri skrin dengan 100,100.

  glutInitWindowPosition (100, 100);

Cipta satu windows dengan "hello"

  glutCreateWindow ("hello");

Fungsi user-defined.

  init ();

Setiap kali windows perlu dilakar semula, sistem akan memanggil display (pengguna ditakrifkan).

  glutDisplayFunc(display); 

Akhir sekali, memulakan windows dengan acara berulang-ulang, menunggu tekanan kekunci, mengukur saiz semula windows, dan melakar semula windows.

  glutMainLoop(); }