portable version of GPU Caps Viewer

GPU Caps Viewer is a tool to see your graphics card information with focus on the OpenGL, OpenCL, and CUDA API level support. It’s developed by Geeks3D and unfortunately only support Win 32-bit. ( no linux there 😦 )

The latest version (1.9.4 released on 2010.11.05) can be downloaded here. Continue reading

A simple CUDA-MFC program

Well, it’s just a simple CUDA program written in MFC framework. You know, all CUDA examples in NVIDIA SDK were written by using GLUT library, so they only use glut-window. Here, I’m trying to combine CUDA+OpenGL+GLSL in an MFC program, and this is the result.cumfc Continue reading

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

Continue reading

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. Continue reading

OpenGL Rendering Pipeline

OpenGL pipeline adalah urutan proses rendering dalam OpenGL. Dua informasi grafis, vertex-based data dan pixel-based data, diproses melalui pipeline, dikombinasikan bersamaan dan kemudian dicatat ke dalam framebuffer. OpenGL juga dapat memproses balik data dari framebuffer ke aplikasi anda.

www.songho.ca

OpenGL pipeline, sumber: http://www.songho.ca

Display List
Display list adalah kumpulan perintah dalam OpenGL yang akan dieksekusi kemudian. Seluruh data, geometry data dan pixel data dapat disimpan di dalam display list. Hal ini dapat meningkatkan performa karena perintah dan data berada dalam display list. Ketika OpenGL bekerja dalam jaringan, anda dapat mengurangi transmisi data di jaringan dengan menggunakan display list. Karena display list bagian dari server state dan berada di mesin server, maka klien harus mengirim perintah dan data ke display list di server, tetapi itu cukup sekali saja. Continue reading

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

#include 

sebelum memanggil #include <GL/gl.h>