QShaderVersion Class | Qt GUI | Qt 6.12.0
Description: Specifies the shading language version.
Keywords: class

- Qt 6.12
- Qt GUI
- C++ Classes
- QShaderVersion
- Qt 6.12.0 Reference Documentation

# QShaderVersion Class

Specifies the shading language version. More...

Header: | `#include <qshader.h>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Gui)` `target_link_libraries(mytarget PRIVATE Qt6::Gui)`
qmake: | `QT += gui`
Since: | Qt 6.6

- List of all members, including inherited members

## Public Types

enum | Flag { GlslEs }
flags | Flags

## Public Functions

| QShaderVersion()
| QShaderVersion(int v, QShaderVersion::Flags f = Flags())
QShaderVersion::Flags | flags() const
void | setFlags(QShaderVersion::Flags f)
void | setVersion(int v)
int | version() const

## Related Non-Members

`(since 6.12)` size_t | qHash(QShaderVersion key, size_t seed)
bool | operator!=(const QShaderVersion &lhs, const QShaderVersion &rhs)
bool | operator<(const QShaderVersion &lhs, const QShaderVersion &rhs)
bool | operator==(const QShaderVersion &lhs, const QShaderVersion &rhs)

## Detailed Description

While languages like SPIR-V or the Metal Shading Language use traditional version numbers, shaders for other APIs can use slightly different versioning schemes. All those are mapped to a single version number in here, however. For HLSL, the version refers to the Shader Model version, like 5.0, 5.1, or 6.0. For GLSL an additional flag is needed to choose between GLSL and GLSL/ES.

Below is a list with the most common examples of shader versions for different graphics APIs:

- Vulkan (SPIR-V): 100
- OpenGL: 120, 330, 440, etc.
- OpenGL ES: 100 with GlslEs, 300 with GlslEs, etc.
- Direct3D: 50, 51, 60
- Metal: 12, 20

A default constructed QShaderVersion contains a version of 100 and no flags set.

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

## Member Type Documentation

### enum QShaderVersion::Flag
flags QShaderVersion::Flags

Describes the flags that can be set.

Constant | Value | Description
--- | --- | ---
`QShaderVersion::GlslEs` | `0x01` | Indicates that GLSL/ES is meant in combination with GlslShader

The Flags type is a typedef for QFlags<Flag>. It stores an OR combination of Flag values.

## Member Function Documentation

### `[constexpr noexcept default]` QShaderVersion::QShaderVersion()

### QShaderVersion::QShaderVersion(int v, QShaderVersion::Flags f = Flags())

Constructs a new QShaderVersion with version v and flags f.

### QShaderVersion::Flags QShaderVersion::flags() const

Returns the flags.

See also setFlags().

### void QShaderVersion::setFlags(QShaderVersion::Flags f)

Sets the flags f.

See also flags().

### void QShaderVersion::setVersion(int v)

Sets the shading language version to v.

See also version().

### int QShaderVersion::version() const

Returns the version.

See also setVersion().

## Related Non-Members

### `[noexcept, since 6.12]` size_t qHash(QShaderVersion key, size_t seed)

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

Note: On INTEGRITY, this function has been available since 6.2.

This function was introduced in Qt 6.12.

### `[noexcept]` bool operator!=(const QShaderVersion &lhs, const QShaderVersion &rhs)

Returns `false` if the values in the two QShaderVersion objects lhs and rhs are equal; otherwise returns `true`.

### `[noexcept]` bool operator<(const QShaderVersion &lhs, const QShaderVersion &rhs)

Returns true if lhs is smaller than rhs.

Establishes a sorting order between the two QShaderVersion lhs and rhs.

### `[noexcept]` bool operator==(const QShaderVersion &lhs, const QShaderVersion &rhs)

Returns `true` if the two QShaderVersion objects lhs and rhs are equal.