GPU Programming: Frame Buffer Object (penjelasan)

Sample FBO application

Sample FBO application

Pada OpenGL rendering pipeline, geometry data dan textures diubah dan melewati beberapa test sebelum akhirnya di-render ke layar monitor sebagai 2D pixels. Tujuan akhir rendering dari OpenGL pipeline disebut dengan framebuffer. Framebuffer adalah kumpulan 2D array yang digunakan oleh OpenGL, seperti color buffers, depth buffer, stencil buffer, dan accumulation buffer. Pada dasarnya, OpenGL menggunakan framebuffer sebagai redering destination yang dibangun dan diatur oleh window system yang disebut dengan window-system-provided framebuffer.

OpenGL menyediakan GL_EXT_framebuffer_object sebagai sebuah interface untuk membangun non-displayable framebuffer objects (FBO) tambahan. Framebuffer ini disebut sebagai application-created framebuffer untuk membedakan dengan window-system-provided framebuffer. Dengan menggunakan FBO, aplikasi OpenGL dapat secara langung mengirim hasil rendering ke FBO, dan sepenuhnya dikendalikan oleh OpenGL.

Sama halnya dengan window-system-provided framebuffer, FBO mengandung kumpulan rendering  destination, seperti color, depth, dan stencil buffer (Accumulation buffer tidak terdapat di FBO). Buffer-buffer ini disebut dengan framebuffer-attachable images, yang merupakan 2D array of pixels yang dapat ditempatkan ke dalam framebuffer object. Multiple object dapat ditempatkan pada FBO.

connectivity between FBO, texture, and renderbuffer

connectivity between FBO, texture, and renderbuffer

Read More …

GPU Programming: Vertex Buffer Object(VBO)

GL_ARB_vertex buffer object extension dikembangkan untuk meningkatkan performa OpenGL dengan memanfaatkan fungsi dari fasilitas vertex array dan display list pada OpenGL.

Sample VBO application

Sample VBO application

Menggunakan vertex array dapat mengurangi pemanggilan fungsi dan kelebihan shared vertices. Sayangnya, fungsi-fungsi vertex array berada pada sisi klien dan data pada array-array harus di kirim ulang ke server tiap kali ia dibutuhkan. Meskipun sebenarnya display list yang berada di sisi server takkan mengalami gangguan apapun atas pengiriman data yang berulang-ulang. Hanya saja, yang menjadi masalah adalah, ketika display list di-compile, data pada display list tidak dapat dimodifikasi.

Vertex Buffer Object (VBO) hadir untuk mengatasi masalah tersebut. VBO mengalokasikan buffer objects pada graphics memory untuk atribut vertex dan menyediakan beberapa fungsi sebagai akses ke array tersebut. Fungsi-fungsi tersebut digunakan di vertex arrays, seperti glVertexPointer(), glNormalPointer(), glTexCoordPointer(), dan lainnya. Data pada VBO dapat dibaca dan dimodifikasi dengan melakukan mapping buffer object ke dalam RAM. Kelebihan lain VBO adalah sharing buffer object dengan sejumlah klien seperti display list dan texture-texture. Karena VBO berada pada sisi server, maka multiple clients dapat mengakses buffer yang sama. Read More …

error Visual Studio 2005 dan gl.h

Pesan error yang mungkin muncul ketika menggunakan OpenGL pada Visual Studio 2005 :

1>C:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludeGL/gl.h(1152) : error C2144: syntax error : 'void' should be preceded by ';'
1>C:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludeGL/gl.h(1152) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludeGL/gl.h(1152) : error C2146: syntax error : missing ';' before identifier 'glAccum'
1>C:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludeGL/gl.h(1152) : error C2182: 'APIENTRY' : illegal use of type 'void'
1>C:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludeGL/gl.h(1152) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludeGL/gl.h(1153) : error C2144: syntax error : 'void' should be preceded by ';'

Untuk mengatasinya tambahkan

[sourcecode language=’cpp’]#include [/sourcecode]

sebelum memanggil #include <GL/gl.h>