40#ifndef GEOGRAM_GFX_GLUP_GLUP
41#define GEOGRAM_GFX_GLUP_GLUP
44#define GLUP_API GEOGRAM_GFX_API
60 typedef float GLUPfloat;
61 typedef double GLUPdouble;
63 typedef unsigned int GLUPuint;
64 typedef int GLUPsizei;
65 typedef unsigned int GLUPenum;
66 typedef unsigned long int GLUPuint64;
67 typedef void GLUPvoid;
68 typedef int GLUPbitfield;
71 GLUP_FALSE=0, GLUP_TRUE = 1
74 typedef unsigned char GLUPboolean;
181 GLUP_VERTEX_COLORS =1,
185 GLUP_INDIRECT_TEXTURING =5,
186 GLUP_VERTEX_NORMALS =6,
188 GLUP_ALPHA_DISCARD =8,
189 GLUP_NORMAL_MAPPING =9,
190 GLUP_PRIMITIVE_FILTERING =10
193 void GLUP_API glupEnable(GLUPtoggle toggle);
194 void GLUP_API glupDisable(GLUPtoggle toggle);
195 GLUPboolean GLUP_API glupIsEnabled(GLUPtoggle toggle);
218 GLUP_TEXTURE_1D_UNIT=0,
219 GLUP_TEXTURE_2D_UNIT=1,
220 GLUP_TEXTURE_3D_UNIT=2,
221 GLUP_TEXTURE_PRIMITIVE_FILTERING_UNIT=3
233 GLUP_TEXTURE_1D_TARGET=0x0DE1,
234 GLUP_TEXTURE_2D_TARGET=0x0DE1,
235 GLUP_TEXTURE_3D_TARGET=0x806F
244 void GLUP_API glupTextureType(GLUPtextureType type);
245 GLUPtextureType GLUP_API glupGetTextureType(
void);
248 GLUP_TEXTURE_REPLACE=0,
249 GLUP_TEXTURE_MODULATE=1,
253 void GLUP_API glupTextureMode(GLUPtextureMode mode);
254 GLUPtextureMode GLUP_API glupGetTextureMode(
void);
273 GLUP_FRONT_AND_BACK_COLOR=3
276 void GLUP_API glupSetColor4fv(GLUPcolor color,
const GLUPfloat* rgba);
277 void GLUP_API glupGetColor4fv(GLUPcolor color,
float* rgba);
279 void GLUP_API glupSetColor3fv(GLUPcolor color,
const GLUPfloat* rgba);
280 void GLUP_API glupSetColor4f(
281 GLUPcolor color, GLUPfloat r, GLUPfloat g, GLUPfloat b, GLUPfloat a
283 void GLUP_API glupSetColor3f(
284 GLUPcolor color, GLUPfloat r, GLUPfloat g, GLUPfloat b
286 void GLUP_API glupSetColor4dv(GLUPcolor color,
const GLUPdouble* rgba);
287 void GLUP_API glupSetColor3dv(GLUPcolor color,
const GLUPdouble* rgba);
288 void GLUP_API glupSetColor4d(
289 GLUPcolor color, GLUPdouble r, GLUPdouble g, GLUPdouble b, GLUPdouble a
291 void GLUP_API glupSetColor3d(
292 GLUPcolor color, GLUPdouble r, GLUPdouble g, GLUPdouble b
295 void GLUP_API glupLightVector3f(GLUPfloat x, GLUPfloat y, GLUPfloat z);
296 void GLUP_API glupLightVector3fv(GLUPfloat* xyz);
297 void GLUP_API glupGetLightVector3fv(GLUPfloat* xyz);
299 void GLUP_API glupSetPointSize(GLUPfloat size);
300 GLUPfloat GLUP_API glupGetPointSize(
void);
302 void GLUP_API glupSetMeshWidth(GLUPint width);
303 GLUPint GLUP_API glupGetMeshWidth(
void);
305 void GLUP_API glupSetCellsShrink(GLUPfloat x);
306 GLUPfloat GLUP_API glupGetCellsShrink(
void);
308 void GLUP_API glupSetAlphaThreshold(GLUPfloat x);
309 GLUPfloat GLUP_API glupGetAlphaThreshold(
void);
311 void GLUP_API glupSetSpecular(GLUPfloat x);
312 GLUPfloat GLUP_API glupGetSpecular(
void);
326 GLUP_PICK_PRIMITIVE=1,
330 void GLUP_API glupPickingMode(GLUPpickingMode mode);
331 GLUPpickingMode GLUP_API glupGetPickingMode(
void);
333 void GLUP_API glupPickingId(GLUPuint64
id);
334 GLUPuint64 GLUP_API glupGetPickingId(
void);
336 void GLUP_API glupBasePickingId(GLUPuint64
id);
337 GLUPuint64 GLUP_API glupGetBasePickingId(
void);
351 GLUP_CLIP_STANDARD=0,
352 GLUP_CLIP_WHOLE_CELLS=1,
353 GLUP_CLIP_STRADDLING_CELLS=2,
354 GLUP_CLIP_SLICE_CELLS=3
401 GLUP_MODELVIEW_MATRIX = 0,
402 GLUP_PROJECTION_MATRIX = 1,
403 GLUP_TEXTURE_MATRIX = 2
406 void GLUP_API glupMatrixMode(GLUPmatrix matrix);
407 GLUPmatrix GLUP_API glupGetMatrixMode(
void);
408 void GLUP_API glupPushMatrix(
void);
409 void GLUP_API glupPopMatrix(
void);
429 void GLUP_API glupLoadIdentity(
void);
430 void GLUP_API glupLoadMatrixf(
const GLUPfloat* M);
431 void GLUP_API glupLoadMatrixd(
const GLUPdouble* M);
432 void GLUP_API glupMultMatrixf(
const GLUPfloat* M);
433 void GLUP_API glupMultMatrixd(
const GLUPdouble* M);
434 void GLUP_API glupTranslatef(GLUPfloat x, GLUPfloat y, GLUPfloat z);
435 void GLUP_API glupTranslated(GLUPdouble x, GLUPdouble y, GLUPdouble z);
436 void GLUP_API glupScalef(GLUPfloat sx, GLUPfloat sy, GLUPfloat sz);
437 void GLUP_API glupScaled(GLUPdouble sx, GLUPdouble sy, GLUPdouble sz);
438 void GLUP_API glupRotatef(
439 GLUPfloat angle, GLUPfloat x, GLUPfloat y, GLUPfloat z
441 void GLUP_API glupRotated(
442 GLUPdouble angle, GLUPdouble x, GLUPdouble y, GLUPdouble z
444 void GLUP_API glupOrtho(
445 GLUPdouble left, GLUPdouble right,
446 GLUPdouble bottom, GLUPdouble top,
447 GLUPdouble nearVal, GLUPdouble farVal
449 void GLUP_API glupOrtho2D(
450 GLUPdouble left, GLUPdouble right, GLUPdouble bottom, GLUPdouble top
452 void GLUP_API glupFrustum(
453 GLUPdouble left, GLUPdouble right,
454 GLUPdouble bottom, GLUPdouble top,
455 GLUPdouble nearVal, GLUPdouble farVal
457 void GLUP_API glupPerspective(
458 GLUPdouble fovy, GLUPdouble aspect,
459 GLUPdouble zNear, GLUPdouble zFar
462 GLUPint GLUP_API glupProject(
463 GLUPdouble objx, GLUPdouble objy, GLUPdouble objz,
464 const GLUPdouble modelMatrix[16],
465 const GLUPdouble projMatrix[16],
466 const GLUPint viewport[4],
467 GLUPdouble* winx, GLUPdouble* winy, GLUPdouble* winz
470 GLUPboolean GLUP_API glupUnProject(
471 GLUPdouble winx, GLUPdouble winy, GLUPdouble winz,
472 const GLUPdouble modelMatrix[16],
473 const GLUPdouble projMatrix[16],
474 const GLUPint viewport[4],
475 GLUPdouble *objx, GLUPdouble *objy, GLUPdouble *objz
478 GLUPboolean GLUP_API glupInvertMatrixfv(
479 GLUPfloat Minvert[16],
480 const GLUPfloat M[16]
483 GLUPboolean GLUP_API glupInvertMatrixdv(
484 GLUPdouble Minvert[16],
485 const GLUPdouble M[16]
515 GLUP_NB_PRIMITIVES = 10
528 void GLUP_API glupDrawArrays(
532 void GLUP_API glupDrawElements(
534 GLUPenum type,
const GLUPvoid* indices
538 void GLUP_API glupEnd(
void);
540 void GLUP_API glupVertex2fv(
const GLUPfloat* xy);
541 void GLUP_API glupVertex3fv(
const GLUPfloat* xyz);
542 void GLUP_API glupVertex4fv(
const GLUPfloat* xyzw);
544 void GLUP_API glupVertex2dv(
const GLUPdouble* xy);
545 void GLUP_API glupVertex3dv(
const GLUPdouble* xyz);
546 void GLUP_API glupVertex4dv(
const GLUPdouble* xyzw);
548 void GLUP_API glupVertex2f(GLUPfloat x, GLUPfloat y);
549 void GLUP_API glupVertex3f(GLUPfloat x, GLUPfloat y, GLUPfloat z);
550 void GLUP_API glupVertex4f(
551 GLUPfloat x, GLUPfloat y, GLUPfloat z, GLUPfloat w
554 void GLUP_API glupVertex2d(GLUPdouble x, GLUPdouble y);
555 void GLUP_API glupVertex3d(GLUPdouble x, GLUPdouble y, GLUPdouble z);
556 void GLUP_API glupVertex4d(
557 GLUPdouble x, GLUPdouble y, GLUPdouble z, GLUPdouble w
560 void GLUP_API glupColor3fv(
const GLUPfloat* rgb);
561 void GLUP_API glupColor4fv(
const GLUPfloat* rgba);
563 void GLUP_API glupColor3dv(
const GLUPdouble* rgb);
564 void GLUP_API glupColor4dv(
const GLUPdouble* rgba);
566 void GLUP_API glupColor3f(GLUPfloat r, GLUPfloat g, GLUPfloat b);
567 void GLUP_API glupColor4f(
568 GLUPfloat r, GLUPfloat g, GLUPfloat b, GLUPfloat a
571 void GLUP_API glupColor3d(GLUPdouble r, GLUPdouble g, GLUPdouble b);
572 void GLUP_API glupColor4d(
573 GLUPdouble r, GLUPdouble g, GLUPdouble b, GLUPdouble a
576 void GLUP_API glupTexCoord2fv(
const GLUPfloat* st);
577 void GLUP_API glupTexCoord3fv(
const GLUPfloat* stu);
578 void GLUP_API glupTexCoord4fv(
const GLUPfloat* stuv);
580 void GLUP_API glupTexCoord2dv(
const GLUPdouble* st);
581 void GLUP_API glupTexCoord3dv(
const GLUPdouble* stu);
582 void GLUP_API glupTexCoord4dv(
const GLUPdouble* stuv);
584 void GLUP_API glupTexCoord1f(GLUPfloat s);
585 void GLUP_API glupTexCoord2f(GLUPfloat s, GLUPfloat t);
586 void GLUP_API glupTexCoord3f(GLUPfloat s, GLUPfloat t, GLUPfloat u);
587 void GLUP_API glupTexCoord4f(
588 GLUPfloat s, GLUPfloat t, GLUPfloat u, GLUPfloat v
591 void GLUP_API glupTexCoord1d(GLUPdouble s);
592 void GLUP_API glupTexCoord2d(GLUPdouble s, GLUPdouble t);
593 void GLUP_API glupTexCoord3d(GLUPdouble s, GLUPdouble t, GLUPdouble u);
594 void GLUP_API glupTexCoord4d(
595 GLUPdouble s, GLUPdouble t, GLUPdouble u, GLUPdouble v
599 void GLUP_API glupNormal3fv(GLUPfloat* xyz);
600 void GLUP_API glupNormal3f(GLUPfloat x, GLUPfloat y, GLUPfloat z);
602 void GLUP_API glupNormal3dv(GLUPdouble* xyz);
603 void GLUP_API glupNormal3d(GLUPdouble x, GLUPdouble y, GLUPdouble z);
void GLUP_API glupGetMatrixdv(GLUPmatrix matrix, GLUPdouble *ptr)
Queries a GLUP matrix.
GLUPcontext GLUP_API glupCreateContext(void)
Creates a new GLUP context.
void GLUP_API glupGetMatrixfv(GLUPmatrix matrix, GLUPfloat *ptr)
Queries a GLUP matrix.
void GLUP_API glupMakeCurrent(GLUPcontext context)
Makes a GLUP context the current one.
GLUPclipMode GLUP_API glupGetClipMode(void)
Gets the clipping mode.
void GLUP_API glupBindUniformState(GLUPuint program)
Binds the GLUP uniform state to a program.
GLUPboolean GLUP_API glupPrimitiveSupportsArrayMode(GLUPprimitive prim)
Tests whether a given GLUP primitive supports array mode.
GLUPuint GLUP_API glupGetVertexArrayBinding(void)
Gets the name of the bound vertex array object.
void GLUP_API glupDeleteVertexArrays(GLUPsizei n, const GLUPuint *arrays)
Deletes vertex array objects.
void GLUP_API glupClipMode(GLUPclipMode mode)
Sets the current clipping mode.
void GLUP_API glupDeleteContext(GLUPcontext context)
Deletes a GLUP context.
GLUP_API const char * glupUniformStateDeclaration(void)
Gets the GLSL declaration of GLUP uniform state.
void GLUP_API glupClipPlane(const GLUPdouble *eqn)
Defines the plane used by GLUP clipping.
void GLUP_API glupUseProgram(GLUPuint program)
Specifies a GLSL program to be used for drawing the primitives.
GLUP_API GLUPuint glupCompileProgram(const char *source)
Compiles a GLSL program.
void GLUP_API glupGenVertexArrays(GLUPsizei n, GLUPuint *arrays)
Generate vertex array object names.
void GLUP_API glupGetClipPlane(GLUPdouble *eqn)
Gets the current clipping plane.
GLUPcontext GLUP_API glupCurrentContext(void)
Gets the current GLUP context.
GLUP_API const char * glupCurrentProfileName(void)
The name of the profile implemented by the current context.
GLUP_API GLUPuint glupCompileShader(GLUPenum target, const char *source)
Compiles a GLSL shader.
void GLUP_API glupBindVertexArray(GLUPuint array)
Binds a vertex array object.
void * GLUPcontext
Opaque identifier of a GLUP context.
GLUPprimitive
Symbolic values corresponding to GLUP primitive types.
Basic definitions for the Geogram C API.