QOpenGLTexture 类

QOpenGLTexture 类封装了一个 OpenGL 纹理对象。 更多信息...

头文件 #include <QOpenGLTexture>

公共类型

枚举绑定目标 { 绑定目标1D, 绑定目标1D数组, 绑定目标2D, 绑定目标2D数组, 绑定目标3D, …, 绑定目标缓冲区 }
枚举比较函数 { 比较小于等于, 比较大于等于, 比较小, 比较大, 比较等于, …, 永不相等 }
枚举比较模式 { 比较纹理到参考, 没有比较 }
枚举坐标方向 { 方向S, 方向T, 方向R }
枚举立方体贴面 { 立方体贴面正X, 立方体贴面负X, 立方体贴面正Y, 立方体贴面负Y, 立方体贴面正Z, 立方体贴面负Z }
枚举深度模板模式 { 深度模式, 模板模式 }
枚举特性 { 不可变存储, 不可变多采样存储, 纹理矩形, 纹理数组, 纹理3D, …, Mip级别纹理 }
标志特性
枚举过滤器 { 最近点采样, 线性采样, 最近点采样Mip最近, 最近点采样Mip线性, 线性采样Mip最近, 线性采样Mip线性 }
枚举Mip生成 { 生成Mip级别, 不生成Mip级别 }
枚举像素格式 { 没有源格式, 红色, RG, RGB, BGR, …, 亮度和alpha }
枚举像素类型 { 没有像素类型, Int8, UInt8, Int16, UInt16, …, Float32_D32_UInt32_S8_X24 }
枚举混合组件 { 混合红色, 混合绿色, 混合蓝色, 混合alpha }
枚举混合值 { 红色值, 绿色值, 蓝色值, alpha值, 零值, 一值 }
枚举目标 { 目标1D, 目标1D数组, 目标2D, 目标2D数组, 目标3D, …, 目标缓冲区 }
枚举纹理格式 { 没有格式, R8_UNorm, RG8_UNorm, RGB8_UNorm, RGBA8_UNorm, …, 亮度和alpha格式 }
枚举纹理单元重置 { 重置纹理单元, 不重置纹理单元 }
枚举封装模式 { 重复, 镜像重复, 边缘拉锯, 边缘克隆 }

公共函数

QOpenGLTexture(QOpenGLTexture::Target 目标)
QOpenGLTexture(const QImage &image, QOpenGLTexture::MipMapGeneration genMipMaps = GenerateMipMaps)
voidallocateStorage()
voidallocateStorage(QOpenGLTexture::PixelFormat 像素格式, QOpenGLTexture::PixelType 像素类型)
voidbind()
voidbind(uint 单元, QOpenGLTexture::TextureUnitReset reset = DontResetTextureUnit)
QColor边界颜色() const
void边界颜色(float *边界) const
void边界颜色(int *边界) const
void边界颜色(unsigned int *边界) const
QOpenGLTexture::ComparisonFunctioncomparisonFunction() const
QOpenGLTexture::ComparisonModecomparisonMode() const
boolcreate()
QOpenGLTexture *createTextureView(QOpenGLTexture::Target target, QOpenGLTexture::TextureFormat viewFormat, int minimumMipmapLevel, int maximumMipmapLevel, int minimumLayer, int maximumLayer) const
intdepth() const
QOpenGLTexture::DepthStencilModedepthStencilMode() const
voiddestroy()
intfaces() const
QOpenGLTexture::TextureFormatformat() const
voidgenerateMipMaps()
voidgenerateMipMaps(int baseLevel, bool resetBaseLevel = true)
intheight() const
boolisAutoMipMapGenerationEnabled() const
boolisBound() const
boolisBound(uint unit)
boolisCreated() const
boolisFixedSamplePositions() const
boolisStorageAllocated() const
boolisTextureView() const
intlayers() const
QPair<float, float>levelOfDetailRange() const
floatlevelofDetailBias() const
QOpenGLTexture::FiltermagnificationFilter() const
floatmaximumAnisotropy() const
floatmaximumLevelOfDetail() const
intmaximumMipLevels() const
QPair<QOpenGLTexture::Filter, QOpenGLTexture::Filter>minMagFilters() const
QOpenGLTexture::FilterminificationFilter() const
floatminimumLevelOfDetail() const
intmipBaseLevel() const
QPair<int, int>mipLevelRange() const
intmipLevels() const
intmipMaxLevel() const
voidrelease()
voidrelease(uint unit, QOpenGLTexture::TextureUnitReset reset = DontResetTextureUnit)
intsamples() const
voidsetAutoMipMapGenerationEnabled(bool enabled)
voidsetBorderColor(const QColor &color)
voidsetBorderColor(float r, float g, float b, float a)
voidsetBorderColor(int r, int g, int b, int a)
voidsetBorderColor(uint r, uint g, uint b, uint a)
voidsetComparisonFunction(QOpenGLTexture::ComparisonFunction function)
voidsetComparisonMode(QOpenGLTexture::ComparisonMode mode)
voidsetCompressedData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetCompressedData(int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetCompressedData(int mipLevel, int layer, int dataSize, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetCompressedData(int mipLevel, int dataSize, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetCompressedData(int dataSize, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetData(int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetData(int mipLevel, int layer, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetData(int mipLevel, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetData(QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, int mipLevel, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, int mipLevel, int layer, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, int mipLevel, int layer, QOpenGLTexture::CubeMapFace face, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, int mipLevel, int layer, QOpenGLTexture::CubeMapFace face, int layerCount, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)
voidsetData(const QImage &image, QOpenGLTexture::MipMapGeneration genMipMaps = GenerateMipMaps)
voidsetDepthStencilMode(QOpenGLTexture::DepthStencilMode mode)
voidsetFixedSamplePositions(bool fixed)
voidsetFormat(QOpenGLTexture::TextureFormat format)
voidsetLayers(int layers)
voidsetLevelOfDetailRange(float min, float max)
voidsetLevelofDetailBias(float bias)
voidsetMagnificationFilter(QOpenGLTexture::Filter filter)
voidsetMaximumAnisotropy(float anisotropy)
voidsetMaximumLevelOfDetail(浮点 value)
voidsetMinMagFilters(QOpenGLTexture::Filter minificationFilter, QOpenGLTexture::Filter magnificationFilter)
voidsetMinificationFilter(QOpenGLTexture::Filter filter)
voidsetMinimumLevelOfDetail(浮点 value)
voidsetMipBaseLevel(整型 baseLevel)
voidsetMipLevelRange(整型 baseLevel, 整型 maxLevel)
voidsetMipLevels(整型 levels)
voidsetMipMaxLevel(整型 maxLevel)
voidsetSamples(整型 samples)
voidsetSize(整型 width, 整型 height = 1, 整型 depth = 1)
voidsetSwizzleMask(QOpenGLTexture::SwizzleComponent component, QOpenGLTexture::SwizzleValue value)
voidsetSwizzleMask(QOpenGLTexture::SwizzleValue r, QOpenGLTexture::SwizzleValue g, QOpenGLTexture::SwizzleValue b, QOpenGLTexture::SwizzleValue a)
voidsetWrapMode(QOpenGLTexture::WrapMode mode)
voidsetWrapMode(QOpenGLTexture::CoordinateDirection direction, QOpenGLTexture::WrapMode mode)
QOpenGLTexture::SwizzleValueswizzleMask(QOpenGLTexture::SwizzleComponent component) const
QOpenGLTexture::Targettarget() const
GLuinttextureId() const
intwidth() const
QOpenGLTexture::WrapModewrapMode(QOpenGLTexture::CoordinateDirection direction) const

静态公共成员

GLuintboundTextureId(QOpenGLTexture::BindingTarget target)
GLuintboundTextureId(uint unit, QOpenGLTexture::BindingTarget target)
boolhasFeature(QOpenGLTexture::Feature feature)

详细描述

QOpenGLTexture使得与OpenGL纹理及其提供的各种功能和目标协同工作变得简单,这些功能和目标取决于您的OpenGL实现的功能。

QOpenGLTexture的典型使用模式是

  • 实例化对象,指定纹理目标类型
  • 设置影响存储要求的属性,例如存储格式、维度
  • 分配服务器端存储
  • 可选地上传像素数据
  • 可选地设置任何其他属性,例如过滤和边框选项
  • 使用纹理或向纹理渲染

在常见的仅将QImage作为纹理像素数据源的情况下,上述大多数步骤都是自动执行的。

// Prepare texture
QOpenGLTexture *texture = new QOpenGLTexture(QImage(fileName).mirrored());
texture->setMinificationFilter(QOpenGLTexture::LinearMipMapLinear);
texture->setMagnificationFilter(QOpenGLTexture::Linear);
...
// Render with texture
texture->bind();
glDrawArrays(...);

注意,QImage是垂直镜像的,以考虑到OpenGL和QImage在y轴方向上使用相反的方向。另一个选项是将您的纹理坐标进行变换。

成员类型文档

枚举 QOpenGLTexture::BindingTarget

此枚举定义了纹理单元的可能绑定目标。

常量描述
QOpenGLTexture::BindingTarget1D0x8068相当于 GL_TEXTURE_BINDING_1D
QOpenGLTexture::BindingTarget1DArray0x8C1C相当于 GL_TEXTURE_BINDING_1D_ARRAY
QOpenGLTexture::BindingTarget2D0x8069相当于 GL_TEXTURE_BINDING_2D
QOpenGLTexture::BindingTarget2DArray0x8C1D相当于 GL_TEXTURE_BINDING_2D_ARRAY
QOpenGLTexture::BindingTarget3D0x806A相当于 GL_TEXTURE_BINDING_3D
QOpenGLTexture::BindingTargetCubeMap0x8514相当于 GL_TEXTURE_BINDING_CUBE_MAP
QOpenGLTexture::BindingTargetCubeMapArray0x900A等同于 GL_TEXTURE_BINDING_CUBE_MAP_ARRAY
QOpenGLTexture::BindingTarget2DMultisample0x9104等同于 GL_TEXTURE_BINDING_2D_MULTISAMPLE
QOpenGLTexture::BindingTarget2DMultisampleArray0x9105等同于 GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY
QOpenGLTexture::BindingTargetRectangle0x84F6等同于 GL_TEXTURE_BINDING_RECTANGLE
QOpenGLTexture::BindingTargetBuffer0x8C2C等同于 GL_TEXTURE_BINDING_BUFFER

枚举 QOpenGLTexture::ComparisonFunction

此枚举指定当在此纹理上启用纹理比较时使用的比较操作符。

常量描述
QOpenGLTexture::CompareLessEqual0x0203等同于 GL_LEQUAL。
QOpenGLTexture::CompareGreaterEqual0x0206等同于 GL_GEQUAL。
QOpenGLTexture::CompareLess0x0201等同于 GL_LESS。
QOpenGLTexture::CompareGreater0x0204等同于 GL_GREATER。
QOpenGLTexture::CompareEqual0x0202等同于 GL_EQUAL。
QOpenGLTexture::CompareNotEqual0x0205等同于 GL_NOTEQUAL。
QOpenGLTexture::CompareAlways0x0207等同于 GL_ALWAYS。
QOpenGLTexture::CompareNever0x0200等同于 GL_NEVER。

枚举 QOpenGLTexture::ComparisonMode

此枚举指定在采样此纹理时使用的比较模式。

常量描述
QOpenGLTexture::CompareRefToTexture0x884E等同于 GL_COMPARE_REF_TO_TEXTURE。
QOpenGLTexture::CompareNone0x0000等同于 GL_NONE。

枚举 QOpenGLTexture::CoordinateDirection

此枚举定义可能的纹理坐标方向。

常量描述
QOpenGLTexture::DirectionS0x2802水平方向。等同于 GL_TEXTURE_WRAP_S
QOpenGLTexture::DirectionT0x2803垂直方向。等同于 GL_TEXTURE_WRAP_T
QOpenGLTexture::DirectionR0x8072深度方向。等同于 GL_TEXTURE_WRAP_R

枚举 QOpenGLTexture::CubeMapFace

此枚举定义可能的立方体贴图面。

常量描述
QOpenGLTexture::CubeMapPositiveX0x8515等同于 GL_TEXTURE_CUBE_MAP_POSITIVE_X
QOpenGLTexture::CubeMapNegativeX0x8516等同于 GL_TEXTURE_CUBE_MAP_NEGATIVE_X
QOpenGLTexture::CubeMapPositiveY0x8517等同于 GL_TEXTURE_CUBE_MAP_POSITIVE_Y
QOpenGLTexture::CubeMapNegativeY0x8518等同于 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
QOpenGLTexture::CubeMapPositiveZ0x8519等同于 GL_TEXTURE_CUBE_MAP_POSITIVE_Z
QOpenGLTexture::CubeMapNegativeZ0x851A等同于 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

枚举 QOpenGLTexture::DepthStencilMode

此枚举指定在采样纹理时访问深度/模板纹理的哪个组件。

常量描述
QOpenGLTexture::DepthMode0x1902等同于 GL_DEPTH_COMPONENT。
QOpenGLTexture::StencilMode0x1901等同于 GL_STENCIL_INDEX。

枚举 QOpenGLTexture::Feature
flags QOpenGLTexture::Features

此枚举定义可以检查的OpenGL纹理相关功能。

常量描述
QOpenGLTexture::ImmutableStorage0x00000001支持不可变纹理存储
QOpenGLTexture::ImmutableMultisampleStorage0x00000002支持带有多采样目标的不可变纹理存储
QOpenGLTexture::TextureRectangle0x00000004支持 GL_TEXTURE_RECTANGLE 目标
QOpenGLTexture::TextureArrays0x00000008支持具有数组层的纹理目标
QOpenGLTexture::Texture3D0x00000010支持3维纹理目标
QOpenGLTexture::TextureMultisample0x00000020支持具有多采样能力的纹理目标
QOpenGLTexture::TextureBuffer0x00000040支持使用OpenGL缓冲对象作为数据源的纹理
QOpenGLTexture::TextureCubeMapArrays0x00000080支持立方体贴图数组纹理目标
QOpenGLTexture::Swizzle0x00000100支持纹理分量混洗掩码
QOpenGLTexture::StencilTexturing0x00000200支持模板纹理(即在GLSL着色器中查找组合深度/模板格式纹理的深度或模板分量)
QOpenGLTexture::AnisotropicFiltering0x00000400支持各向异性纹理过滤
QOpenGLTexture::NPOTTextures0x00000800对非2的n次幂纹理的基本支持
QOpenGLTexture::NPOTTextureRepeat0x00001000对非2的n次幂纹理的完全支持,包括纹理重复模式
QOpenGLTexture::Texture1D0x00002000支持一维纹理目标
QOpenGLTexture::TextureComparisonOperators0x00004000支持纹理比较运算符
QOpenGLTexture::TextureMipMapLevel0x00008000支持设置基本和最大Mipmap级别

Features类型是一个为QFlags<Feature>的typedef。它存储了Feature值的OR组合。

enum QOpenGLTexture::Filter

此枚举定义了QOpenGLTexture对象的过滤参数。

常量描述
QOpenGLTexture::Nearest0x2600等同于GL_NEAREST
QOpenGLTexture::Linear0x2601等同于GL_LINEAR
QOpenGLTexture::NearestMipMapNearest0x2700等同于GL_NEAREST_MIPMAP_NEAREST
QOpenGLTexture::NearestMipMapLinear0x2702等同于GL_NEAREST_MIPMAP_LINEAR
QOpenGLTexture::LinearMipMapNearest0x2701等同于GL_LINEAR_MIPMAP_NEAREST
QOpenGLTexture::LinearMipMapLinear0x2703等同于GL_LINEAR_MIPMAP_LINEAR

enum QOpenGLTexture::MipMapGeneration

此枚举定义了控制Mipmap生成的选项。

常量描述
QOpenGLTexture::GenerateMipMaps0Mipmap应该生成
QOpenGLTexture::DontGenerateMipMaps1Mipmap不应该生成

enum QOpenGLTexture::PixelFormat

此枚举定义了像素传输操作的可用的客户端像素格式。

常量描述
QOpenGLTexture::NoSourceFormat0等同于GL_NONE
QOpenGLTexture::Red0x1903等同于GL_RED
QOpenGLTexture::RG0x8227等同于GL_RG
QOpenGLTexture::RGB0x1907等同于GL_RGB
QOpenGLTexture::BGR0x80E0等同于GL_BGR
QOpenGLTexture::RGBA0x1908等同于GL_RGBA
QOpenGLTexture::BGRA0x80E1等同于GL_BGRA
QOpenGLTexture::Red_Integer0x8D94等同于GL_RED_INTEGER
QOpenGLTexture::RG_Integer0x8228等同于GL_RG_INTEGER
QOpenGLTexture::RGB_Integer0x8D98等同于GL_RGB_INTEGER
QOpenGLTexture::BGR_Integer0x8D9A等同于GL_BGR_INTEGER
QOpenGLTexture::RGBA_Integer0x8D99等同于GL_RGBA_INTEGER
QOpenGLTexture::BGRA_Integer0x8D9B等同于GL_BGRA_INTEGER
QOpenGLTexture::Stencil0x1901等同于GL_STENCIL_INDEX. 自Qt 5.4引入
QOpenGLTexture::Depth0x1902等同于GL_DEPTH_COMPONENT
QOpenGLTexture::DepthStencil0x84F9等同于GL_DEPTH_STENCIL
QOpenGLTexture::Alpha0x1906等同于GL_ALPHA (仅OpenGL ES 2)
QOpenGLTexture::Luminance0x1909等同于GL_LUMINANCE (仅OpenGL ES 2)
QOpenGLTexture::LuminanceAlpha0x190A等效于 GL_LUMINANCE_ALPHA(OpenGL ES 2 仅限)

像素类型

此枚举定义了像素传输操作可能使用的像素数据类型

常量描述
QOpenGLTexture::没有像素类型0等同于GL_NONE
QOpenGLTexture::Int80x1400等效于 GL_BYTE
QOpenGLTexture::UInt80x1401等效于 GL_UNSIGNED_BYTE
QOpenGLTexture::Int160x1402等效于 GL_SHORT
QOpenGLTexture::UInt160x1403等效于 GL_UNSIGNED_SHORT
QOpenGLTexture::Int320x1404等效于 GL_INT
QOpenGLTexture::UInt320x1405等效于 GL_UNSIGNED_INT
QOpenGLTexture::Float160x140B等效于 GL_HALF_FLOAT
QOpenGLTexture::Float16OES0x8D61等效于 GL_HALF_FLOAT_OES
QOpenGLTexture::Float320x1406等效于 GL_FLOAT
QOpenGLTexture::UInt32_RGB9_E50x8C3E等效于 GL_UNSIGNED_INT_5_9_9_9_REV
QOpenGLTexture::UInt32_RG11B10F0x8C3B等效于 GL_UNSIGNED_INT_10F_11F_11F_REV
QOpenGLTexture::UInt8_RG3B20x8032等效于 GL_UNSIGNED_BYTE_3_3_2
QOpenGLTexture::UInt8_RG3B2_Rev0x8362等效于 GL_UNSIGNED_BYTE_2_3_3_REV
QOpenGLTexture::UInt16_RGB5A10x8034等效于 GL_UNSIGNED_SHORT_5_5_5_1
QOpenGLTexture::UInt16_RGB5A1_Rev0x8366等效于 GL_UNSIGNED_SHORT_1_5_5_5_REV
QOpenGLTexture::UInt16_R5G6B50x8363等效于 GL_UNSIGNED_SHORT_5_6_5
QOpenGLTexture::UInt16_R5G6B5_Rev0x8364等效于 GL_UNSIGNED_SHORT_5_6_5_REV
QOpenGLTexture::UInt16_RGBA40x8033等效于 GL_UNSIGNED_SHORT_4_4_4_4
QOpenGLTexture::UInt16_RGBA4_Rev0x8365等效于 GL_UNSIGNED_SHORT_4_4_4_4_REV
QOpenGLTexture::UInt32_RGBA80x8035等效于 GL_UNSIGNED_INT_8_8_8_8
QOpenGLTexture::UInt32_RGBA8_Rev0x8367等效于 GL_UNSIGNED_INT_8_8_8_8_REV
QOpenGLTexture::UInt32_RGB10A20x8036等效于 GL_UNSIGNED_INT_10_10_10_2
QOpenGLTexture::UInt32_RGB10A2_Rev0x8368等效于 GL_UNSIGNED_INT_2_10_10_10_REV
QOpenGLTexture::UInt32_D24S80x84FA等效于 GL_UNSIGNED_INT_24_8。自 Qt 5.4 介绍
QOpenGLTexture::Float32_D32_UInt32_S8_X240x8DAD等效于 GL_FLOAT_32_UNSIGNED_INT_24_8_REV。自 Qt 5.4 介绍

混色组件

此枚举定义了可以分配混色掩码的纹理颜色组件。

常量描述
QOpenGLTexture::SwizzleRed0x8E42红色组件。等效于 GL_TEXTURE_SWIZZLE_R
QOpenGLTexture::SwizzleGreen0x8E43绿色组件。等效于 GL_TEXTURE_SWIZZLE_G
QOpenGLTexture::SwizzleBlue0x8E44蓝色组件。等效于 GL_TEXTURE_SWIZZLE_B
QOpenGLTexture::SwizzleAlpha0x8E45alpha组件。等效于 GL_TEXTURE_SWIZZLE_A

混色值

此枚举定义了纹理混颜色可能的掩码值。

常量描述
QOpenGLTexture::RedValue0x1903将组件映射到红色通道。等效于 GL_RED
QOpenGLTexture::GreenValue0x1904将组件映射到绿色通道。等效于 GL_GREEN
QOpenGLTexture::BlueValue0x1905将组件映射到蓝色通道。等效于 GL_BLUE
QOpenGLTexture::AlphaValue0x1906将组件映射到alpha通道。等效于 GL_ALPHA
QOpenGLTexture::ZeroValue0将组件映射到固定值为0。等效于 GL_ZERO
QOpenGLTexture::OneValue1将组件映射到固定值为1。等效于 GL_ONE

目标

此枚举定义了一个 QOpenGLTexture 对象的纹理目标。有关创建数组纹理的更多信息,请参见 数组纹理

常量描述
QOpenGLTexture::Target1D0x0DE0一维纹理。等同于GL_TEXTURE_1D。
QOpenGLTexture::Target1DArray0x8C18一维纹理数组。等同于GL_TEXTURE_1D_ARRAY。
QOpenGLTexture::Target2D0x0DE1二维纹理。等同于GL_TEXTURE_2D。
QOpenGLTexture::Target2DArray0x8C1A二维纹理数组。等同于GL_TEXTURE_2D_ARRAY。
QOpenGLTexture::Target3D0x806F三维纹理。等同于GL_TEXTURE_3D。
QOpenGLTexture::TargetCubeMap0x8513立方体贴图。等同于GL_TEXTURE_CUBE_MAP。
QOpenGLTexture::TargetCubeMapArray0x9009立方体贴图数组。等同于GL_TEXTURE_CUBE_MAP_ARRAY。
QOpenGLTexture::Target2DMultisample0x9100支持多采样的二维纹理。等同于GL_TEXTURE_2D_MULTISAMPLE。
QOpenGLTexture::Target2DMultisampleArray0x9102支持多采样的二维纹理数组。等同于GL_TEXTURE_2D_MULTISAMPLE_ARRAY。
QOpenGLTexture::TargetRectangle0x84F5矩形二维纹理。等同于GL_TEXTURE_RECTANGLE。
QOpenGLTexture::TargetBuffer0x8C2A由OpenGL缓冲区对象中的数据构成的纹理。等同于GL_TEXTURE_BUFFER。

枚举 QOpenGLTexture::TextureFormat

本枚举定义了可能的纹理格式。根据您的OpenGL实现,可能只支持这些格式的子集。

常量描述
QOpenGLTexture::NoFormat0等同于GL_NONE
QOpenGLTexture::R8_UNorm0x8229等同于GL_R8
QOpenGLTexture::RG8_UNorm0x822B等同于GL_RG8
QOpenGLTexture::RGB8_UNorm0x8051等同于GL_RGB8
QOpenGLTexture::RGBA8_UNorm0x8058等同于GL_RGBA8
QOpenGLTexture::R16_UNorm0x822A等同于GL_R16
QOpenGLTexture::RG16_UNorm0x822C等同于GL_RG16
QOpenGLTexture::RGB16_UNorm0x8054等同于GL_RGB16
QOpenGLTexture::RGBA16_UNorm0x805B等同于GL_RGBA16
QOpenGLTexture::R8_SNorm0x8F94等同于GL_R8_SNORM
QOpenGLTexture::RG8_SNorm0x8F95等同于GL_RG8_SNORM
QOpenGLTexture::RGB8_SNorm0x8F96等同于GL_RGB8_SNORM
QOpenGLTexture::RGBA8_SNorm0x8F97等同于GL_RGBA8_SNORM
QOpenGLTexture::R16_SNorm0x8F98等同于GL_R16_SNORM
QOpenGLTexture::RG16_SNorm0x8F99等同于GL_RG16_SNORM
QOpenGLTexture::RGB16_SNorm0x8F9A等同于GL_RGB16_SNORM
QOpenGLTexture::RGBA16_SNorm0x8F9B等同于GL_RGBA16_SNORM
QOpenGLTexture::R8U0x8232等同于GL_R8UI
QOpenGLTexture::RG8U0x8238等同于GL_RG8UI
QOpenGLTexture::RGB8U0x8D7D等同于GL_RGB8UI
QOpenGLTexture::RGBA8U0x8D7C等同于GL_RGBA8UI
QOpenGLTexture::R16U0x8234等同于GL_R16UI
QOpenGLTexture::RG16U0x823A等同于GL_RG16UI
QOpenGLTexture::RGB16U0x8D77等同于GL_RGB16UI
QOpenGLTexture::RGBA16U0x8D76等同于GL_RGBA16UI
QOpenGLTexture::R32U0x8236等同于GL_R32UI
QOpenGLTexture::RG32U0x823C等同于GL_RG32UI
QOpenGLTexture::RGB32U0x8D71等同于GL_RGB32UI
QOpenGLTexture::RGBA32U0x8D70等同于GL_RGBA32UI
QOpenGLTexture::R8I0x8231等同于GL_R8I
QOpenGLTexture::RG8I0x8237等同于GL_RG8I
QOpenGLTexture::RGB8I0x8D8F等同于GL_RGB8I
QOpenGLTexture::RGBA8I0x8D8E等同于GL_RGBA8I
QOpenGLTexture::R16I0x8233等同于GL_R16I
QOpenGLTexture::RG16I0x8239等同于GL_RG16I
QOpenGLTexture::RGB16I0x8D89相当于 GL_RGB16I
QOpenGLTexture::RGBA16I0x8D88相当于 GL_RGBA16I
QOpenGLTexture::R32I0x8235相当于 GL_R32I
QOpenGLTexture::RG32I0x823B相当于 GL_RG32I
QOpenGLTexture::RGB32I0x8D83相当于 GL_RGB32I
QOpenGLTexture::RGBA32I0x8D82相当于 GL_RGBA32I
QOpenGLTexture::R16F0x822D相当于 GL_R16F
QOpenGLTexture::RG16F0x822F相当于 GL_RG16F
QOpenGLTexture::RGB16F0x881B相当于 GL_RGB16F
QOpenGLTexture::RGBA16F0x881A相当于 GL_RGBA16F
QOpenGLTexture::R32F0x822E相当于 GL_R32F
QOpenGLTexture::RG32F0x8230相当于 GL_RG32F
QOpenGLTexture::RGB32F0x8815相当于 GL_RGB32F
QOpenGLTexture::RGBA32F0x8814相当于 GL_RGBA32F
QOpenGLTexture::RGB9E50x8C3D相当于 GL_RGB9_E5
QOpenGLTexture::RG11B10F0x8C3A相当于 GL_R11F_G11F_B10F
QOpenGLTexture::RG3B20x2A10相当于 GL_R3_G3_B2
QOpenGLTexture::R5G6B50x8D62相当于 GL_RGB565
QOpenGLTexture::RGB5A10x8057相当于 GL_RGB5_A1
QOpenGLTexture::RGBA40x8056相当于 GL_RGBA4
QOpenGLTexture::RGB10A20x906F相当于 GL_RGB10_A2UI
QOpenGLTexture::D160x81A5相当于 GL_DEPTH_COMPONENT16
QOpenGLTexture::D240x81A6相当于 GL_DEPTH_COMPONENT24
QOpenGLTexture::D24S80x88F0相当于 GL_DEPTH24_STENCIL8
QOpenGLTexture::D320x81A7相当于 GL_DEPTH_COMPONENT32
QOpenGLTexture::D32F0x8CAC相当于 GL_DEPTH_COMPONENT32F
QOpenGLTexture::D32FS8X240x8CAD相当于 GL_DEPTH32F_STENCIL8
QOpenGLTexture::S80x8D48相当于 GL_STENCIL_INDEX8。Qt 5.4 中引入。
QOpenGLTexture::RGB_DXT10x83F0相当于 GL_COMPRESSED_RGB_S3TC_DXT1_EXT
QOpenGLTexture::RGBA_DXT10x83F1相当于 GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
QOpenGLTexture::RGBA_DXT30x83F2相当于 GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
QOpenGLTexture::RGBA_DXT50x83F3相当于 GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
QOpenGLTexture::R_ATI1N_UNorm0x8DBB相当于 GL_COMPRESSED_RED_RGTC1
QOpenGLTexture::R_ATI1N_SNorm0x8DBC相当于 GL_COMPRESSED_SIGNED_RED_RGTC1
QOpenGLTexture::RG_ATI2N_UNorm0x8DBD相当于 GL_COMPRESSED_RG_RGTC2
QOpenGLTexture::RG_ATI2N_SNorm0x8DBE相当于 GL_COMPRESSED_SIGNED_RG_RGTC2
QOpenGLTexture::RGB_BP_UNSIGNED_FLOAT0x8E8F相当于 GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB
QOpenGLTexture::RGB_BP_SIGNED_FLOAT0x8E8E相当于 GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB
QOpenGLTexture::RGB_BP_UNorm0x8E8C相当于 GL_COMPRESSED_RGBA_BPTC_UNORM_ARB
QOpenGLTexture::R11_EAC_UNorm0x9270相当于 GL_COMPRESSED_R11_EAC
QOpenGLTexture::R11_EAC_SNorm0x9271相当于 GL_COMPRESSED_SIGNED_R11_EAC
QOpenGLTexture::RG11_EAC_UNorm0x9272相当于 GL_COMPRESSED_RG11_EAC
QOpenGLTexture::RG11_EAC_SNorm0x9273相当于 GL_COMPRESSED_SIGNED_RG11_EAC
QOpenGLTexture::RGB8_ETC20x9274相当于 GL_COMPRESSED_RGB8_ETC2
QOpenGLTexture::SRGB8_ETC20x9275相当于 GL_COMPRESSED_SRGB8_ETC2
QOpenGLTexture::RGB8_PunchThrough_Alpha1_ETC20x9276相当于 GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
QOpenGLTexture::SRGB8_PunchThrough_Alpha1_ETC20x9277相当于 GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
QOpenGLTexture::RGBA8_ETC2_EAC0x9278相当于 GL_COMPRESSED_RGBA8_ETC2_EAC
QOpenGLTexture::SRGB8_Alpha8_ETC2_EAC0x9279相当于 GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
QOpenGLTexture::RGB8_ETC10x8D64相当于 GL_ETC1_RGB8_OES
QOpenGLTexture::RGBA_ASTC_4x40x93B0等同于GL_COMPRESSED_RGBA_ASTC_4x4_KHR
QOpenGLTexture::RGBA_ASTC_5x40x93B1等同于GL_COMPRESSED_RGBA_ASTC_5x4_KHR
QOpenGLTexture::RGBA_ASTC_5x50x93B2等同于GL_COMPRESSED_RGBA_ASTC_5x5_KHR
QOpenGLTexture::RGBA_ASTC_6x50x93B3等同于GL_COMPRESSED_RGBA_ASTC_6x5_KHR
QOpenGLTexture::RGBA_ASTC_6x60x93B4等同于GL_COMPRESSED_RGBA_ASTC_6x6_KHR
QOpenGLTexture::RGBA_ASTC_8x50x93B5等同于GL_COMPRESSED_RGBA_ASTC_8x5_KHR
QOpenGLTexture::RGBA_ASTC_8x60x93B6等同于GL_COMPRESSED_RGBA_ASTC_8x6_KHR
QOpenGLTexture::RGBA_ASTC_8x80x93B7等同于GL_COMPRESSED_RGBA_ASTC_8x8_KHR
QOpenGLTexture::RGBA_ASTC_10x50x93B8等同于GL_COMPRESSED_RGBA_ASTC_10x5_KHR
QOpenGLTexture::RGBA_ASTC_10x60x93B9等同于GL_COMPRESSED_RGBA_ASTC_10x6_KHR
QOpenGLTexture::RGBA_ASTC_10x80x93BA等同于GL_COMPRESSED_RGBA_ASTC_10x8_KHR
QOpenGLTexture::RGBA_ASTC_10x100x93BB等同于GL_COMPRESSED_RGBA_ASTC_10x10_KHR
QOpenGLTexture::RGBA_ASTC_12x100x93BC等同于GL_COMPRESSED_RGBA_ASTC_12x10_KHR
QOpenGLTexture::RGBA_ASTC_12x120x93BD等同于GL_COMPRESSED_RGBA_ASTC_12x12_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_4x40x93D0等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_5x40x93D1等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_5x50x93D2等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_6x50x93D3等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_6x60x93D4等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_8x50x93D5等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_8x60x93D6等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_8x80x93D7等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_10x50x93D8等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_10x60x93D9等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_10x80x93DA等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_10x100x93DB等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_12x100x93DC等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
QOpenGLTexture::SRGB8_Alpha8_ASTC_12x120x93DD等同于GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
QOpenGLTexture::SRGB80x8C41等同于GL_SRGB8
QOpenGLTexture::SRGB8_Alpha80x8C43等同于GL_SRGB8_ALPHA8
QOpenGLTexture::SRGB_DXT10x8C4C等同于GL_COMPRESSED_SRGB_S3TC_DXT1_EXT
QOpenGLTexture::SRGB_Alpha_DXT10x8C4D等同于GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT
QOpenGLTexture::SRGB_Alpha_DXT30x8C4E等同于GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT
QOpenGLTexture::SRGB_Alpha_DXT50x8C4F等同于GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
QOpenGLTexture::SRGB_BP_UNorm0x8E8D等同于GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB
QOpenGLTexture::DepthFormat0x1902等同于GL_DEPTH_COMPONENT (仅限OpenGL ES 3或带OES_depth_texture的ES 2)
QOpenGLTexture::AlphaFormat0x1906等同于GL_ALPHA (仅OpenGL ES 2)
QOpenGLTexture::RGBFormat0x1907等同于GL_RGB (仅限OpenGL ES 2)
QOpenGLTexture::RGBAFormat0x1908等同于GL_RGBA (仅限OpenGL ES 2)
QOpenGLTexture::LuminanceFormat0x1909等同于GL_LUMINANCE (仅OpenGL ES 2)
QOpenGLTexture::LuminanceAlphaFormat0x190A等效于 GL_LUMINANCE_ALPHA(OpenGL ES 2 仅限)

枚举QOpenGLTexture::TextureUnitReset

此枚举定义了控制纹理单元激活的选项。

常量描述
QOpenGLTexture::ResetTextureUnit0前激活的纹理单元将被重置
QOpenGLTexture::DontResetTextureUnit1前激活的纹理单元不会被重置

枚举QOpenGLTexture::WrapMode

此枚举定义了可能的纹理坐标包裹模式。

常量描述
QOpenGLTexture::Repeat0x2901纹理坐标被重复。等同于 GL_REPEAT。
QOpenGLTexture::MirroredRepeat0x8370纹理坐标在0和1之间进行镜像。等同于 GL_MIRRORED_REPEAT。
QOpenGLTexture::ClampToEdge0x812F将纹理坐标夹在[0,1]之间。等同于 GL_CLAMP_TO_EDGE。
QOpenGLTexture::ClampToBorder0x812D与ClampToEdge相似,但此外,将0和1处的样本与固定的边界颜色混合。等同于 GL_CLAMP_TO_BORDER。

成员函数文档

[显式] QOpenGLTexture::QOpenGLTexture(QOpenGLTexture::Target target)

创建一个QOpenGLTexture对象,该对象可以稍后绑定到target

这不会创建底层的OpenGL纹理对象。因此,使用此构造函数的构造不需要有效的当前OpenGL上下文。

[显式] QOpenGLTexture::QOpenGLTexture(const QImage &image, QOpenGLTexture::MipMapGeneration genMipMaps = GenerateMipMaps)

创建一个QOpenGLTexture对象,该对象可以稍后绑定到2D纹理目标并包含image中包含的像素数据。如果希望生成一系列的mipmaps,则将genMipMaps设置为true(这是默认值)。

这会创建底层的OpenGL纹理对象。因此,需要使用有效的当前OpenGL上下文来构造此构造函数。

注意:image会自动转换为QImage::Format_RGBA8888,这可能对具有不同格式的大型图像的性能产生影响。

void QOpenGLTexture::allocateStorage()

为这个纹理对象分配服务器端存储,考虑格式、尺寸、mipmap级别、数组层和立方体贴图面。

一旦分配了存储后,就不再可能更改这些属性。

如果受支持,QOpenGLTexture会使用不可变纹理存储。

一旦为纹理分配了存储,就可以通过

注意:如果不可变纹理存储不可用,则将使用默认的像素格式和像素类型创建可变存储。您可以使用其他allocateStorage()重载来指定在分配可变存储时要使用的精确像素格式和像素类型;这在某些OpenGL ES实现(特别是OpenGL ES 2)中特别有用,因为在分配时使用的像素格式和像素类型必须与传递给任何后续setData()调用的格式和类型完全匹配。

另请参阅isStorageAllocated()和setData()。

void QOpenGLTexture::allocateStorage(QOpenGLTexture::PixelFormat pixelFormat, QOpenGLTexture::PixelType pixelType)

为这个纹理对象分配服务器端存储,考虑格式、尺寸、mipmap级别、数组层和立方体贴图面。

一旦分配了存储后,就不再可能更改这些属性。

如果支持 QOpenGLTexture,则将使用不可变纹理存储。但是,如果不可变纹理存储不可用,则将使用指定的 pixelFormatpixelType 来分配可变存储;请注意,在某些 OpenGL 实现中(特别是,OpenGL ES 2)它们必须与传递给后续 setData() 调用的格式和类型完美匹配。

一旦为纹理分配了存储,就可以通过

另请参阅isStorageAllocated()和setData()。

void QOpenGLTexture::bind()

将此纹理绑定到当前活动的纹理单元以进行渲染。请注意,您不需要绑定 QOpenGLTexture 对象来修改它们,因为实现会在存在的情况下使用 EXT_direct_state_access 扩展,并在不存在的地方模拟它。

另请参阅 release

void QOpenGLTexture::bind(uint unit, QOpenGLTexture::TextureUnitReset reset = DontResetTextureUnit)

将此纹理绑定到纹理单元 unit 以进行渲染。请注意,您不需要绑定 QOpenGLTexture 对象来修改它们,因为实现会在存在的情况下使用 EXT_direct_state_access 扩展,并在不存在的地方模拟它。

如果参数 resettrue,则此函数将恢复活动单元为入口时活动的纹理单元。

另请参阅 release

QColor QOpenGLTexture::borderColor() const

返回此纹理的边框颜色。

另请参阅 setBorderColor

void QOpenGLTexture::borderColor(float *border) const

将纹理边框颜色写入由 border 指向的数组的第一个四个元素中。

另请参阅 setBorderColor

void QOpenGLTexture::borderColor(int *border) const

将纹理边框颜色写入由 border 指向的数组的第一个四个元素中。

这是一个重载函数。

void QOpenGLTexture::borderColor(unsigned int *border) const

将纹理边框颜色写入由 border 指向的数组的第一个四个元素中。

这是一个重载函数。

[静态] GLuint QOpenGLTexture::boundTextureId(QOpenGLTexture::BindingTarget target)

返回绑定到当前活动纹理单元 target 的纹理的 textureId

[静态] GLuint QOpenGLTexture::boundTextureId(uint unit, QOpenGLTexture::BindingTarget target)

返回绑定到纹理单元 unittarget 的纹理的 textureId

QOpenGLTexture::ComparisonFunction QOpenGLTexture::comparisonFunction() const

返回设置在此纹理上的纹理比较操作符。默认情况下,纹理具有 CompareLessEqual 比较函数。

另请参阅 setComparisonFunction

QOpenGLTexture::ComparisonMode QOpenGLTexture::comparisonMode() const

返回在此纹理上设置的纹理比较模式。默认情况下,纹理具有CompareNone比较模式(即禁用比较)。

另请参阅setComparisonMode

bool QOpenGLTexture::create()

创建底层OpenGL纹理对象。这需要当前的OpenGL有效上下文。如果纹理对象已经存在,此函数将不执行任何操作。

一旦纹理对象创建成功,您可以从textureId()函数获取对象名称。这可能是有用的,如果您希望对此纹理进行一些原始的OpenGL调用。

通常不需要直接调用此函数,因为所有设置纹理对象属性的功能都会在您的情况下隐式调用create()。

如果创建成功,则返回true,否则返回false

另请参阅destroy (),isCreated ()和textureId ()。

QOpenGLTexture *QOpenGLTexture::createTextureView(QOpenGLTexture::Target targetQOpenGLTexture::TextureFormat viewFormatint minimumMipmapLevelint maximumMipmapLevelint minimumLayerint maximumLayer) const

尝试在此纹理上创建一个纹理视图。纹理视图在某种程度上类似于SQL中的视图,因为它呈现了原始数据的有限或重新解释的视图。纹理视图不会在服务器端分配更多存储,而是依赖于源纹理的存储缓冲区。

纹理视图仅在使用不可变存储时可用。有关纹理视图的更多信息,请参阅http://www.opengl.org/wiki/Texture_Storage#Texture_views。

参数target指定用于视图的目标。可以使用某些目标,具体取决于原始目标的类型。例如,可以将Target1DArray纹理的视图指定为Target1DArrayTarget1D,但对于后者,由最小层和最大层指定的数组层数必须正好为1。

viewFormat也适用类似的约束。有关详细信息,请参阅上面的链接和规范。

参数minimumMipmapLevelmaximumMipmapLevelminimumLayermaximumLayer用于限制纹理视图可访问的纹理部分。

如果创建纹理视图失败,则此函数将返回0。如果函数成功,则返回对新QOpenGLTexture对象的指针,该对象从其isTextureView ()函数返回true

另请参阅isTextureView ()。

int QOpenGLTexture::depth() const

返回3D纹理的深度。

另请参阅width (),height ()和setSize ()。

QOpenGLTexture::DepthStencilMode QOpenGLTexture::depthStencilMode() const

返回使用组合深度/模板格式的纹理的深度/模板模式。

另请参阅 setDepthStencilMode().

void QOpenGLTexture::destroy()

销毁底层的OpenGL纹理对象。这需要一个当前的、有效的OpenGL上下文。

另请参阅 create(),isCreated() 和 textureId().

int QOpenGLTexture::faces() const

返回此纹理的面的数量。对于立方体贴图和立方体贴图数组目标,这将为6。

对于非立方体贴图类型的目标,这将返回1。

QOpenGLTexture::TextureFormat QOpenGLTexture::format() const

返回此纹理对象的格式。

另请参阅 setFormat().

void QOpenGLTexture::generateMipMaps()

从mipmap级别0为纹理对象生成mipmap。如果您使用的是需要mipmap的纹理目标和建议,且已禁用自动mipmap生成,则需要调用此函数或重载该函数以创建mipmap链。

注意: OpenGL ES不支持压缩纹理的mipmap生成。

另请参阅 setAutoMipMapGenerationEnabled(),setMipLevels() 和 mipLevels().

void QOpenGLTexture::generateMipMaps(int baseLevel, bool resetBaseLevel = true)

从mipmap级别baseLevel为纹理对象生成mipmap。如果您使用的是需要mipmap的纹理目标和建议,且已禁用自动mipmap生成,则需要调用此函数或重载该函数以创建mipmap链。

通过将mipmap基础级别设置为baseLevel并生成mipmap链来达到以上baseLevel的mipmap生成。如果resetBaseLeveltrue,则纹理的基础级别将重置为其之前的值。

另请参阅 setAutoMipMapGenerationEnabled(),setMipLevels() 和 mipLevels().

[静态] bool QOpenGLTexture::hasFeature(QOpenGLTexture::Feature feature)

如果您的OpenGL实现和版本支持纹理功能feature,则返回true

int QOpenGLTexture::height() const

返回2D或3D纹理的高度。

另请参阅 width(),depth() 和 setSize().

bool QOpenGLTexture::isAutoMipMapGenerationEnabled() const

返回是否启用了此纹理对象的自动mipmap生成。

另请参阅 setAutoMipMapGenerationEnabled() 和 generateMipMaps().

bool QOpenGLTexture::isBound() const

如果此纹理被绑定到当前活动纹理单元的相关目标,则返回true

另请参阅 bind() 和 release().

bool QOpenGLTexture::isBound(uint unit)

如果此纹理已绑定到纹理单元 unit 的相应目标,则返回 true

另请参阅 bind() 和 release().

bool QOpenGLTexture::isCreated() const

如果底层OpenGL纹理对象已被创建,则返回 true

另请参阅 create(),destroy() 和 textureId

bool QOpenGLTexture::isFixedSamplePositions() const

返回此纹理是否使用固定模式的多样本样本。如果尚未为此纹理分配存储空间,则此函数返回请求的固定样本位置设置。

对于不支持多采样的纹理目标,将返回 true

另请参阅 setFixedSamplePositions() 和 isStorageAllocated

bool QOpenGLTexture::isStorageAllocated() const

如果为该纹理分配了服务器端存储,则返回 true

一旦分配了存储,就无法更改纹理格式、维度、多级渐远纹理级别和数组层。

另请参阅 allocateStoragesetSizesetMipLevelssetLayerssetFormat

bool QOpenGLTexture::isTextureView() const

如果此纹理对象实际上是对其他纹理对象的视图,则返回 true

另请参阅 createTextureView

int QOpenGLTexture::layers() const

返回此纹理的数组层数。如果尚未为此纹理分配存储空间,则此函数返回请求的数组层数。

不支持数组层的纹理目标将返回 1。

另请参阅 setLayersisStorageAllocated

QPair<float, float> QOpenGLTexture::levelOfDetailRange() const

返回最小和最大细节级别参数。

另请参阅 setLevelOfDetailRangeminimumLevelOfDetailmaximumLevelOfDetail

float QOpenGLTexture::levelofDetailBias() const

返回细节级别偏差参数。

另请参阅 setLevelofDetailBias

QOpenGLTexture::Filter QOpenGLTexture::magnificationFilter() const

返回放大滤波器。

另请参阅setMagnificationFilter

float QOpenGLTexture::maximumAnisotropy() const

返回在执行纹理查找时要考虑的最大各向异性级别。这需要GL_EXT_texture_filter_anisotropic扩展。

另请参阅setMaximumAnisotropy

float QOpenGLTexture::maximumLevelOfDetail() const

返回最大细节级别参数。

另请参阅setMaximumLevelOfDetailminimumLevelOfDetaillevelOfDetailRange

int QOpenGLTexture::maximumMipLevels() const

返回给定当前尺寸情况下,此纹理可以具有的最大米普级别数量。

另请参阅setMipLevelsmipLevelssetSize

QPair<QOpenGLTexture::Filter, QOpenGLTexture::Filter> QOpenGLTexture::minMagFilters() const

返回当前的最小化和放大过滤器。

另请参阅setMinMagFilters

QOpenGLTexture::Filter QOpenGLTexture::minificationFilter() const

返回最小化过滤器。

另请参阅setMinificationFilter

float QOpenGLTexture::minimumLevelOfDetail() const

返回最小细节级别参数。

另请参阅setMinimumLevelOfDetailmaximumLevelOfDetaillevelOfDetailRange

int QOpenGLTexture::mipBaseLevel() const

返回用于所有使用此纹理的纹理查找的米普基本级别。默认值为0。

另请参阅setMipBaseLevelmipMaxLevelmipLevelRange

QPair<int, int> QOpenGLTexture::mipLevelRange() const

返回可用于使用此纹理进行纹理查找的米プ级别范围。

另请参阅setMipLevelRangemipBaseLevelmipMaxLevel

int QOpenGLTexture::mipLevels() const

返回此纹理的米普级别数。如果在存储未分配给此纹理之前,它返回请求的米普级别数。

另请参阅setMipLevelsmaximumMipLevelsisStorageAllocated

int QOpenGLTexture::mipMaxLevel() const

返回所有使用此纹理进行纹理查找的米普最大级别。

另请参阅setMipMaxLevelmipBaseLevelmipLevelRange

void QOpenGLTexture::release()

从当前活动的纹理单元取消绑定这个纹理。

另请参阅 bind()。

void QOpenGLTexture::release(uint unit, QOpenGLTexture::TextureUnitReset reset = DontResetTextureUnit)

从纹理单元 unit 取消绑定这个纹理。

如果参数 resettrue,则此函数将恢复活动单元为入口时活动的纹理单元。

int QOpenGLTexture::samples() const

返回此纹理的多样本样本点数。如果尚未为该纹理分配存储空间,则此函数返回请求的样本数。

对于不支持多样本的纹理目标,此值将为 0。

另请参阅 setSamples() 和 isStorageAllocated()。

void QOpenGLTexture::setAutoMipMapGenerationEnabled(bool enabled)

如果 enabledtrue,则启用自动生成 mipmap,以便在通过 setData() 设置级别 0 mipmap 数据时触发。

默认情况下,自动 mipmap 生成已启用。

注意:Mipmap 生成不受 OpenGL ES 2.0 压缩纹理的支持。

另请参阅 isAutoMipMapGenerationEnabled() 和 generateMipMaps()。

void QOpenGLTexture::setBorderColor(const QColor &color)

将纹理的边界颜色设置为 color

注意:此函数对 Mac 和为 OpenGL ES 2 编译的 Qt 没有影响。

另请参阅 borderColor()。

void QOpenGLTexture::setBorderColor(float r, float g, float b, float a)

将红色设置为 r,绿色设置为 g,蓝色设置为 b,并将 alpha 值设置为 a

这是一个重载函数。

void QOpenGLTexture::setBorderColor(int r, int g, int b, int a)

将红色设置为 r,绿色设置为 g,蓝色设置为 b,并将 alpha 值设置为 a

这是一个重载函数。

void QOpenGLTexture::setBorderColor(uint r, uint g, uint b, uint a)

将红色设置为 r,绿色设置为 g,蓝色设置为 b,并将 alpha 值设置为 a

这是一个重载函数。

void QOpenGLTexture::setComparisonFunction(QOpenGLTexture::ComparisonFunction function)

将此纹理的纹理比较函数设置为 function。纹理比较函数在深度纹理采样时由阴影采样器使用。

另请参阅 comparisonFunction()。

void QOpenGLTexture::setComparisonMode(QOpenGLTexture::ComparisonMode mode)

将此纹理的比较模式设置为mode。纹理比较模式在阴影采样器采样深度纹理时使用。

另请参阅comparisonMode

void QOpenGLTexture::setCompressedData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

将压缩的像素数据上传到mipLevel、数组和cubeFace。可以使用options控制像素传输。参数dataSize应指定由data指向的数据的大小。

如果不使用压缩格式(),则应使用setData()而不是此函数。

void QOpenGLTexture::setCompressedData(int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

参数layerCount是指在此调用中上传/填充的纹理数组中层的数量。

void QOpenGLTexture::setCompressedData(int mipLevel, int layer, int dataSize, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

void QOpenGLTexture::setCompressedData(int mipLevel, int dataSize, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

void QOpenGLTexture::setCompressedData(int dataSize, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

void QOpenGLTexture::setData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

上传该纹理对象

mipLevel

、数组

layer

cubeFace

的像素数据。在上传像素数据之前,必须已分配存储空间。一些

setData()

的重载会在设置适当的维度、米级数和数组层后为您分配存储空间,如果它们有足够的信息这样做的话。这将在函数文档中注明。

data

指针指向的像素数据结构由

sourceFormat

sourceType

指定。像素数据上传可以选择由

options

控制。

如果使用压缩的

format()

,则应使用

setCompressedData()

而不是此函数。

另请参阅 setCompressedData()。

void QOpenGLTexture::setData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

参数layerCount是指在此调用中上传/填充的纹理数组中层的数量。

void QOpenGLTexture::setData(int mipLevel, int layer, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

void QOpenGLTexture::setData(int mipLevel, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

void QOpenGLTexture::setData(QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

void QOpenGLTexture::setData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

此重载用于更新纹理的一部分。参数xOffsetyOffsetzOffset指定纹理中的纹理元素偏移量。参数widthheightdepth指定子图像的维度。

data

指针指向的像素数据结构由

sourceFormat

sourceType

指定。像素数据上传可以选择由

options

控制。

void QOpenGLTexture::setData(int xCos, int yCos, int zCos, int width, int height, int depth, int mipLevel, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

此重载用于更新纹理的一部分。参数 xCosyCoszCos 指定纹理中的texel偏移量。参数 widthheightdepth 指定子图像的尺寸。我们想要更新的子图像的mip级别通过 mipLevel 指定。

data

指针指向的像素数据结构由

sourceFormat

sourceType

指定。像素数据上传可以选择由

options

控制。

void QOpenGLTexture::setData(int xCos, int yCos, int zCos, int width, int height, int depth, int mipLevel, int layer, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

此重载用于更新纹理的一部分。参数 xCosyCoszCos 指定纹理中的texel偏移量。参数 widthheightdepth 指定子图像的尺寸。我们想要更新的子图像的mip级别以及层通过 mipLevellayer 指定。

data

指针指向的像素数据结构由

sourceFormat

sourceType

指定。像素数据上传可以选择由

options

控制。

void QOpenGLTexture::setData(int xCos, int yCos, int zCos, int width, int height, int depth, int mipLevel, int layer, QOpenGLTexture::CubeMapFace face, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

此重载用于更新纹理的一部分。参数 xCosyCoszCos 指定纹理中的texel偏移量。参数 widthheightdepth 指定子图像的尺寸。我们想要更新的子图像的mip级别、层和立方体贴图的面对通过 mipLevellayerface 指定。

data

指针指向的像素数据结构由

sourceFormat

sourceType

指定。像素数据上传可以选择由

options

控制。

void QOpenGLTexture::setData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, int mipLevel, int layer, QOpenGLTexture::CubeMapFace face, int layerCount, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options = nullptr)

这是一个重载函数。

此重载用于更新纹理的一部分。参数 xOffsetyOffsetzOffset 指定纹理中的像素偏移量。参数 widthheightdepth 指定子图像的尺寸。通过 mipLevellayerfacelayerCount 指定要更新的子图像的 Mip 级别、起始层、立方体贴图面和层数。

data

指针指向的像素数据结构由

sourceFormat

sourceType

指定。像素数据上传可以选择由

options

控制。

void QOpenGLTexture::setData(const QImage &image, QOpenGLTexture::MipMapGeneration genMipMaps = GenerateMipMaps)

setData() 的此重载会为您分配存储空间。像素数据包含在 image 中。默认情况下会生成 Mip 级别。将 genMipMaps 设置为 DontGenerateMipMaps 以关闭 Mip 级别生成。

注意:image会自动转换为QImage::Format_RGBA8888,这可能对具有不同格式的大型图像的性能产生影响。

这是一个重载函数。

void QOpenGLTexture::setDepthStencilMode(QOpenGLTexture::DepthStencilMode mode)

如果您使用的是具有深度/模板格式的纹理,此函数将设置 mode 通过该模式访问纹理的哪个组件。

当参数设置为 DepthMode 时,从着色器访问它将作为单个浮点数访问深度组件,与通常一样。但当参数设置为 StencilMode 时,着色器将访问模板组件。

注意:此函数对 Mac 和为 OpenGL ES 2 编译的 Qt 没有影响。

另请参阅depthStencilMode

void QOpenGLTexture::setFixedSamplePositions(bool fixed)

设置是否使用带有多采样能力的目标纹理使用 fixed 样本位置和样本数。如果设置为 true,则样本位置和使用的样本数将适用于图像中的所有像素,并且不依赖于图像大小或内部格式。此函数应在为纹理分配存储之前调用。

对于不支持多采样的目标,此函数无效果。

默认值为 true

另请参阅isFixedSamplePositions() 和 isStorageAllocated

void QOpenGLTexture::setFormat(QOpenGLTexture::TextureFormat format)

将此纹理对象的格式设置为 format。在分配纹理存储之前必须调用此函数。

请注意,可能并非所有格式都受支持。支持的确切格式取决于您的OpenGL实现和版本。

另请参阅格式() 和 分配存储

void QOpenGLTexture::setLayers(int layers)

设置分配存储的数组层数。在此函数调用存储分配给纹理之前,应调用此函数。

对于不支持数组层的目标,此函数无任何效果。

另请参阅layers() 和 isStorageAllocated

void QOpenGLTexture::setLevelOfDetailRange(float min, float max)

将最小细节级别设置为 min 和最大细节级别设置为 max

注意:此功能对为OpenGL ES 2构建的Qt没有作用。

另请参阅levelOfDetailRangesetMinimumLevelOfDetailsetMaximumLevelOfDetail

void QOpenGLTexture::setLevelofDetailBias(float bias)

将细节级别偏差设置为 bias。细节级别偏差影响米普贴图级别改变的位置。增加细节级别偏差可以使整体图像更加模糊或平滑。减少值可以使整体图像更加清晰。

注意:此功能对为OpenGL ES 2构建的Qt没有作用。

另请参阅levelofDetailBias

void QOpenGLTexture::setMagnificationFilter(QOpenGLTexture::Filter filter)

将放大滤镜设置为 filter

另请参阅magnificationFiltersetMinificationFiltersetMinMagFilters

void QOpenGLTexture::setMaximumAnisotropy(float anisotropy)

如果您的OpenGL实现支持GL_EXT_texture_filter_anisotropic扩展,则此函数将最大各向异性级别设置为 anisotropy

另请参阅maximumAnisotropy

void QOpenGLTexture::setMaximumLevelOfDetail(float value)

将最大细节级别设置为 value。这限制了最低分辨率米普贴图(最高米普贴图级别)的选择。默认值是1000。

注意:此功能对为OpenGL ES 2构建的Qt没有作用。

另请参阅maximumLevelOfDetailsetMinimumLevelOfDetailsetLevelOfDetailRange

void QOpenGLTexture::setMinMagFilters(QOpenGLTexture::Filter minificationFilter, QOpenGLTexture::Filter magnificationFilter)

将缩小滤镜设置为 minificationFilter 和放大滤镜设置为 magnificationFilter

另请参阅 minMagFilters(),setMinificationFilter()和setMagnificationFilter()。

void QOpenGLTexture::setMinificationFilter(QOpenGLTexture::Filter filter)

将缩放过滤器设置為filter

另请参阅 minificationFiltersetMagnificationFiltersetMinMagFilters

void QOpenGLTexture::setMinimumLevelOfDetail(float value)

将最小细节级别设置为value。这限制了最高分辨率的mipmap(最低mipmap级别)的选择。默认值是-1000。

注意:此功能对为OpenGL ES 2构建的Qt没有作用。

另请参阅 minimumLevelOfDetailsetMaximumLevelOfDetailsetLevelOfDetailRange

void QOpenGLTexture::setMipBaseLevel(int baseLevel)

将用于所有具有此纹理的纹理查找的基mipmap级别设置為baseLevel

注意:此功能对为OpenGL ES 2构建的Qt没有作用。

另请参阅 mipBaseLevelsetMipMaxLevelsetMipLevelRange

void QOpenGLTexture::setMipLevelRange(int baseLevel, int maxLevel)

将可用于此纹理的纹理查找的mipmap级别范围设置为从baseLevelmaxLevel

注意:此功能对为OpenGL ES 2构建的Qt没有作用。

另请参阅 setMipBaseLevelsetMipMaxLevelmipLevelRange

void QOpenGLTexture::setMipLevels(int levels)

对于支持mipmap的纹理目标,此函数将分配存储的请求的mipmap levels数。在为纹理分配存储之前应调用此函数。

如果纹理目标不支持mipmap,则此函数没有效果。

另请参阅 mipLevelsmaximumMipLevelsisStorageAllocated

void QOpenGLTexture::setMipMaxLevel(int maxLevel)

将用于所有具有此纹理的纹理查找的最大mipmap级别设置为maxLevel

注意:此功能对为OpenGL ES 2构建的Qt没有作用。

另请参阅 mipMaxLevelsetMipBaseLevelsetMipLevelRange

void QOpenGLTexture::setSamples(int samples)

将在多样本纹理目标上进行渲染时分配存储的样本数设置为samples。应在为纹理分配存储之前调用此函数。

对于不支持多采样的目标,此函数无效果。

另请参阅 samplesisStorageAllocated

void QOpenGLTexture::setSize(int width, int height = 1, int depth = 1)

将此纹理对象的尺寸设置为宽度高度深度。每个维度的默认值是1。允许的最大纹理大小取决于您的OpenGL实现。如果系统资源不足,为小于最大大小的纹理分配存储仍然可能失败。

如果提供非2的幂的宽度高度深度,并且您的OpenGL实现不支持重复的非2的幂纹理,则自动将包装模式设置为ClampToEdge

另请参阅width(),height()和depth()。

void QOpenGLTexture::setSwizzleMask(QOpenGLTexture::SwizzleComponent component, QOpenGLTexture::SwizzleValue value)

GLSL着色器能够重新排序由纹理函数返回的vec4组件。还希望能够从CPU端代码控制这种排序。自OpenGL 3.3以来,这由混合遮罩(swizzle masks)使得成为可能。

每个纹理组件可以映射到SwizzleValue选项之一。

此函数将component映射到输出value

注意:此函数对 Mac 和为 OpenGL ES 2 编译的 Qt 没有影响。

另请参阅swizzleMask

void QOpenGLTexture::setSwizzleMask(QOpenGLTexture::SwizzleValue r, QOpenGLTexture::SwizzleValue g, QOpenGLTexture::SwizzleValue b, QOpenGLTexture::SwizzleValue a)

参数rgba用于设置颜色红色、绿色、蓝色和alpha值。

这是一个重载函数。

void QOpenGLTexture::setWrapMode(QOpenGLTexture::WrapMode mode)

将所有纹理维度的包装(或重复)模式设置为mode

另请参阅wrapMode

void QOpenGLTexture::setWrapMode(QOpenGLTexture::CoordinateDirection direction, QOpenGLTexture::WrapMode mode)

包含纹理维度direction

这是一个重载函数。

QOpenGLTexture::SwizzleValue QOpenGLTexture::swizzleMask(QOpenGLTexture::SwizzleComponent component) const

返回纹理component的混合遮罩。

另请参阅setSwizzleMask

QOpenGLTexture::Target QOpenGLTexture::target() const

返回此纹理的绑定目标。

GLuint QOpenGLTexture::textureId() const

返回底层OpenGL纹理对象的名字,如果尚未创建则返回0。

另请参阅 create(),destroy() 和 isCreated()。

int QOpenGLTexture::width() const

返回 1D、2D 或 3D 纹理的宽度。

另请参阅 height(),depth() 和 setSize()。

QOpenGLTexture::WrapMode QOpenGLTexture::wrapMode(QOpenGLTexture::CoordinateDirection direction) const

返回纹理维度 direction 的包装模式。

另请参阅 setWrapMode()。

© 2024 The Qt Company Ltd. 本文件中的文档贡献版权属于各自的拥有者。本文件中提供的文档遵循 GNU自由文档许可1.3版 的条款,由自由软件开发基金会发布。Qt 及相应的徽标是 The Qt Company Ltd. 在芬兰及/或世界上其他国家的注册商标。所有其他商标均为各自所有者的财产。