Perbincangan pengguna:Renx

Kandungan laman tidak disokong dalam bahasa lain.
Daripada Wikipedia, ensiklopedia bebas.
Selamat datang ke Wikipedia Bahasa Melayu!
Salam sejahtera Renx! 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! {{{1}}}

...Aurora... (b) 09:12, 24 Oktober 2011 (UTC)[balas]

LAB2-ASSIGNMENT(A134688)TAN DAI WANG[sunting sumber]

#include <stdlib.h>          
#include <GL/glut.h>
static GLfloat spin = 0.0;

void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
}

void display(void)
{

glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(spin, 0.0, 0.0, 1.0);

// Define checker board bitmap
glClear(GL_COLOR_BUFFER_BIT);
GLubyte wb[2] = {0x00, 0xff};
GLubyte check[512];
int i, j;
for (i=0;i<64;i++)
for (j=0;j<8;j++)
check[i*8+j] = wb[(i/8+j)%2];

// Display checker board bitmap 
glColor3f(1.0, 0.0, 0.0);
glRasterPos3f(-26.7, 15.0, 0.0);
glBitmap(64, 64, 0.0, 0.0, 0.0, 0.0, check);

glColor3f(0.0, 1.0, 0.0);
glRasterPos3f(15.0, 15.0, 0.0);
glBitmap(64, 64, 0.0, 0.0, 0.0, 0.0, check);

glColor3f(0.0, 0.0, 1.0);
glRasterPos3f(15.0, -26.7, 0.0);
glBitmap(64, 64, 0.0, 0.0, 0.0, 0.0, check);

glColor3f(0.0, 1.0, 1.0);
glRasterPos3f(-26.7, -26.7, 0.0);
glBitmap(64, 64, 0.0, 0.0, 0.0, 0.0, check);


// Draw font bitmap
glColor3f(0.3, 1.0, 0.0);
glRasterPos3f(-10.0, 35.0, 0.0);
// glutBitmapString(GLUT_BITMAP_TIMES_ROMAN_24, "Testing\n");
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'F');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'O');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'R');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'E');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'V');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'E');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'R');

//word LOVE
glColor3f(1.0, 2.0,0.0);
glBegin(GL_LINES);
glVertex2f(2.5,15.0);
glVertex2f(-2.5,15.0);
glVertex2f(-2.5,15.0);
glVertex2f(-2.5,25.0);
glEnd();

glColor3f(1.0, 0.0,2.0);
glBegin(GL_LINE_LOOP);
glVertex2f(-20,-5);
glVertex2f(-15,-5);
glVertex2f(-15,5);
glVertex2f(-20,5);
glEnd();

glColor3f(1.0, 0.0,0.0);
glBegin(GL_LINES);
glVertex2f(2.5,-15.0);
glVertex2f(0.0,-25.0);
glVertex2f(0.0,-25.0);
glVertex2f(-2.5,-15.0);
glEnd();

glColor3f(0.0, 2.0,3.0);
glBegin(GL_LINES);
glVertex2f(15.0,5.0);
glVertex2f(20.0,5.0);
glVertex2f(15.0,0.0);
glVertex2f(18.0,0.0);
glVertex2f(15.0,-5.0);
glVertex2f(20.0,-5.0);
glVertex2f(15.0,5.0);
glVertex2f(15.0,-5.0);
glEnd();
//End word


glBegin(GL_POLYGON);
glColor3f(0.5f, 0.0f, 0.8f);
glVertex3f (-10.0, -10.0, 0.0);
glColor3f(0.0f, 0.9f, 0.0f);
glVertex3f (10.0, -10.0, 0.0);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex3f (10.0, 10.0, 0.0);
glColor3f(0.0f, 0.65f, 0.65f);
glVertex3f (-10.0, 10.0, 0.0);
glEnd();

glBegin(GL_QUADS);

//Trapezoid
glColor3f(0.5f, 0.0f, 0.8f);
glVertex3f(-7.0f, -5.0f, 0.0f);
glColor3f(0.0f, -9.0f, 0.0f);
glVertex3f(7.0f, -5.0f, 0.0f);
glColor3f(10.0f, 0.0f, 0.0f);
glVertex3f(4.0f, 5.0f, 0.0f);
glColor3f(0.0f, 6.50f, 6.50f);
glVertex3f(-4.0f, 5.0f, 0.0f);
glEnd();

glColor3f(0.0, 0.9, 0.4);
glRectf(10.0, 10.0, 15.0, 15.0);

glColor3f(0.0, 0.9, 0.3);
glRectf(-10.0, 10.0, -15.0, 15.0);

glColor3f(0.0, 0.9, 0.2);
glRectf(-10.0, -10.0, -15.0,-15.0);

glColor3f(0.0, 0.9, 0.1);
glRectf(10.0, -10.0, 15.0,-15.0);

glPopMatrix();
glutSwapBuffers();
}

void spinDisplay(void)
{
spin = spin + 2.0;
if (spin > 360.0)
spin = spin - 360.0;
glutPostRedisplay();
}
void reshape(int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void mouse(int button, int state, int x, int y)
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN)
glutIdleFunc(spinDisplay);
break;
case GLUT_MIDDLE_BUTTON:
if (state == GLUT_DOWN)
glutIdleFunc(NULL);
break;
default:
break;
}
}
/*
* Request double buffer display mode.
* Register mouse input callback functions
*/
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMouseFunc(mouse);
glutMainLoop();
return 0;
}

<source lang="c">

  1. include <stdlib.h>

stdlib.h ialah satu header fail yang standard.

  1. include <GL/glut.h>

glut.h ialah antara muka bagi GLUT (OpenGL Utility Toolkit)

static GLfloat spin = 0.0;


void init(void) fungsi Init tidak akan kembali apa-apa ke fungsi yang lain dan ia tidak akan menjangkakanparameter apa-apa untuk dilaksanakan { glClearColor (0.0, 0.0, 0.0, 0.0); fungsi ini menentukan merah, hijau, biru, dan nilai-nilai alfa yang digunakan oleh glClear untuk mengosongkan penampan warna. Nilai-nilai yang dinyatakan oleh glClearColor diapit kepada julat 01. glShadeModel (GL_FLAT); }

void display(void) untuk kita menjalankan beberapa tugas atau memaparkan sesuatu { glClear(GL_COLOR_BUFFER_BIT); fungsi ini membersihkan semua pixels glPushMatrix(); fungsi ini menolak susunan matrik semasa glRotatef(spin, 0.0, 0.0, 1.0); darab matriks semasa oleh matriks putaran

// Define checker board bitmap glClear(GL_COLOR_BUFFER_BIT); padam frame buffer membersihkan penampan kepada nilai-nilai yang dipratetep(menunjukkan penampan yang kini boleh bagi penulisan color GLubyte wb[2] = {0x00, 0xff}; GLubyte check[512]; int i, j; declare i and j as an int for (i=0;i<64;i++) for (j=0;j<8;j++) check[i*8+j] = wb[(i/8+j)%2];

// Display checker board bitmap glColor3f(1.0, 0.0, 0.0); menetapkan color semasa glRasterPos3f(-26.7, 15.0, 0.0); menetapkan kedudukan raster untuk operasi pixel glBitmap(64, 64, 0.0, 0.0, 0.0, 0.0, check); melukis satu bitmap(GLSizei width,GLSizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) lebar-lebar pixel tinggi-tingi pixel xorig- Lokasi x bagi asalan dalam imej bitmap. Asalan itu diukur dari sudut bawah kiri bagi bitmap,dengan arah kanan dan atas sebagai paksi positif yorig- Lokasi y bagi asalan dalam imej bitmap. Asalan itu diukur dari sudut bawah kiri bagi bitmap,dengan arah kanan dan atas sebagai paksi positif xmove- x offset ditambah dengan kedudukan raster semasa setelah bitmap dilukis ymove- y offset ditambah dengan kedudukan raster semasa setelah bitmap dilukis bitmap- alamat bagi bitmap imej

glColor3f(0.0, 1.0, 0.0); glRasterPos3f(15.0, 15.0, 0.0); glBitmap(64, 64, 0.0, 0.0, 0.0, 0.0, check);

glColor3f(0.0, 0.0, 1.0); glRasterPos3f(15.0, -26.7, 0.0); glBitmap(64, 64, 0.0, 0.0, 0.0, 0.0, check);

glColor3f(0.0, 1.0, 1.0); glRasterPos3f(-26.7, -26.7, 0.0); glBitmap(64, 64, 0.0, 0.0, 0.0, 0.0, check);


// Draw font bitmap glColor3f(0.3, 1.0, 0.0); glRasterPos3f(-10.0, 35.0, 0.0); // glutBitmapString(GLUT_BITMAP_TIMES_ROMAN_24, "Testing\n"); glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'F'); menuliskan watak bitmap (satu 24-point proporsyen jarak Times New Roman font) glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'O'); glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'R'); glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'E'); glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'V'); glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'E'); glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, 'R');

//word LOVE glColor3f(1.0, 2.0,0.0); glBegin(GL_LINES); membatasi primitif verteks atau satu kumpulan seperti primitif(memperlakukan setiap pasangan verteks sebagai segmen garis bebas) glVertex2f(2.5,15.0); menetapkan satu verteks (x-koordinate, y-koordinate) glVertex2f(-2.5,15.0); glVertex2f(-2.5,15.0); glVertex2f(-2.5,25.0); glEnd();

glColor3f(1.0, 0.0,2.0); glBegin(GL_LINE_LOOP); melukis satu kumpulan segmen garisan yang disambung dari verteks pertama hingga yang terakhir,kemudian kembali kepada yang pertama glVertex2f(-20,-5); glVertex2f(-15,-5); glVertex2f(-15,5); glVertex2f(-20,5); glEnd();

glColor3f(1.0, 0.0,0.0); glBegin(GL_LINES); glVertex2f(2.5,-15.0); glVertex2f(0.0,-25.0); glVertex2f(0.0,-25.0); glVertex2f(-2.5,-15.0); glEnd();

glColor3f(0.0, 2.0,3.0); glBegin(GL_LINES); glVertex2f(15.0,5.0); glVertex2f(20.0,5.0); glVertex2f(15.0,0.0); glVertex2f(18.0,0.0); glVertex2f(15.0,-5.0); glVertex2f(20.0,-5.0); glVertex2f(15.0,5.0); glVertex2f(15.0,-5.0); glEnd();


glBegin(GL_POLYGON); melukis poligon ungu (segi empat tepat) dengan sudut pada (-10, -10 , 0) and (10, 10, 0) glColor3f(0.5f, 0.0f, 0.8f); glVertex3f (-10.0, -10.0, 0.0); glColor3f(0.0f, 0.9f, 0.0f); glVertex3f (10.0, -10.0, 0.0); glColor3f(1.0f, 0.0f, 0.0f); glVertex3f (10.0, 10.0, 0.0); glColor3f(0.0f, 0.65f, 0.65f); glVertex3f (-10.0, 10.0, 0.0); glEnd(); fungsi ini akhirkan senarai verteks


glBegin(GL_QUADS); melukis kuadrilateral biru dengan sudut pada (-7.5, -5.0, 0.0) and (4.0, 5.0, 0.0) glColor3f(0.5f, 0.0f, 0.8f); glVertex3f(-7.0f, -5.0f, 0.0f); glColor3f(0.0f, -9.0f, 0.0f); glVertex3f(7.0f, -5.0f, 0.0f); glColor3f(10.0f, 0.0f, 0.0f); glVertex3f(4.0f, 5.0f, 0.0f); glColor3f(0.0f, 6.50f, 6.50f); glVertex3f(-4.0f, 5.0f, 0.0f); glEnd();

glColor3f(0.0, 0.9, 0.4); glRectf(10.0, 10.0, 15.0, 15.0); fungsi ini melakar segi empat tepat (x1, y1, x2, y2) X1-koordinat x bagi vertexs segi empat tepat Y1-koordinat y bagi verteks segi empat tepat x2-koordinat x bertentangan dengan verteks segi empat tepat y2-koordinat y bertentengan dengan verteks segi empat tepat glColor3f(0.0, 0.9, 0.3); glRectf(-10.0, 10.0, -15.0, 15.0);

glColor3f(0.0, 0.9, 0.2); glRectf(-10.0, -10.0, -15.0,-15.0);

glColor3f(0.0, 0.9, 0.1); glRectf(10.0, -10.0, 15.0,-15.0);

glPopMatrix(); fungsi ini timbul susunan matrik semasa glutSwapBuffers(); menukar penimbal bagi tingkap semasa jika ditimbal berganda }

void spinDisplay(void) { spin = spin + 2.0; if (spin > 360.0) spin = spin - 360.0; glutPostRedisplay(); menetapkan satu bendera supaya berada pada lelaran mainloop yang berikutnya } void reshape(int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); menetapkan viewport(x , y, width, height) glMatrixMode(GL_PROJECTION); menentukan matrix semasa(mengaplikasikan operasi matriks seterusnya kepada susunan matriks unjuran) glLoadIdentity(); menggantikan matriks semasa dengan matriks identiti glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0); mendarad matriks semasa oleh matriks ortografi(left, right, bottom, top, zNear, zFar) left & right –keratan satah menegak bottom & top –keratan satah mendatar glMatrixMode(GL_MODELVIEW); (mengaplikasikan operasi matriks seterusnya kepada susunan matriks modelview) glLoadIdentity(); } void mouse(int button, int state, int x, int y) { switch (button) { case GLUT_LEFT_BUTTON: if (state == GLUT_DOWN) glutIdleFunc(spinDisplay); menetapkan panggilbalik idle global break; case GLUT_MIDDLE_BUTTON: if (state == GLUT_DOWN) glutIdleFunc(NULL); break; default: break; } } /*

  • Request double buffer display mode.
  • Register mouse input callback functions
  • /

int main(int argc, char** argv) { glutInit(&argc, argv); fungsi ini initialize pustaka GLUT oleh itu ia mesti dipanggil sebelum fungsi GLUT yang lain glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); fungsi ini menetapkan mode paparan yang awal GLUT_DOUBLE adalah untuk memilih tingkap yang ditimbal berganda GLUT_RGBA menyatakan color paparan sebagai merah, hijau dan biru glutInitWindowSize (500, 500); fungsi ini menentukan ketinggian awal dan lebar bagi tingkap yang dicipta glutInitWindowPosition (0, 0); fungsi ini menetapkan tingkap yang dicipta akan diletakkan pada sudut atas kiri skrin glutCreateWindow (“Rotation”); fungsi ini akan menwujudkan satu tingkap yang bernama ROTATION init (); glutDisplayFunc(display); Setiap kali tingkap perlu dilakar semula, sistem akan memanggil display glutReshapeFunc(reshape); apabila size tingkap berubah, sistem akan memanggil reshape glutMouseFunc(mouse); menetapkan panggil balik tetikus untuk tingkap semasa glutMainLoop(); Fungsi ini menyebabkan program untuk memasuki gelung acara-pemprosesan return 0; }