Qt: Binding OpenGL Texture dengan QPixMap

Di kampus gw dapet mata kuliah untuk computer graphics, & di mata kuliah ini kita diajarin bikin animasinya di bahasa pemrograman C++ pake OpenGL & framework Qt. Berhubung framework yang dipake Qt, di sini gw bisa pake QPixMap buat texture binding. Oke, di OpenGL sendiri sih ada beberapa cara buat texture binding, tapi yang pake QPixMap ini gw rasa paling enak dipake buat sementara ini.

Sebelumnya klik kanan dulu di project yang lagi dikerjain di project explorer di editor, di situ tambahin file baru. Tambahin file yang extensionnya .qrc (Qt Resource File). Buka file .qrc ini dari editor, lalu tambahin resource gambar-gambar yang mau dipake buat tekstur objek-objek yang mau digambar nanti. Kali ini anggep aja gambar itu disimpen di folder yang namanya “images” yang disimpen satu folder dengan file .qrc tadi, file-file proyek, & source code.

Kalo itu semua udah dibuat, deklarasiin satu variabel di program buat nyimpen data teksturnya.

GLuint texture;

Kita pake tipe data GLuint untuk variabel texture tadi. GLuint itu tipe data unsigned integer yang udah distandarisasi sama OpenGL biarĀ program yang dibuat nanti bisa jalan cross-platform. Sebelum masuk ke bagian texture binding, jangan lupa tambahin satu baris kode ini di program buat ngaktifin fitur 2D texture di OpenGL.

glEnable(GL_TEXTURE_2D);

Kalo nggak di-enable, ntar teksturnya nggak bakalan bisa ditampilin di programnya. Untuk bind texture, kita pake QPixMap buat ngambil gambar yang udah didaftarin ke dalam file .qrc tadi. Kode programnya kayak begini.

texture = bindTexture(QPixMap(QString(":/images/texture.jpg")), GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

Kalo udah begini kita bisa masang teksturnya di gambar yang bakal kita buat habis ini. Misalnya gw ngegambar segiempat yang pake gambar dari file texture.jpg tadi.

glBegin(GL_QUADS);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-0.8f, -0.4f, 0.4f);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(0.8f, -0.4f, 0.4f);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(0.8f, -0.4f, -0.4f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-0.8f, -0.4f, -0.4f);
glEnd();

Kalo itu dijalanin sih seharusnya keluar gambar persegi panjang yang teksturnya ngambil dari gambar yang tadi diambil pake QPixMap.

One thought on “Qt: Binding OpenGL Texture dengan QPixMap

  1. Pingback: OpenGL: Nampilin Gambar | Twisted Pair

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s