6#include "../interpreter.h"
20#define GL_GLEXT_PROTOTYPES 1
21#include "SDL_opengl.h"
30#define GL_GLEXT_PROTOTYPES 1
31#include <SDL2/SDL_opengl.h>
81 std::shared_ptr<Ship::ResourceManager> resourceManager =
nullptr);
97 void UploadTexture(
const uint8_t* rgba32Buf, uint32_t width, uint32_t height)
override;
103 void SetScissor(
int x,
int y,
int width,
int height)
override;
105 void DrawTriangles(
float buf_vbo[],
size_t buf_vbo_len,
size_t buf_vbo_num_tris)
override;
113 bool opengl_invertY,
bool render_target,
bool has_depth_buffer,
114 bool can_extract_depth)
override;
116 void CopyFramebuffer(
int fbDstId,
int fbSrcId,
int srcX0,
int srcY0,
int srcX1,
int srcY1,
int dstX0,
int dstY0,
117 int dstX1,
int dstY1)
override;
122 std::unordered_map<std::pair<float, float>, uint16_t,
hash_pair_ff>
123 GetPixelDepth(
int fb_id,
const std::set<std::pair<float, float>>& coordinates)
override;
134 std::string BuildFsShader(
const CCFeatures& cc_features);
135 void SetPerDrawUniforms();
137 std::shared_ptr<Ship::ConsoleVariable> mConsoleVariable;
138 std::shared_ptr<Ship::ResourceManager> mResourceManager;
140 std::vector<TextureInfo> textures;
143 uint8_t mCurrentTile;
144 int8_t mLastActiveTexture = -1;
145 int8_t mLastBlendEnabled = -1;
146 int8_t mLastScissorEnabled = -1;
148 std::map<std::pair<uint64_t, uint32_t>, ShaderProgram> mShaderProgramPool;
149 ShaderProgram* mCurrentShaderProgram;
150 ShaderProgram* mLastLoadedShader =
nullptr;
152 GLuint mOpenglVbo = 0;
153#if defined(__APPLE__) || defined(USE_OPENGLES)
157 uint32_t mFrameCount = 0;
159 std::vector<FramebufferOGL> mFrameBuffers;
160 size_t mCurrentFrameBuffer = 0;
161 float mCurrentNoiseScale = 0.0f;
164 GLint mMaxMsaaLevel = 1;
165 GLuint mPixelDepthRb = 0;
166 GLuint mPixelDepthFb = 0;
167 size_t mPixelDepthRbSize = 0;
OpenGL/OpenGLES implementation of the Fast3D rendering API.
Definition gfx_opengl.h:77
uint32_t NewTexture() override
int GetMaxTextureSize() override
GfxClipParameters GetClipParameters() override
void ReadFramebufferToCPU(int fbId, uint32_t width, uint32_t height, uint16_t *rgba16Buf) override
void SetSamplerParameters(int sampler, bool linear_filter, uint32_t cms, uint32_t cmt) override
ImTextureID GetTextureById(int id) override
int CreateFramebuffer() override
void SetSrgbMode() override
void DrawTriangles(float buf_vbo[], size_t buf_vbo_len, size_t buf_vbo_num_tris) override
void ClearFramebuffer(bool color, bool depth) override
const char * GetName() override
void ClearDepthRegion(int x, int y, int w, int h) override
ShaderProgram * CreateAndLoadNewShader(uint64_t shaderId0, uint64_t shaderId1) override
void ShaderGetInfo(ShaderProgram *prg, uint8_t *numInputs, bool usedTextures[2]) override
void ResolveMSAAColorBuffer(int fbIdTarger, int fbIdSrc) override
void StartFrame() override
void UpdateFramebufferParameters(int fb_id, uint32_t width, uint32_t height, uint32_t msaa_level, bool opengl_invertY, bool render_target, bool has_depth_buffer, bool can_extract_depth) override
void UnloadShader(ShaderProgram *oldPrg) override
std::unordered_map< std::pair< float, float >, uint16_t, hash_pair_ff > GetPixelDepth(int fb_id, const std::set< std::pair< float, float > > &coordinates) override
FilteringMode GetTextureFilter() override
void * GetFramebufferTextureId(int fbId) override
void SetUseAlpha(bool useAlpha) override
void SetScissor(int x, int y, int width, int height) override
ShaderProgram * LookupShader(uint64_t shaderId0, uint64_t shaderId1) override
void CopyFramebuffer(int fbDstId, int fbSrcId, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1) override
void SetCurrentPrimDepth(float depth) override
void SetTextureFilter(FilteringMode mode) override
void UploadTexture(const uint8_t *rgba32Buf, uint32_t width, uint32_t height) override
~GfxRenderingAPIOGL() override=default
void DeleteTexture(uint32_t texId) override
void ClearShaderCache() override
void StartDrawToFramebuffer(int fbId, float noiseScale) override
void SetViewport(int x, int y, int width, int height) override
GfxRenderingAPIOGL(std::shared_ptr< Ship::ConsoleVariable > consoleVariable=nullptr, std::shared_ptr< Ship::ResourceManager > resourceManager=nullptr)
Constructs the OpenGL renderer with optional shared dependencies.
void SetZmodeDecal(bool decal) override
void SelectTextureFb(int fbId) override
void LoadShader(ShaderProgram *newPrg) override
void SelectTexture(int tile, uint32_t textureId) override
void FinishRender() override
void SetDepthTestAndMask(bool depth_test, bool z_upd) override
Definition gfx_rendering_api.h:30
#define SHADER_MAX_TEXTURES
Definition interpreter.h:105
Definition gfx_direct3d_common.h:19
FilteringMode
Definition gfx_rendering_api.h:17
@ FILTER_THREE_POINT
Definition gfx_rendering_api.h:17
Core namespace for the libultraship engine framework.
Definition gfx_direct3d_common.h:14
OpenGL framebuffer object and associated attachments.
Definition gfx_opengl.h:56
GLuint clrbufMsaa
Definition gfx_opengl.h:62
uint32_t height
Definition gfx_opengl.h:57
uint32_t width
Definition gfx_opengl.h:57
uint32_t msaa_level
Definition gfx_opengl.h:59
GLuint fbo
Definition gfx_opengl.h:62
GLuint clrbuf
Definition gfx_opengl.h:62
bool invertY
Definition gfx_opengl.h:60
GLuint rbo
Definition gfx_opengl.h:62
bool has_depth_buffer
Definition gfx_opengl.h:58
Definition gfx_rendering_api.h:12
OpenGL shader program metadata cached by the Fast3D renderer.
Definition gfx_opengl.h:37
uint8_t numFloats
Definition gfx_opengl.h:41
GLint noiseScaleLocation
Definition gfx_opengl.h:46
GLint texture_width_location
Definition gfx_opengl.h:48
uint8_t numAttribs
Definition gfx_opengl.h:44
GLint texture_filtering_location
Definition gfx_opengl.h:50
bool usedTextures[SHADER_MAX_TEXTURES]
Definition gfx_opengl.h:40
GLint texture_height_location
Definition gfx_opengl.h:49
GLint attribLocations[16]
Definition gfx_opengl.h:42
GLint frameCountLocation
Definition gfx_opengl.h:45
uint8_t attribSizes[16]
Definition gfx_opengl.h:43
GLuint openglProgramId
Definition gfx_opengl.h:38
GLint prim_depth_location
Definition gfx_opengl.h:47
uint8_t numInputs
Definition gfx_opengl.h:39
Cached texture metadata tracked per texture id.
Definition gfx_opengl.h:68
uint16_t width
Definition gfx_opengl.h:69
uint16_t height
Definition gfx_opengl.h:70
uint16_t filtering
Definition gfx_opengl.h:71
Definition gfx_rendering_api.h:20