SannyOng
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 pada laman penyuntingan. |
===== 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.*/
}
- endif