Copied libutil and libtess implementations in form Mesa 7.9/src/glu into the src/osg/glu,
changed extensions from .c to .cpp and got compiling as C files as part of the osg core library. Updated and cleaned up the rest of the OSG to use the new internal GLU.
This commit is contained in:
@@ -150,14 +150,6 @@ bool setGLExtensionFuncPtr(T& t, const char* str1, const char* str2, const char*
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** Return true if OpenGL "extension" is supported.
|
||||
* Note: Must only be called within a valid OpenGL context,
|
||||
* undefined behavior may occur otherwise.
|
||||
*/
|
||||
extern OSG_EXPORT bool isGLUExtensionSupported(unsigned int contextID, const char *extension);
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
125
include/osg/GLU
125
include/osg/GLU
@@ -14,25 +14,120 @@
|
||||
#ifndef OSG_GLU
|
||||
#define OSG_GLU 1
|
||||
|
||||
#include <osg/Config>
|
||||
#include <osg/GL>
|
||||
|
||||
#ifdef OSG_GLU_AVAILABLE
|
||||
extern OSG_EXPORT GLint gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
|
||||
extern OSG_EXPORT const GLubyte * gluErrorString (GLenum error);
|
||||
extern OSG_EXPORT GLint gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||||
extern OSG_EXPORT GLint gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||||
extern OSG_EXPORT GLint gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||||
extern OSG_EXPORT GLint gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||||
extern OSG_EXPORT GLint gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||||
extern OSG_EXPORT GLint gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||||
|
||||
#include <osg/GL>
|
||||
/* ErrorCode */
|
||||
#define GLU_INVALID_ENUM 100900
|
||||
#define GLU_INVALID_VALUE 100901
|
||||
#define GLU_OUT_OF_MEMORY 100902
|
||||
#define GLU_INCOMPATIBLE_GL_VERSION 100903
|
||||
#define GLU_INVALID_OPERATION 100904
|
||||
|
||||
#if defined(__APPLE__) || \
|
||||
(defined (_AIX) && !defined (_AIX51))
|
||||
#include <OpenGL/glu.h>
|
||||
#else
|
||||
#include <GL/glu.h>
|
||||
#endif
|
||||
/* Boolean */
|
||||
#define GLU_FALSE 0
|
||||
#define GLU_TRUE 1
|
||||
|
||||
#if defined(GLU_TESS_CALLBACK_TRIPLEDOT)
|
||||
typedef void (GL_APIENTRY *GLU_TESS_CALLBACK)(...);
|
||||
#else
|
||||
typedef void (GL_APIENTRY *GLU_TESS_CALLBACK)();
|
||||
#endif
|
||||
/* QuadricDrawStyle */
|
||||
#define GLU_POINT 100010
|
||||
#define GLU_LINE 100011
|
||||
#define GLU_FILL 100012
|
||||
#define GLU_SILHOUETTE 100013
|
||||
|
||||
/* QuadricCallback */
|
||||
/* GLU_ERROR */
|
||||
|
||||
/* QuadricNormal */
|
||||
#define GLU_SMOOTH 100000
|
||||
#define GLU_FLAT 100001
|
||||
#define GLU_NONE 100002
|
||||
|
||||
/* QuadricOrientation */
|
||||
#define GLU_OUTSIDE 100020
|
||||
#define GLU_INSIDE 100021
|
||||
|
||||
/* TessCallback */
|
||||
#define GLU_TESS_BEGIN 100100
|
||||
#define GLU_BEGIN 100100
|
||||
#define GLU_TESS_VERTEX 100101
|
||||
#define GLU_VERTEX 100101
|
||||
#define GLU_TESS_END 100102
|
||||
#define GLU_END 100102
|
||||
#define GLU_TESS_ERROR 100103
|
||||
#define GLU_TESS_EDGE_FLAG 100104
|
||||
#define GLU_EDGE_FLAG 100104
|
||||
#define GLU_TESS_COMBINE 100105
|
||||
#define GLU_TESS_BEGIN_DATA 100106
|
||||
#define GLU_TESS_VERTEX_DATA 100107
|
||||
#define GLU_TESS_END_DATA 100108
|
||||
#define GLU_TESS_ERROR_DATA 100109
|
||||
#define GLU_TESS_EDGE_FLAG_DATA 100110
|
||||
#define GLU_TESS_COMBINE_DATA 100111
|
||||
|
||||
/* TessContour */
|
||||
#define GLU_CW 100120
|
||||
#define GLU_CCW 100121
|
||||
#define GLU_INTERIOR 100122
|
||||
#define GLU_EXTERIOR 100123
|
||||
#define GLU_UNKNOWN 100124
|
||||
|
||||
/* TessProperty */
|
||||
#define GLU_TESS_WINDING_RULE 100140
|
||||
#define GLU_TESS_BOUNDARY_ONLY 100141
|
||||
#define GLU_TESS_TOLERANCE 100142
|
||||
|
||||
/* TessError */
|
||||
#define GLU_TESS_ERROR1 100151
|
||||
#define GLU_TESS_ERROR2 100152
|
||||
#define GLU_TESS_ERROR3 100153
|
||||
#define GLU_TESS_ERROR4 100154
|
||||
#define GLU_TESS_ERROR5 100155
|
||||
#define GLU_TESS_ERROR6 100156
|
||||
#define GLU_TESS_ERROR7 100157
|
||||
#define GLU_TESS_ERROR8 100158
|
||||
#define GLU_TESS_MISSING_BEGIN_POLYGON 100151
|
||||
#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152
|
||||
#define GLU_TESS_MISSING_END_POLYGON 100153
|
||||
#define GLU_TESS_MISSING_END_CONTOUR 100154
|
||||
#define GLU_TESS_COORD_TOO_LARGE 100155
|
||||
#define GLU_TESS_NEED_COMBINE_CALLBACK 100156
|
||||
|
||||
/* TessWinding */
|
||||
#define GLU_TESS_WINDING_ODD 100130
|
||||
#define GLU_TESS_WINDING_NONZERO 100131
|
||||
#define GLU_TESS_WINDING_POSITIVE 100132
|
||||
#define GLU_TESS_WINDING_NEGATIVE 100133
|
||||
#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
|
||||
|
||||
class GLUtesselator;
|
||||
typedef GLUtesselator GLUtesselatorObj;
|
||||
typedef GLUtesselator GLUtriangulatorObj;
|
||||
|
||||
#define GLU_TESS_MAX_COORD 1.0e150
|
||||
|
||||
/* Internal convenience typedefs */
|
||||
typedef void (GL_APIENTRY * _GLUfuncptr)();
|
||||
typedef void (GL_APIENTRY * GLU_TESS_CALLBACK)();
|
||||
|
||||
extern OSG_EXPORT GLUtesselator* gluNewTess (void);
|
||||
extern OSG_EXPORT void gluDeleteTess (GLUtesselator* tess);
|
||||
|
||||
extern OSG_EXPORT void gluTessBeginContour (GLUtesselator* tess);
|
||||
extern OSG_EXPORT void gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
|
||||
extern OSG_EXPORT void gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
|
||||
extern OSG_EXPORT void gluTessEndContour (GLUtesselator* tess);
|
||||
extern OSG_EXPORT void gluTessEndPolygon (GLUtesselator* tess);
|
||||
extern OSG_EXPORT void gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
|
||||
extern OSG_EXPORT void gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
|
||||
extern OSG_EXPORT void gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
|
||||
|
||||
#endif
|
||||
|
||||
#endif // __osgGLU_h
|
||||
|
||||
@@ -21,19 +21,6 @@
|
||||
|
||||
#include <osgUtil/Export>
|
||||
|
||||
#ifndef OSG_GLU_AVAILABLE
|
||||
// as we have no GLU we'll just define the required enum values
|
||||
#define GLU_FALSE 0
|
||||
#define GLU_FILL 100012
|
||||
#define GLU_SMOOTH 100000
|
||||
#define GLU_OUTSIDE 100020
|
||||
#define GLU_NONE 100002
|
||||
#define GLU_POINT 100010
|
||||
#define GLU_LINE 100011
|
||||
#define GLU_FILL 100012
|
||||
#define GLU_SILHOUETTE 100013
|
||||
#endif
|
||||
|
||||
namespace osgUtil {
|
||||
|
||||
/** A class for assisting the building ascene graphs that is equivilant to OpenGL 1.0 style calls.
|
||||
|
||||
@@ -27,14 +27,6 @@
|
||||
#define CALLBACK
|
||||
#endif
|
||||
|
||||
#ifndef OSG_GLU_AVAILABLE
|
||||
#define GLU_TESS_WINDING_ODD 100130
|
||||
#define GLU_TESS_WINDING_NONZERO 100131
|
||||
#define GLU_TESS_WINDING_POSITIVE 100132
|
||||
#define GLU_TESS_WINDING_NEGATIVE 100133
|
||||
#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
|
||||
#endif
|
||||
|
||||
namespace osgUtil {
|
||||
|
||||
/** Originally a simple class for tessellating a single polygon boundary.
|
||||
@@ -218,11 +210,8 @@ class OSGUTIL_EXPORT Tessellator : public osg::Referenced
|
||||
typedef std::vector<NewVertex> NewVertexList;
|
||||
typedef std::vector<Vec3d*> Vec3dList;
|
||||
|
||||
#ifdef OSG_GLU_AVAILABLE
|
||||
GLUtesselator* _tobj;
|
||||
#else
|
||||
void* _tobj;
|
||||
#endif
|
||||
|
||||
PrimList _primList;
|
||||
Vec3dList _coordData;
|
||||
NewVertexList _newVertexList;
|
||||
|
||||
Reference in New Issue
Block a user