2#if (!defined(BACKEND_AS_OPENGL_ES) && !defined(ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL_H)) || \
3 (defined(BACKEND_AS_OPENGL_ES) && !defined(ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL_H_AS_ES))
5#if !defined(BACKEND_AS_OPENGL_ES) && !defined(ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL_H)
6#define ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL_H
9#if defined(BACKEND_AS_OPENGL_ES) && !defined(ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL_H_AS_ES)
10#define ENGINE_CLIENT_BACKEND_OPENGL_BACKEND_OPENGL_H_AS_ES
22#if defined(BACKEND_AS_OPENGL_ES) && defined(CONF_BACKEND_OPENGL_ES3)
23#define BACKEND_GL_MODERN_API 1
33 m_Tex(0),
m_Tex2DArray(0),
m_Sampler(0),
m_Sampler2DArray(0),
m_LastWrapMode(
EWrapMode::
REPEAT),
m_MemSize(0),
m_Width(0),
m_Height(0),
m_RescaleCount(0),
m_ResizeWidth(0),
m_ResizeHeight(0)
92 void TextureUpdate(
int Slot,
int X,
int Y,
int Width,
int Height,
int GLFormat, uint8_t *pTexData);
93 void TextureCreate(
int Slot,
int Width,
int Height,
int GLFormat,
int GLStoreFormat,
int Flags, uint8_t *pTexData);
95 virtual bool Cmd_Init(
const SCommand_Init *pCommand);
143#ifndef BACKEND_AS_OPENGL_ES
162#ifndef BACKEND_GL_MODERN_API
163 bool DoAnalyzeStep(
size_t CheckCount,
size_t VerticesCount, uint8_t aFakeTexture[],
size_t SingleImageSize);
172#ifndef BACKEND_GL_MODERN_API
205#if defined(BACKEND_AS_OPENGL_ES) && defined(CONF_BACKEND_OPENGL_ES3)
206#undef BACKEND_GL_MODERN_API
ERunCommandReturnTypes
Definition backend_base.h:27
Definition backend_base.h:82
Definition backend_opengl.h:136
CGLSLTileProgram * m_pBorderTileProgramTextured
Definition backend_opengl.h:196
CGLSLPrimitiveProgram * m_pPrimitive3DProgram
Definition backend_opengl.h:197
CGLSLTileProgram * m_pBorderTileProgram
Definition backend_opengl.h:195
std::vector< SBufferContainer > m_vBufferContainers
Definition backend_opengl.h:141
void Cmd_RenderBorderTile(const CCommandBuffer::SCommand_RenderBorderTile *pCommand) override
Definition backend_opengl.cpp:2051
void SetState(const CCommandBuffer::SState &State, CGLSLTWProgram *pProgram, bool Use2DArrayTextures=false)
Definition backend_opengl.cpp:1160
void Cmd_CopyBufferObject(const CCommandBuffer::SCommand_CopyBufferObject *pCommand) override
Definition backend_opengl.cpp:1964
GL_SVertexTex3D m_aStreamVertices[1024 *4]
Definition backend_opengl.h:144
void Cmd_RenderTileLayer(const CCommandBuffer::SCommand_RenderTileLayer *pCommand) override
Definition backend_opengl.cpp:2098
CGLSLPrimitiveProgram * m_pPrimitive3DProgramTextured
Definition backend_opengl.h:198
bool IsTileMapAnalysisSucceeded()
Definition backend_opengl.cpp:1411
void Cmd_UpdateBufferContainer(const CCommandBuffer::SCommand_UpdateBufferContainer *pCommand) override
Definition backend_opengl.cpp:2013
void Cmd_RecreateBufferObject(const CCommandBuffer::SCommand_RecreateBufferObject *pCommand) override
Definition backend_opengl.cpp:1927
bool DoAnalyzeStep(size_t CheckCount, size_t VerticesCount, uint8_t aFakeTexture[], size_t SingleImageSize)
Definition backend_opengl.cpp:1310
void Cmd_RenderTex3D(const CCommandBuffer::SCommand_RenderTex3D *pCommand) override
Definition backend_opengl.cpp:1846
void Cmd_UpdateBufferObject(const CCommandBuffer::SCommand_UpdateBufferObject *pCommand) override
Definition backend_opengl.cpp:1947
bool Cmd_Init(const SCommand_Init *pCommand) override
Definition backend_opengl.cpp:1589
void UseProgram(CGLSLTWProgram *pProgram)
Definition backend_opengl.cpp:1155
CGLSLTileProgram * m_pTileProgram
Definition backend_opengl.h:193
void Cmd_CreateBufferObject(const CCommandBuffer::SCommand_CreateBufferObject *pCommand) override
Definition backend_opengl.cpp:1899
void Cmd_IndicesRequiredNumNotify(const CCommandBuffer::SCommand_IndicesRequiredNumNotify *pCommand) override
Definition backend_opengl.cpp:2047
CGLSLTileProgram * m_pTileProgramTextured
Definition backend_opengl.h:194
void Cmd_CreateBufferContainer(const CCommandBuffer::SCommand_CreateBufferContainer *pCommand) override
Definition backend_opengl.cpp:1990
void Cmd_Shutdown(const SCommand_Shutdown *pCommand) override
Definition backend_opengl.cpp:1813
std::vector< SBufferObject > m_vBufferObjectIndices
Definition backend_opengl.h:160
void Cmd_DeleteBufferContainer(const CCommandBuffer::SCommand_DeleteBufferContainer *pCommand) override
Definition backend_opengl.cpp:2028
void Cmd_DeleteBufferObject(const CCommandBuffer::SCommand_DeleteBufferObject *pCommand) override
Definition backend_opengl.cpp:1979
Definition backend_opengl.h:202
bool GetPresentedImageData(uint32_t &Width, uint32_t &Height, CImageInfo::EImageFormat &Format, std::vector< uint8_t > &vDstData) override
Definition backend_opengl.cpp:306
virtual void Cmd_RenderQuadContainerAsSpriteMultiple(const CCommandBuffer::SCommand_RenderQuadContainerAsSpriteMultiple *pCommand)
Definition backend_opengl.h:127
virtual void Cmd_RenderQuadLayer(const CCommandBuffer::SCommand_RenderQuadLayer *pCommand, bool Grouped)
Definition backend_opengl.h:123
virtual void Cmd_RenderTileLayer(const CCommandBuffer::SCommand_RenderTileLayer *pCommand)
Definition backend_opengl.h:121
bool m_HasShaders
Definition backend_opengl.h:72
virtual void Cmd_Texture_Destroy(const CCommandBuffer::SCommand_Texture_Destroy *pCommand)
Definition backend_opengl.cpp:730
bool m_Has3DTextures
Definition backend_opengl.h:68
virtual void Cmd_CreateBufferContainer(const CCommandBuffer::SCommand_CreateBufferContainer *pCommand)
Definition backend_opengl.h:116
virtual void Cmd_DeleteBufferObject(const CCommandBuffer::SCommand_DeleteBufferObject *pCommand)
Definition backend_opengl.h:114
EBlendMode m_LastBlendMode
Definition backend_opengl.h:73
virtual void Cmd_TextTexture_Update(const CCommandBuffer::SCommand_TextTexture_Update *pCommand)
Definition backend_opengl.cpp:938
virtual void Cmd_RenderBorderTile(const CCommandBuffer::SCommand_RenderBorderTile *pCommand)
Definition backend_opengl.h:122
std::atomic< uint64_t > * m_pTextureMemoryUsage
Definition backend_opengl.h:52
virtual void Cmd_Render(const CCommandBuffer::SCommand_Render *pCommand)
Definition backend_opengl.cpp:982
virtual void Cmd_Clear(const CCommandBuffer::SCommand_Clear *pCommand)
Definition backend_opengl.cpp:955
int m_ViewportX
Definition backend_opengl.h:57
virtual void Cmd_ReadPixel(const CCommandBuffer::SCommand_TrySwapAndReadPixel *pCommand)
Definition backend_opengl.cpp:1013
bool m_Has2DArrayTexturesAsExtension
Definition backend_opengl.h:66
virtual void Cmd_RenderTex3D(const CCommandBuffer::SCommand_RenderTex3D *pCommand)
Definition backend_opengl.h:104
virtual void Cmd_CreateBufferObject(const CCommandBuffer::SCommand_CreateBufferObject *pCommand)
Definition backend_opengl.h:110
bool IsTexturedState(const CCommandBuffer::SState &State)
Definition backend_opengl.cpp:70
std::vector< CTexture > m_vTextures
Definition backend_opengl.h:51
ERunCommandReturnTypes RunCommand(const CCommandBuffer::SCommand *pBaseCommand) override
Definition backend_opengl.cpp:1084
virtual void Cmd_UpdateBufferObject(const CCommandBuffer::SCommand_UpdateBufferObject *pCommand)
Definition backend_opengl.h:112
virtual void Cmd_TextTextures_Create(const CCommandBuffer::SCommand_TextTextures_Create *pCommand)
Definition backend_opengl.cpp:949
bool m_Has2DArrayTextures
Definition backend_opengl.h:65
CCommandProcessorFragment_OpenGL()
Definition backend_opengl.cpp:1078
bool m_HasMipMaps
Definition backend_opengl.h:69
virtual void Cmd_RenderQuadContainer(const CCommandBuffer::SCommand_RenderQuadContainer *pCommand)
Definition backend_opengl.h:125
void TextureUpdate(int Slot, int X, int Y, int Width, int Height, int GLFormat, uint8_t *pTexData)
Definition backend_opengl.cpp:653
virtual bool IsNewApi()
Definition backend_opengl.h:85
virtual void Cmd_DeleteBufferContainer(const CCommandBuffer::SCommand_DeleteBufferContainer *pCommand)
Definition backend_opengl.h:118
TWGLenum m_2DArrayTarget
Definition backend_opengl.h:67
bool m_IsOpenGLES
Definition backend_opengl.h:78
virtual bool Cmd_Init(const SCommand_Init *pCommand)
Definition backend_opengl.cpp:620
bool m_LastClipEnable
Definition backend_opengl.h:74
virtual void Cmd_Update_Viewport(const CCommandBuffer::SCommand_Update_Viewport *pCommand)
Definition backend_opengl.cpp:43
uint32_t m_CanvasHeight
Definition backend_opengl.h:60
virtual void Cmd_Shutdown(const SCommand_Shutdown *pCommand)
Definition backend_opengl.h:96
virtual void Cmd_RenderText(const CCommandBuffer::SCommand_RenderText *pCommand)
Definition backend_opengl.h:124
void TextureCreate(int Slot, int Width, int Height, int GLFormat, int GLStoreFormat, int Flags, uint8_t *pTexData)
Definition backend_opengl.cpp:735
bool InitOpenGL(const SCommand_Init *pCommand)
Definition backend_opengl.cpp:337
virtual void Cmd_RecreateBufferObject(const CCommandBuffer::SCommand_RecreateBufferObject *pCommand)
Definition backend_opengl.h:111
virtual void Cmd_Screenshot(const CCommandBuffer::SCommand_TrySwapAndScreenshot *pCommand)
Definition backend_opengl.cpp:1035
TWGLint m_MaxTexSize
Definition backend_opengl.h:63
virtual void Cmd_RenderQuadContainerEx(const CCommandBuffer::SCommand_RenderQuadContainerEx *pCommand)
Definition backend_opengl.h:126
virtual void Cmd_CopyBufferObject(const CCommandBuffer::SCommand_CopyBufferObject *pCommand)
Definition backend_opengl.h:113
int m_OpenGLTextureLodBIAS
Definition backend_opengl.h:76
void DestroyTexture(int Slot)
Definition backend_opengl.cpp:697
virtual void Cmd_UpdateBufferContainer(const CCommandBuffer::SCommand_UpdateBufferContainer *pCommand)
Definition backend_opengl.h:117
static size_t GLFormatToPixelSize(int GLFormat)
Definition backend_opengl.cpp:58
void SetState(const CCommandBuffer::SState &State, bool Use2DArrayTexture=false)
Definition backend_opengl.cpp:75
uint32_t m_CanvasWidth
Definition backend_opengl.h:59
int m_ViewportY
Definition backend_opengl.h:58
bool m_HasNPOTTextures
Definition backend_opengl.h:70
virtual void Cmd_TextTextures_Destroy(const CCommandBuffer::SCommand_TextTextures_Destroy *pCommand)
Definition backend_opengl.cpp:943
bool m_HasDisplayCutout
Definition backend_opengl.h:61
virtual void Cmd_Texture_Create(const CCommandBuffer::SCommand_Texture_Create *pCommand)
Definition backend_opengl.cpp:933
virtual void Cmd_IndicesRequiredNumNotify(const CCommandBuffer::SCommand_IndicesRequiredNumNotify *pCommand)
Definition backend_opengl.h:119
Definition opengl_sl_program.h:99
Definition opengl_sl_program.h:56
Definition opengl_sl_program.h:151
EImageFormat
Definition image.h:21
uint32_t TWGLuint
Definition graphics_defines.h:7
int32_t TWGLint
Definition graphics_defines.h:8
uint32_t TWGLenum
Definition graphics_defines.h:9
EWrapMode
Definition graphics_threaded.h:42
@ REPEAT
Definition graphics_threaded.h:43
EBlendMode
Definition graphics_threaded.h:35
#define dbg_assert_failed(fmt,...)
Definition dbg.h:47
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:437
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:563
Definition graphics_threaded.h:537
Definition graphics_threaded.h:553
Definition graphics_threaded.h:513
Definition graphics_threaded.h:528
Definition graphics_threaded.h:455
Definition graphics_threaded.h:464
Definition graphics_threaded.h:319
Definition graphics_threaded.h:271
Definition graphics_threaded.h:497
Definition graphics_threaded.h:183
Definition graphics_threaded.h:192
Definition backend_base.h:128
Definition backend_base.h:167
Definition backend_opengl.h:138
SBufferContainerInfo m_ContainerInfo
Definition backend_opengl.h:139
uint8_t * m_pData
Definition backend_opengl.h:156
size_t m_DataSize
Definition backend_opengl.h:157
SBufferObject(TWGLuint BufferObjectId)
Definition backend_opengl.h:149
TWGLuint m_BufferObjectId
Definition backend_opengl.h:155
EWrapMode m_LastWrapMode
Definition backend_opengl.h:41
CTexture()
Definition backend_opengl.h:32
TWGLuint m_Sampler
Definition backend_opengl.h:39
int m_RescaleCount
Definition backend_opengl.h:47
int m_Width
Definition backend_opengl.h:45
TWGLuint m_Tex2DArray
Definition backend_opengl.h:38
TWGLuint m_Sampler2DArray
Definition backend_opengl.h:40
int m_Height
Definition backend_opengl.h:46
int m_MemSize
Definition backend_opengl.h:43
TWGLuint m_Tex
Definition backend_opengl.h:37
float m_ResizeWidth
Definition backend_opengl.h:48
float m_ResizeHeight
Definition backend_opengl.h:49
Definition graphics.h:117