Diligent Engine
Loading...
Searching...
No Matches
Diligent::RadientVertexLayoutDescX Class Reference

#include <RadientTypesX.hpp>

Public Member Functions

 RadientVertexLayoutDescX () noexcept=default
 Creates an empty layout.
 RadientVertexLayoutDescX (const RadientVertexLayoutDesc &Desc)
 Copies both arrays and every semantic. Nonzero counts require valid arrays.
 RadientVertexLayoutDescX (std::initializer_list< RadientVertexAttributeDesc > Attributes, std::initializer_list< RadientVertexBufferLayoutDesc > Buffers)
 Copies attributes and buffers from initializer lists.
 RadientVertexLayoutDescX (const RadientVertexLayoutDescX &Other)
 Creates an independent metadata copy.
RadientVertexLayoutDescXoperator= (const RadientVertexLayoutDescX &Other)
 Replaces this layout with an independent metadata copy.
 RadientVertexLayoutDescX (RadientVertexLayoutDescX &&Other) noexcept
 Transfers storage and leaves Other empty.
RadientVertexLayoutDescXoperator= (RadientVertexLayoutDescX &&Other) noexcept
 Transfers storage and leaves Other empty. Self-move leaves the layout unchanged.
RadientVertexLayoutDescXAddBuffer (const RadientVertexBufferLayoutDesc &Buffer)
 Appends a logical buffer. Its index is the previous buffer count.
RadientVertexLayoutDescXAddBuffer (Uint32 ByteStride=RADIENT_VERTEX_AUTO_STRIDE)
 Appends a buffer with the specified stride; the default requests automatic stride.
RadientVertexLayoutDescXSetBuffer (Uint32 Index, const RadientVertexBufferLayoutDesc &Buffer)
 Replaces a buffer descriptor. Index must be less than GetBufferCount().
RadientVertexLayoutDescXSetBuffer (Uint32 Index, Uint32 ByteStride)
 Replaces a buffer's stride. Index must be less than GetBufferCount().
RadientVertexLayoutDescXAddAttribute (const RadientVertexAttributeDesc &Attribute)
 Appends an attribute and copies its semantic string.
RadientVertexLayoutDescXAddAttribute (const Char *Semantic, RADIENT_VERTEX_COMPONENT_TYPE ComponentType, Uint32 ComponentCount, Uint32 BufferIndex=0, Uint32 ByteOffset=RADIENT_VERTEX_AUTO_OFFSET, Bool Normalized=False)
 Appends an attribute. Defaults select buffer zero, automatic offset, and no normalization.
RadientVertexLayoutDescXSetAttribute (Uint32 Index, const RadientVertexAttributeDesc &Attribute)
 Replaces an attribute and copies its semantic. Index must be less than GetAttributeCount().
Uint32 GetAttributeCount () const noexcept
 Returns the number of attributes.
Uint32 GetBufferCount () const noexcept
 Returns the number of logical buffers.
const RadientVertexAttributeDescGetAttribute (Uint32 Index) const noexcept
 Returns an attribute by index, which must be less than GetAttributeCount().
const RadientVertexBufferLayoutDescGetBuffer (Uint32 Index) const noexcept
 Returns a buffer by index, which must be less than GetBufferCount().
const RadientVertexLayoutDescGet () const noexcept
 Returns the C descriptor view. Its arrays and strings belong to this wrapper.
 operator const RadientVertexLayoutDesc & () const noexcept
 Allows passing this wrapper to APIs accepting a const C descriptor reference.
void Clear () noexcept
 Releases metadata and restores an empty layout.
void Swap (RadientVertexLayoutDescX &Other) noexcept
 Exchanges metadata and repairs both descriptor views without allocating.

Detailed Description

Owns a vertex layout's attribute descriptors, buffer descriptors, and semantic strings.

Construction and copying duplicate metadata, including semantic strings. Automatic offsets and strides are preserved. Setters allow incremental construction; layout validation still takes place in the consuming Radient API. Get() and conversion expose a read-only view without allocating. Views are valid until the wrapper is modified, moved, or destroyed. A consuming API copies metadata during the call. Concurrent access to a wrapper requires synchronization if any access modifies it.