60 lines
1.5 KiB
C++
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
|