Saga3D API Documentation
1.0-RC4
|
Go to the documentation of this file. 1 #ifndef __I_VIDEO_DRIVER_H_INCLUDED__
2 #define __I_VIDEO_DRIVER_H_INCLUDED__
13 #include <glm/vec2.hpp>
73 virtual void begin() = 0;
75 virtual void draw() = 0;
79 virtual void end() = 0;
83 virtual void clear() = 0;
85 #ifdef SAGA_EXTRA_API_MEMORY_INFO
86 virtual std::uint64_t getTotalMemory()
const = 0;
87 virtual std::uint64_t getAllocatedMemory()
const = 0;
107 virtual void loadTexture(
STexture& texture,
const int face,
const int level,
const std::string& path)
const = 0;
109 const unsigned char* data,
const size_t size)
const = 0;
163 const std::size_t offset = 0,
const std::size_t size = 0)
const = 0;
171 virtual std::uint32_t
getWidth()
const = 0;
174 virtual std::uint32_t
getHeight()
const = 0;
176 virtual void setSceneManager(
const std::shared_ptr<scene::ISceneManager>& smgr) = 0;
186 const glm::ivec2& srcOffset = {},
const glm::ivec2& dstOffset = {},
const glm::ivec2& size = {}) = 0;
196 const glm::ivec2& srcOffset = {},
const std::uint64_t dstOffset = 0,
const glm::ivec2& size = {}) = 0;
199 const glm::ivec2& srcOffset = {},
const std::uint64_t dstOffset = 0,
const glm::ivec2& size = {}) = 0;
202 const glm::ivec2& srcOffset = {},
const std::uint64_t dstOffset = 0,
const glm::ivec2& size = {}) = 0;
212 const glm::ivec2& srcOffset = {},
const glm::ivec2& dstOffset = {}) = 0;
virtual void enqueuePass(const RenderPassHandle pass)=0
virtual SPushConstant createPushConstant() const =0
virtual void destroyIndirectBuffer(const IndirectBufferHandle buffer)=0
virtual STexture & getTexture(const TextureHandle texture)=0
virtual void addShaderFromFile(SShader &shader, E_SHADER_TYPE type, const std::string &path) const =0
virtual void destroyShader(const ShaderHandle shader)=0
virtual void setPersistence(const SGPUResource::HandleType resource, const bool persistence=true)=0
constexpr SGPUResource::HandleType NULL_GPU_RESOURCE_HANDLE
virtual SIndirectBuffer & getIndirectBuffer(const IndirectBufferHandle buffer)=0
virtual bool hasPipelineBuffer(const scene::IMeshSceneNode &node, const video::PipelineHandle pipeline) const =0
virtual void bindShaderBuffer(const ShaderBufferHandle buffer, const int binding)=0
virtual void updateShaderBuffer(const ShaderBufferHandle buffer, const void *data, const size_t offset=0, const size_t size=0)=0
virtual void destroyIndexedIndirectBuffer(const IndexedIndirectBufferHandle buffer)=0
Type for list of scene node animators.
SGPUResource::HandleType ShaderHandle
A scene node displaying a static mesh.
virtual SIndexedIndirectBuffer & getIndexedIndirectBuffer(const IndexedIndirectBufferHandle buffer)=0
virtual SPushConstant & getPushConstant(const PushConstantHandle con)=0
virtual SShaderBuffer & getShaderBuffer(const ShaderBufferHandle buffer)=0
virtual void copyFramebufferColorToBuffer(ShaderBufferHandle dstBuffer, const glm::ivec2 &srcOffset={}, const std::uint64_t dstOffset=0, const glm::ivec2 &size={})=0
SGPUResource::HandleType PipelineHandle
virtual void destroyShaderUniform(const ShaderUniformHandle uniform)=0
virtual void dispatchComputePipeline(std::uint32_t x, std::uint32_t y, uint32_t z)=0
virtual void destroyPipeline(const PipelineHandle p)=0
@ AUX_BUFFER0
Auxiliary buffer 0.
virtual void updatePushConstant(const PushConstantHandle con, const void *data, const size_t offset=0, const size_t size=0)=0
@ STEREO_LEFT_BUFFER
Render target is the main color frame buffer.
virtual SShaderBuffer createShaderBuffer() const =0
virtual const std::string & getVendorName() const =0
virtual void present(TextureHandle texture=NULL_GPU_RESOURCE_HANDLE)=0
SGPUResource::HandleType IndirectBufferHandle
virtual void destroyTexture(const TextureHandle texture)=0
virtual std::uint32_t getWidth() const =0
Get window's width.
virtual void bindShaderUniform(const ShaderUniformHandle uniform, const int binding)=0
@ STEREO_BOTH_BUFFERS
Render to both stereo buffers at once.
virtual void loadTexture(STexture &texture, const int face, const int level, const std::string &path) const =0
E_RENDER_TARGET_TYPE
Special render targets, which usually map to dedicated hardware.
@ AUX_BUFFER1
Auxiliary buffer 1.
virtual void destroyRenderPass(const RenderPassHandle pass)=0
virtual void updateShaderUniform(const ShaderUniformHandle uniform, const void *data)=0
SGPUResource::HandleType IndexedIndirectBufferHandle
virtual void beginPass(RenderPassHandle pass)=0
virtual SRenderPass createRenderPass() const =0
std::uint32_t ID
Type for node ID.
SGPUResource::HandleType ShaderBufferHandle
virtual void unmapBuffer(const ShaderBufferHandle buffer) const =0
virtual SIndexedIndirectBuffer createIndexedIndirectBuffer()=0
@ RGBA8
Vulkan swapchain format.
virtual void addShader(SShader &shader, E_SHADER_TYPE type, std::string &&source) const =0
SGPUResource::HandleType TextureHandle
@ STEREO_RIGHT_BUFFER
Render target is the right color buffer (left is the main buffer)
@ AUX_BUFFER4
Auxiliary buffer 4.
virtual void copyFramebufferDepthToBuffer(ShaderBufferHandle dstBuffer, const glm::ivec2 &srcOffset={}, const std::uint64_t dstOffset=0, const glm::ivec2 &size={})=0
virtual SPipeline createPipeline() const =0
virtual void setSceneManager(const std::shared_ptr< scene::ISceneManager > &smgr)=0
virtual SShaderUniform & getShaderUniform(const ShaderUniformHandle uniform)=0
virtual void destroyShaderBuffer(const ShaderBufferHandle buffer)=0
virtual void destroyPushConstant(const PushConstantHandle con)=0
@ AUX_BUFFER3
Auxiliary buffer 3.
virtual void copyTextureToBuffer(TextureHandle srcTex, ShaderBufferHandle dstBuffer, const glm::ivec2 &srcOffset={}, const std::uint64_t dstOffset=0, const glm::ivec2 &size={})=0
Copy texture content a buffer.
virtual std::uint32_t getHeight() const =0
Get window's height.
virtual void * mapBuffer(const ShaderBufferHandle buffer, const std::size_t offset=0, const std::size_t size=0) const =0
virtual void bindTexture(TextureHandle texture, const int binding)=0
virtual SShader createShader() const =0
@ AUX_BUFFER2
Auxiliary buffer 2.
virtual void copyTexture(TextureHandle srcTex, TextureHandle dstTex, const glm::ivec2 &srcOffset={}, const glm::ivec2 &dstOffset={}, const glm::ivec2 &size={})=0
Copy texture content to another texture.
virtual SShader & getShader(const ShaderHandle shader)=0
@ MULTI_RENDER_TEXTURES
Multi-Render target textures.
virtual void createPipelineBuffer(const scene::IMeshSceneNode &node, const video::PipelineHandle pipeline)=0
virtual void destroyPipelineBuffer(const scene::ISceneNode &node, bool destroyAll=false)=0
virtual SRenderPass & getRenderPass(const RenderPassHandle pass)=0
SGPUResource::HandleType ShaderUniformHandle
E_FOG_TYPE
enum class for the types of fog distributions to choose from
E_PIXEL_FORMAT
Enumeration for all primitive types there are.
virtual void resetPersistence()=0
SGPUResource::HandleType RenderPassHandle
virtual void bindComputePipeline(const PipelineHandle &compute)=0
SGPUResource::HandleType PushConstantHandle
virtual STexture & getTextureByID(const ID id)=0
@ RENDER_TEXTURE
Render target is a render texture.
virtual void blitTexture(TextureHandle srcTex, TextureHandle dstTex, const glm::ivec2 &srcOffset={}, const glm::ivec2 &dstOffset={})=0
Blit texture content to another texture.
virtual SShaderUniform createShaderUniform() const =0
@ FRAME_BUFFER
Render target is the main color frame buffer.
virtual SIndirectBuffer createIndirectBuffer()=0
virtual SPipeline & getPipeline(const PipelineHandle p)=0
virtual SGPUResource::HandleType createResource(SRenderPass &&pass)=0
virtual STexture createTexture()=0