Lawati b:Wikibooks:Rak_bahasa_pengaturcaraan.

Selamat datang ke Wikipedia Bahasa Melayu!
Salam sejahtera SannyOng! Terima kasih kerana mendaftar di Wikipedia Bahasa Melayu!
Berikut merupakan beberapa pautan yang dapat anda layari jika masih baru di Wikipedia:

Lihat juga tutorial dan meja bantuan Wikipedia. Untuk menandatangani pesanan anda pada laman perbualan, seperti laman ini, letakkan ~~~~ (empat kali tanda gelombang) atau klik butang Tandatangan dan cap waktu pada laman penyuntingan.
Semoga anda menikmati kunjungan anda di Wikipedia Bahasa Melayu. Selamat menyumbang! ...Aurora... (b) 09:30, 20 Oktober 2011 (UTC)Balas

===== Assignment 2 ===== /* A134720 */

#include <GL/glut.h> // dalam semua program grafik, ia memerlukan fail utama(header file) untuk OpenGL perpustakaan utama(core library). Kebanyakan aplikasi juga memerlukan GLU dan kebanyakan sistem memerlukan fail utama untuk sistem tingkap (window system) #include <stdio.h>
#ifdef GL_VERSION_1_1
#define POINTER 1
#define INTERLEAVED 2
#define DRAWARRAY 1
#define ARRAYELEMENT  2
#define DRAWELEMENTS 3

int setupMethod = POINTER; int derefMethod = DRAWARRAY;

void setupPointers(void) {

  static GLint vertices[] = {25, 25,
                      100, 325,
                      175, 25,
                      175, 325,
                      250, 25,
                      325, 325}; /* menentukan marcu bagi bentuk-bentuk yang ingin hasil. */
  static GLfloat colors[] = {1.0, 0.2, 0.2,
                      0.2, 0.2, 1.0,
                      0.8, 1.0, 0.2,
                      0.75, 0.75, 0.75,
                      0.35, 0.35, 0.35,
                      0.5, 0.5, 0.5}; /* menentukan kod warna bagi bentuk-bentuk tersebut. */
  glEnableClientState (GL_VERTEX_ARRAY);
  glEnableClientState (GL_COLOR_ARRAY);
  glVertexPointer (2, GL_INT, 0, vertices);
  glColorPointer (3, GL_FLOAT, 0,colors );

}

void setupInterleave(void) {

  static GLfloat intertwined[] =
     {1.0, 0.2, 1.0, 100.0, 100.0, 0.0,
      1.0, 0.2, 0.2, 0.0, 200.0, 0.0,
      1.0, 1.0, 0.2, 100.0, 300.0, 0.0,
      0.2, 1.0, 0.2, 200.0, 300.0, 0.0,
      0.2, 1.0, 1.0, 300.0, 200.0, 0.0,
      0.2, 0.2, 1.0, 200.0, 100.0, 0.0}; /* hubungan bagi bentuk-bentuk yang dihasilkan. */
  
  glInterleavedArrays (GL_C3F_V3F, 0, intertwined);

}

void init(void) //function init untuk set latar dan kesan imej


{

  glClearColor (0.0, 0.0, 0.0, 0.0); /* menentukan warna hitam bagi latar belakang .*/
  glShadeModel (GL_SMOOTH); 
  setupPointers ();

}

void display(void) //function display untuk set,lukis imej {

  glClear (GL_COLOR_BUFFER_BIT); //clear background 
  if (derefMethod == DRAWARRAY) 
     glDrawArrays (GL_TRIANGLES, 0, 6);/* bentuk bagi tingkap pertama.*/
  else if (derefMethod == ARRAYELEMENT) {
     glBegin (GL_TRIANGLES); //memulakan bentuk segi tiga. 
     glArrayElement (2);
     glArrayElement (3);
     glArrayElement (5); /* bentuk bagi tingkap kedua. */
     glEnd (); //tamat bentuk segi tiga.
  }
  else if (derefMethod == DRAWELEMENTS) {
     GLuint indices[4] = {0, 1, 3, 4}; /* bentuk bagi tingkap ketiga. */
     glDrawElements (GL_POLYGON, 4, GL_UNSIGNED_INT, indices); /* bentuk-bentuk akan keluar mengikut kod yang kita masukkan.*/
  }
  glFlush ();  //pelaksanaan command dari glBegin() hingga glEnd() 

}

void reshape (int w, int h) //function reshape untuk membentuk imej

{

  glViewport (0, 0, (GLsizei) w, (GLsizei) h); //set saiz imej 
  glMatrixMode (GL_PROJECTION); //set matrix untuk GL_PROJECTION 
  glLoadIdentity (); //menyimpan 
  gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h);

}

void mouse (int button, int state, int x, int y) {

  switch (button) {
     case GLUT_LEFT_BUTTON:
        if (state == GLUT_DOWN) {
           if (setupMethod == POINTER) {
              setupMethod = INTERLEAVED;
              setupInterleave();
           }
           else if (setupMethod == INTERLEAVED) {
              setupMethod = POINTER;
              setupPointers();
           }
           glutPostRedisplay();
        }
        break;
     case GLUT_MIDDLE_BUTTON:
     case GLUT_RIGHT_BUTTON:
        if (state == GLUT_DOWN) {
           if (derefMethod == DRAWARRAY) 
              derefMethod = ARRAYELEMENT;
           else if (derefMethod == ARRAYELEMENT) 
              derefMethod = DRAWELEMENTS;
           else if (derefMethod == DRAWELEMENTS) 
              derefMethod = DRAWARRAY;
           glutPostRedisplay();
        }
        break;
     default:
        break; /* panggilan fungsi yang menggunakan mouse. */
  }

}

void keyboard(unsigned char key, int x, int y) //function keyboard untuk keluar


{

  switch (key) {
     case 27: //jika kes 27 dipilih (Esc)
        exit(0); //keluar 
        break; // tamat
  }

}

int main(int argc, char** argv) //function main untuk memanggil semua function dan pelaksanaan


{

  glutInit(&argc, argv);  //memanggil function init 
  glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); /* Mod paparan awal digunakan apabila mewujudkan tingkat atas tingkap,subwindows, dan hamparan untuk menentukan OpenGL mod paparan tetingkap akan diwujudkan atau Overlay. */
  glutInitWindowSize (350, 350);  //set saiz tetingkap 
  glutInitWindowPosition (100, 100); //set kedudukan tetingkap 
  glutCreateWindow (argv[0]); //bina tetingkap 
  init ();                   //pelaksanaan 
  glutDisplayFunc(display);  //memanggil function display 
  glutReshapeFunc(reshape);  //memanggil function reshape 
  glutMouseFunc(mouse);      /* hasil akan keluar apabila klik mouse. */
  glutKeyboardFunc (keyboard);//memanggil function keyboard 
  glutMainLoop();            //Ini diperlukan untuk menyempurnakan tingkap-pemprosesan operasi dan pelaksanaan penyataan tersebut, kesemua paparan tingkap yang dicipta termasuk kandungan grafik akan diaktifkan.
  return 0;                  /* ANSI C memerlukan main untuk kembali int.*/

}

  1. endif