1 | #ifndef ONI_H
|
---|
2 | #error Do not include this file directly, include Oni/Oni.h instead!
|
---|
3 | #endif
|
---|
4 |
|
---|
5 | #ifndef BFW_MOTOKO_DRAW_H
|
---|
6 | #define BFW_MOTOKO_DRAW_H
|
---|
7 |
|
---|
8 | typedef struct M3tDisplayMode
|
---|
9 | {
|
---|
10 | unsigned short Width;
|
---|
11 | unsigned short Height;
|
---|
12 | unsigned short Depth;
|
---|
13 | unsigned short __unused;
|
---|
14 | } M3tDisplayMode; // 0x0010: (size).
|
---|
15 |
|
---|
16 | typedef struct M3tDisplayDevice
|
---|
17 | {
|
---|
18 | unsigned int __unknown; //
|
---|
19 | unsigned short NumModes; // 0x0004: number of valid display modes on this device.
|
---|
20 | M3tDisplayMode Modes[16]; // 0x0006: list of supported display modes.
|
---|
21 | unsigned short __padding; // 0x0086: padding (not used).
|
---|
22 | } M3tDisplayDevice; // 0x0088: (size).
|
---|
23 |
|
---|
24 | typedef struct M3tDrawEngineCaps
|
---|
25 | {
|
---|
26 | int Type; // 0x0000:
|
---|
27 | char Name[64]; // 0x0004: draw engine name (eg. "OpenGL").
|
---|
28 | char Driver[64]; // 0x0044: driver name (always NULL string).
|
---|
29 | unsigned int Version; // 0x0084: draw engine version (1 for OpenGL).
|
---|
30 | unsigned int NumDevices; // 0x0088: number of valid DisplayDevice-s.
|
---|
31 | M3tDisplayDevice DisplayDevices[8]; // 0x008c: 1 or more display devices.
|
---|
32 | int __unknown; // 0x04cc:
|
---|
33 | } M3tDrawEngineCaps; // 0x04d0: (size).
|
---|
34 |
|
---|
35 | typedef struct
|
---|
36 | {
|
---|
37 | int Context_New;
|
---|
38 | int Context_Delete;
|
---|
39 | int Texture_ResetAll;
|
---|
40 | int PrivateState_Size;
|
---|
41 | int PrivateState_New;
|
---|
42 | int PrivateState_Delete;
|
---|
43 | int State_Update;
|
---|
44 | } M3tDrawEngine;
|
---|
45 |
|
---|
46 | typedef struct
|
---|
47 | {
|
---|
48 | int FrameStart;
|
---|
49 | int FrameEnd;
|
---|
50 | int FrameSync;
|
---|
51 | int Triangle;
|
---|
52 | int Quad;
|
---|
53 | int Pent;
|
---|
54 | int Line;
|
---|
55 | int Point;
|
---|
56 | int TriSprite;
|
---|
57 | int Sprite;
|
---|
58 | int SpriteArray;
|
---|
59 | int ScreenCapture;
|
---|
60 | int PointVisible;
|
---|
61 | int SupportsPointVisible;
|
---|
62 | int TextureFormatAvailable;
|
---|
63 | int SetResolution;
|
---|
64 | int ResetFog;
|
---|
65 | int TextureLoad;
|
---|
66 | int TextureUnload;
|
---|
67 | int SinglePassMultitextureCapable;
|
---|
68 | } M3tDrawContext;
|
---|
69 |
|
---|
70 | typedef struct
|
---|
71 | {
|
---|
72 | float *Position;
|
---|
73 | int *Color;
|
---|
74 | float *TexCoord0;
|
---|
75 | float *TexCoord1;
|
---|
76 | void *Texture0;
|
---|
77 | void *Texture1;
|
---|
78 | void *State6;
|
---|
79 | void *State7;
|
---|
80 | void *State8;
|
---|
81 | } M3tDrawPtrState;
|
---|
82 |
|
---|
83 | typedef struct
|
---|
84 | {
|
---|
85 | WORD data[3][256];
|
---|
86 | } M3tWin32GammaRamp;
|
---|
87 |
|
---|
88 | typedef struct
|
---|
89 | {
|
---|
90 | float x;
|
---|
91 | float y;
|
---|
92 | float z;
|
---|
93 | float invW;
|
---|
94 | } M3tPointScreen;
|
---|
95 |
|
---|
96 | typedef struct
|
---|
97 | {
|
---|
98 | char pad[8];
|
---|
99 |
|
---|
100 | UUtUns16 width;
|
---|
101 | UUtUns16 height;
|
---|
102 | int texelType; // enum IMtPixelType
|
---|
103 |
|
---|
104 | UUtUns16 num_x;
|
---|
105 | UUtUns16 num_y;
|
---|
106 |
|
---|
107 | UUtUns32 num_textures;
|
---|
108 | void* textures[1]; // struct M3tTextureMap
|
---|
109 | } M3tTextureMap_Big;
|
---|
110 |
|
---|
111 | #define M3cNumBoundingPoints 8// Do not change without changing references below
|
---|
112 | #define M3cNumBoundingFaces 6// Do not change without changing references below
|
---|
113 |
|
---|
114 | typedef struct M3tPoint3D
|
---|
115 | {
|
---|
116 | float x;
|
---|
117 | float y;
|
---|
118 | float z;
|
---|
119 | } M3tPoint3D;
|
---|
120 |
|
---|
121 | typedef struct M3tQuad
|
---|
122 | {
|
---|
123 | uint32_t indices[4];
|
---|
124 | } M3tQuad;
|
---|
125 |
|
---|
126 | typedef struct M3tPlaneEquation
|
---|
127 | {
|
---|
128 | float a;
|
---|
129 | float b;
|
---|
130 | float c;
|
---|
131 | float d;
|
---|
132 | } M3tPlaneEquation;
|
---|
133 |
|
---|
134 | typedef M3tPoint3D M3tVector3D;
|
---|
135 |
|
---|
136 | typedef struct M3tBoundingVolume
|
---|
137 | {
|
---|
138 | M3tPoint3D worldPoints[8];// Must match M3cNumBoundingPoints above
|
---|
139 | M3tQuad faces[6];// Must match M3cNumBoundingFaces above
|
---|
140 | M3tVector3D normals[6];// Must match M3cNumBoundingFaces above- starting normals
|
---|
141 |
|
---|
142 | M3tPlaneEquation curPlanes[6];// Must match M3cNumBoundingFaces above- current plane equs
|
---|
143 | uint16_t curProjections[6]; // Must match M3cNumBoundingFaces above
|
---|
144 | } M3tBoundingVolume;
|
---|
145 |
|
---|
146 | typedef struct M3tBoundingSphere
|
---|
147 | {
|
---|
148 | M3tPoint3D center;
|
---|
149 | float radius;
|
---|
150 | } M3tBoundingSphere;
|
---|
151 |
|
---|
152 |
|
---|
153 | extern char M3gResolutionSwitch;
|
---|
154 |
|
---|
155 | #endif
|
---|