本页内容

QShaderVersion Class

指定着色语言的版本。更多...

标题: #include <qshader.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
自: Qt 6.6

公共类型

enum Flag { GlslEs }
flags Flags

公共函数

QShaderVersion()
QShaderVersion(int v, QShaderVersion::Flags f = Flags())
QShaderVersion::Flags flags() const
void setFlags(QShaderVersion::Flags f)
void setVersion(int v)
int version() const
(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)

详细说明

虽然 SPIR-V 或 Metal 着色语言等语言使用传统的版本号,但其他 API 的着色器可能采用略有不同的版本方案。不过,此处将所有这些版本都映射为一个版本号。 对于 HLSL,版本指的是着色器模型版本,例如 5.0、5.1 或 6.0。对于 GLSL,则需要一个额外的标志来区分 GLSL 和 GLSL/ES。

以下列出了不同图形 API 中最常见的着色器版本示例:

  • Vulkan (SPIR-V):100
  • OpenGL:120、330、440 等
  • OpenGL ES:100(配合GlslEs 使用)、300(配合GlslEs 使用)等。
  • Direct3D:50、51、60
  • Metal:12、20

默认构造的 QShaderVersion 包含版本号 100,且未设置任何标志。

注意:这是一个 兼容性保证有限的 RHI API,详情请参阅QShader 。

成员类型文档

enum QShaderVersion::Flag
flags QShaderVersion::Flags

描述了可以设置的标志。

常量值描述
QShaderVersion::GlslEs0x01表示 GLSL/ES 需与 GlslShader 结合使用

Flags 类型是QFlags<Flag> 的 typedef。它存储 Flag 值的按“或”运算组合。

成员函数文档

[constexpr noexcept default] QShaderVersion::QShaderVersion()

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

创建一个新的 QShaderVersion 对象,其版本号为v ,标志为f 。

QShaderVersion::Flags QShaderVersion::flags() const

返回标志。

另请参阅 setFlags()。

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

设置标志f 。

另请参阅 flags()。

void QShaderVersion::setVersion(int v)

将着色语言版本设置为v 。

另请参阅 version()。

int QShaderVersion::version() const

返回版本号。

另请参阅 setVersion()。

相关的非成员

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

返回key 的哈希值,并使用seed 作为计算的种子。

注意:在 INTEGRITY 上,此函数自 6.2 版本起已可用。

该函数于 Qt 6.12 中引入。

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

如果两个QShaderVersion 对象lhs 和rhs 中的值相等,则返回false ;否则返回true 。

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

如果lhs 小于rhs ,则返回 true。

在两个QShaderVersion (lhs 和rhs )之间建立排序关系。

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

如果两个QShaderVersion 对象lhs 和rhs 相等,则返回true 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.