31 #include "graphics/opengl/glframebuffer.h" 32 #include "graphics/opengl/glutil.h" 77 void DebugHook()
override;
78 void DebugLights()
override;
80 std::string GetName()
override;
82 bool Create()
override;
83 void Destroy()
override;
85 void ConfigChanged(
const DeviceConfig &newConfig)
override;
87 void BeginScene()
override;
88 void EndScene()
override;
90 void Clear()
override;
96 void SetMaterial(
const Material &material)
override;
98 int GetMaxLightCount()
override;
99 void SetLight(
int index,
const Light &light)
override;
100 void SetLightEnabled(
int index,
bool enabled)
override;
104 Texture CreateDepthTexture(
int width,
int height,
int depth)
override;
106 void DestroyTexture(
const Texture &texture)
override;
107 void DestroyAllTextures()
override;
109 int GetMaxTextureStageCount()
override;
110 void SetTexture(
int index,
const Texture &texture)
override;
111 void SetTexture(
int index,
unsigned int textureId)
override;
112 void SetTextureEnabled(
int index,
bool enabled)
override;
120 Color color =
Color(1.0f, 1.0f, 1.0f, 1.0f))
override;
122 Color color =
Color(1.0f, 1.0f, 1.0f, 1.0f))
override;
126 int first[],
int count[],
int drawCount,
127 Color color =
Color(1.0f, 1.0f, 1.0f, 1.0f))
override;
129 int first[],
int count[],
int drawCount,
130 Color color =
Color(1.0f, 1.0f, 1.0f, 1.0f))
override;
132 int first[],
int count[],
int drawCount)
override;
134 unsigned int CreateStaticBuffer(
PrimitiveType primitiveType,
const Vertex* vertices,
int vertexCount)
override;
135 unsigned int CreateStaticBuffer(
PrimitiveType primitiveType,
const VertexTex2* vertices,
int vertexCount)
override;
136 unsigned int CreateStaticBuffer(
PrimitiveType primitiveType,
const VertexCol* vertices,
int vertexCount)
override;
137 void UpdateStaticBuffer(
unsigned int bufferId,
PrimitiveType primitiveType,
const Vertex* vertices,
int vertexCount)
override;
138 void UpdateStaticBuffer(
unsigned int bufferId,
PrimitiveType primitiveType,
const VertexTex2* vertices,
int vertexCount)
override;
139 void UpdateStaticBuffer(
unsigned int bufferId,
PrimitiveType primitiveType,
const VertexCol* vertices,
int vertexCount)
override;
140 void DrawStaticBuffer(
unsigned int bufferId)
override;
141 void DestroyStaticBuffer(
unsigned int bufferId)
override;
143 int ComputeSphereVisibility(
const Math::Vector ¢er,
float radius)
override;
145 void SetViewport(
int x,
int y,
int width,
int height)
override;
147 void SetRenderState(
RenderState state,
bool enabled)
override;
149 void SetColorMask(
bool red,
bool green,
bool blue,
bool alpha)
override;
151 void SetDepthTestFunc(
CompFunc func)
override;
153 void SetDepthBias(
float factor,
float units)
override;
155 void SetAlphaTestFunc(
CompFunc func,
float refValue)
override;
159 void SetClearColor(
const Color &color)
override;
161 void SetGlobalAmbient(
const Color &color)
override;
163 void SetFogParams(
FogMode mode,
const Color &color,
float start,
float end,
float density)
override;
165 void SetCullMode(
CullMode mode)
override;
167 void SetShadeModel(
ShadeModel model)
override;
169 void SetShadowColor(
float value)
override;
171 void SetFillMode(
FillMode mode)
override;
173 void CopyFramebufferToTexture(
Texture& texture,
int xOffset,
int yOffset,
int x,
int y,
int width,
int height)
override;
175 std::unique_ptr<CFrameBufferPixels> GetFrameBufferPixels()
const override;
177 CFramebuffer* GetFramebuffer(std::string name)
override;
181 void DeleteFramebuffer(std::string name)
override;
183 bool IsAnisotropySupported()
override;
184 int GetMaxAnisotropyLevel()
override;
186 int GetMaxSamples()
override;
188 bool IsShadowMappingSupported()
override;
190 int GetMaxTextureSize()
override;
192 bool IsFramebufferSupported()
override;
196 void UpdateTextureParams(
int index);
198 void UpdateRenderingMode();
201 inline void BindVBO(GLuint
vbo);
203 inline void BindVAO(GLuint
vao);
206 unsigned int UploadVertexData(
DynamicBuffer& buffer,
void* data,
unsigned int size);
223 bool m_combinedMatrixOutdated =
true;
229 bool m_lighting =
false;
231 std::vector<Light> m_lights;
233 std::vector<bool> m_lightsEnabled;
236 std::vector<Texture> m_currentTextures;
238 std::vector<bool> m_texturesEnabled;
240 std::vector<TextureStageParams> m_textureStageParams;
243 std::set<Texture> m_allTextures;
254 struct VertexBufferInfo
259 VertexType vertexType = {};
261 unsigned int size = 0;
266 std::map<unsigned int, VertexBufferInfo> m_vboObjects;
268 unsigned int m_lastVboId = 0;
270 GLuint m_currentVBO = 0;
272 GLuint m_currentVAO = 0;
275 unsigned long m_vboMemory = 0;
278 std::map<std::string, std::unique_ptr<CFramebuffer>> m_framebuffers;
281 GLuint m_normalProgram = 0;
283 GLuint m_interfaceProgram = 0;
285 GLuint m_shadowProgram = 0;
290 unsigned int m_mode = 0;
RenderMode
Render modes the graphics device can be in.
Definition: device.h:172
Vertex of a primitive.
Definition: vertex.h:52
Vertex with secondary texture coordinates.
Definition: vertex.h:113
unsigned int offset
Dynamic buffer offset.
Definition: gl33device.h:57
GLuint vao
Auxiliary VAO for rendering primitives with DrawPrimitive*.
Definition: gl33device.h:51
FogMode
Type of fog calculation function.
Definition: device.h:218
4x4 matrix
Definition: matrix.h:65
TexWrapMode
Wrapping mode for texture coords.
Definition: texture.h:99
FillMode
Polygon fill mode.
Definition: device.h:251
CompFunc
Type of function used to compare values.
Definition: device.h:183
Parameters for a texture unit.
Definition: texture.h:180
Material of a surface.
Definition: material.h:45
Parameters for texture coordinate generation.
Definition: texture.h:234
TexImgFormat
Format of image data.
Definition: texture.h:42
General config for graphics device.
Definition: device.h:64
Properties of light in 3D scene.
Definition: light.h:54
Parameters for texture creation.
Definition: texture.h:155
ShadeModel
Shade model used in rendering.
Definition: device.h:241
BlendFunc
Type of blending function.
Definition: device.h:199
Matrix struct and related functions.
Image loaded from file.
Definition: image.h:54
Contains parameters for new framebuffer.
Definition: framebuffer.h:34
PrimitiveType
Type of primitive to render.
Definition: device.h:265
CullMode
Culling mode for polygons.
Definition: device.h:229
Colored vertex.
Definition: vertex.h:84
Namespace for (new) graphics code.
Definition: app.h:49
Implementation-specific image data.
Definition: image.h:41
RenderState
Render states that can be enabled/disabled.
Definition: device.h:155
Info about a texture.
Definition: texture.h:256
unsigned int size
Dynamic buffer size.
Definition: gl33device.h:55
3D (3x1) vector
Definition: vector.h:53
GLuint vbo
Dynamic buffer.
Definition: gl33device.h:53
Abstract graphics device - CDevice class and related structs/enums.
2D Point with integer coords
Definition: intpoint.h:39
RGBA color.
Definition: color.h:39
TransformType
Type of transformation in rendering pipeline.
Definition: device.h:143
Struct for dynamic buffers.
Definition: gl33device.h:48
Implementation of CDevice interface in OpenGL 3.3.
Definition: gl33device.h:71
Abstract interface of graphics device.
Definition: device.h:323
Abstract interface of default framebuffer and offscreen framebuffers.
Definition: framebuffer.h:67