X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2Fmoof%2Fopengl.hh;h=3367bc8616ddcf569dfa78261bec5f90b9432462;hp=04cc13e9c72bfac4e7196cf6ae6b3df2299a76d7;hb=d6990468d297a6cbee98e4d0d33ab37e1b2352c9;hpb=449366f5f32d24f2a2a6589da6e16b2bf0d61773 diff --git a/src/moof/opengl.hh b/src/moof/opengl.hh index 04cc13e..3367bc8 100644 --- a/src/moof/opengl.hh +++ b/src/moof/opengl.hh @@ -18,7 +18,9 @@ * and matrices. */ -#include "../config.h" +#include "config.h" + +#include #include @@ -57,7 +59,7 @@ #define PASS_V4 v[0], v[1], v[2], v[3] -#if USE_DOUBLE_PRECISION +#if ENABLE_DOUBLE_PRECISION #define OPENGL_GENERIC_FUNC(R, N, L) \ inline R gl##N(ARGS_##L) { gl##N##d(PASS_##L); }// @@ -105,7 +107,37 @@ OPENGL_GENERIC_FUNC(void, Rect, S4); OPENGL_GENERIC_FUNC(void, Rect, V4); -#if USE_DOUBLE_PRECISION +inline void glMaterial(GLenum face, GLenum pname, moof::scalar s) +{ + glMaterialf(face, pname, float(s)); +} + +inline void glMaterial(GLenum face, GLenum pname, const moof::vector4& v) +{ +#if ENABLE_DOUBLE_PRECISION + float f[] = {v[0], v[1], v[2], v[3]}; + glMaterialfv(face, pname, f); +#else + glMaterialfv(face, pname, v.data()); +#endif +} + +inline void glVertexPointer(const std::vector& v) +{ + glVertexPointer(3, GL_SCALAR, 0, v[0].data()); +} +inline void glTexCoordPointer(const std::vector& v) +{ + glTexCoordPointer(2, GL_SCALAR, 0, v[0].data()); +} + +inline void glDrawElements(GLenum type, const std::vector& v) +{ + glDrawElements(type, v.size(), GL_UNSIGNED_INT, &v[0]); +} + + +#if ENABLE_DOUBLE_PRECISION inline void glGetScalar(GLenum a, GLscalar* b) { glGetDoublev(a, b); } #else inline void glGetScalar(GLenum a, GLscalar* b) { glGetFloatv(a, b); }