22 #ifndef WINTERMUTE_BASE_RENDER_OPENGL3D_H 23 #define WINTERMUTE_BASE_RENDER_OPENGL3D_H 25 #include "engines/wintermute/base/gfx/base_renderer3d.h" 26 #include "engines/wintermute/dctypes.h" 27 #include "engines/wintermute/math/rect32.h" 28 #include "engines/wintermute/math/vector2.h" 30 #include "graphics/opengl/system_headers.h" 31 #include "graphics/transform_struct.h" 33 #if defined(USE_OPENGL_SHADERS) 35 #include "graphics/opengl/shader.h" 39 class BaseSurfaceOpenGL3D;
41 class BaseRenderOpenGL3DShader :
public BaseRenderer3D {
42 friend class BaseSurfaceOpenGL3DShader;
43 friend class Mesh3DSOpenGLShader;
44 friend class XMeshOpenGLShader;
45 friend class ShadowVolumeOpenGLShader;
60 BaseRenderOpenGL3DShader(BaseGame *inGame =
nullptr);
61 ~BaseRenderOpenGL3DShader()
override;
63 bool invalidateTexture(BaseSurfaceOpenGL3D *texture)
override;
65 void setSpriteBlendMode(Graphics::TSpriteBlendMode blendMode,
bool forceChange =
false)
override;
67 void setAmbientLightRenderState()
override;
69 int getMaxActiveLights()
override;
70 void lightEnable(
int index,
bool enable)
override;
71 void setLightParameters(
int index,
const DXVector3 &position,
const DXVector3 &direction,
const DXVector4 &diffuse,
bool spotlight)
override;
73 void enableCulling()
override;
74 void disableCulling()
override;
76 bool enableShadows()
override;
77 bool disableShadows()
override;
78 void displayShadow(BaseObject *
object,
const DXVector3 *lightPos,
bool lightPosRelative)
override;
79 bool stencilSupported()
override;
81 void dumpData(
const char *filename)
override {}
82 BaseImage *takeScreenshot()
override;
83 void fadeToColor(byte r, byte g, byte b, byte a)
override;
87 bool setViewport(
int left,
int top,
int right,
int bottom)
override;
88 bool drawLine(
int x1,
int y1,
int x2,
int y2, uint32 color)
override;
90 DXMatrix *buildMatrix(DXMatrix* out,
const DXVector2 *centre,
const DXVector2 *scaling,
float angle);
91 void transformVertices(
struct SpriteVertex *vertices,
const DXVector2 *centre,
const DXVector2 *scaling,
float angle);
93 bool setProjection()
override;
95 bool setWorldTransform(
const DXMatrix &transform)
override;
96 bool setViewTransform(
const DXMatrix &transform)
override;
97 bool setProjectionTransform(
const DXMatrix &transform)
override;
99 bool initRenderer(
int width,
int height,
bool windowed)
override;
100 bool setup2D(
bool force =
false)
override;
101 bool setup3D(Camera3D *camera,
bool force =
false)
override;
102 bool setupLines()
override;
105 return "OpenGL 3D renderer";
107 bool displayDebugInfo()
override {
108 return STATUS_FAILED;
110 bool drawShaderQuad()
override {
111 return STATUS_FAILED;
114 float getScaleRatioX()
const override {
117 float getScaleRatioY()
const override {
121 BaseSurface *createSurface()
override;
123 bool startSpriteBatch()
override;
124 bool endSpriteBatch()
override;
125 bool commitSpriteBatch()
override;
127 bool drawSpriteEx(BaseSurface *texture,
const Rect32 &rect,
const Vector2 &pos,
const Vector2 &rot,
const Vector2 &
scale,
128 float angle, uint32 color,
bool alphaDisable, Graphics::TSpriteBlendMode blendMode,
bool mirrorX,
bool mirrorY)
override;
130 void renderSceneGeometry(
const BaseArray<AdWalkplane *> &planes,
const BaseArray<AdBlock *> &blocks,
131 const BaseArray<AdGeneric *> &generics,
const BaseArray<Light3D *> &lights, Camera3D *camera)
override;
132 void renderShadowGeometry(
const BaseArray<AdWalkplane *> &planes,
const BaseArray<AdBlock *> &blocks,
const BaseArray<AdGeneric *> &generics, Camera3D *camera)
override;
134 Mesh3DS *createMesh3DS()
override;
135 XMesh *createXMesh()
override;
136 ShadowVolume *createShadowVolume()
override;
138 bool setViewport3D(DXViewport *viewport)
override;
140 void postfilter()
override;
141 void setPostfilter(PostFilter postFilter)
override { _postFilterMode = postFilter; };
146 void renderSimpleShadow(BaseObject *
object);
148 DXMatrix _glProjectionMatrix;
153 Math::Vector4d _flatShadowColor;
168 #endif // defined(USE_OPENGL_SHADERS)
Graphics::Surface * scale(const Graphics::Surface &srcImage, int xSize, int ySize)
signed char * fill(signed char *first, signed char *last, Value val)
Definition: algorithm.h:168
Definition: achievements_tables.h:27