22 #ifndef GRIM_GFX_BASE_H 23 #define GRIM_GFX_BASE_H 25 #include "math/vector3d.h" 26 #include "math/quat.h" 28 #include "common/str.h" 29 #include "common/rect.h" 31 #include "graphics/renderer.h" 33 #include "engines/grim/material.h" 49 class PrimitiveObject;
82 virtual void setupScreen(
int screenW,
int screenH) = 0;
89 virtual bool isHardwareAccelerated() = 0;
95 virtual bool supportsShaders() = 0;
97 virtual uint getScreenWidth() {
return _screenWidth; }
98 virtual uint getScreenHeight() {
return _screenHeight; }
100 virtual void setupCameraFrustum(
float fov,
float nclip,
float fclip) = 0;
101 virtual void positionCamera(
const Math::Vector3d &pos,
const Math::Vector3d &interest,
float roll) = 0;
102 virtual void positionCamera(
const Math::Vector3d &pos,
const Math::Matrix4 &rot) = 0;
104 virtual Math::Matrix4 getModelView() = 0;
105 virtual Math::Matrix4 getProjection() = 0;
107 virtual void clearScreen() = 0;
108 virtual void clearDepthBuffer() = 0;
113 virtual void flipBuffer() = 0;
119 virtual void getScreenBoundingBox(
const Mesh *mesh,
int *x1,
int *y1,
int *x2,
int *y2) = 0;
120 virtual void getScreenBoundingBox(
const EMIModel *mesh,
int *x1,
int *y1,
int *x2,
int *y2) = 0;
122 virtual void startActorDraw(
const Actor *act) = 0;
123 virtual void finishActorDraw() = 0;
124 virtual void setShadow(
Shadow *shadow) = 0;
125 virtual void drawShadowPlanes() = 0;
126 virtual void setShadowMode();
127 virtual void clearShadowMode();
128 virtual bool isShadowModeActive();
129 virtual void setShadowColor(byte r, byte g, byte b) = 0;
130 virtual void getShadowColor(byte *r, byte *g, byte *b) = 0;
131 virtual void destroyShadow(
Shadow *shadow) {}
133 virtual void set3DMode() = 0;
135 virtual void translateViewpointStart() = 0;
136 virtual void translateViewpoint(
const Math::Vector3d &vec) = 0;
137 virtual void rotateViewpoint(
const Math::Angle &angle,
const Math::Vector3d &axis) = 0;
138 virtual void rotateViewpoint(
const Math::Matrix4 &rot) = 0;
139 virtual void translateViewpointFinish() = 0;
142 virtual void drawModelFace(
const Mesh *mesh,
const MeshFace *face) = 0;
143 virtual void drawSprite(
const Sprite *sprite) = 0;
144 virtual void drawMesh(
const Mesh *mesh);
146 virtual void drawOverlay(
const Overlay *overlay) { };
148 virtual void enableLights() = 0;
149 virtual void disableLights() = 0;
150 virtual void setupLight(
Light *light,
int lightId) = 0;
151 virtual void turnOffLight(
int lightId) = 0;
153 virtual void createTexture(
Texture *texture,
const uint8 *data,
const CMap *cmap,
bool clamp) = 0;
154 virtual void selectTexture(
const Texture *texture) = 0;
155 virtual void destroyTexture(
Texture *texture) = 0;
170 virtual void createBitmap(
BitmapData *bitmap) = 0;
180 virtual void drawBitmap(
const Bitmap *bitmap,
int x,
int y, uint32 layer = 0) = 0;
191 virtual void destroyBitmap(
BitmapData *bitmap) = 0;
193 virtual void createFont(
Font *font) = 0;
194 virtual void destroyFont(
Font *font) = 0;
196 virtual void createTextObject(
TextObject *text) = 0;
197 virtual void drawTextObject(
const TextObject *text) = 0;
198 virtual void destroyTextObject(
TextObject *text) = 0;
200 virtual Bitmap *getScreenshot(
int w,
int h,
bool useStored) = 0;
201 virtual void storeDisplay() = 0;
202 virtual void copyStoredToDisplay() = 0;
209 virtual void dimScreen() = 0;
210 virtual void dimRegion(
int x,
int y,
int w,
int h,
float level) = 0;
211 virtual void setDimLevel(
float dimLevel) { _dimLevel = dimLevel; }
221 virtual void irisAroundRegion(
int x1,
int y1,
int x2,
int y2) = 0;
223 virtual void drawEmergString(
int x,
int y,
const char *text,
const Color &fgColor) = 0;
224 virtual void loadEmergFont() = 0;
229 virtual void drawDimPlane() {};
242 virtual void drawMovieFrame(
int offsetX,
int offsetY) = 0;
250 virtual void releaseMovieFrame() = 0;
252 virtual const char *getVideoDeviceName() = 0;
254 virtual void saveState(
SaveGame *state);
255 virtual void restoreState(
SaveGame *state);
257 virtual void renderBitmaps(
bool render);
258 virtual void renderZBitmaps(
bool render);
260 virtual void makeScreenTextures();
262 virtual void createMesh(
Mesh *mesh) {}
263 virtual void destroyMesh(
const Mesh *mesh) {}
264 virtual void createEMIModel(
EMIModel *model) {}
265 virtual void updateEMIModel(
const EMIModel *model) {}
266 virtual void destroyEMIModel(
EMIModel *model) {}
268 virtual void createSpecialtyTexture(uint
id,
const uint8 *data,
int width,
int height);
269 virtual void createSpecialtyTextureFromScreen(uint
id, uint8 *data,
int x,
int y,
int width,
int height) = 0;
273 static Math::Matrix4 makeLookMatrix(
const Math::Vector3d& pos,
const Math::Vector3d& interest,
const Math::Vector3d& up);
274 static Math::Matrix4 makeProjMatrix(
float fov,
float nclip,
float fclip);
275 Texture *getSpecialtyTexturePtr(uint
id) {
if (
id >= _numSpecialtyTextures)
return nullptr;
return &_specialtyTextures[id]; };
278 virtual void setBlendMode(
bool additive) = 0;
281 static const unsigned int _numSpecialtyTextures = 22;
282 Texture _specialtyTextures[_numSpecialtyTextures];
283 static const int _gameHeight = 480;
284 static const int _gameWidth = 640;
285 static const int _globalHeight = 1080;
286 static const int _globalWidth = 1920;
287 float _scaleW, _scaleH;
288 float _globalScaleW = 1.0f, _globalScaleH = 1.0f;
289 int _screenWidth, _screenHeight;
290 Shadow *_currentShadowArray;
291 unsigned char _shadowColorR;
292 unsigned char _shadowColorG;
293 unsigned char _shadowColorB;
295 bool _renderZBitmaps;
296 bool _shadowModeActive;
297 Math::Vector3d _currentPos;
298 Math::Matrix4 _currentRot;
305 GfxBase *CreateGfxOpenGLShader();
RendererType
Definition: renderer.h:45
Definition: modelemi.h:82
Definition: savegame.h:33
Definition: textobject.h:84
Definition: gfx_base.h:71
Definition: formatinfo.h:28
Definition: modelemi.h:55
Definition: colormap.h:35
Definition: primitives.h:34
Definition: default_display_client.h:65
Actor represents a 3D character on screen.
Definition: actor.h:72
Definition: material.h:31