OpenGL/Cara melakar segitiga dengan mengunakan openGL
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(); }