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;
119 Color color =
Color(1.0f, 1.0f, 1.0f, 1.0f))
override;
121 Color color =
Color(1.0f, 1.0f, 1.0f, 1.0f))
override;
125 int first[],
int count[],
int drawCount,
126 Color color =
Color(1.0f, 1.0f, 1.0f, 1.0f))
override;
128 int first[],
int count[],
int drawCount,
129 Color color =
Color(1.0f, 1.0f, 1.0f, 1.0f))
override;
131 int first[],
int count[],
int drawCount)
override;
133 unsigned int CreateStaticBuffer(
PrimitiveType primitiveType,
const Vertex* vertices,
int vertexCount)
override;
134 unsigned int CreateStaticBuffer(
PrimitiveType primitiveType,
const VertexTex2* vertices,
int vertexCount)
override;
135 unsigned int CreateStaticBuffer(
PrimitiveType primitiveType,
const VertexCol* vertices,
int vertexCount)
override;
136 void UpdateStaticBuffer(
unsigned int bufferId,
PrimitiveType primitiveType,
const Vertex* vertices,
int vertexCount)
override;
137 void UpdateStaticBuffer(
unsigned int bufferId,
PrimitiveType primitiveType,
const VertexTex2* vertices,
int vertexCount)
override;
138 void UpdateStaticBuffer(
unsigned int bufferId,
PrimitiveType primitiveType,
const VertexCol* vertices,
int vertexCount)
override;
139 void DrawStaticBuffer(
unsigned int bufferId)
override;
140 void DestroyStaticBuffer(
unsigned int bufferId)
override;
142 int ComputeSphereVisibility(
const Math::Vector ¢er,
float radius)
override;
144 void SetViewport(
int x,
int y,
int width,
int height)
override;
146 void SetRenderState(
RenderState state,
bool enabled)
override;
148 void SetColorMask(
bool red,
bool green,
bool blue,
bool alpha)
override;
150 void SetDepthTestFunc(
CompFunc func)
override;
152 void SetDepthBias(
float factor,
float units)
override;
154 void SetAlphaTestFunc(
CompFunc func,
float refValue)
override;
158 void SetClearColor(
const Color &color)
override;
160 void SetGlobalAmbient(
const Color &color)
override;
162 void SetFogParams(
FogMode mode,
const Color &color,
float start,
float end,
float density)
override;
164 void SetCullMode(
CullMode mode)
override;
166 void SetShadeModel(
ShadeModel model)
override;
168 void SetShadowColor(
float value)
override;
170 void SetFillMode(
FillMode mode)
override;
172 void CopyFramebufferToTexture(
Texture& texture,
int xOffset,
int yOffset,
int x,
int y,
int width,
int height)
override;
174 std::unique_ptr<CFrameBufferPixels> GetFrameBufferPixels()
const override;
176 CFramebuffer* GetFramebuffer(std::string name)
override;
180 void DeleteFramebuffer(std::string name)
override;
182 bool IsAnisotropySupported()
override;
183 int GetMaxAnisotropyLevel()
override;
185 int GetMaxSamples()
override;
187 bool IsShadowMappingSupported()
override;
189 int GetMaxTextureSize()
override;
191 bool IsFramebufferSupported()
override;
195 void UpdateTextureParams(
int index);
197 void UpdateRenderingMode();
200 inline void BindVBO(GLuint
vbo);
202 inline void BindVAO(GLuint
vao);
205 unsigned int UploadVertexData(
DynamicBuffer& buffer,
void* data,
unsigned int size);
222 bool m_combinedMatrixOutdated =
true;
228 bool m_lighting =
false;
230 std::vector<Light> m_lights;
232 std::vector<bool> m_lightsEnabled;
235 std::vector<Texture> m_currentTextures;
237 std::vector<bool> m_texturesEnabled;
239 std::vector<TextureStageParams> m_textureStageParams;
242 std::set<Texture> m_allTextures;
253 struct VertexBufferInfo
258 VertexType vertexType = {};
260 unsigned int size = 0;
265 std::map<unsigned int, VertexBufferInfo> m_vboObjects;
267 unsigned int m_lastVboId = 0;
269 GLuint m_currentVBO = 0;
271 GLuint m_currentVAO = 0;
274 unsigned long m_vboMemory = 0;
277 std::map<std::string, std::unique_ptr<CFramebuffer>> m_framebuffers;
280 GLuint m_normalProgram = 0;
282 GLuint m_interfaceProgram = 0;
284 GLuint m_shadowProgram = 0;
289 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
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:41
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