ScummVM API documentation
Freescape::Renderer Class Referenceabstract
Inheritance diagram for Freescape::Renderer:
Freescape::OpenGLShaderRenderer Freescape::TinyGLRenderer

Public Member Functions

 Renderer (int screenW, int screenH, Common::RenderMode renderMode, bool authenticGraphics)
 
virtual void init ()=0
 
virtual void setViewport (const Common::Rect &rect)=0
 
virtual void flipBuffer ()
 
virtual void useColor (uint8 r, uint8 g, uint8 b)=0
 
virtual void depthTesting (bool enabled)
 
virtual void polygonOffset (bool enabled)=0
 
virtual TexturecreateTexture (const Graphics::Surface *surface, bool is3D=false)=0
 
Graphics::SurfaceconvertImageFormatIfNecessary (Graphics::ManagedSurface *surface)
 
virtual void freeTexture (Texture *texture)=0
 
virtual void drawTexturedRect2D (const Common::Rect &screenRect, const Common::Rect &textureRect, Texture *texture)=0
 
virtual void renderSensorShoot (byte color, const Math::Vector3d sensor, const Math::Vector3d player, const Common::Rect viewPort)=0
 
virtual void renderPlayerShootBall (byte color, const Common::Point position, int frame, const Common::Rect viewPort)=0
 
virtual void renderPlayerShootRay (byte color, const Common::Point position, const Common::Rect viewPort)=0
 
virtual void renderCrossair (const Common::Point crossairPosition)=0
 
virtual void renderCube (const Math::Vector3d &position, const Math::Vector3d &size, Common::Array< uint8 > *colours, Common::Array< uint8 > *ecolours, float offset=0.0)
 
virtual void renderRectangle (const Math::Vector3d &position, const Math::Vector3d &size, Common::Array< uint8 > *colours, Common::Array< uint8 > *ecolours, float offset=0.0)
 
virtual void renderPolygon (const Math::Vector3d &origin, const Math::Vector3d &size, const Common::Array< float > *ordinates, Common::Array< uint8 > *colours, Common::Array< uint8 > *ecolours, float offset=0.0)
 
virtual void renderPyramid (const Math::Vector3d &origin, const Math::Vector3d &size, const Common::Array< float > *ordinates, Common::Array< uint8 > *colours, Common::Array< uint8 > *ecolours, int type)
 
virtual void renderFace (const Common::Array< Math::Vector3d > &vertices)=0
 
void setColorRemaps (ColorReMap *colorRemaps)
 
virtual void clear (uint8 r, uint8 g, uint8 b, bool ignoreViewport=false)=0
 
virtual void drawFloor (uint8 color)=0
 
virtual void drawBackground (uint8 color)
 
void drawEclipse (uint8 color1, uint8 color2, float difference)
 
virtual void drawSkybox (Texture *texture, Math::Vector3d camera)
 
virtual void drawCelestialBody (Math::Vector3d position, float radius, uint8 color)
 
Common::Rect viewport () const
 
virtual Common::Point nativeResolution ()
 
void readFromPalette (uint8 index, uint8 &r, uint8 &g, uint8 &b)
 
void setPaletteValue (uint8 index, uint8 r, uint8 g, uint8 b)
 
uint8 indexFromColor (uint8 r, uint8 g, uint8 b)
 
uint8 mapEGAColor (uint8 index)
 
bool getRGBAt (uint8 index, uint8 ecolor, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *&stipple)
 
bool getRGBAtC64 (uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2)
 
bool getRGBAtCGA (uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *&stipple)
 
bool getRGBAtCPC (uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *&stipple)
 
bool getRGBAtEGA (uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2)
 
bool getRGBAtZX (uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *&stipple)
 
bool getRGBAtHercules (uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *&stipple)
 
void extractCPCIndexes (uint8 cm1, uint8 cm2, uint8 &i1, uint8 &i2)
 
void extractC64Indexes (uint8 cm1, uint8 cm2, uint8 &i1, uint8 &i2)
 
void selectColorFromFourColorPalette (uint8 index, uint8 &r1, uint8 &g1, uint8 &b1)
 
virtual void setStippleData (byte *data)
 
virtual void useStipple (bool enabled)
 
void scaleStipplePattern (byte originalPattern[128], byte newPattern[128])
 
void setColorMap (ColorMap *colorMap_)
 
void clearColorPairArray ()
 
void fillColorPairArray ()
 
virtual void positionCamera (const Math::Vector3d &pos, const Math::Vector3d &interest)=0
 
virtual void updateProjectionMatrix (float fov, float aspectRatio, float nearClipPlane, float farClipPlane)=0
 
Math::Matrix4 getMvpMatrix () const
 
virtual Graphics::SurfacegetScreenshot ()=0
 
void flipVertical (Graphics::Surface *s)
 
bool computeScreenViewport ()
 

Public Attributes

Graphics::PixelFormat _currentPixelFormat
 
Graphics::PixelFormat _palettePixelFormat
 
Graphics::PixelFormat _texturePixelFormat
 
bool _isAccelerated
 
bool _authenticGraphics
 
byte _defaultStippleArray [128]
 
byte _defaultStippleArraySmall [128]
 
byte * _variableStippleArray
 
float _skyNormals [16][3]
 
float _skyUvs1008 [16][2]
 
float _skyUvs128 [16][2]
 
float _skyVertices [16][3]
 
byte * _palette
 
ColorMap_colorMap
 
ColorReMap_colorRemaps
 
byte _colorPair [16]
 
int _keyColor
 
int _inkColor
 
int _paperColor
 
int _underFireBackgroundColor
 
Common::Point _shakeOffset
 
byte _stipples [16][128]
 
int _scale
 
int _screenW
 
int _screenH
 
Common::RenderMode _renderMode
 

Protected Member Functions

Math::Matrix4 makeProjectionMatrix (float fov, float nearClipPlane, float farClipPlane) const
 

Protected Attributes

Common::Rect _screenViewport
 
Common::Rect _viewport
 
Common::Rect _unscaledViewport
 
Math::Matrix4 _projectionMatrix
 
Math::Matrix4 _modelViewMatrix
 
Math::Matrix4 _mvpMatrix
 
Math::Frustum _frustum
 

Member Function Documentation

◆ flipBuffer()

virtual void Freescape::Renderer::flipBuffer ( )
inlinevirtual

Swap the buffers, making the drawn screen visible

Reimplemented in Freescape::OpenGLShaderRenderer, and Freescape::TinyGLRenderer.

◆ positionCamera()

virtual void Freescape::Renderer::positionCamera ( const Math::Vector3d &  pos,
const Math::Vector3d &  interest 
)
pure virtual

Select the window where to render

This also sets the viewport

Implemented in Freescape::OpenGLShaderRenderer, and Freescape::TinyGLRenderer.

Member Data Documentation

◆ _defaultStippleArray

byte Freescape::Renderer::_defaultStippleArray[128]
Initial value:
= {
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
}

◆ _defaultStippleArraySmall

byte Freescape::Renderer::_defaultStippleArraySmall[128]
Initial value:
= {
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
}

◆ _skyNormals

float Freescape::Renderer::_skyNormals[16][3]
Initial value:
= {
{ 0.0, 0.0, 1.0 },
{ 0.0, 0.0, 1.0 },
{ 0.0, 0.0, 1.0 },
{ 0.0, 0.0, 1.0 },
{ 0.0, 0.0, -1.0 },
{ 0.0, 0.0, -1.0 },
{ 0.0, 0.0, -1.0 },
{ 0.0, 0.0, -1.0 },
{ -1.0, 0.0, 0.0 },
{ -1.0, 0.0, 0.0 },
{ -1.0, 0.0, 0.0 },
{ -1.0, 0.0, 0.0 },
{ 1.0, 0.0, 0.0 },
{ 1.0, 0.0, 0.0 },
{ 1.0, 0.0, 0.0 },
{ 1.0, 0.0, 0.0 }
}

◆ _skyUvs1008

float Freescape::Renderer::_skyUvs1008[16][2]
Initial value:
= {
{ 0.0f, 0.0f },
{ 0.0f, 2.0f },
{ 0.4f, 2.0f },
{ 0.4f, 0.0f },
{ 0.0f, 2.0f },
{ 0.4f, 2.0f },
{ 0.4f, 0.0f },
{ 0.0f, 0.0f },
{ 0.0f, 0.0f },
{ 0.4f, 0.0f },
{ 0.4f, 2.0f },
{ 0.0f, 2.0f },
{ 0.4f, 0.0f },
{ 0.0f, 0.0f },
{ 0.0f, 2.0f },
{ 0.4f, 2.0f },
}

◆ _skyUvs128

float Freescape::Renderer::_skyUvs128[16][2]
Initial value:
= {
{ 0.0f, 0.0f },
{ 0.0f, 2.0f },
{ 2.5f, 2.0f },
{ 2.5f, 0.0f },
{ 0.0f, 2.0f },
{ 2.5f, 2.0f },
{ 2.5f, 0.0f },
{ 0.0f, 0.0f },
{ 0.0f, 0.0f },
{ 2.5f, 0.0f },
{ 2.5f, 2.0f },
{ 0.0f, 2.0f },
{ 2.5f, 0.0f },
{ 0.0f, 0.0f },
{ 0.0f, 2.0f },
{ 2.5f, 2.0f },
}

◆ _skyVertices

float Freescape::Renderer::_skyVertices[16][3]
Initial value:
= {
{ -81280.0, 8128.0, 81280.0 },
{ -81280.0, -8128.0, 81280.0 },
{ 81280.0, -8128.0, 81280.0 },
{ 81280.0, 8128.0, 81280.0 },
{ 81280.0f, -8128.0f, -81280.0f },
{ -81280.0f, -8128.0f, -81280.0f },
{ -81280.0f, 8128.0f, -81280.0f },
{ 81280.0f, 8128.0f, -81280.0f },
{ -81280.0f, 8128.0f, 81280.0f },
{ -81280.0f, 8128.0f, -81280.0f },
{ -81280.0f, -8128.0f, -81280.0f },
{ -81280.0f, -8128.0f, 81280.0f },
{ 81280.0f, 8128.0f, -81280.0f },
{ 81280.0f, 8128.0f, 81280.0f },
{ 81280.0f, -8128.0f, 81280.0f },
{ 81280.0f, -8128.0f, -81280.0f },
}

The documentation for this class was generated from the following file: