Open GL Tutorial03

3
Tutorial 03 Callback Reshape Ambil Program 01 yang menggambar bujur sangkat sebagai dasar. Jika kita drag ujung windows sehingga window tidak lagi berupa bujursangkar, bujursangkar-nya juga berubah bentuk. Gambar berikut mengilustrasikan situasinya. Agar gambar tetap berada pada proporsi yang tepat, maka perlu digunakan callback reshape yang dipanggil setiap kali window berubah ukuran. Untuk itu perlu lakukan dua langkah berikut: membuat fungsi yang akan dipanggil saat rehape, di sini fungsinya adalah void resize(int width, int height) melakukan registrasi callback reshape dengan fungsi glutReshapeFunc().

description

 

Transcript of Open GL Tutorial03

Page 1: Open GL Tutorial03

Tutorial 03 Callback Reshape

Ambil Program 01 yang menggambar bujur sangkat sebagai dasar. Jika kita drag ujung windows sehingga window tidak lagi berupa bujursangkar, bujursangkar-nya juga berubah bentuk. Gambar berikut mengilustrasikan situasinya.

Agar gambar tetap berada pada proporsi yang tepat, maka perlu digunakan callback reshape yang dipanggil setiap kali window berubah ukuran. Untuk itu perlu lakukan dua langkah berikut:

– membuat fungsi yang akan dipanggil saat rehape, di sini fungsinya adalahvoid resize(int width, int height)

– melakukan registrasi callback reshape dengan fungsi glutReshapeFunc().

Page 2: Open GL Tutorial03

Program 5. Reshape Function

/*Modul GLUTProgram 05Reshape Function*/#include <GL/glut.h>

void renderScene();void resize(int w, int h);

int main(int argc, char* argv[]){ glutInit(&argc, argv); glutCreateWindow("Program 01"); glutDisplayFunc(renderScene); glutReshapeFunc(resize); glutMainLoop();

return 0;}

void renderScene(){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0f, 0.0f, 1.0f); glBegin(GL_POLYGON); glVertex2f(-0.5f, -0.5f); glVertex2f(-0.5f, 0.5f); glVertex2f(0.5f, 0.5f); glVertex2f(0.5f, -0.5f); glEnd(); glFlush();}

void resize(int w, int h){ if(w >= h) glViewport(0, 0, (GLsizei)h, (GLsizei)h); else glViewport(0, 0, (GLsizei)w, (GLsizei)w);}

Page 3: Open GL Tutorial03

Hasilnya diilustrasikan pada gambar berikut:

glViewport(X, Y, Width, Height) bertanggung jawab untuk melakukan setting viewport dari suatu window, yaitu bagian dari window yang digunakan untuk menggambar.

Selain setting glViewport() biasanya Reshape callback function juga digunakan untuk mengatur Transformasi Proyeksi.