home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 February / Chip_2001-02_cd1.bin / bonus / demos / CS / exp / SOURCES / GLENGINE / macros.h < prev    next >
C/C++ Source or Header  |  2000-07-16  |  1KB  |  32 lines

  1. /*
  2.  * Useful macros.
  3.  */
  4.  
  5. #ifndef __OGL2_MACROS_H__
  6. #define __OGL2_MACROS_H__
  7.  
  8. #define UBYTE_TO_FLOAT(B)    ((GLfloat) (B) * (1.0F / 255.0F))
  9. #define BYTE_TO_FLOAT(B)    ((2.0F * (B) + 1.0F) * (1.0F/255.0F))
  10. #define USHORT_TO_FLOAT(S)    ((GLfloat) (S) * (1.0F / 65535.0F))
  11. #define SHORT_TO_FLOAT(S)    ((2.0F * (S) + 1.0F) * (1.0F/65535.0F))
  12. #define UINT_TO_FLOAT(U)    ((GLfloat) (U) * (1.0F / 4294967295.0F))
  13. #define INT_TO_FLOAT(I)        ((2.0F * (I) + 1.0F) * (1.0F/4294967294.0F))
  14.  
  15. inline void SetVector3 (GLfloat* v, GLfloat x, GLfloat y, GLfloat z) {
  16.   v[0] = x;  v[1] = y;  v[2] = z;
  17. }
  18. inline void SetVector4 (GLfloat* v, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
  19.   v[0] = x;  v[1] = y;  v[2] = z;  v[3] = w;
  20. }
  21. inline void SetVector3 (GLfloat* v, GLubyte x, GLubyte y, GLubyte z) {
  22.   v[0] = UBYTE_TO_FLOAT(x);  v[1] = UBYTE_TO_FLOAT(y);
  23.   v[2] = UBYTE_TO_FLOAT(z);
  24. }
  25. inline void SetVector4 (GLfloat* v, GLubyte x, GLubyte y, GLubyte z, GLubyte w) {
  26.   v[0] = UBYTE_TO_FLOAT(x);  v[1] = UBYTE_TO_FLOAT(y);
  27.   v[2] = UBYTE_TO_FLOAT(z);  v[3] = UBYTE_TO_FLOAT(w);
  28. }
  29.  
  30.  
  31. #endif
  32.