Graphics API
Namespace: | dmGraphics |
Include: | #include <dmsdk/graphics/graphics.h> |
TYPES | |
---|---|
HContext | Context handle |
HIndexBuffer | Index buffer handle |
HPipelineState | PipelineState handle |
HProgram | Program handle |
HRenderTarget | Rendertarget handle |
HStorageBuffer | Storage buffer handle |
HTexture | Texture handle |
HUniformLocation | Uniform location handle |
HVertexBuffer | Vertex buffer handle |
HVertexDeclaration | Vertex declaration handle |
HVertexStreamDeclaration | Vertex stream declaration handle |
SetTextureAsyncCallback | Function called when a texture has been set asynch... |
CONSTANTS | |
---|---|
INVALID_STREAM_OFFSET | Invalid stream offset |
MAX_BUFFER_COLOR_ATTACHMENTS | Max buffer color attachments |
ENUMS | |
---|---|
AdapterFamily | Graphics adapter family |
AttachmentOp | Defines how an attachment should be treated at the... |
BlendFactor | Blend factors for color blending |
BufferAccess | |
BufferUsage | Buffer usage hints |
CompareFunc | Depth and alpha test comparison functions |
FaceWinding | |
HandleResult | Function's call result code |
IndexBufferFormat | Index buffer element types |
PrimitiveType | Primitive drawing modes |
RenderTargetAttachment | Attachment points for render targets |
StencilOp | Stencil test actions |
TextureFilter | Texture filtering modes |
TextureFormat | Pixel formats supported by textures |
TextureStatusFlags | Texture data upload status flags |
TextureType | Texture types |
TextureWrap | Texture addressing/wrapping modes |
Type | Data type |
STRUCTS | |
---|---|
struct TextureCreationParams | Texture creation parameters |
struct TextureParams | Texture update parameters |
void AddVertexStream(const char* name, uint32_t size, dmGraphics::Type type, bool normalize)
Adds a stream to a vertex stream declaration
PARAMETERS
const char* |
name |
the name of the stream |
uint32_t |
size |
the size of the stream, i.e number of components |
dmGraphics::Type |
type |
the data type of the stream |
bool |
normalize |
true if the stream should be normalized in the 0..1 range |
void AddVertexStream(dmhash_t name_hash, uint32_t size, dmGraphics::Type type, bool normalize)
Adds a stream to a vertex stream declaration
PARAMETERS
dmhash_t |
name_hash |
the name hash of the stream |
uint32_t |
size |
the size of the stream, i.e number of components |
dmGraphics::Type |
type |
the data type of the stream |
bool |
normalize |
true if the stream should be normalized in the 0..1 range |
void DeleteIndexBuffer(dmGraphics::HIndexBuffer buffer)
Delete the index buffer
PARAMETERS
dmGraphics::HIndexBuffer |
buffer |
the index buffer |
void DeleteRenderTarget(dmGraphics::HContext context, dmGraphics::HRenderTarget render_target)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HRenderTarget |
render_target |
void DeleteTexture(dmGraphics::HContext context, dmGraphics::HTexture texture)
Delete texture
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
void DeleteVertexBuffer(dmGraphics::HVertexBuffer buffer)
Delete vertex buffer
PARAMETERS
dmGraphics::HVertexBuffer |
buffer |
the buffer |
void DeleteVertexDeclaration(dmGraphics::HVertexDeclaration vertex_declaration)
Delete vertex declaration
PARAMETERS
dmGraphics::HVertexDeclaration |
vertex_declaration |
the vertex declaration |
void DeleteVertexStreamDeclaration(dmGraphics::HVertexStreamDeclaration stream_declaration)
Delete vertex stream declaration
PARAMETERS
dmGraphics::HVertexStreamDeclaration |
stream_declaration |
the vertex stream declaration |
void DisableState(dmGraphics::HContext context, dmGraphics::State state)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::State |
state |
Render state |
void DisableTexture(dmGraphics::HContext context, uint32_t unit, dmGraphics::HTexture texture)
Disable a texture bound to a texture unit. Unbinds the given texture handle from the specified unit, releasing the association in the graphics pipeline. This is useful to prevent unintended reuse of textures, or to free up texture units for other bindings.
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
uint32_t |
unit |
Texture unit index to disable. Must match the one previously used in dmGraphics::EnableTexture |
dmGraphics::HTexture |
texture |
Handle to the texture object to disable |
void EnableState(dmGraphics::HContext context, dmGraphics::State state)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::State |
state |
Render state |
void EnableTexture(dmGraphics::HContext context, uint32_t unit, uint8_t id_index, dmGraphics::HTexture texture)
Enable and bind a texture to a texture unit. Associates a texture object with a specific texture unit in the graphics context, making it available for sampling in shaders. Multiple textures can be active simultaneously by binding them to different units. The shader must reference the correct unit (via sampler uniform) to access the bound texture
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
uint32_t |
unit |
Texture unit index to bind the texture to. Valid range depends on GPU capabilities (commonly 0–15 for at least 16 texture units) |
uint8_t |
id_index |
Index for internal tracking or binding variation. Typically used when multiple texture IDs are managed within the same unit (e.g. array textures or multi-bind) |
dmGraphics::HTexture |
texture |
Handle to the texture object to enable and bind |
float GetDisplayScaleFactor(dmGraphics::HContext context)
Get the scale factor of the display. The display scale factor is usally 1.0 but will for instance be 2.0 on a macOS Retina display.
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
RETURNS
float |
Display scale factor |
uint32_t GetHeight(dmGraphics::HContext context)
Returns the specified height of the opened window, which might differ from the actual window width.
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
RETURNS
uint32_t |
Specified height of the window. If no window is opened, 0 is always returned. |
dmGraphics::AdapterFamily GetInstalledAdapterFamily()
Get installed graphics adapter family
PARAMETERS
RETURNS
dmGraphics::AdapterFamily |
Installed adapter family |
dmGraphics::HContext GetInstalledContext()
PARAMETERS
RETURNS
dmGraphics::HContext |
Installed graphics context |
uint32_t GetMaxElementsIndices(dmGraphics::HContext context)
Get the max number of indices allowed by the system in an index buffer
PARAMETERS
dmGraphics::HContext |
context |
the context |
RETURNS
uint32_t |
the count |
uint32_t GetMaxElementsVertices(dmGraphics::HContext context)
Get the max number of vertices allowed by the system in a vertex buffer
PARAMETERS
dmGraphics::HContext |
context |
the context |
RETURNS
uint32_t |
the count |
uint32_t GetMaxTextureSize(dmGraphics::HContext context)
Get maximum supported size in pixels of non-array texture
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
RETURNS
uint32_t |
Maximum texture size supported by GPU |
uint32_t GetNumSupportedExtensions(dmGraphics::HContext context)
PARAMETERS
dmGraphics::HContext |
context |
the context |
RETURNS
uint32_t |
the number of supported extensions |
uint8_t GetNumTextureHandles(dmGraphics::Context context, dmGraphics::HTexture texture)
Get how many platform-dependent texture handle used for engine texture handle. Applicable only for OpenGL/ES backend. All other backends return 1.
PARAMETERS
dmGraphics::Context |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
RETURNS
uint8_t |
Platform-dependent handles amount |
uint16_t GetOriginalTextureHeight(dmGraphics::HContext context, dmGraphics::HTexture texture)
Get texture original (before uploading to GPU) height
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
RETURNS
uint16_t |
uin16_t GetOriginalTextureWidth(dmGraphics::HContext context, dmGraphics::HTexture texture)
Get texture original (before uploading to GPU) width
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
RETURNS
uin16_t |
Texture's original width |
dmGraphics::PipelineState GetPipelineState(dmGraphics::HContext context)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
RETURNS
dmGraphics::PipelineState |
dmGraphics::HTexture GetRenderTargetAttachment(dmGraphics::HContext context, dmGraphics::HRenderTarget render_target, dmGraphics::RenderTargetAttachment attachment_type)
Get the attachment texture from a render target. Returns zero if no such attachment texture exists.
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HRenderTarget |
render_target |
the render target |
dmGraphics::RenderTargetAttachment |
attachment_type |
the attachment to get |
RETURNS
dmGraphics::HTexture |
the attachment texture |
void GetRenderTargetSize(dmGraphics::HContext context, dmGraphics::HRenderTarget render_target, dmGraphics::BufferType buffer_type, uint32_t& width, uint32_t& height)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HRenderTarget |
render_target |
|
dmGraphics::BufferType |
buffer_type |
|
uint32_t& |
width |
|
uint32_t& |
height |
dmGraphics::HTexture GetRenderTargetTexture(dmGraphics::HContext context, dmGraphics::HRenderTarget render_target, dmGraphics::BufferType buffer_type)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HRenderTarget |
render_target |
|
dmGraphics::BufferType |
buffer_type |
RETURNS
dmGraphics::HTexture |
const char* GetSupportedExtension(dmGraphics::HContext context, uint32_t index)
get the supported extension
PARAMETERS
dmGraphics::HContext |
context |
the context |
uint32_t |
index |
the index of the extension |
RETURNS
const char* |
the extension. 0 if index was out of bounds |
uint16_t GetTextureDepth(dmGraphics::HContext context, dmGraphics::HTexture texture)
Get texture depth. applicable for 3D and cube map textures
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
RETURNS
uint16_t |
Texture's depth |
const char* GetTextureFormatLiteral(dmGraphics::TextureFormat format)
Get string representation of texture format
PARAMETERS
dmGraphics::TextureFormat |
format |
Texture format |
RETURNS
const char* |
String representation of format |
dmGraphics::HandleResult GetTextureHandle(dmGraphics::HTexture texture, void** out_handle)
Get the native graphics API texture object from an engine texture handle. This depends on the graphics backend and is not guaranteed to be implemented on the currently running adapter.
PARAMETERS
dmGraphics::HTexture |
texture |
the texture handle |
void** |
out_handle |
a pointer to where the raw object should be stored |
RETURNS
dmGraphics::HandleResult |
the result of the query |
uint16_t GetTextureHeight(dmGraphics::HContext context, dmGraphics::HTexture texture)
Get texture height
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
RETURNS
uint16_t |
Texture's height |
uint8_t GetTextureMipmapCount(dmGraphice::HContext context, dmGraphics::HTexture texture)
Get texture mipmap count
PARAMETERS
dmGraphice::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
RETURNS
uint8_t |
Texture mipmap count |
uint32_t GetTextureResourceSize(dmGraphics::HContext context, dmGraphics::HTexture texture)
Get approximate size of how much memory texture consumes
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
RETURNS
uint32_t |
Resource data size in bytes |
dmGraphics::TextureStatusFlags GetTextureStatusFlags(dmGraphics::HContext context, dmGraphics::HTexture texture)
Get status of texture
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
RETURNS
dmGraphics::TextureStatusFlags |
Enumerated status bit flags |
dmGraphics::TextureType GetTextureType(dmGraphics::HContext context, dmGraphics::HTexture texture)
Get texture type
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
RETURNS
dmGraphics::TextureType |
Texture type |
const char* GetTextureTypeLiteral(dmGraphics::TextureType texture_type)
Get string representation of texture type
PARAMETERS
dmGraphics::TextureType |
texture_type |
Texture type |
RETURNS
const char* |
String representation of type |
uint32_t GetTextureUsageHintFlags(dmGraphics::HContext context, dmGraphics::HTexture texture)
Query usage hint flags for a texture. Retrieves the bitwise usage flags that were assigned to a texture when it was created. These flags indicate the intended role(s) of the texture in the rendering pipeline and allow the graphics backend to apply optimizations or enforce restrictions
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
RETURNS
uint32_t |
A bitwise OR of usage flags describing how the texture may be used. Applications can test specific flags using bitmask operations |
uint16_t GetTextureWidth(dmGraphics::HContext context, dmGraphics::HTexture texture)
Get texture width
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
RETURNS
uint16_t |
Texture's width |
GetVertexStreamOffset(dmGraphics::HVertexDeclaration vertex_declaration, dmhash_t name_hash)
Get the physical offset into the vertex data for a particular stream
PARAMETERS
dmGraphics::HVertexDeclaration |
vertex_declaration |
the vertex declaration |
dmhash_t |
name_hash |
the name hash of the vertex stream (as passed into AddVertexStream()) |
RETURNS
|
in bytes into the vertex or INVALID_STREAM_OFFSET if not found |
void GetViewport(dmGraphics::HContext context, int32_t x, int32_t y, uint32_t width, uint32_t height)
Get viewport's parameters
PARAMETERS
dmGraphics::HContext |
context |
the context |
int32_t |
x |
x-coordinate of the viewport's origin |
int32_t |
y |
y-coordinate of the viewport's origin |
uint32_t |
width |
viewport's width |
uint32_t |
height |
viewport's height |
uint32_t GetWidth(dmGraphics::HContext context)
Returns the specified width of the opened window, which might differ from the actual window width.
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
RETURNS
uint32_t |
Specified width of the window. If no window is opened, 0 is always returned. |
uint32_t GetWindowHeight(dmGraphics::HContext context)
Return the height of the opened window, if any.
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
RETURNS
uint32_t |
Height of the window. If no window is opened, 0 is always returned |
uint32_t GetWindowWidth(dmGraphics::HContext context)
Return the width of the opened window, if any.
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
RETURNS
uint32_t |
Width of the window. If no window is opened, 0 is always returned |
bool IsExtensionSupported(dmGraphics::HContext context, const char* extension)
check if an extension is supported
PARAMETERS
dmGraphics::HContext |
context |
the context |
const char* |
extension |
the extension. |
RETURNS
bool |
true if the extension was supported |
void IsIndexBufferFormatSupported(dmGraphics::HContext context, dmGraphics::IndexBufferFormat format, bool result)
Check if the index format is supported
PARAMETERS
dmGraphics::HContext |
context |
the context |
dmGraphics::IndexBufferFormat |
format |
the format |
bool |
result |
true if the format is supoprted |
bool IsTextureFormatSupported(dmGraphics::HContext context, dmGraphics::TextureFormat format)
check if a specific texture format is supported
PARAMETERS
dmGraphics::HContext |
context |
the context |
dmGraphics::TextureFormat |
format |
the texture format. |
RETURNS
bool |
true if the texture format was supported |
dmGraphics::HIndexBuffer NewIndexBuffer(dmGraphics::HContext context, uint32_t size, void* data, dmGraphics::BufferUsage buffer_usage)
Create new index buffer with initial data
PARAMETERS
dmGraphics::HContext |
context |
the context |
uint32_t |
size |
the size of the buffer (in bytes). May be 0 |
void* |
data |
the data |
dmGraphics::BufferUsage |
buffer_usage |
the usage |
RETURNS
dmGraphics::HIndexBuffer |
the index buffer |
dmGraphics::HRenderTarget NewRenderTarget(dmGraphics::HContext context, uint32_t buffer_type_flags, dmGraphics::const RenderTargetCreationParams params)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
uint32_t |
buffer_type_flags |
|
dmGraphics::const RenderTargetCreationParams |
params |
RETURNS
dmGraphics::HRenderTarget |
Newly created render target |
dmGraphics::HTexture NewTexture(HContext context, const dmGraphics::TextureCreationParams& params)
Create new texture
PARAMETERS
HContext |
context |
Graphics context |
const dmGraphics::TextureCreationParams& |
params |
Creation parameters |
RETURNS
dmGraphics::HTexture |
Opaque texture handle |
dmGraphics::HVertexBuffer NewVertexBuffer(dmGraphics::HContext context, uint32_t size, void* data, dmGraphics::BufferUsage buffer_usage)
Create new vertex buffer with initial data
PARAMETERS
dmGraphics::HContext |
context |
the context |
uint32_t |
size |
the size of the buffer (in bytes). May be 0 |
void* |
data |
the data |
dmGraphics::BufferUsage |
buffer_usage |
the usage |
RETURNS
dmGraphics::HVertexBuffer |
the vertex buffer |
dmGraphics::HVertexDeclaration NewVertexDeclaration(dmGraphics::HContext context, dmGraphics::HVertexStreamDeclaration stream_declaration)
Create new vertex declaration from a vertex stream declaration
PARAMETERS
dmGraphics::HContext |
context |
the context |
dmGraphics::HVertexStreamDeclaration |
stream_declaration |
the vertex stream declaration |
RETURNS
dmGraphics::HVertexDeclaration |
the vertex declaration |
dmGraphics::HVertexDeclaration NewVertexDeclaration(dmGraphics::HContext context, dmGraphics::HVertexStreamDeclaration stream_declaration, uint32_t stride)
Create new vertex declaration from a vertex stream declaration and an explicit stride value, where the stride is the number of bytes between each consecutive vertex in a vertex buffer
PARAMETERS
dmGraphics::HContext |
context |
the context |
dmGraphics::HVertexStreamDeclaration |
stream_declaration |
the vertex stream declaration |
uint32_t |
stride |
the stride between the start of each vertex (in bytes) |
RETURNS
dmGraphics::HVertexDeclaration |
the vertex declaration |
dmGraphics::HVertexStreamDeclaration NewVertexStreamDeclaration(dmGraphics::HContext context)
Create new vertex stream declaration. A stream declaration contains a list of vertex streams that should be used to create a vertex declaration from.
PARAMETERS
dmGraphics::HContext |
context |
the context |
RETURNS
dmGraphics::HVertexStreamDeclaration |
the vertex declaration |
dmGraphics::HVertexStreamDeclaration NewVertexStreamDeclaration(dmGraphics::HContext context, dmGraphics::VertexStepFunction step_function)
Create new vertex stream declaration. A stream declaration contains a list of vertex streams that should be used to create a vertex declaration from.
PARAMETERS
dmGraphics::HContext |
context |
the context |
dmGraphics::VertexStepFunction |
step_function |
the vertex step function to use |
RETURNS
dmGraphics::HVertexStreamDeclaration |
the vertex declaration |
void ReadPixels(dmGraphics::HContext context, int32_t x, int32_t y, uint32_t width, uint32_t height, void* buffer, uint32_t buffer_size)
Read frame buffer pixels in BGRA format
PARAMETERS
dmGraphics::HContext |
context |
the context |
int32_t |
x |
x-coordinate of the starting position |
int32_t |
y |
y-coordinate of the starting position |
uint32_t |
width |
width of the region |
uint32_t |
height |
height of the region |
void* |
buffer |
buffer to read to |
uint32_t |
buffer_size |
buffer size |
void RepackRGBToRGBA(uint32_t num_pixels, uint8_t* rgb, uint8_t* rgba)
PARAMETERS
uint32_t |
num_pixels |
|
uint8_t* |
rgb |
|
uint8_t* |
rgba |
void SetBlendFunc(dmGraphics::HContext context, gmGraphics::BlendFactor source_factor, dmGraphics::BlendFactor destination_factor)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
gmGraphics::BlendFactor |
source_factor |
|
dmGraphics::BlendFactor |
destination_factor |
void SetColorMask(dmGraphics::HContext context, bool red, bool green, bool blue, bool alpha)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
bool |
red |
|
bool |
green |
|
bool |
blue |
|
bool |
alpha |
void SetCullFace(dmGraphics::HContext context, dmGraphics::FaceType face_type)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::FaceType |
face_type |
void SetDepthFunc(dmGraphics::HContext context, dmGraphics::CompareFunc func)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::CompareFunc |
func |
void SetDepthMask(dmGraphics::HContext context, bool enable_mask)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
bool |
enable_mask |
void SetIndexBufferData(dmGraphics::HIndexBuffer buffer, uint32_t size, void* data, dmGraphics::BufferUsage buffer_usage)
Set index buffer data
PARAMETERS
dmGraphics::HIndexBuffer |
buffer |
the buffer |
uint32_t |
size |
the size of the buffer (in bytes). May be 0 |
void* |
data |
the data |
dmGraphics::BufferUsage |
buffer_usage |
the usage |
void SetIndexBufferSubData(dmGraphics::HVertexBuffer buffer, uint32_t offset, uint32_t size, void* data)
Set subset of index buffer data
PARAMETERS
dmGraphics::HVertexBuffer |
buffer |
the buffer |
uint32_t |
offset |
the offset into the desination buffer (in bytes) |
uint32_t |
size |
the size of the buffer (in bytes). May be 0 |
void* |
data |
the data |
void SetRenderTarget(dmGraphics::HContext context, dmGraphics::HRenderTarget render_target, uint32_t transient_buffer_types)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HRenderTarget |
render_target |
|
uint32_t |
transient_buffer_types |
void SetRenderTargetSize(dmGraphics::HContext context, dmGraphics::HRenderTarget render_target, uint32_t width, uint32_t height)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HRenderTarget |
render_target |
|
uint32_t |
width |
|
uint32_t |
height |
void SetStencilFunc(dmGraphics::HContext context, dmGraphics::CompareFunc func, uint32_t ref, uint32_t mask)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::CompareFunc |
func |
|
uint32_t |
ref |
|
uint32_t |
mask |
void SetStencilFuncSeparate(dmGraphics::HContext context, dmGraphics::FaceType face_type, dmGraphics::CompareFunc func, uint32_t ref, uint32_t mask)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::FaceType |
face_type |
|
dmGraphics::CompareFunc |
func |
|
uint32_t |
ref |
|
uint32_t |
mask |
void SetStencilMask(dmGraphics::HContext context, uint32_t mask)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
uint32_t |
mask |
void SetStencilOp(dmGraphics::HContext context, dmGraphics::StencilOp sfail, dmGraphics::StencilOp dpfail, dmGraphics::StencilOp dppass)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::StencilOp |
sfail |
|
dmGraphics::StencilOp |
dpfail |
|
dmGraphics::StencilOp |
dppass |
void SetStencilOpSeparate(dmGraphics::HContext context, dmGraphics::FaceType face_type, dmGraphics::StencilOp sfail, dmGraphics::StencilOp dpfail, dmGraphics::StencilOp dppass)
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::FaceType |
face_type |
|
dmGraphics::StencilOp |
sfail |
|
dmGraphics::StencilOp |
dpfail |
|
dmGraphics::StencilOp |
dppass |
void SetTexture(dmGraphics::HContext context, dmGraphics::HTexture texture, const dmGraphics::TextureParams& params)
Set texture data. For textures of type TEXTURE_TYPE_CUBE_MAP it's assumed that 6 mip-maps are present contiguously in memory with stride m_DataSize
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
const dmGraphics::TextureParams& |
params |
void SetTextureAsync(dmGraphics::HContext context, dmGraphics::HTexture texture, const dmGraphics::TextureParams& params, dmGraphics::SetTextureAsyncCallback callback, void* user_data)
Set texture data asynchronously. For textures of type TEXTURE_TYPE_CUBE_MAP it's assumed that 6 mip-maps are present contiguously in memory with stride m_DataSize
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
const dmGraphics::TextureParams& |
params |
Texture parameters. Texture will be recreated if parameters differ from creation parameters |
dmGraphics::SetTextureAsyncCallback |
callback |
Completion callback |
void* |
user_data |
User data that will be passed to completion callback |
void SetTextureParams(dmGraphics::HContext context, dmGraphics::HTexture texture, dmGraphics::TextureFilter min_filter, dmGraphics::TextureFilter mag_filter, dmGraphics::TextureWrap uwrap, dmGraphics::TextureWrap vwrap, float max_anisotropy)
Set texture parameters
PARAMETERS
dmGraphics::HContext |
context |
Graphics context |
dmGraphics::HTexture |
texture |
Texture handle |
dmGraphics::TextureFilter |
min_filter |
Minification filter type |
dmGraphics::TextureFilter |
mag_filter |
Magnification filter type |
dmGraphics::TextureWrap |
uwrap |
Wrapping mode for the U (X) texture coordinate. |
dmGraphics::TextureWrap |
vwrap |
Wrapping mode for the V (Y) texture coordinate |
float |
max_anisotropy |
void SetVertexBufferData(dmGraphics::HVertexBuffer buffer, uint32_t size, void* data, dmGraphics::BufferUsage buffer_usage)
Set vertex buffer data
PARAMETERS
dmGraphics::HVertexBuffer |
buffer |
the buffer |
uint32_t |
size |
the size of the buffer (in bytes). May be 0 |
void* |
data |
the data |
dmGraphics::BufferUsage |
buffer_usage |
the usage |
void SetVertexBufferSubData(dmGraphics::HVertexBuffer buffer, uint32_t offset, uint32_t size, void* data)
Set subset of vertex buffer data
PARAMETERS
dmGraphics::HVertexBuffer |
buffer |
the buffer |
uint32_t |
offset |
the offset into the desination buffer (in bytes) |
uint32_t |
size |
the size of the buffer (in bytes). May be 0 |
void* |
data |
the data |
TYPE
struct TextureCreationParams
Texture creation parameters. Defines how a texture is created, initialized, and used. This structure is typically passed when allocating GPU memory for a new texture. It controls dimensions, format, layering, mipmapping, and intended usage.
MEMBERS
dmGraphics::TextureType |
m_Type |
Texture type. Defines the dimensionality and interpretation of the texture (2D, 3D, cube map, array) |
uint16_t |
m_Width |
Width of the texture in pixels at the base mip level |
uint16_t |
m_Height |
Height of the texture in pixels at the base mip level |
uint16_t |
m_Depth |
Depth of the texture. Used for 3D textures or texture arrays. For standard 2D textures, this is typically `1` |
uint16_t |
m_OriginalWidth |
Width of the original source data before scaling or compression |
uint16_t |
m_OriginalHeight |
Height of the original source data before scaling or compression |
uint16_t |
m_OriginalDepth |
Depth of the original source data |
uint8_t |
m_LayerCount |
Number of layers in the texture. Used for array textures (`TEXTURE_TYPE_2D_ARRAY`). For standard 2D textures, this is `1` |
uint8_t |
m_MipMapCount |
Number of mipmap levels. A value of `1` means no mipmaps (only the base level is stored). Larger values allow for mipmapped sampling. |
uint8_t |
m_UsageHintBits |
Bitfield of usage hints. Indicates how the texture will be used (e.g. sampling, render target, storage image). See dmGraphics::TextureUsageFlag |
TYPE
struct TextureParams
Texture update parameters.
Defines a block of pixel data to be uploaded to a texture,
along with filtering, wrapping, and sub-region update options.
Typically used when calling texture upload/update functions
after a texture object has been created with TextureCreationParams
MEMBERS
const void* |
m_Data |
Pointer to raw pixel data in CPU memory. The format is defined by `m_Format` |
uint32_t |
m_DataSize |
Size of the pixel data in bytes. Must match the expected size from width, height, depth, and format |
dmGraphics::TextureFormat |
m_Format |
Format of the pixel data (e.g. RGBA, RGB, compressed formats). Dictates how the GPU interprets the memory pointed by `m_Data` |
dmGraphics::TextureFilter |
m_MinFilter |
Minification filter (applied when shrinking). Determines how pixels are sampled when the texture is displayed smaller than its native resolution |
dmGraphics::TextureFilter |
m_MagFilter |
Magnification filter (applied when enlarging). Determines how pixels are sampled when the texture is displayed larger than its native resolution |
dmGraphics::TextureWrap |
m_UWrap |
Wrapping mode for U (X) texture coordinate. Controls behavior when texture coordinates exceed [0,1] |
dmGraphics::TextureWrap |
m_VWrap |
Wrapping mode for V (Y) texture coordinate. Controls behavior when texture coordinates exceed [0,1] |
uint32_t |
m_X |
X offset in pixels for sub-texture updates. Defines the left edge of the destination region |
uint32_t |
m_Y |
Y offset in pixels for sub-texture updates. Defines the top edge of the destination region |
uint32_t |
m_Z |
Z offset (depth layer) for 3D textures. Ignored for standard 2D textures |
uint32_t |
m_Slice |
Slice index in an array texture where the data should be uploaded |
uint16_t |
m_Width |
Width of the pixel data block in pixels. Used for both full uploads and sub-updates |
uint16_t |
m_Height |
Height of the pixel data block in pixels. Used for both full uploads and sub-updates |
uint16_t |
m_Depth |
Depth of the pixel data block in pixels. Only relevant for 3D textures |
uint8_t |
m_LayerCount |
Number of layers to update. For array textures, this specifies how many pages are updated |
uint8_t |
m_MipMap |
Only 7 bit available Mipmap level to update. Level 0 is the base level, higher levels are progressively downscaled versions |
uint8_t |
m_SubUpdate |
If true, this represents a partial texture update (sub-region), using `m_X`, `m_Y`, `m_Z`, and `m_Slice` offsets. If false, the entire texture/mipmap level is replaced |
Context handle
Index buffer handle
PipelineState handle
Program handle
Rendertarget handle
Storage buffer handle
Texture handle
Uniform location handle
Vertex buffer handle
Vertex declaration handle
Vertex stream declaration handle
Function called when a texture has been set asynchronously
Graphics adapter family. Identifies the type of graphics backend used by the rendering system
ADAPTER_FAMILY_NONE |
No adapter detected. Used as an error state or uninitialized value |
ADAPTER_FAMILY_NULL |
Null (dummy) backend. Used for headless operation, testing, or environments where rendering output is not required |
ADAPTER_FAMILY_OPENGL |
OpenGL desktop backend. Common on Windows, macOS and Linux systems |
ADAPTER_FAMILY_OPENGLES |
OpenGL ES backend. Primarily used on mobile devices (Android, iOS), as well as WebGL (browser) |
ADAPTER_FAMILY_VULKAN |
Vulkan backend. Cross-platform modern graphics API with explicit control over GPU resources and multithreading |
ADAPTER_FAMILY_VENDOR |
Vendor-specific backend. A placeholder for proprietary or experimental APIs tied to a particular GPU vendor. |
ADAPTER_FAMILY_WEBGPU |
WebGPU backend. Modern web graphics API designed as the successor to WebGL |
ADAPTER_FAMILY_DIRECTX |
DirectX backend. Microsoft’s graphics API used on Windows and Xbox |
Defines how an attachment should be treated at the start and end of a render pass
ATTACHMENT_OP_DONT_CARE |
Ignore existing content, no guarantees about the result |
ATTACHMENT_OP_LOAD |
Preserve the existing contents of the attachment |
ATTACHMENT_OP_STORE |
Store the attachment’s results after the pass finishes |
ATTACHMENT_OP_CLEAR |
Clear the attachment to a predefined value at the beginning of the pass |
Blend factors for color blending. Defines how source and destination colors are combined
BLEND_FACTOR_ZERO |
Always use 0.0 |
BLEND_FACTOR_ONE |
Always use 1.0 |
BLEND_FACTOR_SRC_COLOR |
Use source color |
BLEND_FACTOR_ONE_MINUS_SRC_COLOR |
Use (1 - source color) |
BLEND_FACTOR_DST_COLOR |
Use destination color |
BLEND_FACTOR_ONE_MINUS_DST_COLOR |
Use (1 - destination color) |
BLEND_FACTOR_SRC_ALPHA |
Use source alpha |
BLEND_FACTOR_ONE_MINUS_SRC_ALPHA |
Use (1 - source alpha) |
BLEND_FACTOR_DST_ALPHA |
Use destination alpha |
BLEND_FACTOR_ONE_MINUS_DST_ALPHA |
Use (1 - destination alpha) |
BLEND_FACTOR_SRC_ALPHA_SATURATE |
Use min(srcAlpha, 1 - dstAlpha) |
BLEND_FACTOR_CONSTANT_COLOR |
|
BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR |
|
BLEND_FACTOR_CONSTANT_ALPHA |
|
BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA |
BUFFER_ACCESS_READ_ONLY |
|
BUFFER_ACCESS_WRITE_ONLY |
|
BUFFER_ACCESS_READ_WRITE |
Buffer usage hints. Indicates how often the data in a buffer will be updated. Helps the driver optimize memory placement
BUFFER_USAGE_STREAM_DRAW |
Updated every frame, used once (e.g. dynamic geometry) |
BUFFER_USAGE_DYNAMIC_DRAW |
Updated occasionally, used many times |
BUFFER_USAGE_STATIC_DRAW |
Set once, used many times (e.g. meshes, textures). Preferred for buffers that never change |
Depth and alpha test comparison functions. Defines how incoming values are compared against stored ones
COMPARE_FUNC_NEVER |
Never passes. |
COMPARE_FUNC_LESS |
Passes if incoming < stored |
COMPARE_FUNC_LEQUAL |
Passes if incoming <= stored |
COMPARE_FUNC_GREATER |
Passes if incoming > stored |
COMPARE_FUNC_GEQUAL |
Passes if incoming >= stored |
COMPARE_FUNC_EQUAL |
Passes if incoming == stored |
COMPARE_FUNC_NOTEQUAL |
Passes if incoming != stored |
COMPARE_FUNC_ALWAYS |
Always passes (ignores stored values) |
FACE_WINDING_CCW |
|
FACE_WINDING_CW |
Function's call result code
HANDLE_RESULT_OK |
The function's call succeeded and returned a valid result |
HANDLE_RESULT_NOT_AVAILABLE |
The function is not supported by the current graphics backend |
HANDLE_RESULT_ERROR |
An error occurred while function call |
Index buffer element types. Defines the integer size used for vertex indices
INDEXBUFFER_FORMAT_16 |
16-bit unsigned integers (max 65535 vertices) |
INDEXBUFFER_FORMAT_32 |
32-bit unsigned integers (supports larger meshes) |
Primitive drawing modes. Defines how vertex data is assembled into primitives
PRIMITIVE_LINES |
Each pair of vertices forms a line |
PRIMITIVE_TRIANGLES |
Each group of 3 vertices forms a triangle |
PRIMITIVE_TRIANGLE_STRIP |
Connected strip of triangles (shares vertices) |
Attachment points for render targets
ATTACHMENT_COLOR |
A color buffer attachment (used for rendering visible output) |
ATTACHMENT_DEPTH |
A depth buffer attachment (used for depth testing) |
ATTACHMENT_STENCIL |
A stencil buffer attachment (used for stencil operations) |
Stencil test actions. Defines what happens to a stencil buffer value depending on the outcome of the stencil/depth test.
STENCIL_OP_KEEP |
Keep the current stencil value |
STENCIL_OP_ZERO |
Set stencil value to 0 |
STENCIL_OP_REPLACE |
Replace stencil value with reference value |
STENCIL_OP_INCR |
Increment stencil value (clamps at max) |
STENCIL_OP_INCR_WRAP |
Increment stencil value, wrapping around |
STENCIL_OP_DECR |
Decrement stencil value (clamps at 0) |
STENCIL_OP_DECR_WRAP |
Decrement stencil value, wrapping around |
STENCIL_OP_INVERT |
Bitwise invert stencil value |
Texture filtering modes. Controls how texels are sampled when scaling or rotating textures
TEXTURE_FILTER_DEFAULT |
Default texture filtering mode. Depeneds on graphics backend (for example, for OpenGL - TEXTURE_FILTER_LINEAR) |
TEXTURE_FILTER_NEAREST |
Nearest-neighbor sampling (blocky look, fastest) |
TEXTURE_FILTER_LINEAR |
Linear interpolation between texels (smooth look) |
TEXTURE_FILTER_NEAREST_MIPMAP_NEAREST |
Nearest mipmap level, nearest texel |
TEXTURE_FILTER_NEAREST_MIPMAP_LINEAR |
Linear blend between two mipmap levels, nearest texel |
TEXTURE_FILTER_LINEAR_MIPMAP_NEAREST |
Nearest mipmap level, linear texel |
TEXTURE_FILTER_LINEAR_MIPMAP_LINEAR |
Linear blend between mipmap levels and texels (trilinear) |
Pixel formats supported by textures. Includes uncompressed, compressed, and floating-point variants
TEXTURE_FORMAT_LUMINANCE |
Single-channel grayscale |
TEXTURE_FORMAT_LUMINANCE_ALPHA |
Two-channel grayscale + alpha |
TEXTURE_FORMAT_RGB |
Standard 24-bit RGB color |
TEXTURE_FORMAT_RGBA |
Standard 32-bit RGBA color |
TEXTURE_FORMAT_RGB_16BPP |
Packed 16-bit RGB (lower precision, saves memory) |
TEXTURE_FORMAT_RGBA_16BPP |
Packed 16-bit RGBA |
TEXTURE_FORMAT_DEPTH |
Depth buffer texture (used for depth testing) |
TEXTURE_FORMAT_STENCIL |
Stencil buffer texture |
TEXTURE_FORMAT_RGB_PVRTC_2BPPV1 |
PVRTC compressed RGB at 2 bits per pixel |
TEXTURE_FORMAT_RGB_PVRTC_4BPPV1 |
PVRTC compressed RGB at 4 bits per pixel |
TEXTURE_FORMAT_RGBA_PVRTC_2BPPV1 |
PVRTC compressed RGBA at 2 bits per pixel |
TEXTURE_FORMAT_RGBA_PVRTC_4BPPV1 |
PVRTC compressed RGBA at 4 bits per pixel |
TEXTURE_FORMAT_RGB_ETC1 |
ETC1 compressed RGB (no alpha support) |
TEXTURE_FORMAT_R_ETC2 |
ETC2 single-channel |
TEXTURE_FORMAT_RG_ETC2 |
ETC2 two-channel |
TEXTURE_FORMAT_RGBA_ETC2 |
ETC2 four-channel (with alpha) |
TEXTURE_FORMAT_RGBA_ASTC_4X4 |
ASTC block-compressed 4×4 |
TEXTURE_FORMAT_RGB_BC1 |
BC1/DXT1 compressed RGB |
TEXTURE_FORMAT_RGBA_BC3 |
BC3/DXT5 compressed RGBA |
TEXTURE_FORMAT_R_BC4 |
BC4 single-channel |
TEXTURE_FORMAT_RG_BC5 |
BC5 two-channel |
TEXTURE_FORMAT_RGBA_BC7 |
BC7 high-quality compressed RGBA |
TEXTURE_FORMAT_RGB16F |
Half-precision float RGB |
TEXTURE_FORMAT_RGB32F |
Full 32-bit float RGB |
TEXTURE_FORMAT_RGBA16F |
Half-precision float RGBA |
TEXTURE_FORMAT_RGBA32F |
Full 32-bit float RGBA |
TEXTURE_FORMAT_R16F |
Half-precision float single channel |
TEXTURE_FORMAT_RG16F |
Half-precision float two channels |
TEXTURE_FORMAT_R32F |
Full 32-bit float single channel |
TEXTURE_FORMAT_RG32F |
Full 32-bit float two channels |
TEXTURE_FORMAT_RGBA32UI |
Internal: 32-bit unsigned integer RGBA (not script-exposed) |
TEXTURE_FORMAT_BGRA8U |
Internal: 32-bit BGRA layout |
TEXTURE_FORMAT_R32UI |
Internal: 32-bit unsigned integer single channel |
TEXTURE_FORMAT_RGBA_ASTC_5X4 |
ASTC 5x4 block compression |
TEXTURE_FORMAT_RGBA_ASTC_5X5 |
ASTC 5x5 block compression |
TEXTURE_FORMAT_RGBA_ASTC_6X5 |
ASTC 6x5 block compression |
TEXTURE_FORMAT_RGBA_ASTC_6X6 |
ASTC 6x6 block compression |
TEXTURE_FORMAT_RGBA_ASTC_8X5 |
ASTC 8x5 block compression |
TEXTURE_FORMAT_RGBA_ASTC_8X6 |
ASTC 8x6 block compression |
TEXTURE_FORMAT_RGBA_ASTC_8X8 |
ASTC 8x8 block compression |
TEXTURE_FORMAT_RGBA_ASTC_10X5 |
ASTC 10x5 block compression |
TEXTURE_FORMAT_RGBA_ASTC_10X6 |
ASTC 10x6 block compression |
TEXTURE_FORMAT_RGBA_ASTC_10X8 |
ASTC 10x8 block compression |
TEXTURE_FORMAT_RGBA_ASTC_10X10 |
ASTC 10x10 block compression |
TEXTURE_FORMAT_RGBA_ASTC_12X10 |
ASTC 12x10 block compression |
TEXTURE_FORMAT_RGBA_ASTC_12X12 |
ASTC 12x12 block compression |
Texture data upload status flags
TEXTURE_STATUS_OK |
Texture updated and ready-to-use |
TEXTURE_STATUS_DATA_PENDING |
Data upload to the texture is in progress |
Texture types
TEXTURE_TYPE_2D |
|
TEXTURE_TYPE_2D_ARRAY |
|
TEXTURE_TYPE_3D |
|
TEXTURE_TYPE_CUBE_MAP |
|
TEXTURE_TYPE_IMAGE_2D |
|
TEXTURE_TYPE_IMAGE_3D |
|
TEXTURE_TYPE_SAMPLER |
|
TEXTURE_TYPE_TEXTURE_2D |
|
TEXTURE_TYPE_TEXTURE_2D_ARRAY |
|
TEXTURE_TYPE_TEXTURE_3D |
|
TEXTURE_TYPE_TEXTURE_CUBE |
Texture addressing/wrapping modes. Controls behavior when texture coordinates fall outside the [0,1] range
TEXTURE_WRAP_CLAMP_TO_BORDER |
Clamp to the color defined as 'border' |
TEXTURE_WRAP_CLAMP_TO_EDGE |
Clamp to the edge pixel of the texture |
TEXTURE_WRAP_MIRRORED_REPEAT |
Repeat texture, mirroring every other repetition |
TEXTURE_WRAP_REPEAT |
Repeat texture in a tiled fashion |
Data type. Represents scalar, vector, matrix, image, or sampler types used for vertex attributes, uniforms, and shader interface definitions
TYPE_BYTE |
Signed 8-bit integer. Compact storage, often used for colors, normals, or compressed vertex attributes |
TYPE_UNSIGNED_BYTE |
Unsigned 8-bit integer. Common for color channels (0–255) or normalized texture data |
TYPE_SHORT |
Signed 16-bit integer. Used for medium-range numeric attributes such as bone weights or coordinates with normalization |
TYPE_UNSIGNED_SHORT |
Unsigned 16-bit integer. Often used for indices or normalized attributes when extra precision over bytes is required |
TYPE_INT |
Signed 32-bit integer. Typically used for uniform values, shader constants, or counters |
TYPE_UNSIGNED_INT |
Unsigned 32-bit integer. Used for indices, IDs, or GPU counters |
TYPE_FLOAT |
32-bit floating point. Standard for most vertex attributes and uniform values (positions, UVs, weights) |
TYPE_FLOAT_VEC4 |
4-component floating-point vector (`vec4` in GLSL). Typically used for homogeneous coordinates, colors (RGBA), or combined attributes |
TYPE_FLOAT_MAT4 |
4x4 floating-point matrix (`mat4` in GLSL). Standard for 3D transformations (model, view, projection) |
TYPE_SAMPLER_2D |
2D texture sampler. Standard type for most texture lookups |
TYPE_SAMPLER_CUBE |
Cube map sampler. Used for environment mapping, reflections, and skyboxes |
TYPE_SAMPLER_2D_ARRAY |
Array of 2D texture samplers. Enables efficient texture indexing when using multiple layers (e.g. terrain textures, sprite atlases) |
TYPE_FLOAT_VEC2 |
2-component floating-point vector (`vec2` in GLSL). Commonly used for texture coordinates or 2D positions |
TYPE_FLOAT_VEC3 |
3-component floating-point vector (`vec3` in GLSL). Used for positions, normals, and directions in 3D space |
TYPE_FLOAT_MAT2 |
2x2 floating-point matrix (`mat2` in GLSL). Used in transformations (e.g. 2D rotations, scaling) |
TYPE_FLOAT_MAT3 |
3x3 floating-point matrix (`mat3` in GLSL). Commonly used for normal matrix calculations in lighting |
TYPE_IMAGE_2D |
2D image object. Unlike samplers, images allow read/write access in shaders (e.g. compute shaders or image load/store operations) |
TYPE_TEXTURE_2D |
2D texture object handle. Represents an actual GPU texture resource |
TYPE_SAMPLER |
Generic sampler handle, used as a placeholder for texture units without specifying the dimension |
TYPE_TEXTURE_2D_ARRAY |
2D texture array object handle |
TYPE_TEXTURE_CUBE |
Cube map texture object handle |
TYPE_SAMPLER_3D |
3D texture sampler. Used for volumetric effects, noise fields, or voxel data |
TYPE_TEXTURE_3D |
3D texture object handle |
TYPE_IMAGE_3D |
3D image object. Used for compute-based volume processing |
TYPE_SAMPLER_3D_ARRAY |
Array of 3D texture samplers |
TYPE_TEXTURE_3D_ARRAY |
3D texture array object handle |