mirror of
https://github.com/thunderbrewhq/thunderbrew
synced 2025-04-18 02:52:47 +03:00
82 lines
3.0 KiB
C++
82 lines
3.0 KiB
C++
#ifndef GX_GLL_C_GX_DEVICE_GLL_HPP
|
|
#define GX_GLL_C_GX_DEVICE_GLL_HPP
|
|
|
|
#include "gx/CGxDevice.hpp"
|
|
#include "gx/gll/GLDevice.h"
|
|
#include "gx/gll/GLWindow.h"
|
|
#include <ApplicationServices/ApplicationServices.h>
|
|
|
|
class CGxBatch;
|
|
class CGxShader;
|
|
|
|
class CGxDeviceGLL : public CGxDevice {
|
|
public:
|
|
// Static variables
|
|
static GLEnum s_glCubeMapFaces[];
|
|
static GLEnum s_glDstBlend[];
|
|
static GLEnum s_glSrcBlend[];
|
|
static GLTextureFormat s_gxTexFmtToGLLFmt[];
|
|
static GLEnum s_poolTarget2BufferFormat[];
|
|
static GLEnum s_poolTarget2BufferType[];
|
|
static GLEnum s_poolUsage2BufferUsage[];
|
|
static GLEnum s_primitiveConversion[];
|
|
|
|
// Member variables
|
|
GLDevice m_glDevice;
|
|
GLWindow m_glWindow;
|
|
GLVertexFormat m_glFormats[GxVertexBufferFormats_Last] = {};
|
|
|
|
// Virtual member functions
|
|
virtual void ITexMarkAsUpdated(CGxTex*);
|
|
virtual void IRsSendToHw(EGxRenderState);
|
|
virtual int32_t DeviceCreate(long (*)(void*, uint32_t, uint32_t, long), const CGxFormat&);
|
|
virtual int32_t DeviceSetFormat(const CGxFormat&);
|
|
virtual void DeviceWM(EGxWM wm, uintptr_t param1, uintptr_t param2) {};
|
|
virtual void CapsWindowSize(CRect&);
|
|
virtual void CapsWindowSizeInScreenCoords(CRect& dst);
|
|
virtual void ScenePresent(void);
|
|
virtual void SceneClear(uint32_t, CImVector);
|
|
virtual void XformSetProjection(const C44Matrix&);
|
|
virtual void XformSetView(const C44Matrix&);
|
|
virtual void Draw(CGxBatch*, int32_t);
|
|
virtual void PoolSizeSet(CGxPool*, uint32_t);
|
|
virtual char* BufLock(CGxBuf*);
|
|
virtual int32_t BufUnlock(CGxBuf*, uint32_t);
|
|
virtual void TexDestroy(CGxTex* texId);
|
|
virtual void IShaderCreate(CGxShader*);
|
|
virtual void ShaderCreate(CGxShader*[], EGxShTarget, const char*, const char*, int32_t);
|
|
virtual int32_t StereoEnabled(void);
|
|
|
|
// Member functions
|
|
CGxDeviceGLL();
|
|
char* IBufLock(CGxBuf*);
|
|
int32_t IBufUnlock(CGxBuf*);
|
|
void ISceneBegin();
|
|
void ISetCaps(const CGxFormat& format);
|
|
void IShaderBindPixel(CGxShader*);
|
|
void IShaderBindVertex(CGxShader*);
|
|
void IShaderConstantsFlush(void);
|
|
void IShaderCreatePixel(CGxShader*);
|
|
void IShaderCreateVertex(CGxShader*);
|
|
void IStateSetGLLDefaults();
|
|
void IStateSync(void);
|
|
void IStateSyncEnables(void);
|
|
void IStateSyncIndexPtr(void);
|
|
void IStateSyncLights(void);
|
|
void IStateSyncMaterial(void);
|
|
void IStateSyncScissorRect(void);
|
|
void IStateSyncVertexPtrs(void);
|
|
void IStateSyncXforms(void);
|
|
void ITexCreate(CGxTex*);
|
|
void ITexSetFlags(CGxTex*);
|
|
void ITexUpload(CGxTex*);
|
|
void IXformSetProjection(const C44Matrix&);
|
|
void IXformSetView(const C44Matrix&);
|
|
void IXformSetViewport(void);
|
|
void PatchPixelShader(CGxShader*);
|
|
void PatchVertexShader(CGxShader*);
|
|
void Resize(uint32_t width, uint32_t height);
|
|
};
|
|
|
|
#endif
|