5#ifndef QABSTRACTOPENGLTEXTURE_P_H
6#define QABSTRACTOPENGLTEXTURE_P_H
21#include <QtOpenGL/qtopenglglobal.h>
22#include "private/qobject_p.h"
29inline double qLog2(
const double x)
31 return std::log(x) /
std::log(2.0);
39class QOpenGLFunctions;
48 Q_DECLARE_PUBLIC(QOpenGLTexture)
63 void allocateStorage(QOpenGLTexture::PixelFormat pixelFormat, QOpenGLTexture::PixelType pixelType);
66 void setData(
int mipLevel,
int layer,
int layerCount, QOpenGLTexture::CubeMapFace cubeFace,
67 QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType,
68 const void *data,
const QOpenGLPixelTransferOptions *
const options);
69 void setData(
int xOffset,
int yOffset,
int zOffset,
int width,
int height,
int depth,
70 int mipLevel,
int layer,
int layerCount, QOpenGLTexture::CubeMapFace cubeFace,
71 QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType,
72 const void *data,
const QOpenGLPixelTransferOptions *
const options);
73 void setCompressedData(
int mipLevel,
int layer,
int layerCount, QOpenGLTexture::CubeMapFace cubeFace,
74 int dataSize,
const void *data,
75 const QOpenGLPixelTransferOptions *
const options);
79 void setWrapMode(QOpenGLTexture::CoordinateDirection direction, QOpenGLTexture::WrapMode mode);
83 int minimumMipmapLevel,
int maximumMipmapLevel,
84 int minimumLayer,
int maximumLayer)
const;
95 return std::floor(
double(qMax(1, baseLevelSize >> mipLevel)));
145#undef Q_CALL_MEMBER_FUNCTION
QOpenGLTextureHelper(QOpenGLContext *context)
void setWrapMode(QOpenGLTexture::CoordinateDirection direction, QOpenGLTexture::WrapMode mode)
void allocateStorage(QOpenGLTexture::PixelFormat pixelFormat, QOpenGLTexture::PixelType pixelType)
int evaluateMipLevels() const
void setData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options)
void setData(int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions *const options)
QOpenGLFunctions * functions
bool isUsingImmutableStorage() const
QOpenGLTexturePrivate(QOpenGLTexture::Target textureTarget, QOpenGLTexture *qq)
void allocateImmutableStorage()
void allocateMutableStorage(QOpenGLTexture::PixelFormat pixelFormat, QOpenGLTexture::PixelType pixelType)
void setWrapMode(QOpenGLTexture::WrapMode mode)
int maximumMipLevelCount() const
bool fixedSamplePositions
void release(uint unit, QOpenGLTexture::TextureUnitReset reset=QOpenGLTexture::DontResetTextureUnit)
QOpenGLTexture * createTextureView(QOpenGLTexture::Target target, QOpenGLTexture::TextureFormat viewFormat, int minimumMipmapLevel, int maximumMipmapLevel, int minimumLayer, int maximumLayer) const
void initializeOpenGLFunctions()
bool isBound(uint unit) const
void bind(uint unit, QOpenGLTexture::TextureUnitReset reset=QOpenGLTexture::DontResetTextureUnit)
void setCompressedData(int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, const void *data, const QOpenGLPixelTransferOptions *const options)
static int mipLevelSize(int mipLevel, int baseLevelSize)
QOpenGLTextureHelper * texFuncs
Combined button and popup list for selecting options.
#define GL_TEXTURE_COMPARE_FUNC
#define GL_TEXTURE_WRAP_R
#define GL_TEXTURE_BASE_LEVEL
#define GL_TEXTURE_MAX_LEVEL
#define GL_ACTIVE_TEXTURE
#define GL_TEXTURE_COMPARE_MODE
static QOpenGLTexture::PixelFormat pixelFormatCompatibleWithInternalFormat(QOpenGLTexture::TextureFormat internalFormat)
static QOpenGLTexture::PixelType pixelTypeCompatibleWithInternalFormat(QOpenGLTexture::TextureFormat internalFormat)
static bool isNpot(int width, int height=1, int depth=1)
static bool isCompressedFormat(QOpenGLTexture::TextureFormat internalFormat)
static bool isTextureTargetMultisample(QOpenGLTexture::Target target)
static bool isSizedTextureFormat(QOpenGLTexture::TextureFormat internalFormat)