molecular
Classes | Public Types | Public Member Functions | List of all members
molecular::gfx::VulkanRenderCmdSink Class Reference

Interface to Vulkan. More...

#include <VulkanRenderCmdSink.h>

Inheritance diagram for molecular::gfx::VulkanRenderCmdSink:
molecular::util::NonCopyable

Classes

class  IndexBuffer
 Buffer storing index data. More...
 
class  Program
 Compiled shader program. More...
 
class  RenderTarget
 Allows for rendering to textures. More...
 
class  Texture
 Texture object. More...
 
class  TransformFeedback
 
class  VertexBuffer
 Buffer storing vertex data. More...
 

Public Types

enum  BlendFactor { kOne, kSrcAlpha, kOneMinusSrcAlpha }
 
enum  CompareOp {
  kNever = VK_COMPARE_OP_NEVER, kLess = VK_COMPARE_OP_LESS, kEqual = VK_COMPARE_OP_EQUAL, kLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
  kGreater = VK_COMPARE_OP_GREATER, kNotEqual = VK_COMPARE_OP_NOT_EQUAL, kGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL, kAlways = VK_COMPARE_OP_ALWAYS
}
 
enum  CullMode { kFront, kBack }
 

Public Member Functions

 ~VulkanRenderCmdSink ()
 
void Init ()
 Initialise. More...
 
VertexBufferCreateVertexBuffer ()
 
void DestroyVertexBuffer (VertexBuffer *buffer)
 
IndexBufferCreateIndexBuffer ()
 Create IndexBuffer. More...
 
void DestroyIndexBuffer (IndexBuffer *buffer)
 
TextureCreateTexture ()
 
void DestroyTexture (Texture *texture)
 
ProgramCreateProgram ()
 Create shader program. More...
 
void DestroyProgram (Program *program)
 Destroy shader program. More...
 
void UseProgram (Program *program)
 Make program current. More...
 
RenderTargetCreateRenderTarget ()
 
void DestroyRenderTarget (RenderTarget *target)
 
void SetTarget (RenderTarget *target)
 Set render target. More...
 
RenderTargetGetTarget ()
 
void SetBaseTarget (const IntVector4 &viewport, int renderTarget)
 
TransformFeedbackCreateTransformFeedback ()
 
void DestroyTransformFeedback (TransformFeedback *feedback)
 
void SetBackgroundColor (float r, float g, float b, float a=1.0f)
 
void Clear (bool color=true, bool depth=true)
 Clear current render target. More...
 
void Draw (IndexBuffer *buffer, const IndexBufferInfo &info)
 Draw indices. More...
 
void Draw (TransformFeedback *transformFeedback, IndexBufferInfo::Mode mode)
 
void Draw (IndexBufferInfo::Mode mode, unsigned int count)
 Draw vertices without indices. More...
 
void ReadPixels (int x, int y, int width, int height, PixelFormat format, void *data)
 
void SetBlending (bool enable, BlendFactor sourceFactor=kSrcAlpha, BlendFactor destFactor=kOneMinusSrcAlpha)
 
void SetDepthState (bool depthTest, bool depthWrite, CompareOp compareOp=kLess)
 
void SetScissor (bool enable, int x=0, int y=0, int width=0, int height=0)
 
void SetRasterizationState (bool rasterizerDiscard, CullMode cullMode=kBack)
 

Detailed Description

Interface to Vulkan.

Member Enumeration Documentation

Enumerator
kOne 
kSrcAlpha 
kOneMinusSrcAlpha 
Enumerator
kNever 
kLess 
kEqual 
kLessOrEqual 
kGreater 
kNotEqual 
kGreaterOrEqual 
kAlways 
Enumerator
kFront 
kBack 

Constructor & Destructor Documentation

molecular::gfx::VulkanRenderCmdSink::~VulkanRenderCmdSink ( )

Member Function Documentation

void molecular::gfx::VulkanRenderCmdSink::Clear ( bool  color = true,
bool  depth = true 
)

Clear current render target.

VulkanRenderCmdSink::IndexBuffer * molecular::gfx::VulkanRenderCmdSink::CreateIndexBuffer ( )

Create IndexBuffer.

VulkanRenderCmdSink::Program * molecular::gfx::VulkanRenderCmdSink::CreateProgram ( )

Create shader program.

Call DestroyProgram after being finished with the program.

See also
DestroyProgram
Todo:
Return move-only type.
VulkanRenderCmdSink::RenderTarget * molecular::gfx::VulkanRenderCmdSink::CreateRenderTarget ( )
VulkanRenderCmdSink::Texture * molecular::gfx::VulkanRenderCmdSink::CreateTexture ( )
VulkanRenderCmdSink::TransformFeedback * molecular::gfx::VulkanRenderCmdSink::CreateTransformFeedback ( )
VertexBuffer* molecular::gfx::VulkanRenderCmdSink::CreateVertexBuffer ( )
inline
void molecular::gfx::VulkanRenderCmdSink::DestroyIndexBuffer ( IndexBuffer buffer)
inline
void molecular::gfx::VulkanRenderCmdSink::DestroyProgram ( VulkanRenderCmdSink::Program program)

Destroy shader program.

See also
CreateProgram
void molecular::gfx::VulkanRenderCmdSink::DestroyRenderTarget ( RenderTarget target)
void molecular::gfx::VulkanRenderCmdSink::DestroyTexture ( Texture texture)
void molecular::gfx::VulkanRenderCmdSink::DestroyTransformFeedback ( TransformFeedback feedback)
inline
void molecular::gfx::VulkanRenderCmdSink::DestroyVertexBuffer ( VertexBuffer buffer)
inline
void molecular::gfx::VulkanRenderCmdSink::Draw ( VulkanRenderCmdSink::IndexBuffer buffer,
const IndexBufferInfo info 
)

Draw indices.

Requires an active program.

See also
UseProgram
void molecular::gfx::VulkanRenderCmdSink::Draw ( VulkanRenderCmdSink::TransformFeedback transformFeedback,
IndexBufferInfo::Mode  mode 
)
void molecular::gfx::VulkanRenderCmdSink::Draw ( IndexBufferInfo::Mode  mode,
unsigned int  count 
)

Draw vertices without indices.

Requires active program.

RenderTarget* molecular::gfx::VulkanRenderCmdSink::GetTarget ( )
inline
void molecular::gfx::VulkanRenderCmdSink::Init ( )

Initialise.

This must be called in the renderer thread.

void molecular::gfx::VulkanRenderCmdSink::ReadPixels ( int  x,
int  y,
int  width,
int  height,
PixelFormat  format,
void *  data 
)
void molecular::gfx::VulkanRenderCmdSink::SetBackgroundColor ( float  r,
float  g,
float  b,
float  a = 1.0f 
)
void molecular::gfx::VulkanRenderCmdSink::SetBaseTarget ( const IntVector4 viewport,
int  renderTarget 
)

Registers the currently bound framebuffer as the base target. In the simplest case this will be 0, which is the screen.

void molecular::gfx::VulkanRenderCmdSink::SetBlending ( bool  enable,
VulkanRenderCmdSink::BlendFactor  sourceFactor = kSrcAlpha,
VulkanRenderCmdSink::BlendFactor  destFactor = kOneMinusSrcAlpha 
)
void molecular::gfx::VulkanRenderCmdSink::SetDepthState ( bool  depthTest,
bool  depthWrite,
CompareOp  compareOp = kLess 
)
void molecular::gfx::VulkanRenderCmdSink::SetRasterizationState ( bool  rasterizerDiscard,
VulkanRenderCmdSink::CullMode  cullMode = kBack 
)
void molecular::gfx::VulkanRenderCmdSink::SetScissor ( bool  enable,
int  x = 0,
int  y = 0,
int  width = 0,
int  height = 0 
)
void molecular::gfx::VulkanRenderCmdSink::SetTarget ( VulkanRenderCmdSink::RenderTarget target)

Set render target.

Pass nullptr to render to the base target. The base target can be specified with SetBaseTarget.

void molecular::gfx::VulkanRenderCmdSink::UseProgram ( VulkanRenderCmdSink::Program program)

Make program current.

Also call before setting uniforms.


The documentation for this class was generated from the following files: