vecgl.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // vecgl.h
  2. //
  3. // Copyright (C) 2000, Chris Laurel <claurel@shatters.net>
  4. //
  5. // Overloaded versions of GL functions
  6. //
  7. // This program is free software; you can redistribute it and/or
  8. // modify it under the terms of the GNU General Public License
  9. // as published by the Free Software Foundation; either version 2
  10. // of the License, or (at your option) any later version.
  11. #ifndef _VECGL_H_
  12. #define _VECGL_H_
  13. #include <celmath/vecmath.h>
  14. #include <celmath/quaternion.h>
  15. #include <celutil/color.h>
  16. inline void glVertex(const Point3f& p)
  17. {
  18.     glVertex3fv(&p.x);
  19. }
  20. inline void glVertex(const Vec3f& v)
  21. {
  22.     glVertex3fv(&v.x);
  23. }
  24. inline void glNormal(const Vec3f& n)
  25. {
  26.     glNormal3fv(&n.x);
  27. }
  28. inline void glTexCoord(const Point2f& p)
  29. {
  30.     glTexCoord2fv(&p.x);
  31. }
  32. inline void glColor(const Color& c)
  33. {
  34.     glColor4f(c.red(), c.green(), c.blue(), c.alpha());
  35. }
  36. inline void glColor(const Color& c, float a)
  37. {
  38.     glColor4f(c.red(), c.green(), c.blue(), c.alpha() * a);
  39. }
  40. inline void glMatrix(const Mat4f& m)
  41. {
  42.     Mat4f trans = m.transpose();
  43.     glMultMatrixf(&trans[0].x);
  44. }
  45. inline void glMatrix(const Mat4d& m)
  46. {
  47.     Mat4d trans = m.transpose();
  48.     glMultMatrixd(&trans[0].x);
  49. }
  50. inline void glRotate(const Quatf& q)
  51. {
  52.     glMatrix(q.toMatrix4());
  53. }
  54. inline void glRotate(const Quatd& q)
  55. {
  56.     glMatrix(q.toMatrix4());
  57. }
  58. inline void glTranslate(const Vec3f& v)
  59. {
  60.     glTranslatef(v.x, v.y, v.z);
  61. }
  62. inline void glTranslate(const Point3f& p)
  63. {
  64.     glTranslatef(p.x, p.y, p.z);
  65. }
  66. inline void glScale(const Vec3f& v)
  67. {
  68.     glScalef(v.x, v.y, v.z);
  69. }
  70. inline void glLightDirection(GLenum light, const Vec3f& dir)
  71. {
  72.     glLightfv(light, GL_POSITION, &(Vec4f(dir.x, dir.y, dir.z, 0.0f).x));
  73. }
  74. inline void glLightPosition(GLenum light, const Point3f& pos)
  75. {
  76.     glLightfv(light, GL_POSITION, &(Vec4f(pos.x, pos.y, pos.z, 1.0f).x));
  77. }
  78. inline void glLightColor(GLenum light, GLenum which, const Vec3f& color)
  79. {
  80.     glLightfv(light, which, &(Vec4f(color.x, color.y, color.z, 1.0f).x));
  81. }
  82. inline void glLightColor(GLenum light, GLenum which, const Vec4f& color)
  83. {
  84.     glLightfv(light, which, &color.x);
  85. }
  86. inline void glLightColor(GLenum light, GLenum which, const Color& color)
  87. {
  88.     glLightfv(light, which,
  89.               &(Vec4f(color.red(), color.green(), color.blue(), color.alpha()).x));
  90. }
  91. inline void glAmbientLightColor(const Color& color)
  92. {
  93.     glLightModelfv(GL_LIGHT_MODEL_AMBIENT,
  94.                    &(Vec4f(color.red(), color.green(), color.blue(),
  95.                            color.alpha()).x));
  96. }
  97. #endif // _VECGL_H_