mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 20:42:21 +02:00
Initial checkin
This commit is contained in:
parent
c74712dad9
commit
078564ac9e
3242 changed files with 1616395 additions and 0 deletions
171
BeefySysLib/platform/sdl/GLRenderDevice.h
Normal file
171
BeefySysLib/platform/sdl/GLRenderDevice.h
Normal file
|
@ -0,0 +1,171 @@
|
|||
#pragma once
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#ifdef BF_PLATFORM_OPENGL_ES2
|
||||
#include "SDL_opengles2.h"
|
||||
#else
|
||||
#include "SDL_opengl.h"
|
||||
#endif
|
||||
|
||||
#include "gfx/Shader.h"
|
||||
#include "gfx/Texture.h"
|
||||
#include "gfx/RenderDevice.h"
|
||||
#include "gfx/DrawLayer.h"
|
||||
|
||||
struct SDL_Window;
|
||||
|
||||
NS_BF_BEGIN;
|
||||
|
||||
class BFApp;
|
||||
class GLRenderDevice;
|
||||
|
||||
class GLTexture : public Texture
|
||||
{
|
||||
public:
|
||||
GLRenderDevice* mRenderDevice;
|
||||
GLuint mGLTexture;
|
||||
GLuint mGLTexture2;
|
||||
//IGL10RenderTargetView* mGLRenderTargetView;
|
||||
|
||||
public:
|
||||
GLTexture();
|
||||
~GLTexture();
|
||||
|
||||
virtual void PhysSetAsTarget();
|
||||
};
|
||||
|
||||
class GLShaderParam : public ShaderParam
|
||||
{
|
||||
public:
|
||||
GLint mGLVariable;
|
||||
|
||||
public:
|
||||
GLShaderParam();
|
||||
~GLShaderParam();
|
||||
|
||||
virtual void SetTexture(Texture* texture);
|
||||
virtual void SetFloat4(float x, float y, float z, float w) override;
|
||||
};
|
||||
|
||||
typedef std::map<String, GLShaderParam*> GLShaderParamMap;
|
||||
|
||||
class GLShader : public Shader
|
||||
{
|
||||
public:
|
||||
//IGL10Effect* mGLEffect;
|
||||
|
||||
GLuint mGLVertexShader;
|
||||
GLuint mGLFragmentShader;
|
||||
GLuint mGLProgram;
|
||||
GLint mAttribPosition;
|
||||
GLint mAttribTexCoord0;
|
||||
GLint mAttribColor;
|
||||
GLint mAttribTex0;
|
||||
GLint mAttribTex1;
|
||||
|
||||
GLShaderParamMap mParamsMap;
|
||||
|
||||
public:
|
||||
GLShader();
|
||||
~GLShader();
|
||||
|
||||
virtual ShaderParam* GetShaderParam(const StringImpl& name) override;
|
||||
};
|
||||
|
||||
class GLDrawBatch : public DrawBatch
|
||||
{
|
||||
public:
|
||||
//IGL10Buffer* mGLBuffer;
|
||||
|
||||
public:
|
||||
GLDrawBatch(int minVtxSize = 0, int minIdxSize = 0);
|
||||
~GLDrawBatch();
|
||||
|
||||
virtual void Lock();
|
||||
virtual void Draw();
|
||||
};
|
||||
|
||||
class GLDrawLayer : public DrawLayer
|
||||
{
|
||||
public:
|
||||
virtual DrawBatch* CreateDrawBatch();
|
||||
virtual DrawBatch* AllocateBatch(int minVtxCount, int minIdxCount) override;
|
||||
virtual void FreeBatch(DrawBatch* drawBatch) override;
|
||||
|
||||
public:
|
||||
GLDrawLayer();
|
||||
~GLDrawLayer();
|
||||
};
|
||||
|
||||
class GLRenderWindow : public RenderWindow
|
||||
{
|
||||
public:
|
||||
SDL_Window* mSDLWindow;
|
||||
GLRenderDevice* mRenderDevice;
|
||||
//IGLGISwapChain* mGLSwapChain;
|
||||
//IGL10Texture2D* mGLBackBuffer;
|
||||
//IGL10RenderTargetView* mGLRenderTargetView;
|
||||
bool mResizePending;
|
||||
int mPendingWidth;
|
||||
int mPendingHeight;
|
||||
|
||||
public:
|
||||
virtual void PhysSetAsTarget();
|
||||
|
||||
public:
|
||||
GLRenderWindow(GLRenderDevice* renderDevice, SDL_Window* sdlWindow);
|
||||
~GLRenderWindow();
|
||||
|
||||
void SetAsTarget() override;
|
||||
void Resized() override;
|
||||
virtual void Present() override;
|
||||
|
||||
void CopyBitsTo(uint32* dest, int width, int height);
|
||||
};
|
||||
|
||||
typedef std::vector<GLDrawBatch*> GLDrawBatchVector;
|
||||
|
||||
class GLRenderDevice : public RenderDevice
|
||||
{
|
||||
public:
|
||||
//IGLGIFactory* mGLGIFactory;
|
||||
//IGL10Device* mGLDevice;
|
||||
//IGL10BlendState* mGLNormalBlendState;
|
||||
//IGL10BlendState* mGLAdditiveBlendState;
|
||||
//IGL10RasterizerState* mGLRasterizerStateClipped;
|
||||
//IGL10RasterizerState* mGLRasterizerStateUnclipped;
|
||||
|
||||
GLuint mGLVertexBuffer;
|
||||
GLuint mGLIndexBuffer;
|
||||
GLuint mBlankTexture;
|
||||
|
||||
bool mHasVSync;
|
||||
|
||||
GLDrawBatchVector mDrawBatchPool;
|
||||
GLDrawBatch* mFreeBatchHead;
|
||||
|
||||
public:
|
||||
virtual void PhysSetAdditive(bool additive);
|
||||
virtual void PhysSetShader(Shader* shaderPass);
|
||||
virtual void PhysSetRenderWindow(RenderWindow* renderWindow);
|
||||
virtual void PhysSetRenderTarget(Texture* renderTarget);
|
||||
|
||||
public:
|
||||
GLRenderDevice();
|
||||
virtual ~GLRenderDevice();
|
||||
bool Init(BFApp* app) override;
|
||||
|
||||
void FrameStart() override;
|
||||
void FrameEnd() override;
|
||||
|
||||
Texture* LoadTexture(ImageData* imageData, bool additive) override;
|
||||
Shader* LoadShader(const StringImpl& fileName) override;
|
||||
Texture* CreateRenderTarget(int width, int height, bool destAlpha) override;
|
||||
|
||||
void SetShader(Shader* shader) override;
|
||||
virtual void SetClip(float x, float y, float width, float height) override;
|
||||
virtual void DisableClip() override;
|
||||
};
|
||||
|
||||
NS_BF_END;
|
Loading…
Add table
Add a link
Reference in a new issue