src
quori_face
Texture.cpp
Go to the documentation of this file.
1
#include "
quori_face/Texture.hpp
"
2
3
#include <
GL/gl3w.h
>
4
5
#include "
trace.hpp
"
6
7
using namespace
quori_face
;
8
9
Texture::~Texture
()
10
{
11
glDeleteTextures
(1, &
handle_
);
12
}
13
14
Texture::Ptr
Texture::create
(std::size_t rows, std::size_t cols,
float
*
const
data
)
15
{
16
std::uint32_t handle;
17
QUORI_FACE_TRACE
(
glGenTextures
(1, &handle));
18
19
QUORI_FACE_TRACE
(
glBindTexture
(
GL_TEXTURE_2D
, handle));
20
21
QUORI_FACE_TRACE
(
glTexParameteri
(
GL_TEXTURE_2D
,
GL_TEXTURE_WRAP_S
,
GL_CLAMP_TO_BORDER
));
22
QUORI_FACE_TRACE
(
glTexParameteri
(
GL_TEXTURE_2D
,
GL_TEXTURE_WRAP_T
,
GL_CLAMP_TO_BORDER
));
23
24
QUORI_FACE_TRACE
(
glTexParameteri
(
GL_TEXTURE_2D
,
GL_TEXTURE_MIN_FILTER
,
GL_LINEAR
));
25
QUORI_FACE_TRACE
(
glTexParameteri
(
GL_TEXTURE_2D
,
GL_TEXTURE_MAG_FILTER
,
GL_LINEAR
));
26
27
QUORI_FACE_TRACE
(
glTexImage2D
(
GL_TEXTURE_2D
, 0,
GL_RGB32F
, cols, rows, 0,
GL_RGB
,
GL_FLOAT
,
data
));
28
QUORI_FACE_TRACE
(
glGenerateMipmap
(
GL_TEXTURE_2D
));
29
30
return
Ptr
(
new
Texture
(handle));
31
}
32
33
Texture::Ptr
Texture::create
(std::size_t rows, std::size_t cols,
const
std::uint32_t
format
,
const
std::uint8_t *
const
data
)
34
{
35
std::uint32_t handle;
36
QUORI_FACE_TRACE
(
glGenTextures
(1, &handle));
37
38
QUORI_FACE_TRACE
(
glBindTexture
(
GL_TEXTURE_2D
, handle));
39
40
QUORI_FACE_TRACE
(
glTexParameteri
(
GL_TEXTURE_2D
,
GL_TEXTURE_WRAP_S
,
GL_CLAMP_TO_BORDER
));
41
QUORI_FACE_TRACE
(
glTexParameteri
(
GL_TEXTURE_2D
,
GL_TEXTURE_WRAP_T
,
GL_CLAMP_TO_BORDER
));
42
43
QUORI_FACE_TRACE
(
glTexParameteri
(
GL_TEXTURE_2D
,
GL_TEXTURE_MIN_FILTER
,
GL_LINEAR
));
44
QUORI_FACE_TRACE
(
glTexParameteri
(
GL_TEXTURE_2D
,
GL_TEXTURE_MAG_FILTER
,
GL_LINEAR
));
45
46
QUORI_FACE_TRACE
(
glTexImage2D
(
GL_TEXTURE_2D
, 0,
GL_RGB8
, cols, rows, 0,
format
,
GL_UNSIGNED_BYTE
,
data
));
47
QUORI_FACE_TRACE
(
glGenerateMipmap
(
GL_TEXTURE_2D
));
48
49
return
Ptr
(
new
Texture
(handle));
50
}
51
52
53
void
Texture::bind
()
54
{
55
QUORI_FACE_TRACE
(
glBindTexture
(
GL_TEXTURE_2D
,
handle_
));
56
}
57
58
std::uint32_t
Texture::getHandle
()
const
59
{
60
return
handle_
;
61
}
62
63
64
Texture::Texture
(
const
std::uint32_t handle)
65
: handle_(handle)
66
{
67
}
glGenerateMipmap
#define glGenerateMipmap
Definition:
gl3w.h:906
GL_TEXTURE_WRAP_S
#define GL_TEXTURE_WRAP_S
Definition:
glcorearb.h:242
GL_TEXTURE_MIN_FILTER
#define GL_TEXTURE_MIN_FILTER
Definition:
glcorearb.h:241
GL_RGB32F
#define GL_RGB32F
Definition:
glcorearb.h:1001
format
GLint GLint GLsizei GLint GLenum format
Definition:
glcorearb.h:256
GL_FLOAT
#define GL_FLOAT
Definition:
glcorearb.h:192
GL_TEXTURE_2D
#define GL_TEXTURE_2D
Definition:
glcorearb.h:179
GL_RGB8
#define GL_RGB8
Definition:
glcorearb.h:368
quori_face::Texture::getHandle
std::uint32_t getHandle() const
Definition:
Texture.cpp:58
GL_CLAMP_TO_BORDER
#define GL_CLAMP_TO_BORDER
Definition:
glcorearb.h:522
GL_UNSIGNED_BYTE
#define GL_UNSIGNED_BYTE
Definition:
glcorearb.h:187
glTexImage2D
#define glTexImage2D
Definition:
gl3w.h:1193
trace.hpp
quori_face::Texture::Texture
Texture(const std::uint32_t handle)
Definition:
Texture.cpp:64
glBindTexture
#define glBindTexture
Definition:
gl3w.h:747
glDeleteTextures
#define glDeleteTextures
Definition:
gl3w.h:840
quori_face
Definition:
Cache.hpp:9
glTexParameteri
#define glTexParameteri
Definition:
gl3w.h:1201
Texture.hpp
gl3w.h
GL_TEXTURE_MAG_FILTER
#define GL_TEXTURE_MAG_FILTER
Definition:
glcorearb.h:240
GL_TEXTURE_WRAP_T
#define GL_TEXTURE_WRAP_T
Definition:
glcorearb.h:243
quori_face::Texture::create
static Ptr create(std::size_t rows, std::size_t cols, float *const data)
Definition:
Texture.cpp:14
QUORI_FACE_TRACE
#define QUORI_FACE_TRACE(stmt)
Definition:
quori_face/trace.hpp:16
quori_face::Texture::Ptr
std::shared_ptr< Texture > Ptr
Definition:
Texture.hpp:17
glGenTextures
#define glGenTextures
Definition:
gl3w.h:903
data
GLboolean * data
Definition:
glcorearb.h:279
quori_face::Texture::bind
void bind()
Definition:
Texture.cpp:53
GL_LINEAR
#define GL_LINEAR
Definition:
glcorearb.h:235
quori_face::Texture::handle_
std::uint32_t handle_
Definition:
Texture.hpp:45
GL_RGB
#define GL_RGB
Definition:
glcorearb.h:221
quori_face::Texture::~Texture
~Texture()
Definition:
Texture.cpp:9
quori_face
Author(s):
autogenerated on Wed Mar 2 2022 00:53:20