DDraceNetwork Documentation
Loading...
Searching...
No Matches
backend_opengl3.h
Go to the documentation of this file.
1// This file can be included several times.
2#if (!defined(BACKEND_AS_OPENGL_ES) && !defined(ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL3_H)) || \
3 (defined(BACKEND_AS_OPENGL_ES) && !defined(ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL3_H_AS_ES))
4
5#if !defined(BACKEND_AS_OPENGL_ES) && !defined(ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL3_H)
6#define ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL3_H
7#endif
8
9#if defined(BACKEND_AS_OPENGL_ES) && !defined(ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL3_H_AS_ES)
10#define ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL3_H_AS_ES
11#endif
12
13#include "backend_opengl.h"
14
19
20#define MAX_STREAM_BUFFER_COUNT 10
21
22// takes care of opengl 3.3+ related rendering
24{
25protected:
27 static const int ms_MaxQuadsPossible = 256;
28
41
43
48
50
52
55
56 void DestroyBufferContainer(int Index, bool DeleteBOs = true);
57
58 void AppendIndices(unsigned int NewIndicesCount);
59
68 std::vector<SBufferContainer> m_vBufferContainers;
69
70 std::vector<TWGLuint> m_vBufferObjectIndices;
71
73
74 void InitPrimExProgram(CGLSLPrimitiveExProgram *pProgram, class CGLSLCompiler *pCompiler, class IStorage *pStorage, bool Textured, bool Rotationless);
75
76 bool IsNewApi() override { return true; }
77
78 void UseProgram(CGLSLTWProgram *pProgram);
79 void UploadStreamBufferData(EPrimitiveType PrimitiveType, const void *pVertices, size_t VertSize, unsigned int PrimitiveCount, bool AsTex3D = false);
80 void RenderText(const CCommandBuffer::SState &State, int DrawNum, int TextTextureIndex, int TextOutlineTextureIndex, int TextureSize, const ColorRGBA &TextColor, const ColorRGBA &TextOutlineColor);
81
82 void TextureUpdate(int Slot, int X, int Y, int Width, int Height, int GLFormat, uint8_t *pTexData);
83 void TextureCreate(int Slot, int Width, int Height, int GLFormat, int GLStoreFormat, int Flags, uint8_t *pTexData);
84
85 bool Cmd_Init(const SCommand_Init *pCommand) override;
86 void Cmd_Shutdown(const SCommand_Shutdown *pCommand) override;
92 void Cmd_Clear(const CCommandBuffer::SCommand_Clear *pCommand) override;
93 void Cmd_Render(const CCommandBuffer::SCommand_Render *pCommand) override;
94 void Cmd_RenderTex3D(const CCommandBuffer::SCommand_RenderTex3D *pCommand) override;
95
101
106
109 void Cmd_RenderQuadLayer(const CCommandBuffer::SCommand_RenderQuadLayer *pCommand, bool Grouped) override;
110 void Cmd_RenderText(const CCommandBuffer::SCommand_RenderText *pCommand) override;
114
115public:
117};
118
119#endif
#define MAX_STREAM_BUFFER_COUNT
Definition backend_opengl3.h:20
GL_SColorf SColorf
Definition graphics_threaded.h:176
void Cmd_RenderText(const CCommandBuffer::SCommand_RenderText *pCommand) override
Definition backend_opengl3.cpp:1256
TWGLuint m_PrimitiveDrawBufferIdTex3D
Definition backend_opengl3.h:47
void Cmd_Render(const CCommandBuffer::SCommand_Render *pCommand) override
Definition backend_opengl3.cpp:771
unsigned int m_CurrentIndicesInBuffer
Definition backend_opengl3.h:54
bool Cmd_Init(const SCommand_Init *pCommand) override
Definition backend_opengl3.cpp:73
TWGLuint m_aPrimitiveDrawVertexId[10]
Definition backend_opengl3.h:44
void Cmd_TextTexture_Update(const CCommandBuffer::SCommand_TextTexture_Update *pCommand) override
Definition backend_opengl3.cpp:708
CGLSLPrimitiveExProgram * m_pPrimitiveExProgramTexturedRotationless
Definition backend_opengl3.h:39
void Cmd_RenderQuadContainerEx(const CCommandBuffer::SCommand_RenderQuadContainerEx *pCommand) override
Definition backend_opengl3.cpp:1309
void AppendIndices(unsigned int NewIndicesCount)
Definition backend_opengl3.cpp:854
TWGLuint m_PrimitiveDrawVertexIdTex3D
Definition backend_opengl3.h:45
TWGLuint m_QuadDrawIndexBufferId
Definition backend_opengl3.h:53
void Cmd_RenderQuadContainerAsSpriteMultiple(const CCommandBuffer::SCommand_RenderQuadContainerAsSpriteMultiple *pCommand) override
Definition backend_opengl3.cpp:1370
void Cmd_RenderQuadLayer(const CCommandBuffer::SCommand_RenderQuadLayer *pCommand, bool Grouped) override
Definition backend_opengl3.cpp:1113
CGLSLPrimitiveExProgram * m_pPrimitiveExProgramTextured
Definition backend_opengl3.h:37
void InitPrimExProgram(CGLSLPrimitiveExProgram *pProgram, class CGLSLCompiler *pCompiler, class IStorage *pStorage, bool Textured, bool Rotationless)
Definition backend_opengl3.cpp:39
void Cmd_DeleteBufferObject(const CCommandBuffer::SCommand_DeleteBufferObject *pCommand) override
Definition backend_opengl3.cpp:952
CGLSLQuadProgram * m_pQuadProgramGrouped
Definition backend_opengl3.h:33
TWGLuint m_aLastIndexBufferBound[10]
Definition backend_opengl3.h:49
void Cmd_RenderTileLayer(const CCommandBuffer::SCommand_RenderTileLayer *pCommand) override
Definition backend_opengl3.cpp:1072
void Cmd_CreateBufferContainer(const CCommandBuffer::SCommand_CreateBufferContainer *pCommand) override
Definition backend_opengl3.cpp:959
void Cmd_TextTextures_Destroy(const CCommandBuffer::SCommand_TextTextures_Destroy *pCommand) override
Definition backend_opengl3.cpp:713
void Cmd_IndicesRequiredNumNotify(const CCommandBuffer::SCommand_IndicesRequiredNumNotify *pCommand) override
Definition backend_opengl3.cpp:1033
std::vector< SBufferContainer > m_vBufferContainers
Definition backend_opengl3.h:68
void UploadStreamBufferData(EPrimitiveType PrimitiveType, const void *pVertices, size_t VertSize, unsigned int PrimitiveCount, bool AsTex3D=false)
Definition backend_opengl3.cpp:745
void Cmd_TextTextures_Create(const CCommandBuffer::SCommand_TextTextures_Create *pCommand) override
Definition backend_opengl3.cpp:719
void Cmd_DeleteBufferContainer(const CCommandBuffer::SCommand_DeleteBufferContainer *pCommand) override
Definition backend_opengl3.cpp:1028
void Cmd_CreateBufferObject(const CCommandBuffer::SCommand_CreateBufferObject *pCommand) override
Definition backend_opengl3.cpp:896
void Cmd_RenderQuadContainer(const CCommandBuffer::SCommand_RenderQuadContainer *pCommand) override
Definition backend_opengl3.cpp:1277
CGLSLQuadProgram * m_pQuadProgramTexturedGrouped
Definition backend_opengl3.h:34
int m_LastStreamBuffer
Definition backend_opengl3.h:51
CGLSLPrimitiveProgram * m_pPrimitiveProgram
Definition backend_opengl3.h:29
void Cmd_UpdateBufferContainer(const CCommandBuffer::SCommand_UpdateBufferContainer *pCommand) override
Definition backend_opengl3.cpp:997
void Cmd_CopyBufferObject(const CCommandBuffer::SCommand_CopyBufferObject *pCommand) override
Definition backend_opengl3.cpp:942
void Cmd_Shutdown(const SCommand_Shutdown *pCommand) override
Definition backend_opengl3.cpp:469
void Cmd_RenderBorderTile(const CCommandBuffer::SCommand_RenderBorderTile *pCommand) override
Definition backend_opengl3.cpp:1039
CGLSLSpriteMultipleProgram * m_pSpriteProgramMultiple
Definition backend_opengl3.h:40
void Cmd_RenderTex3D(const CCommandBuffer::SCommand_RenderTex3D *pCommand) override
Definition backend_opengl3.cpp:807
void Cmd_Texture_Destroy(const CCommandBuffer::SCommand_Texture_Destroy *pCommand) override
Definition backend_opengl3.cpp:556
void Cmd_UpdateBufferObject(const CCommandBuffer::SCommand_UpdateBufferObject *pCommand) override
Definition backend_opengl3.cpp:930
CGLSLQuadProgram * m_pQuadProgram
Definition backend_opengl3.h:31
void Cmd_Clear(const CCommandBuffer::SCommand_Clear *pCommand) override
Definition backend_opengl3.cpp:725
void DestroyBufferContainer(int Index, bool DeleteBOs=true)
Definition backend_opengl3.cpp:834
static const int ms_MaxQuadsPossible
Definition backend_opengl3.h:27
void TextureCreate(int Slot, int Width, int Height, int GLFormat, int GLStoreFormat, int Flags, uint8_t *pTexData)
Definition backend_opengl3.cpp:564
TWGLuint m_aPrimitiveDrawBufferId[10]
Definition backend_opengl3.h:46
int m_MaxQuadsAtOnce
Definition backend_opengl3.h:26
void Cmd_Texture_Create(const CCommandBuffer::SCommand_Texture_Create *pCommand) override
Definition backend_opengl3.cpp:703
void Cmd_RecreateBufferObject(const CCommandBuffer::SCommand_RecreateBufferObject *pCommand) override
Definition backend_opengl3.cpp:918
void RenderText(const CCommandBuffer::SState &State, int DrawNum, int TextTextureIndex, int TextOutlineTextureIndex, int TextureSize, const ColorRGBA &TextColor, const ColorRGBA &TextOutlineColor)
Definition backend_opengl3.cpp:1203
CCommandBuffer::SColorf m_ClearColor
Definition backend_opengl3.h:72
CGLSLTextProgram * m_pTextProgram
Definition backend_opengl3.h:35
CGLSLPrimitiveProgram * m_pPrimitiveProgramTextured
Definition backend_opengl3.h:30
TWGLuint m_LastProgramId
Definition backend_opengl3.h:42
void UseProgram(CGLSLTWProgram *pProgram)
Definition backend_opengl3.cpp:30
std::vector< TWGLuint > m_vBufferObjectIndices
Definition backend_opengl3.h:70
CGLSLQuadProgram * m_pQuadProgramTextured
Definition backend_opengl3.h:32
CGLSLPrimitiveExProgram * m_pPrimitiveExProgramRotationless
Definition backend_opengl3.h:38
bool IsNewApi() override
Definition backend_opengl3.h:76
void TextureUpdate(int Slot, int X, int Y, int Width, int Height, int GLFormat, uint8_t *pTexData)
Definition backend_opengl3.cpp:532
CGLSLPrimitiveExProgram * m_pPrimitiveExProgram
Definition backend_opengl3.h:36
Definition backend_opengl.h:196
Definition glsl_shader_compiler.h:14
Definition opengl_sl_program.h:104
Definition opengl_sl_program.h:99
Definition opengl_sl_program.h:142
Definition opengl_sl_program.h:124
Definition opengl_sl_program.h:56
Definition opengl_sl_program.h:74
Definition color.h:182
Definition storage.h:21
uint32_t TWGLuint
Definition graphics_defines.h:7
EPrimitiveType
Definition graphics_threaded.h:28
Definition graphics_threaded.h:208
Definition graphics_threaded.h:284
Definition graphics_threaded.h:305
Definition graphics_threaded.h:243
Definition graphics_threaded.h:333
Definition graphics_threaded.h:297
Definition graphics_threaded.h:342
Definition graphics_threaded.h:257
Definition graphics_threaded.h:365
Definition graphics_threaded.h:420
Definition graphics_threaded.h:408
Definition graphics_threaded.h:379
Definition graphics_threaded.h:233
Definition graphics_threaded.h:391
Definition graphics_threaded.h:350
Definition graphics_threaded.h:223
Definition graphics_threaded.h:559
Definition graphics_threaded.h:533
Definition graphics_threaded.h:549
Definition graphics_threaded.h:509
Definition graphics_threaded.h:524
Definition graphics_threaded.h:319
Definition graphics_threaded.h:271
Definition graphics_threaded.h:192
SBufferContainer()
Definition backend_opengl3.h:62
TWGLuint m_LastIndexBufferBound
Definition backend_opengl3.h:65
SBufferContainerInfo m_ContainerInfo
Definition backend_opengl3.h:66
TWGLuint m_VertArrayId
Definition backend_opengl3.h:64
Definition graphics.h:27