Perbincangan pengguna:Oei aun kong
Assalamualaikum, Salam sejahtera & Salam Wikipedia, Oei aun kong, Selamat datang ke Wikipedia bahasa Melayu! | ||||||||
---|---|---|---|---|---|---|---|---|
Lihat juga tutorial Wikipedia dan Meja bantuan. Untuk menandatangani pesanan anda pada laman perbualan, seperti laman ini, letakkan ~~~~ (empat kali tanda gelombang) atau klik butang pada laman penyuntingan.
--Smim90 (bincang) 04:27, 15 Oktober 2011 (UTC) opengl -oei aun kong[sunting sumber]include <GL/glut.h> include <stdlib.h> static int leftFirst = GL_TRUE; /* Initialize alpha blending function.*/ static void init(void) { glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glShadeModel (GL_FLAT); glClearColor (0.0, 0.0, 0.0, 0.0); } static void drawLeftTriangle(void) { /* draw yellow triangle on LHS of screen */ glBegin (GL_TRIANGLES); glColor4f(1.0, 1.0, 0.0, 0.75); glVertex3f(0.1, 0.9, 0.0); glVertex3f(0.1, 0.1, 0.0); glVertex3f(0.7, 0.5, 0.0); glEnd(); } static void drawRightTriangle(void) { /* draw cyan triangle on RHS of screen */ glBegin (GL_TRIANGLES); glColor4f(0.0, 1.0, 1.0, 0.75); glVertex3f(0.9, 0.9, 0.0); glVertex3f(0.3, 0.5, 0.0); glVertex3f(0.9, 0.1, 0.0); glEnd(); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); if (leftFirst) { drawLeftTriangle(); drawRightTriangle(); } else { drawRightTriangle(); drawLeftTriangle(); } glFlush(); } void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h) gluOrtho2D (0.0, 1.0, 0.0, 1.0*(GLfloat)h/(GLfloat)w); else gluOrtho2D (0.0, 1.0*(GLfloat)w/(GLfloat)h, 0.0, 1.0); } void keyboard(unsigned char key, int x, int y) { switch (key) { case 't': case 'T': leftFirst = !leftFirst; glutPostRedisplay(); break; case 27: /* Escape key */ exit(0); break; default: break; } } /* Main Loop
int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (200, 200); glutCreateWindow (argv[0]); init(); glutReshapeFunc (reshape); glutKeyboardFunc (keyboard); glutDisplayFunc (display); glutMainLoop(); return 0; }
Definition openGL code Include
-glut.h ialah antara muka untuk GLUT (OpenGL Utility Toolkit), lain perpustakaan utiliti yang menyediakan antara muka pengguna platform bebas. include <stdlib.h> -stdlib.h ialah standard C header fail.
static int leftFirst = GL_TRUE; -Memulakan fungsi pengadunan alfa.
static void init(void) glEnable (GL_BLEND); -membolehkan mengadun mula berkuat kuasa
-untuk membekalkan dua pemalar : satu yang menentukan bagaimana faktor sumber perlu dikira, dan satu lagi yang menunjukkan bagaimana faktor destinasi harus dikira. glShadeModel (GL_FLAT); — pilih teduhan rata atau licin Primitif GL boleh mempunyai teduhan sama ada rata atau licin. Teduhan licin, lalai, menyebabkan warna dikira mercu menjadi penentu sebagai primitif ialah rasterized, biasanya memberikan warna yang berbeza untuk setiap serpihan piksel yang dihasilkan.Teduhan Flat memilih warna dikira hanya satu mercu kuasa dan menyerah hak kepada semua pixel serpihan yang dihasilkan oleh rasterizing primitif tunggal. Dalam mana-mana kes, warna dikira satu mercu adalah hasil daripada pencahayaan jika lampu diaktifkan, atau warna semasa pada bila-bila masa mercu telah dinyatakan jika lampu dimatikan. glClearColor (0.0, 0.0, 0.0, 0.0); -nyatakan warna penjelasan, dan apabila menyatakan parameter pencahayaan tertentu seperti harta material atau keamatan cahaya-sumber. static void drawLeftTriangle(void) -melukis segi tiga kuning di kiri skrin.
-membuat segi tiga menggunakan GL_TRIANGLES atau mula melukis segi tiga. Biasanya jika anda mahu 3 mata,gunakan GL_TRIANGLES.Melukis segi tiga agak berpuasa pada kebanyakan kad video. Jika anda mahu 4 mata menggunakan GL_QUADS untuk membuat hidup lebih mudah. Daripada apa yang saya dengar, kebanyakan kad video menyebabkan objek sebagai segi tiga juga. Akhir sekali jika anda mahu lebih dari 4 mata, gunakan GL_POLYGON. glColor4f(1.0, 1.0, 0.0, 0.75); - menetapkan warna semasa Definisi: glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); glColor3f(GLfloat red, GLfloat green, GLfloat blue); GLfloat -warna semasa disimpan dalam format titik apung Parameters red, green, blue Tentukan baru merah, hijau, dan nilai-nilai biru untuk warna semasa. Alpha Menetapkan nilai alfa baru bagi warna semasa. Termasuk hanya dalam empat-hujah glColor4 arahan. glVertex3f -glVertex perintah digunakan dalam pasangan glBegin / glEnd untuk menentukan titik, garis, dan mercu poligon. Warna semasa, normal, koordinat tekstur, dan menyelaras kabus dikaitkan dengan mercu apabila glVertex dipanggil. Apabila hanya x dan y yang dinyatakan, z mungkir kepada 0 dan mungkir w 1. Apabila x, y, dan z dinyatakan, w mungkir kepada 1. glVertex3f(0.1, 0.9, 0.0); glVertex3f(0.1, 0.1, 0.0); glVertex3f(0.7, 0.5, 0.0); Parameters x, y, z, w Tentukan x, y, z, dan w koordinat satu mercu. Tidak semua parameter hadir dalam semua bentuk arahan. glEnd(); -memberitahu OpenGL yang kita lakukan mewujudkan segi tiga
-melukis segi tiga pada skala kanan skrin glBegin (GL_TRIANGLES); glColor4f(0.0, 1.0, 1.0, 0.75); glVertex3f(0.9, 0.9, 0.0); glVertex3f(0.3, 0.5, 0.0); glVertex3f(0.9, 0.1, 0.0); glEnd(); '*merujuk kepada bahagian static void drawLeftTriangle(void)*'
void display(void) -paparan tidak sah adalah nama fungsi di mana kita mahu menjalankan beberapa tugas atau ia mungkin untuk memaparkan sesuatu. Tetapi ia telah mendapat kediaman utama (fungsi) yang bermakna input bahawa fungsi yang dibekalkan dari utama () glClear(GL_COLOR_BUFFER_BIT); -glClear menetapkan kawasan bitplane tetingkap kepada nilai-nilai yang sebelum ini dipilih oleh glClearColor, glClearIndex, glClearDepth, glClearStencil, dan glClearAccum GL_COLOR_BUFFER_BIT -Menunjukkan penampan yang kini JavaScript untuk menulis warna.
if (leftFirst) { drawLeftTriangle(); drawRightTriangle(); } else { drawRightTriangle(); drawLeftTriangle(); } glFlush(); -memaksa arahan sebelum ini untuk melaksanakan
void reshape(int w, int h) -tingkap dipindahkan atau membentuk semula.
-glLoadIdentity menggantikan matriks semasa dengan matriks identiti. Semantik bersamaan untuk memanggil glLoadMatrix dengan matriks identiti 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 tetapi dalam sesetengah kes, ia adalah lebih berkesan.
if (w <= h) -jika h adalah lebih besar daripada atau sama kepada w else gluOrtho2D (0.0, 1.0*(GLfloat)w/(GLfloat)h, 0.0, 1.0);
void keyboard(unsigned char key, int x, int y) -Untuk menangkap mesej dari papan kekunci, kita perlu mempunyai fungsi keyboard. Fungsi ini mesti menerima 3 parameter. Yang pertama char tidak bertanda ialah mewakili kunci yang telah ditekan dan kedua dan ketiga mewakili kedudukan tetikus apabila kekunci ditekan.
switch (key) { case 't': case 'T': leftFirst = !leftFirst; glutPostRedisplay(); break; case 27: /* Escape key */ exit(0); break; default: break; }}
int main(int argc, char** argv) -Fungsi utama adalah di mana program bermula pelaksanaan.a bertanggungjawab untuk organisasi peringkat tinggi fungsi program, dan biasanya mempunyai akses kepada hujah-hujah perintah yang diberikan kepada program itu apabila ia telah dilaksanakan.
glutInitWindowSize (200, 200); -menetapkan kedudukan dan saiz tetingkap awal masing-masing. glutCreateWindow (argv[0]); -mewujudkan tingkap tingkat atas. init(); -init (ringkasan bagi pengawalan) ialah program untuk sistem operasi komputer yang berasaskan Unix yang spawns semua proses lain glutReshapeFunc (reshape); - menetapkan panggil balik membentuk semula bagi tetingkap semasa.Menetapkan membentuk semula panggil balik dicetuskan apabila tingkap membentuk semula. glutKeyboardFunc (keyboard); -menetapkan panggil balik keyboard untuk tetingkap semasa. glutDisplayFunc (display); -menetapkan panggil balik paparan tetingkap semasa. glutMainLoop(); -glutMainLoop memasuki acara GLUT pemprosesan gelung. Rutin ini harus dipanggil paling banyak sekali dalam program GLUT. Sebaik sahaja dipanggil |