22 #ifndef FREESCAPE_GFX_H 23 #define FREESCAPE_GFX_H 25 #include "common/hashmap.h" 26 #include "common/rendermode.h" 27 #include "common/rect.h" 29 #include "graphics/pixelformat.h" 30 #include "graphics/managed_surface.h" 31 #include "graphics/renderer.h" 32 #include "math/frustum.h" 33 #include "math/vector3d.h" 37 #define kVertexArraySize 128 38 #define kCoordsArraySize 4 49 Texture(){ _width = 0; _height = 0; };
69 bool _authenticGraphics;
71 virtual void init() = 0;
78 virtual void useColor(uint8 r, uint8 g, uint8 b) = 0;
79 virtual void depthTesting(
bool enabled) {};
80 virtual void polygonOffset(
bool enabled) = 0;
85 virtual void freeTexture(
Texture *texture) = 0;
88 virtual void renderSensorShoot(byte color,
const Math::Vector3d sensor,
const Math::Vector3d player,
const Common::Rect viewPort) = 0;
92 virtual void renderCrossair(
const Common::Point crossairPosition) = 0;
100 void setColorRemaps(ColorReMap *colorRemaps);
101 virtual void clear(uint8 r, uint8 g, uint8 b,
bool ignoreViewport =
false) = 0;
102 virtual void drawFloor(uint8 color) = 0;
103 virtual void drawBackground(uint8 color);
105 void drawEclipse(uint8 color1, uint8 color2,
float difference);
106 virtual void drawSkybox(
Texture *texture, Math::Vector3d camera) {};
107 virtual void drawCelestialBody(Math::Vector3d position,
float radius, uint8 color) {};
113 void readFromPalette(uint8 index, uint8 &r, uint8 &g, uint8 &b);
114 void setPaletteValue(uint8 index, uint8 r, uint8 g, uint8 b);
115 uint8 indexFromColor(uint8 r, uint8 g, uint8 b);
116 uint8 mapEGAColor(uint8 index);
118 bool getRGBAt(uint8 index, uint8 ecolor, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *&stipple);
119 bool getRGBAtC64(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2);
120 bool getRGBAtCGA(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *&stipple);
121 bool getRGBAtCPC(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *&stipple);
122 bool getRGBAtEGA(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2);
123 bool getRGBAtZX(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *&stipple);
124 bool getRGBAtHercules(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *&stipple);
125 void extractCPCIndexes(uint8 cm1, uint8 cm2, uint8 &i1, uint8 &i2);
126 void extractC64Indexes(uint8 cm1, uint8 cm2, uint8 &i1, uint8 &i2);
128 void selectColorFromFourColorPalette(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1);
131 virtual void setStippleData(byte *data) {};
132 virtual void useStipple(
bool enabled) {};
133 void scaleStipplePattern(byte originalPattern[128], byte newPattern[128]);
135 byte _defaultStippleArray[128] = {
136 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
137 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
138 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
139 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
140 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
141 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
142 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
143 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
144 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
145 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
146 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
147 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
148 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
149 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
150 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
151 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
154 byte _defaultStippleArraySmall[128] = {
155 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
156 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
157 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
158 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
159 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
160 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
161 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
162 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
163 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
164 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
165 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
166 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
167 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
168 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
169 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
170 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
173 byte *_variableStippleArray;
175 float _skyNormals[16][3] = {
194 float _skyUvs1008[16][2] = {
216 float _skyUvs128[16][2] = {
238 float _skyVertices[16][3] = {
239 { -81280.0, 8128.0, 81280.0 },
240 { -81280.0, -8128.0, 81280.0 },
241 { 81280.0, -8128.0, 81280.0 },
242 { 81280.0, 8128.0, 81280.0 },
244 { 81280.0f, -8128.0f, -81280.0f },
245 { -81280.0f, -8128.0f, -81280.0f },
246 { -81280.0f, 8128.0f, -81280.0f },
247 { 81280.0f, 8128.0f, -81280.0f },
249 { -81280.0f, 8128.0f, 81280.0f },
250 { -81280.0f, 8128.0f, -81280.0f },
251 { -81280.0f, -8128.0f, -81280.0f },
252 { -81280.0f, -8128.0f, 81280.0f },
254 { 81280.0f, 8128.0f, -81280.0f },
255 { 81280.0f, 8128.0f, 81280.0f },
256 { 81280.0f, -8128.0f, 81280.0f },
257 { 81280.0f, -8128.0f, -81280.0f },
261 void setColorMap(ColorMap *colorMap_);
263 ColorReMap *_colorRemaps;
264 void clearColorPairArray();
265 void fillColorPairArray();
270 int _underFireBackgroundColor;
272 byte _stipples[16][128];
282 virtual void positionCamera(
const Math::Vector3d &pos,
const Math::Vector3d &interest) = 0;
283 virtual void updateProjectionMatrix(
float fov,
float aspectRatio,
float nearClipPlane,
float farClipPlane) = 0;
285 Math::Matrix4 getMvpMatrix()
const {
return _mvpMatrix; }
293 bool computeScreenViewport();
300 Math::Matrix4 _projectionMatrix;
301 Math::Matrix4 _modelViewMatrix;
302 Math::Matrix4 _mvpMatrix;
304 Math::Frustum _frustum;
306 Math::Matrix4 makeProjectionMatrix(
float fov,
float nearClipPlane,
float farClipPlane)
const;
317 #endif // FREESCAPE_GFX_H Definition: managed_surface.h:51
virtual void flipBuffer()
Definition: gfx.h:77
RendererType
Definition: renderer.h:45
RenderMode
Definition: rendermode.h:48