teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

文言

2021/05/21 14:17

投稿

int32_t
int32_t

スコア21933

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  `glGenTextures(1, &ch.textureID)` に対応する `glDeleteTextures()` がないからでは。
2
2
 
3
- もし自分が仕事でOpenGLを扱うことになったら、以下のような [RAII](https://ja.wikipedia.org/wiki/RAII) クラスを作ると思います。
3
+ もし自分がC++でOpenGLを扱うことになったら、以下のような [RAII](https://ja.wikipedia.org/wiki/RAII) クラスを作ると思います。
4
4
 
5
5
  ```c++
6
6
  class ScopedTexture {

2

RAII

2021/05/21 14:17

投稿

int32_t
int32_t

スコア21933

answer CHANGED
@@ -1,1 +1,24 @@
1
- `glGenTextures(1, &ch.textureID)` に対応する `glDeleteTextures()` がないからでは。
1
+ `glGenTextures(1, &ch.textureID)` に対応する `glDeleteTextures()` がないからでは。
2
+
3
+ もし自分が仕事でOpenGLを扱うことになったら、以下のような [RAII](https://ja.wikipedia.org/wiki/RAII) クラスを作ると思います。
4
+
5
+ ```c++
6
+ class ScopedTexture {
7
+ public:
8
+ ScopedTexture() {
9
+ glGenTextures(1, &texture_);
10
+ }
11
+ ~ScopedTexture() {
12
+ glDeleteTextures(1, &texture_);
13
+ }
14
+ ScopedTexture(const ScopedTexture&) = delete;
15
+ ScopedTexture& operator=(const ScopedTexture&) = delete;
16
+
17
+ Bind(GLenum target) {
18
+ glBindTexture(target, texture_);
19
+ }
20
+
21
+ private:
22
+ GLuint texture_;
23
+ };
24
+ ```

1

文言

2021/05/21 14:16

投稿

int32_t
int32_t

スコア21933

answer CHANGED
@@ -1,1 +1,1 @@
1
- `glDeleteTextures()` を呼んでいないからでは。
1
+ `glGenTextures(1, &ch.textureID)` に対応する `glDeleteTextures()` ないからでは。