Files
unease/engine/render/renderdevice.h
2025-02-28 04:43:17 +03:00

60 lines
1.5 KiB
C++

#ifndef RENDERDEVICE_H
#define RENDERDEVICE_H
#include "render/render_shared.h"
class VertexBuffer;
class IndexBuffer;
class VertexFormat;
class RenderTarget;
class RenderDevice
{
public:
RenderDevice();
~RenderDevice();
VertexBuffer* CreateVertexBuffer(void* data, size_t size, bool isStream = false);
IndexBuffer* CreateIndexBuffer(void* data, size_t size, bool isStream = false);
void SetVerticesBuffer(VertexBuffer* buffer);
void SetIndicesBuffer(IndexBuffer* buffer);
void SetDepthTest(bool enable);
void SetDepthWrite(bool enable);
//void setVertexFormat(VertexFormat* format);
void SetBlending(bool value);
void SetBlendingFunction(BlendFactor srcFactor, BlendFactor destFactor);
void SetReadRenderTarget(RenderTarget* renderTarget);
void SetWriteRenderTarget(RenderTarget* renderTarget);
void SetViewport(int x, int y, int w, int h);
// glBlitFramebuffer
void BlitRenderTarget(int srcX, int srcY, int srcWidth, int srcHeight,
int destX, int destY, int destWidth, int destHeight,
TextureSurfaceType surfaceType);
// drawing
void DrawArrays(PrimitiveType primType, uint startOf, size_t verticesCount);
void DrawElements(PrimitiveType primType, size_t elementsCount, bool is16bitIndices);
private:
VertexBuffer* m_activeVB;
IndexBuffer* m_activeIB;
RenderTarget* m_activeReadRT;
RenderTarget* m_activeWriteRT;
bool m_blending;
BlendFactor m_srcBlendFactor;
BlendFactor m_destBlendFactor;
};
extern RenderDevice* g_renderDevice;
#endif // !RENDERDEVICE_H