QShaderImage Class
class Qt3DRender::QShaderImageシェーダープログラムへのイメージアクセスを提供します。詳細...
ヘッダー | #include <QShaderImage> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
qmake | QT += 3drender |
QML で | ShaderImage |
を継承しています: | Qt3DCore::QNode |
ステータス | 非推奨 |
パブリックな型
enum | Access { ReadOnly, WriteOnly, ReadWrite } |
enum | ImageFormat { NoFormat, Automatic, R8_UNorm, RG8_UNorm, RGBA8_UNorm, …, RGB10A2U } |
プロパティ
パブリック機能
Qt3DRender::QShaderImage::Access | access() const |
Qt3DRender::QShaderImage::ImageFormat | format() const |
int | layer() const |
bool | layered() const |
int | mipLevel() const |
Qt3DRender::QAbstractTexture * | texture() const |
パブリックスロット
void | setAccess(Qt3DRender::QShaderImage::Access access) |
void | setFormat(Qt3DRender::QShaderImage::ImageFormat format) |
void | setLayer(int layer) |
void | setLayered(bool layered) |
void | setMipLevel(int mipLevel) |
void | setTexture(Qt3DRender::QAbstractTexture *texture) |
シグナル
void | accessChanged(Qt3DRender::QShaderImage::Access access) |
void | formatChanged(Qt3DRender::QShaderImage::ImageFormat format) |
void | layerChanged(int layer) |
void | layeredChanged(bool layered) |
void | mipLevelChanged(int mipLevel) |
void | textureChanged(Qt3DRender::QAbstractTexture *texture) |
詳細説明
テクスチャの内容をシェーダで読み書きできるようにするには、QShaderImageとして公開する必要があります。テクスチャは複数のミップレベル、レイヤー、フェースで構成できます。さらに、QShaderImageを宣言することで、テクスチャ・コンテンツのどのレベル、レイヤー、面にアクセスしたいかを指定できます。
QShaderImage が正しく動作するには、QParameter'の値として割り当てられ、有効なQt3DRender::QAbstractTexture を参照する必要があります。
参照されるテクスチャが 1 次元配列、2 次元配列、3 次元、キューブマップ、キューブマップ配列、または 2 次元マルチサンプル配列テクスチャの場合、テクスチャレベル全体、またはテクスチャレベルの 1 つのレイヤーまたは面のいずれかをバインドできます。これはlayered プロパティで制御できます。
QShaderImageのサポートはOpenGL 4でのみサポートされており、OpenGL ES 3.1と3.2では部分的にサポートされています。
OpenGL 4 では、以下のイメージ・タイプがサポートされています:
GLSLタイプ | OpenGLタイプ列挙型 | テクスチャ・タイプ |
---|---|---|
image1D | GL_IMAGE_1D | QTexture1D |
画像2D | GL_IMAGE_2D | QTexture2D |
画像3D | GL_IMAGE_3D | QTexture3D |
イメージ2Dレクト | GL_IMAGE_2DRECT | QTextureRectangle |
イメージキューブ | GL_IMAGE_CUBE | QTextureCubeMap |
イメージバッファ | gl_image_buffer。 | QTextureBuffer |
image1DArray | gl_image_1d_array。 | QTexture1DArray |
イメージ2Dアレイ | gl_image_2d_array。 | QTexture2DArray |
イメージキューブマップ配列 | gl_image_cube_map_array。 | QTextureCubeMapArray |
画像2DMS | gl_image_2d_multisample。 | QTexture2DMultisample |
image2DMSArray | gl_image_2d_multisample_array | QTexture2DMultisampleArray |
iimage1D | gl_int_image_1d | QTexture1D |
iimage2D | gl_int_image_2d | QTexture2D |
iimage3D | gl_int_image_3d | QTexture3D |
iimage2DRect | gl_int_image_2d_rect | QTextureRectangle |
画像キューブ | gl_int_image_cube | QTextureCubeMap |
iimageバッファ | gl_int_image_buffer | QTextureBuffer |
iimage1DArray | gl_int_image_1d_array | QTexture1DArray |
iimage2DArray | gl_int_image_2d_array | QTexture2DArray |
iimageCubeArray | gl_int_image_cube_map_array | QTextureCubeMapArray |
iimage2DMS | gl_int_image_2d_multisample | QTexture2DMultisample |
iimage2DMSArray | gl_int_image_2d_multisample_array | QTexture2DMultisampleArray |
uimage1D | gl_unsigned_int_image_1d | QTexture1D |
uimage2D | gl_unsigned_int_image_2d | QTexture2D |
uimage3D | gl_unsigned_int_image_3d | QTexture3D |
uimage2DRect | gl_unsigned_int_image_2d_rect | QTextureRectangle |
uimageCube | gl_unsigned_int_image_cube | QTextureCubeMap |
uimageBuffer | gl_unsigned_int_image_buffer | QTextureBuffer |
uimage1DArray | gl_unsigned_int_image_1d_array | QTexture1DArray |
uimage2DArray | gl_unsigned_int_image_2d_array | QTexture2DArray |
uimageCubeArray | gl_unsigned_int_image_cube_map_array | QTextureCubeMapArray |
uimage2DMS | gl_unsigned_int_image_2d_multisample | QTexture2DMultisample |
uimage2DMSArray | gl_unsigned_int_image_2d_multisample_array | QTexture2DMultisampleArray |
OpenGL ES 3.1は以下の画像タイプをサポートしています:
GLSLタイプ | OpenGLタイプ列挙型 | テクスチャタイプ |
---|---|---|
イメージ2D | GL_IMAGE_2D | QTexture2D |
画像3D | GL_IMAGE_3D | QTexture3D |
イメージキューブ | GL_IMAGE_CUBE | QTextureCubeMap |
画像2D配列 | GL_IMAGE_2DA_ARRAY | QTexture2DArray |
iimage2D | gl_int_image_2d | QTexture2D |
iimage3D | gl_int_image_3d。 | QTexture3D |
画像キューブ | gl_int_image_cube | QTextureCubeMap |
iimage2DArray | gl_int_image_2d_array | QTexture2DArray |
uimage2D | gl_unsigned_int_image_2d | QTexture2D |
uimage3D | gl_unsigned_int_image_3d | QTexture3D |
uimageCube | gl_unsigned_int_image_cube | QTextureCubeMap |
uimage2DArray | gl_unsigned_int_image_2d_array | QTexture2DArray |
OpenGL ES 3.2は、OpenGL ES 3.1のすべての画像タイプに加え、以下をサポートしています:
GLSLタイプ | OpenGLタイプ列挙型 | テクスチャ・タイプ |
---|---|---|
イメージバッファ | gl_image_buffer | QTextureBuffer |
イメージキューブマップ配列 | gl_image_cube_map_array | QTextureCubeMapArray |
iimageバッファ | gl_image_buffer | QTextureBuffer |
iimageCubeArray | gl_int_image_cube_map_array | QTextureCubeMapArray |
uimageBuffer | gl_unsigned_int_image_buffer | QTextureBuffer |
uimageCubeArray | gl_unsigned_int_image_cube_map_array | QTextureCubeMapArray |
予想される使い方は以下のようになる:
Qt3DRender::QTexture2D *tex2D = new Qt3DRender::QTexture2D(); ... Qt3DRender::QMaterial *material = new Qt3DRender::QMaterial(); ... Qt3DRender::QParameter *imageParameter = new Qt3DRender::QParameter(); Qt3DRender::QShaderImage *shaderImage = new Qt3DRender::QShaderImage(); shaderImage->setTexture(tex2D); imageParameter->setName("imageUniformName"); imageParameter->setValue(QVariant::fromValue(shaderImage)); material->addParameter(imageParamenter);
メンバ型ドキュメント
enum QShaderImage::Access
定数 | 値 | 説明 |
---|---|---|
Qt3DRender::QShaderImage::ReadOnly | 0 | 画像はシェーダーからのみ読み込まれる |
Qt3DRender::QShaderImage::WriteOnly | 1 | 画像はシェーダーからのみ読み込まれます。 |
Qt3DRender::QShaderImage::ReadWrite | 2 | 画像はシェーダーからのみ読み込まれ、シェーダーからのみ書き込まれる |
enum QShaderImage::ImageFormat
このリストでは、可能なすべての画像形式について説明します。
定数 | 値 | 説明 |
---|---|---|
Qt3DRender::QShaderImage::NoFormat | 0 | GL_NONE |
Qt3DRender::QShaderImage::Automatic | 1 | Qt 3D は、参照されたテクスチャに基づいて自動的にフォーマットを決定しようとします。 |
Qt3DRender::QShaderImage::R8_UNorm | 0x8229 | GL_R8 (GLSL タイプ r8, OpenGL 4.2+ でサポート) |
Qt3DRender::QShaderImage::RG8_UNorm | 0x822B | GL_RG8 (GLSLタイプrg8、OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGBA8_UNorm | 0x8058 | GL_RGBA8 (GLSLタイプ rgba8, OpenGL 4.2+、OpenGL ES 3.1+でサポート) |
Qt3DRender::QShaderImage::R16_UNorm | 0x822A | GL_R16 (GLSLタイプ r16, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RG16_UNorm | 0x822C | GL_RG16 (GLSLタイプrg16、OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGBA16_UNorm | 0x805B | GL_RGBA16 (GLSLタイプ rgba16, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::R8_SNorm | 0x8F94 | GL_R8_SNORM (GLSLタイプ r8_snorm, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RG8_SNorm | 0x8F95 | GL_RG8_SNORM (GLSLタイプ rg8_snorm, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGBA8_SNorm | 0x8F97 | GL_RGBA8_SNORM (GLSL型 rgba8_snorm, OpenGL 4.2+, OpenGL ES 3.1+でサポート) |
Qt3DRender::QShaderImage::R16_SNorm | 0x8F98 | GL_R16_SNORM (GLSLタイプ r16_snorm, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RG16_SNorm | 0x8F99 | GL_RG16_SNORM (GLSLタイプ rg16_snorm, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGBA16_SNorm | 0x8F9B | GL_RGBA16_SNORM (GLSL型 rgba16_snorm, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::R8U | 0x8232 | GL_R8UI (GLSLタイプ r8ui, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RG8U | 0x8238 | GL_RG8UI (GLSLタイプ rg8ui, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGBA8U | 0x8D7C | GL_RGBA8UI (GLSLタイプ rgba8ui, OpenGL 4.2+, OpenGL ES 3.1+ でサポート) |
Qt3DRender::QShaderImage::R16U | 0x8234 | GL_R16UI (GLSLタイプ r16ui, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RG16U | 0x823A | GL_RG16UI (GLSLタイプ rg16ui, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGBA16U | 0x8D76 | GL_RGBA16UI (GLSLタイプ rgba16ui, OpenGL 4.2+, OpenGL ES 3.1+ でサポート) |
Qt3DRender::QShaderImage::R32U | 0x8236 | GL_R32UI (GLSLタイプ r32ui, OpenGL 4.2+, OpenGL ES 3.1+ でサポート) |
Qt3DRender::QShaderImage::RG32U | 0x823C | GL_RG32UI (GLSLタイプ rg32ui, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGBA32U | 0x8D70 | GL_RGBA32UI (GLSLタイプ rgba32ui, OpenGL 4.2+, OpenGL ES 3.1+でサポート) |
Qt3DRender::QShaderImage::R8I | 0x8231 | GL_R8I (GLSLタイプ r8i, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RG8I | 0x8237 | GL_RG8I (GLSLタイプ rg8i, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGBA8I | 0x8D8E | GL_RGBA8I (GLSLタイプ rgba8i, OpenGL 4.2+, OpenGL ES 3.1+ でサポート) |
Qt3DRender::QShaderImage::R16I | 0x8233 | GL_R16I (GLSLタイプ r16i, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RG16I | 0x8239 | GL_RG16I (GLSLタイプrg16i、OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGBA16I | 0x8D88 | GL_RGBA16I (GLSLタイプ rgba16i, OpenGL 4.2+, OpenGL ES 3.1 でサポート) |
Qt3DRender::QShaderImage::R32I | 0x8235 | GL_R32I (GLSLタイプ r32i, OpenGL 4.2+、OpenGL ES 3.1+でサポート) |
Qt3DRender::QShaderImage::RG32I | 0x823B | GL_RG32I (GLSL タイプ rg32i, OpenGL 4.2+ でサポート) |
Qt3DRender::QShaderImage::RGBA32I | 0x8D82 | GL_RGBA32I (GLSLタイプ rgba32i, OpenGL 4.2+, OpenGL ES 3.1+でサポート) |
Qt3DRender::QShaderImage::R16F | 0x822D | GL_R16F (GLSLタイプ r16f, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RG16F | 0x822F | GL_RG16F (GLSLタイプ rg16f, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGBA16F | 0x881A | GL_RGBA16F (GLSLタイプ rgba16f, OpenGL 4.2+、OpenGL ES 3.1+でサポート) |
Qt3DRender::QShaderImage::R32F | 0x822E | GL_R32F (GLSLタイプ r32f, OpenGL 4.2+、OpenGL ES 3.1+でサポート) |
Qt3DRender::QShaderImage::RG32F | 0x8230 | GL_RG32F (GLSLタイプ rg32f, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGBA32F | 0x8814 | GL_RGBA32F (GLSLタイプ rgba32f, OpenGL 4.2+, OpenGL ES 3.1+でサポート) |
Qt3DRender::QShaderImage::RG11B10F | 0x8C3A | GL_R11F_G11F_B10F (GLSLタイプ r11f_g11f_b10f, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGB10A2 | 0x8059 | GL_RGB10_A2 (GLSLタイプ rgb10_a2, OpenGL 4.2+でサポート) |
Qt3DRender::QShaderImage::RGB10A2U | 0x906F | GL_RGB10_A2UI (GLSLタイプ rgb10_a2ui、OpenGL 4.2+でサポート) |
プロパティ・ドキュメンテーション
access : Access
シェーダインスタンスから画像へのアクセスを許可するタイプを指定します。シェーダが、互換性のないアクセスを持つ画像から書き込みや読み込みを行おうとした場合、その動作は未定義となります。
デフォルト値はQShaderImage::ReadWrite です。
アクセス関数:
Qt3DRender::QShaderImage::Access | access() const |
void | setAccess(Qt3DRender::QShaderImage::Access access) |
通知シグナル:
void | accessChanged(Qt3DRender::QShaderImage::Access access) |
format : ImageFormat
これは、シェーダからImageに値を格納するときに本質的に重要です。
このフォーマットは、参照されるテクスチャのフォーマットと同じである必要はありません。ただし、互換性がなければなりません(サイズは一致しますが、クラスタイプは必ずしも一致しません)。たとえば、フォーマット R32F(サイズ 32 ビット、クラス 1x32)のテクスチャは、フォーマット RGBA8I(サイズ 32 ビット、クラス 4x8)のイメージで使用できます。OpenGL仕様の表8.27に、サポートされているすべてのイメージフォーマットのサイズとクラスが示されています。
デフォルトでは、Qt3Dは参照されるテクスチャのフォーマットと一致するように、イメージフォーマットを設定しようとします。
デフォルト値はQShaderImage::Automatic です。
アクセス関数
Qt3DRender::QShaderImage::ImageFormat | format() const |
void | setFormat(Qt3DRender::QShaderImage::ImageFormat format) |
Notifier シグナル:
void | formatChanged(Qt3DRender::QShaderImage::ImageFormat format) |
layer : int
参照されるテクスチャのうち、どのレイヤをQShaderImage に使用するかを保持します。layered が true に設定されている場合、または参照テクスチャのタイプがレイヤと互換性がない場合、このプロパティは何もしません。
Note: 参照テクスチャのタイプがキューブマップまたはキューブマップ配列で、ĺayered が false に設定されている場合、面とレイヤは以下の方法で取得されます:
cubeMapLayer = layer / 6 cubeMapFace = layer - (cubeMapLayer * 6)
デフォルト値は 0 です。
アクセス関数:
int | layer() const |
void | setLayer(int layer) |
通知シグナル:
void | layerChanged(int layer) |
layered : bool
*
true に設定すると、参照されるテクスチャが 1 次元配列、2 次元配列、3 次元、キューブ マップ、キューブ マップ配列、または 2 次元マルチサンプル配列テクスチャの場合、すべてのレイヤに対してレベル全体がバインドされます。false に設定すると、layer プロパティで指定された単一のレイヤーのみがバインドされます。
デフォルト値はfalse
です。
アクセス関数:
bool | layered() const |
void | setLayered(bool layered) |
通知シグナル:
void | layeredChanged(bool layered) |
mipLevel : int
参照されたテクスチャのうち、どの mipLevel をQShaderImage に使用するかを保持します。
デフォルト値は 0 です。
アクセス関数:
int | mipLevel() const |
void | setMipLevel(int mipLevel) |
通知シグナル:
void | mipLevelChanged(int mipLevel) |
© 2025 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.