OpenGL Veri Tipleri - Mustafa Sabri OĞUZ

Duyurular

24 Haziran 2014 Salı

OpenGL Veri Tipleri


OpenGL bağlı bulunduğu donanım, platform ve kullanılacak programlama dilinin kendine özgü farklılıkları olabileceğinden, grafik işlemleri için kendi içinde tanımladığı veri tipleri mevcuttur. Kullanıcı açısından, platformlar arasında taşınabilirliği korumaya çalışmış.


// "gl.h" OpenGL başlık dosyası
/*
*
* Datatypes
*
*/
#ifdef CENTERLINE_CLPP
#define signed
#endif
typedef unsigned int GLenum;
typedef unsigned char GLboolean;
typedef unsigned int GLbitfield;
typedef void GLvoid;
typedef signed char GLbyte; /* 1-byte signed */
typedef short GLshort; /* 2-byte signed */
typedef int GLint; /* 4-byte signed */
typedef unsigned char GLubyte; /* 1-byte unsigned */
typedef unsigned short GLushort; /* 2-byte unsigned */
typedef unsigned int GLuint; /* 4-byte unsigned */
typedef int GLsizei; /* 4-byte signed */
typedef float GLfloat; /* single precision float */
typedef float GLclampf; /* single precision float in [0,1] */
typedef double GLdouble; /* double precision float */
typedef double GLclampd; /* double precision float in [0,1] */
Eğer tanımın yapıldığı "gl.h" dosyasına göz atmış iseniz, C++ dilinde alışık olduğumuz veri tiplerinin, yeniden tanımlandığı görülmektedir.

Ön EkVeri TipiKarşılık Gelen C TipOpenGL Tip Tanımı
b8-bit integersigned charGLbyte
s16-bit integershortGLshort
i32-bit integerint or longGLint, GLsizei
f32-bit floating-pointfloatGLfloat, GLclampf
d64-bit floating-pointdoubleGLdouble, GLclampd
ub8-bit unsigned integerunsigned charGLubyte, GLboolean
us16-bit unsigned integerunsigned shortGLushort
ui32-bit unsigned integerunsigned int or unsigned longGLuint, GLenum, GLbitfield

OpenGL'in tüm tip tanımları, varsayılan 'C' veri tiplerinden ayırt edebilmek için 'GL' ön eki ile başlar ve daha sonra kullanılacak tip ismi ile biter. (GLint, GLfloat vs...) Bazı işaretsiz (unsigned) tipleri belirtmek için 'u' ön ekini araya sıkıştırılır. (GLubyte, GLuint, GLushort) Ayrıca bazı değişkenlerin kullanılma amacını belirginleştirmek için farklı tipler tanımlanmıştır. Mesela; uzunluk ve derinlik gibi ölçü birimleri için 'GLsizei' tipi, renk değeri taşıdığını belirtmek için 'clamp' takısı kullanılmaktadır.

// C Tip Tanımı
float fvector;
short svector[5];
double *dvector[10];

// OpenGL Tip Tanımı
GLfloat fvector;

// Dizi ve İşaretçi Tip Tanımı
GLshort shorts[5];
GLdouble *doubles[10];

Aynı 'C' dilinde yaptığımız değişken tipi tanımlaması gibi OpenGL tipleri ile değişken tanımlamak mümkün. Böylece değişkenlerin veri tipine bakarak, hangilerinin OpenGL yada programlama dili için tanımlandığını da ayırt edebilmekteyiz.


Referans:
http://eryms.com/c-opengl-01-giris/
http://www.glprogramming.com/red/chapter01.html

Hiç yorum yok:

Yorum Gönder