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 47 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 void extractCPCIndexes(uint8 cm1, uint8 cm2, uint8 &i1, uint8 &i2);
125 void extractC64Indexes(uint8 cm1, uint8 cm2, uint8 &i1, uint8 &i2);
127 void selectColorFromFourColorPalette(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1);
129 virtual void setStippleData(byte *data) {};
130 virtual void useStipple(
bool enabled) {};
132 void setColorMap(ColorMap *colorMap_);
134 ColorReMap *_colorRemaps;
135 void clearColorPairArray();
136 void fillColorPairArray();
141 int _underFireBackgroundColor;
142 byte _stipples[16][128];
152 virtual void positionCamera(
const Math::Vector3d &pos,
const Math::Vector3d &interest) = 0;
153 virtual void updateProjectionMatrix(
float fov,
float yminValue,
float ymaxValue,
float nearClipPlane,
float farClipPlane) = 0;
155 Math::Matrix4 getMvpMatrix()
const {
return _mvpMatrix; }
163 bool computeScreenViewport();
170 Math::Matrix4 _projectionMatrix;
171 Math::Matrix4 _modelViewMatrix;
172 Math::Matrix4 _mvpMatrix;
174 Math::Frustum _frustum;
176 Math::Matrix4 makeProjectionMatrix(
float fov,
float nearClipPlane,
float farClipPlane)
const;
187 #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