15#ifndef GPUDISPLAYBACKEND_H
16#define GPUDISPLAYBACKEND_H
19#include "../utils/vecpod.h"
25#if defined(GPUCA_DISPLAY_GL3W) && !defined(GPUCA_DISPLAY_OPENGL_CORE)
26#define GPUCA_DISPLAY_OPENGL_CORE
34class GPUDisplayFrontend;
35class GPUDisplayMagneticField;
49 typedef std::tuple<uint32_t, uint32_t, int32_t>
vboList;
90 virtual void prepareDraw(
const hmm_mat4& proj,
const hmm_mat4& view,
bool requestScreenshot =
false,
bool toMixBuffer =
false,
float includeMixImage = 0.f) = 0;
91 virtual void finishDraw(
bool doScreenshot,
bool toMixBuffer =
false,
float includeMixImage = 0.f) = 0;
92 virtual void finishFrame(
bool doScreenshot,
bool toMixBuffer =
false,
float includeMixImage = 0.f) = 0;
108 virtual void addFontSymbol(int32_t symbol, int32_t sizex, int32_t sizey, int32_t offsetx, int32_t offsety, int32_t advance,
void*
data) = 0;
virtual void addFontSymbol(int32_t symbol, int32_t sizex, int32_t sizey, int32_t offsetx, int32_t offsety, int32_t advance, void *data)=0
virtual float getYFactor() const
std::vector< char > getPixels()
virtual uint32_t drawVertices(const vboList &v, const drawType t)=0
virtual void finishFrame(bool doScreenshot, bool toMixBuffer=false, float includeMixImage=0.f)=0
vecpod< DrawArraysIndirectCommand > mCmdBuffer
virtual void prepareText()=0
const char * backendName() const
std::vector< int32_t > mIndirectSectorOffset
void fillIndirectCmdBuffer()
virtual size_t needMultiVBO()
bool mFreetypeInitialized
virtual void SetVSync(bool enable)
virtual int32_t getMaxMSAA() const
virtual void lineWidthFactor(float factor)=0
virtual uint32_t drawField()
virtual bool backendNeedRedraw()
static GPUDisplayBackend * getBackend(const char *type)
virtual void prepareDraw(const hmm_mat4 &proj, const hmm_mat4 &view, bool requestScreenshot=false, bool toMixBuffer=false, float includeMixImage=0.f)=0
virtual void finishText()=0
virtual bool CoreProfile()
virtual void ActivateColor(std::array< float, 4 > &color)=0
std::vector< char > mScreenshotPixels
virtual void setQuality()
virtual void resizeScene(uint32_t width, uint32_t height)
virtual void ExitBackendA()=0
backendTypes mBackendType
virtual void initializeTextDrawing()=0
virtual void setDepthBuffer()=0
virtual int32_t ExtInit()
virtual int32_t InitBackendA()=0
backendTypes backendType() const
std::unique_ptr< GPUDisplayMagneticField > mMagneticFieldVisualization
virtual ~GPUDisplayBackend()
const char * mBackendName
virtual void finishDraw(bool doScreenshot, bool toMixBuffer=false, float includeMixImage=0.f)=0
virtual void loadDataToGPU(size_t totalVertizes)=0
float getDownsampleFactor(bool screenshot=false)
int32_t mDownsampleFactor
virtual void pointSizeFactor(float factor)=0
bool mFrontendCompatTextDraw
virtual uint32_t DepthBits()=0
std::tuple< uint32_t, uint32_t, int32_t > vboList
virtual void OpenGLPrint(const char *s, float x, float y, float *color, float scale)=0
GLint GLsizei GLsizei height
GLboolean GLboolean GLboolean b
GLint GLint GLsizei GLint GLenum GLenum type
GLboolean GLboolean GLboolean GLboolean a
DrawArraysIndirectCommand(uint32_t a=0, uint32_t b=0, uint32_t c=0, uint32_t d=0)
typename std::vector< T, vecpod_allocator< T > > vecpod