123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- /******************************************************************************
- * Copyright 2003 Jonathan Cohen, Nat Duca, David Luebke, Brenden Schubert *
- * Johns Hopkins University and University of Virginia *
- ******************************************************************************
- * This file is distributed as part of the GLOD library, and as such, falls *
- * under the terms of the GLOD public license. GLOD is distributed without *
- * any warranty, implied or otherwise. See the GLOD license for more details. *
- * *
- * You should have recieved a copy of the GLOD Open-Source License with this *
- * copy of GLOD; if not, please visit the GLOD web page, *
- * http://www.cs.jhu.edu/~graphics/GLOD/license for more information *
- ******************************************************************************/
- /* This is the exportable header file for the use of GLOD with GL
- ****************************************************************************/
- #ifndef GLODAPI_H
- #define GLODAPI_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifdef _WIN32
- #ifdef GLOD
- #define GLOD_APIENTRY __declspec(dllexport)
- #else
- #define GLOD_APIENTRY __declspec(dllimport)
- #endif
- #else
- #define GLOD_APIENTRY
- #endif
- /* GLOD Errors
- ***************************************************************************/
- #define GLOD_NO_ERROR 0x000
- #define GLOD_INVALID_NAME 0x001
- #define GLOD_INVALID_DATA_FORMAT 0x002
- #define GLOD_INVALID_STATE 0x003
- #define GLOD_INVALID_PATCH 0x004
- #define GLOD_UNKNOWN_PROPERTY 0x005
- #define GLOD_UNSUPPORTED_PROPERTY 0x006
- #define GLOD_INVALID_PARAM 0x007
- #define GLOD_BAD_HIERARCHY 0x020
- #define GLOD_BAD_MAGIC 0x050
- #define GLOD_CORRUPT_BUFFER 0x051
- /* NewObject Formats
- ***************************************************************************/
- /// reserved for glod_core.h::GLOD_FORMAT_UNKNOWN
- #define GLOD_RESERVED 0x0000
- #ifdef GLOD_COREPROFILE_FIXED
- #define GLOD_CONTINUOUS 0x0001
- #endif
- #define GLOD_DISCRETE 0x0002
- #define GLOD_DISCRETE_MANUAL 0x0003
- #define GLOD_DISCRETE_PATCH 0x0004
- #ifdef GLOD_COREPROFILE_FIXED
- #define GLOD_VDS 0x0001
- #endif
- /* Object Param Names
- ***************************************************************************/
- #define GLOD_READBACK_SIZE 0x01
- #define GLOD_NUM_PATCHES 0x02
- #define GLOD_PATCH_NAMES 0x03
- #define GLOD_PATCH_SIZES 0x04
- #define GLOD_XFORM_MATRIX 0x05
- #define GLOD_BUILD_OPERATOR 0x20
- #define GLOD_BUILD_QUEUE_MODE 0x21
- #define GLOD_BUILD_ERROR_METRIC 0x22
- #define GLOD_BUILD_SHARE_TOLERANCE 0x23
- #define GLOD_BUILD_BORDER_MODE 0x24
- #define GLOD_BUILD_SNAPSHOT_MODE 0x25
- #define GLOD_BUILD_PERCENT_REDUCTION_FACTOR 0x26
- #define GLOD_BUILD_TRI_SPECS 0x27
- #define GLOD_BUILD_ERROR_SPECS 0x28
- #define GLOD_BUILD_PERMISSION_GRID_PRECISION 0x29
- #define GLOD_QUADRIC_MULTIPLIER 0x2a
-
- #define GLOD_XFORM 0x41
- #define GLOD_APPLY_OBJECT_XFORM 0x42
- #define GLOD_IMPORTANCE 0x50
- /* Object::Possible Param Values
- ***************************************************************************/
- #define GLOD_OPERATOR_MANUAL 0x00
- #define GLOD_OPERATOR_HALF_EDGE_COLLAPSE 0x01
- #define GLOD_OPERATOR_EDGE_COLLAPSE 0x02
- #define GLOD_OPERATOR_VERTEX_PAIR 0x03
- #define GLOD_OPERATOR_VERTEX_CLUSTER 0x04
- #define GLOD_QUEUE_GREEDY 0x01
- #define GLOD_QUEUE_LAZY 0x02
- #define GLOD_QUEUE_INDEPENDENT 0x03
- #define GLOD_QUEUE_RANDOMIZED 0x04
- #define GLOD_METRIC_SPHERES 0x01
- #define GLOD_METRIC_QUADRICS 0x02
- #define GLOD_METRIC_PERMISSION_GRID 0x03
- #define GLOD_BORDER_UNLOCK 0x01
- #define GLOD_BORDER_LOCK 0x02
- #define GLOD_SNAPSHOT_PERCENT_REDUCTION 0x01
- #define GLOD_SNAPSHOT_TRI_SPEC 0x02
- #define GLOD_SNAPSHOT_ERROR_SPEC 0x03
- /* GLOD Group Params
- ***************************************************************************/
- #define GLOD_ADAPT_MODE 0x01
- #define GLOD_ERROR_MODE 0x02
- #define GLOD_OBJECT_SPACE_ERROR_THRESHOLD 0x03
- #define GLOD_SCREEN_SPACE_ERROR_THRESHOLD 0x04
- #define GLOD_MAX_TRIANGLES 0x05
- /* Group::Possible Param Values
- ***************************************************************************/
- #define GLOD_ERROR_THRESHOLD 0x01
- #define GLOD_TRIANGLE_BUDGET 0x02
- #define GLOD_OBJECT_SPACE_ERROR 0x03
- #define GLOD_SCREEN_SPACE_ERROR 0x04
- struct glodVBO
- {
- struct VertexArray
- {
- void* p; GLint size; GLenum type; GLsizei stride;
- } mV;
- struct NormalArray
- {
- void* p; GLenum type; GLsizei stride;
- } mN;
- struct TextureArray
- {
- void* p; GLint size; GLenum type; GLsizei stride;
- } mT;
- struct ColorArray
- {
- void* p; GLint size; GLenum type; GLsizei stride;
- } mC;
- };
- GLOD_APIENTRY GLuint glodInit( );
- GLOD_APIENTRY void glodShutdown( );
- GLOD_APIENTRY GLuint glodGetError( void );
- GLOD_APIENTRY void glodLoadObject( GLuint name, GLuint groupname,
- const GLvoid *data );
- GLOD_APIENTRY void glodReadbackObject( GLuint name, GLvoid *data );
- GLOD_APIENTRY void glodFillArrays( GLuint object_name, GLuint patch_name, glodVBO *pVBO );
- GLOD_APIENTRY void glodFillElements( GLuint object_name, GLuint patch_name, GLenum type, GLvoid* out_elements, glodVBO *pVBO );
- GLOD_APIENTRY void glodInsertArrays( GLuint name, GLuint patchname,
- GLenum mode, GLint first, GLsizei count,
- GLuint level, GLfloat geometric_error, glodVBO *pVBO );
- GLOD_APIENTRY void glodInsertElements( GLuint name, GLuint patchname,
- GLenum mode, GLuint count, GLenum type, GLvoid *indices,
- GLuint level, GLfloat geometric_error, glodVBO *pVBO );
- GLOD_APIENTRY void glodInstanceObject( GLuint name, GLuint instancename,
- GLuint groupname );
- GLOD_APIENTRY void glodNewObject( GLuint name, GLuint groupname,
- GLenum format );
- GLOD_APIENTRY void glodBuildObject( GLuint name );
- GLOD_APIENTRY void glodDeleteObject( GLuint name );
- GLOD_APIENTRY void glodDrawPatch( GLuint name, GLuint patchname );
- GLOD_APIENTRY void glodSetLayout(int rows, int cols);
- GLOD_APIENTRY void glodNewGroup( GLuint groupname );
- GLOD_APIENTRY void glodAdaptGroup( GLuint groupname );
- GLOD_APIENTRY void glodObjectXform( GLuint object_name, float m1[16],
- float m2[16], float m3[16] );
- GLOD_APIENTRY void glodDeleteGroup( GLuint groupname );
- GLOD_APIENTRY void glodObjectParameterf( GLuint name, GLenum pname,
- GLfloat param );
- GLOD_APIENTRY void glodObjectParameteri( GLuint name, GLenum pname,
- GLint param );
- GLOD_APIENTRY void glodObjectParameteriv( GLuint name, GLenum pname,
- GLint count, GLint *param );
- GLOD_APIENTRY void glodObjectParameterfv( GLuint name, GLenum pname,
- GLint count, GLfloat *param );
- GLOD_APIENTRY void glodPatchParameterf( GLuint name, GLuint patch_name,
- GLenum pname, GLfloat param );
- GLOD_APIENTRY void glodPatchParameteri( GLuint name, GLuint patch_name,
- GLenum pname, GLint param );
- GLOD_APIENTRY void glodGetGroupParameterfv( GLuint groupname, GLenum pname,
- GLfloat *param );
- GLOD_APIENTRY void glodGetGroupParameteriv( GLuint groupname, GLenum pname,
- GLint *param );
- GLOD_APIENTRY void glodGetObjectParameterfv( GLuint groupname, GLenum pname,
- GLfloat *param );
- GLOD_APIENTRY void glodGetObjectParameteriv( GLuint groupname, GLenum pname,
- GLint *param );
- GLOD_APIENTRY void glodGetPatchParameterfv( GLuint name, GLuint patch_name,
- GLenum pname, GLfloat*param );
- GLOD_APIENTRY void glodGetPatchParameteriv( GLuint name, GLuint patch_name,
- GLenum pname, GLint*param );
- GLOD_APIENTRY void glodGroupParameterf( GLuint groupname, GLenum pname,
- GLfloat param );
- GLOD_APIENTRY void glodGroupParameteri( GLuint groupname, GLenum pname,
- GLint param );
- GLOD_APIENTRY void glodDebugDrawObject( GLuint name ); /* debugging only */
- #ifdef __cplusplus
- } /* extern c */
- #endif
- #endif /* GLODAPI_H */
|