blob: 66e4709e8791ce2df8f0eb85da7fecdfcbb071e2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
/* Copyright (c) 2001, Stanford University
* All rights reserved.
*
* See the file LICENSE.txt for information on redistributing this software.
*/
#ifndef GLTRANS_H
#define GLTRANS_H
#include "state/cr_statetypes.h"
#include <iprt/cdefs.h>
#ifdef __cplusplus
extern "C" {
#endif
#define NUM_MATRICES 4
typedef struct {
CRbitvalue dirty[CR_MAX_BITARRAY];
CRbitvalue *currentMatrix; /* points to one of the following */
CRbitvalue matrixMode[CR_MAX_BITARRAY];
CRbitvalue modelviewMatrix[CR_MAX_BITARRAY];
CRbitvalue projectionMatrix[CR_MAX_BITARRAY];
CRbitvalue colorMatrix[CR_MAX_BITARRAY];
CRbitvalue textureMatrix[CR_MAX_BITARRAY];
CRbitvalue programMatrix[CR_MAX_BITARRAY];
CRbitvalue clipPlane[CR_MAX_BITARRAY];
CRbitvalue enable[CR_MAX_BITARRAY];
CRbitvalue base[CR_MAX_BITARRAY];
} CRTransformBits;
typedef struct {
CRmatrix *top; /* points into stack */
CRmatrix *stack; /* array [maxDepth] of CRmatrix */
GLuint depth; /* 0 <= depth < maxDepth */
GLuint maxDepth; /* size of stack[] array */
} CRMatrixStack;
typedef struct {
GLvectord *clipPlane;
GLboolean *clip;
GLenum matrixMode;
/* matrix stacks */
CRMatrixStack modelViewStack;
CRMatrixStack projectionStack;
CRMatrixStack colorStack;
CRMatrixStack textureStack[CR_MAX_TEXTURE_UNITS];
CRMatrixStack programStack[CR_MAX_PROGRAM_MATRICES];
CRMatrixStack *currentStack;
GLboolean modelViewProjectionValid;
CRmatrix modelViewProjection; /* product of modelview and projection */
#ifdef CR_OPENGL_VERSION_1_2
GLboolean rescaleNormals;
#endif
#ifdef CR_IBM_rasterpos_clip
GLboolean rasterPositionUnclipped;
#endif
GLboolean normalize;
} CRTransformState;
DECLEXPORT(void) crStateTransformInit(CRContext *ctx);
DECLEXPORT(void) crStateTransformDestroy(CRContext *ctx);
DECLEXPORT(void) crStateInitMatrixStack(CRMatrixStack *stack, int maxDepth);
DECLEXPORT(void) crStateLoadMatrix(const CRmatrix *m);
DECLEXPORT(void) crStateTransformUpdateTransform(CRTransformState *t);
DECLEXPORT(void) crStateTransformXformPoint(CRTransformState *t, GLvectorf *p);
DECLEXPORT(void) crStateTransformXformPointMatrixf(const CRmatrix *m, GLvectorf *p);
DECLEXPORT(void) crStateTransformXformPointMatrixd(const CRmatrix *m, GLvectord *p);
DECLEXPORT(void) crStateTransformDiff(CRTransformBits *t, CRbitvalue *bitID,
CRContext *fromCtx, CRContext *toCtx);
DECLEXPORT(void) crStateTransformSwitch(CRTransformBits *bb, CRbitvalue *bitID,
CRContext *fromCtx, CRContext *toCtx);
#ifdef __cplusplus
}
#endif
#endif /* CR_STATE_TRANSFORM_H */
|