/usr/include/globjects/Texture.h is in libglobjects-dev 1.0.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | #pragma once
#include <glbinding/gl/types.h>
#include <vector>
#include <glm/fwd.hpp>
#include <globjects/globjects_api.h>
#include <globjects/Object.h>
namespace globjects
{
class Buffer;
class TextureHandle;
class Sampler;
/** \brief Wraps OpenGL texture objects.
* A Texture provides both interfaces to bind them for the OpenGL pipeline:
* binding and bindless texture. Bindless textures are only available if the
* graphics driver supports them.
*
* \see http://www.opengl.org/wiki/Texture
* \see http://www.opengl.org/registry/specs/NV/bindless_texture.txt
*/
class GLOBJECTS_API Texture : public Object
{
public:
enum class BindlessImplementation
{
DirectStateAccessARB
, DirectStateAccessEXT
, Legacy
};
enum class StorageImplementation
{
DirectStateAccessARB
, DirectStateAccessEXT
, Legacy
, Fallback
};
static void hintBindlessImplementation(BindlessImplementation impl);
static void hintStorageImplementation(StorageImplementation impl);
Texture();
Texture(gl::GLenum target);
static Texture * fromId(gl::GLuint id, gl::GLenum target);
static Texture * createDefault();
static Texture * createDefault(gl::GLenum target);
virtual void accept(ObjectVisitor & visitor) override;
void bind() const;
void unbind() const;
static void unbind(gl::GLenum target);
void bindActive(gl::GLenum texture) const;
void bindActive(unsigned int index) const;
void unbindActive(gl::GLenum texture) const;
void unbindActive(unsigned int index) const;
void setParameter(gl::GLenum name, gl::GLenum value);
void setParameter(gl::GLenum name, gl::GLint value);
void setParameter(gl::GLenum name, gl::GLfloat value);
void setParameter(gl::GLenum name, const glm::vec4 & value);
gl::GLint getParameter(gl::GLenum pname) const;
gl::GLint getLevelParameter(gl::GLint level, gl::GLenum pname) const;
void getImage(gl::GLint level, gl::GLenum format, gl::GLenum type, gl::GLvoid * image) const;
std::vector<unsigned char> getImage(gl::GLint level, gl::GLenum format, gl::GLenum type) const;
void getCompressedImage(gl::GLint lod, gl::GLvoid * image) const;
std::vector<unsigned char> getCompressedImage(gl::GLint lod = 0) const;
gl::GLenum target() const;
void image1D(gl::GLint level, gl::GLenum internalFormat, gl::GLsizei width, gl::GLint border, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
void compressedImage1D(gl::GLint level, gl::GLenum internalFormat, gl::GLsizei width, gl::GLint border, gl::GLsizei imageSize, const gl::GLvoid * data);
void subImage1D(gl::GLint level, gl::GLint xOffset, gl::GLsizei width, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
void image2D(gl::GLint level, gl::GLenum internalFormat, gl::GLsizei width, gl::GLsizei height, gl::GLint border, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
void image2D(gl::GLint level, gl::GLenum internalFormat, const glm::ivec2 & size, gl::GLint border, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
void compressedImage2D(gl::GLint level, gl::GLenum internalFormat, gl::GLsizei width, gl::GLsizei height, gl::GLint border, gl::GLsizei imageSize, const gl::GLvoid * data);
void compressedImage2D(gl::GLint level, gl::GLenum internalFormat, const glm::ivec2 & size, gl::GLint border, gl::GLsizei imageSize, const gl::GLvoid * data);
void subImage2D(gl::GLint level, gl::GLint xOffset, gl::GLint yOffset, gl::GLsizei width, gl::GLsizei height, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
void subImage2D(gl::GLint level, const glm::ivec2& offset, const glm::ivec2& size, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
void image3D(gl::GLint level, gl::GLenum internalFormat, gl::GLsizei width, gl::GLsizei height, gl::GLsizei depth, gl::GLint border, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
void image3D(gl::GLint level, gl::GLenum internalFormat, const glm::ivec3 & size, gl::GLint border, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
void compressedImage3D(gl::GLint level, gl::GLenum internalFormat, gl::GLsizei width, gl::GLsizei height, gl::GLsizei depth, gl::GLint border, gl::GLsizei imageSize, const gl::GLvoid * data);
void compressedImage3D(gl::GLint level, gl::GLenum internalFormat, const glm::ivec3 & size, gl::GLint border, gl::GLsizei imageSize, const gl::GLvoid * data);
void subImage3D(gl::GLint level, gl::GLint xOffset, gl::GLint yOffset, gl::GLint zOffset, gl::GLsizei width, gl::GLsizei height, gl::GLsizei depth, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
void subImage3D(gl::GLint level, const glm::ivec3& offset, const glm::ivec3& size, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
void image2DMultisample(gl::GLsizei samples, gl::GLenum internalFormat, gl::GLsizei width, gl::GLsizei height, gl::GLboolean fixedSamplesLocations);
void image2DMultisample(gl::GLsizei samples, gl::GLenum internalFormat, const glm::ivec2 & size, gl::GLboolean fixedSamplesLocations);
void image3DMultisample(gl::GLsizei samples, gl::GLenum internalFormat, gl::GLsizei width, gl::GLsizei height, gl::GLsizei depth, gl::GLboolean fixedSamplesLocations);
void image3DMultisample(gl::GLsizei samples, gl::GLenum internalFormat, const glm::ivec3 & size, gl::GLboolean fixedSamplesLocations);
void storage1D(gl::GLsizei levels, gl::GLenum internalFormat, gl::GLsizei width);
void storage2D(gl::GLsizei levels, gl::GLenum internalFormat, gl::GLsizei width, gl::GLsizei height);
void storage2D(gl::GLsizei levels, gl::GLenum internalFormat, const glm::ivec2 & size);
void storage3D(gl::GLsizei levels, gl::GLenum internalFormat, gl::GLsizei width, gl::GLsizei height, gl::GLsizei depth);
void storage3D(gl::GLsizei levels, gl::GLenum internalFormat, const glm::ivec3 & size);
void textureView(gl::GLuint originalTexture, gl::GLenum internalFormat, gl::GLuint minLevel, gl::GLuint numLevels, gl::GLuint minLayer, gl::GLuint numLayers);
void texBuffer(gl::GLenum internalFormat, Buffer * buffer);
void texBufferRange(gl::GLenum internalFormat, Buffer * buffer, gl::GLintptr offset, gl::GLsizeiptr size);
void clearImage(gl::GLint level, gl::GLenum format, gl::GLenum type, const void * data);
void clearImage(gl::GLint level, gl::GLenum format, gl::GLenum type, const glm::vec4 & value);
void clearImage(gl::GLint level, gl::GLenum format, gl::GLenum type, const glm::ivec4 & value);
void clearImage(gl::GLint level, gl::GLenum format, gl::GLenum type, const glm::uvec4 & value);
void clearSubImage(gl::GLint level, gl::GLint xOffset, gl::GLint yOffset, gl::GLint zOffset, gl::GLsizei width, gl::GLsizei height, gl::GLsizei depth, gl::GLenum format, gl::GLenum type, const void * data);
void clearSubImage(gl::GLint level, const glm::ivec3 & offset, const glm::ivec3 & size, gl::GLenum format, gl::GLenum type, const void * data);
void clearSubImage(gl::GLint level, const glm::ivec3 & offset, const glm::ivec3 & size, gl::GLenum format, gl::GLenum type, const glm::vec4 & value);
void clearSubImage(gl::GLint level, const glm::ivec3 & offset, const glm::ivec3 & size, gl::GLenum format, gl::GLenum type, const glm::ivec4 & value);
void clearSubImage(gl::GLint level, const glm::ivec3 & offset, const glm::ivec3 & size, gl::GLenum format, gl::GLenum type, const glm::uvec4 & value);
void invalidateImage(gl::GLint level) const;
void invalidateSubImage(gl::GLint level, gl::GLint xoffset, gl::GLint yoffset, gl::GLint zoffset, gl::GLsizei width, gl::GLsizei height, gl::GLsizei depth);
void invalidateSubImage(gl::GLint level, const glm::ivec3& offset, const glm::ivec3 size);
void bindImageTexture(gl::GLuint unit, gl::GLint level, gl::GLboolean layered, gl::GLint layer, gl::GLenum access, gl::GLenum format) const;
static void unbindImageTexture(gl::GLuint unit);
void generateMipmap();
void cubeMapImage(gl::GLint level, gl::GLenum internalFormat, gl::GLsizei width, gl::GLsizei height, gl::GLint border, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
void cubeMapImage(gl::GLint level, gl::GLenum internalFormat, const glm::ivec2 & size, gl::GLint border, gl::GLenum format, gl::GLenum type, const gl::GLvoid * data);
TextureHandle textureHandle() const;
TextureHandle textureHandle(Sampler * sampler) const;
void pageCommitment(gl::GLint level, gl::GLint xOffset, gl::GLint yOffset, gl::GLint zOffset, gl::GLsizei width, gl::GLsizei height, gl::GLsizei depth, gl::GLboolean commit) const;
void pageCommitment(gl::GLint level, const glm::ivec3& offset, const glm::ivec3& size, gl::GLboolean commit) const;
virtual gl::GLenum objectType() const override;
protected:
Texture(IDResource * resource, gl::GLenum target);
virtual ~Texture();
protected:
gl::GLenum m_target;
};
} // namespace globjects
|