QRhiVertexInputLayout Class

Describes the layout of vertex inputs consumed by a vertex shader. More...

Header: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
Since: Qt 6.6

Public Functions

QRhiVertexInputLayout()
const QRhiVertexInputAttribute *attributeAt(qsizetype index) const
qsizetype attributeCount() const
const QRhiVertexInputBinding *bindingAt(qsizetype index) const
qsizetype bindingCount() const
const QRhiVertexInputAttribute *cbeginAttributes() const
const QRhiVertexInputBinding *cbeginBindings() const
const QRhiVertexInputAttribute *cendAttributes() const
const QRhiVertexInputBinding *cendBindings() const
void setAttributes(std::initializer_list<QRhiVertexInputAttribute> list)
void setAttributes(InputIterator first, InputIterator last)
void setBindings(std::initializer_list<QRhiVertexInputBinding> list)
void setBindings(InputIterator first, InputIterator last)
size_t qHash(const QRhiVertexInputLayout &v, size_t seed = 0)
bool operator!=(const QRhiVertexInputLayout &a, const QRhiVertexInputLayout &b)
bool operator==(const QRhiVertexInputLayout &a, const QRhiVertexInputLayout &b)

Detailed Description

The vertex input layout is defined by the collections of QRhiVertexInputBinding and QRhiVertexInputAttribute.

As an example, let's assume that we have a single buffer with 3 component vertex positions and 2 component UV coordinates interleaved (x, y, z, u, v), that the position and UV are expected at input locations 0 and 1 by the vertex shader, and that the vertex buffer will be bound at binding point 0 using setVertexInput() later on:

 QRhiVertexInputLayout inputLayout;
 inputLayout.setBindings({
     { 5 * sizeof(float) }
 });
 inputLayout.setAttributes({
     { 0, 0, QRhiVertexInputAttribute::Float3, 0 },
     { 0, 1, QRhiVertexInputAttribute::Float2, 3 * sizeof(float) }
 });

Note: This is a RHI API with limited compatibility guarantees, see QRhi for details.

Member Function Documentation

[constexpr noexcept] QRhiVertexInputLayout::QRhiVertexInputLayout()

Constructs an empty vertex input layout description.

const QRhiVertexInputAttribute *QRhiVertexInputLayout::attributeAt(qsizetype index) const

Returns the attribute at the given index.

qsizetype QRhiVertexInputLayout::attributeCount() const

Returns the number of attributes.

const QRhiVertexInputBinding *QRhiVertexInputLayout::bindingAt(qsizetype index) const

Returns the binding at the given index.

qsizetype QRhiVertexInputLayout::bindingCount() const

Returns the number of bindings.

const QRhiVertexInputAttribute *QRhiVertexInputLayout::cbeginAttributes() const

Returns a const iterator pointing to the first item in the attribute list.

const QRhiVertexInputBinding *QRhiVertexInputLayout::cbeginBindings() const

Returns a const iterator pointing to the first item in the binding list.

const QRhiVertexInputAttribute *QRhiVertexInputLayout::cendAttributes() const

Returns a const iterator pointing just after the last item in the attribute list.

const QRhiVertexInputBinding *QRhiVertexInputLayout::cendBindings() const

Returns a const iterator pointing just after the last item in the binding list.

void QRhiVertexInputLayout::setAttributes(std::initializer_list<QRhiVertexInputAttribute> list)

Sets the attributes from the specified list.

template <typename InputIterator> void QRhiVertexInputLayout::setAttributes(InputIterator first, InputIterator last)

Sets the attributes using the iterators first and last.

void QRhiVertexInputLayout::setBindings(std::initializer_list<QRhiVertexInputBinding> list)

Sets the bindings from the specified list.

template <typename InputIterator> void QRhiVertexInputLayout::setBindings(InputIterator first, InputIterator last)

Sets the bindings using the iterators first and last.

Related Non-Members

[noexcept] size_t qHash(const QRhiVertexInputLayout &v, size_t seed = 0)

Returns the hash value for v, using seed to seed the calculation.

[noexcept] bool operator!=(const QRhiVertexInputLayout &a, const QRhiVertexInputLayout &b)

Returns false if the values in the two QRhiVertexInputLayout objects a and b are equal; otherwise returns true.

[noexcept] bool operator==(const QRhiVertexInputLayout &a, const QRhiVertexInputLayout &b)

Returns true if the values in the two QRhiVertexInputLayout objects a and b are equal.