root/OpenSceneGraph/trunk/include/osg/GLU @ 11829

Revision 11829, 7.9 kB (checked in by robert, 4 years ago)

Introduced osg namespace to new local GLU functions

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2 *
3 * This library is open source and may be redistributed and/or modified under 
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version.  The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 * OpenSceneGraph Public License for more details.
12*/
13
14#ifndef OSG_GLU
15#define OSG_GLU 1
16
17#include <osg/GL>
18
19namespace osg
20{
21
22/* Pixel storage modes, used by gluScaleImage */
23struct OSG_EXPORT PixelStorageModes
24{
25    // sets defaults as per glGet docs in OpenGL red book
26    PixelStorageModes();
27
28    // use glGet's to retrieve all the current settings
29    void retrieveStoreModes();
30
31    // use glGet's to retrieve all the current 3D settings
32    void retrieveStoreModes3D();
33
34    GLint pack_alignment;
35    GLint pack_row_length;
36    GLint pack_skip_rows;
37    GLint pack_skip_pixels;
38    GLint pack_lsb_first;
39    GLint pack_swap_bytes;
40    GLint pack_skip_images;
41    GLint pack_image_height;
42
43    GLint unpack_alignment;
44    GLint unpack_row_length;
45    GLint unpack_skip_rows;
46    GLint unpack_skip_pixels;
47    GLint unpack_lsb_first;
48    GLint unpack_swap_bytes;
49    GLint unpack_skip_images;
50    GLint unpack_image_height;
51} ;
52
53extern OSG_EXPORT const GLubyte * gluErrorString (GLenum error);
54
55/** OSG specific gluScaleImage function that allows you to pass in the PixelStoreModes, which
56  * enables the code to avoid glGet's that are associated with the conventional gluScaleImage function.
57  * Avoiding glGet's allows this gluScaleImage function to be called at any time, from any thread, there
58  * is no need to have a graphics context current.*/
59extern OSG_EXPORT GLint gluScaleImage (PixelStorageModes* psm, GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
60
61/** Traditional GLU gluScaleImage function that sets up the PixelStoreModes automatically by doing glGets.;
62  * The use of glGet's means that you can only call this function from a thread with a valid graphics context.
63  * The use of glGet's will also result in lower performance due to the round trip to the OpenGL driver.*/
64extern OSG_EXPORT GLint gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
65
66extern OSG_EXPORT GLint gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
67extern OSG_EXPORT GLint gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
68extern 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);
69extern OSG_EXPORT GLint gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
70extern 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);
71extern OSG_EXPORT GLint gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
72
73/* ErrorCode */
74#define GLU_INVALID_ENUM                   100900
75#define GLU_INVALID_VALUE                  100901
76#define GLU_OUT_OF_MEMORY                  100902
77#define GLU_INCOMPATIBLE_GL_VERSION        100903
78#define GLU_INVALID_OPERATION              100904
79
80/* Boolean */
81#define GLU_FALSE                          0
82#define GLU_TRUE                           1
83
84/* QuadricDrawStyle */
85#define GLU_POINT                          100010
86#define GLU_LINE                           100011
87#define GLU_FILL                           100012
88#define GLU_SILHOUETTE                     100013
89
90/* QuadricCallback */
91/*      GLU_ERROR */
92
93/* QuadricNormal */
94#define GLU_SMOOTH                         100000
95#define GLU_FLAT                           100001
96#define GLU_NONE                           100002
97
98/* QuadricOrientation */
99#define GLU_OUTSIDE                        100020
100#define GLU_INSIDE                         100021
101
102/* TessCallback */
103#define GLU_TESS_BEGIN                     100100
104#define GLU_BEGIN                          100100
105#define GLU_TESS_VERTEX                    100101
106#define GLU_VERTEX                         100101
107#define GLU_TESS_END                       100102
108#define GLU_END                            100102
109#define GLU_TESS_ERROR                     100103
110#define GLU_TESS_EDGE_FLAG                 100104
111#define GLU_EDGE_FLAG                      100104
112#define GLU_TESS_COMBINE                   100105
113#define GLU_TESS_BEGIN_DATA                100106
114#define GLU_TESS_VERTEX_DATA               100107
115#define GLU_TESS_END_DATA                  100108
116#define GLU_TESS_ERROR_DATA                100109
117#define GLU_TESS_EDGE_FLAG_DATA            100110
118#define GLU_TESS_COMBINE_DATA              100111
119
120/* TessContour */
121#define GLU_CW                             100120
122#define GLU_CCW                            100121
123#define GLU_INTERIOR                       100122
124#define GLU_EXTERIOR                       100123
125#define GLU_UNKNOWN                        100124
126
127/* TessProperty */
128#define GLU_TESS_WINDING_RULE              100140
129#define GLU_TESS_BOUNDARY_ONLY             100141
130#define GLU_TESS_TOLERANCE                 100142
131
132/* TessError */
133#define GLU_TESS_ERROR1                    100151
134#define GLU_TESS_ERROR2                    100152
135#define GLU_TESS_ERROR3                    100153
136#define GLU_TESS_ERROR4                    100154
137#define GLU_TESS_ERROR5                    100155
138#define GLU_TESS_ERROR6                    100156
139#define GLU_TESS_ERROR7                    100157
140#define GLU_TESS_ERROR8                    100158
141#define GLU_TESS_MISSING_BEGIN_POLYGON     100151
142#define GLU_TESS_MISSING_BEGIN_CONTOUR     100152
143#define GLU_TESS_MISSING_END_POLYGON       100153
144#define GLU_TESS_MISSING_END_CONTOUR       100154
145#define GLU_TESS_COORD_TOO_LARGE           100155
146#define GLU_TESS_NEED_COMBINE_CALLBACK     100156
147
148/* TessWinding */
149#define GLU_TESS_WINDING_ODD               100130
150#define GLU_TESS_WINDING_NONZERO           100131
151#define GLU_TESS_WINDING_POSITIVE          100132
152#define GLU_TESS_WINDING_NEGATIVE          100133
153#define GLU_TESS_WINDING_ABS_GEQ_TWO       100134
154
155struct GLUtesselator;
156typedef GLUtesselator GLUtesselatorObj;
157typedef GLUtesselator GLUtriangulatorObj;
158
159#define GLU_TESS_MAX_COORD 1.0e150
160
161/* Internal convenience typedefs */
162typedef void (GL_APIENTRY * _GLUfuncptr)();
163typedef void (GL_APIENTRY * GLU_TESS_CALLBACK)();
164
165extern OSG_EXPORT GLUtesselator* gluNewTess (void);
166extern OSG_EXPORT void gluDeleteTess (GLUtesselator* tess);
167
168extern OSG_EXPORT void gluTessBeginContour (GLUtesselator* tess);
169extern OSG_EXPORT void gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
170extern OSG_EXPORT void gluTessEndContour (GLUtesselator* tess);
171extern OSG_EXPORT void gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
172extern OSG_EXPORT void gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
173extern OSG_EXPORT void gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
174extern OSG_EXPORT void gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
175extern OSG_EXPORT void gluTessEndPolygon (GLUtesselator* tess);
176extern OSG_EXPORT void gluGetTessProperty( GLUtesselator *tess, GLenum which, GLdouble *value );
177
178}
179
180#endif  // __osgGLU_h
Note: See TracBrowser for help on using the browser.