質問編集履歴
5
文章を設定
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
OpenGL
|
1
|
+
OpenGL レンダリングはされるが文字が表示されない原因がどうしてもわからない。
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
提示画像ですがレンダリングがされますが**文字は表示されません**フォントはゴシックです。日本語文字はそもそもレンダリングすらされないので英語の文字を指定するのは正しいです。なぜ文字は表示されないのにレンダリングは出来るのでしょうか?参考サイトのlearn opengl を参考に作り方が原因がどうしてもわかりませんどうしたらいいのでしょうか?
|
1
|
+
提示画像ですがレンダリングがされますが**文字は表示されません**フォントはゴシックです。日本語文字はそもそもレンダリングすらされないので英語の文字を指定するのは正しいです。なぜ文字は表示されないのにレンダリングは出来るのでしょうか?参考サイトのlearn opengl を参考に作り方が原因がどうしてもわかりませんどうしたらいいのでしょうか?コンストラクタで文字情報を設定しているのですが何が理由なのかどうしてもわかりません、
|
2
2
|
|
3
3
|
|
4
4
|
|
4
文章を修正しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
提示画像ですがなぜ文字が表示されないのでしょうか?描画は出来ているみたいですが描画文字であるAAAAAが表示されない原因が知りたいです。
|
2
|
-
|
1
|
+
提示画像ですがレンダリングがされますが**文字は表示されません**フォントはゴシックです。日本語文字はそもそもレンダリングすらされないので英語の文字を指定するのは正しいです。なぜ文字は表示されないのにレンダリングは出来るのでしょうか?参考サイトのlearn opengl を参考に作り方が原因がどうしてもわかりませんどうしたらいいのでしょうか?
|
3
2
|
|
3
|
+
|
4
|
+
|
5
|
+
|
4
6
|
試したこと「
|
5
7
|
エラーを表示させました。
|
6
8
|
参考サイトを参考にコードを組みました。
|
3
文章を編集しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,11 +1,109 @@
|
|
1
1
|
提示画像ですがなぜ文字が表示されないのでしょうか?描画は出来ているみたいですが描画文字であるAAAAAが表示されない原因が知りたいです。
|
2
|
-
コンストラクタ部がで何かしている見たいなのですがこれは何が悪いのでしょうか?
|
2
|
+
コンストラクタ部がで何かしている見たいなのですがこれは何が悪いのでしょうか?現状アルファベットのみ描画出来るみたいなのですが日本語を含め描画出来ません。描画はされているため初期化が悪いのでしょうか?
|
3
3
|
|
4
|
+
試したこと「
|
5
|
+
エラーを表示させました。
|
6
|
+
参考サイトを参考にコードを組みました。
|
7
|
+
」
|
8
|
+
|
9
|
+
|
10
|
+
参考サイト freetype: https://www.freetype.org/freetype2/docs/reference/ft2-error_code_values.html
|
11
|
+
参考サイト learn opengl : https://learnopengl.com/In-Practice/Text-Rendering
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
|
4
16
|

|
5
17
|
|
18
|
+
```hpp
|
19
|
+
#ifndef ___TEXT_HPP_
|
20
|
+
#define ___TEXT_HPP_
|
6
21
|
|
22
|
+
|
23
|
+
//標準ヘッダー
|
24
|
+
#include <iostream>
|
25
|
+
#include <string>
|
26
|
+
#include <map>
|
27
|
+
|
28
|
+
//自作ヘッダー
|
29
|
+
#include "Entry.hpp"
|
30
|
+
#include "Shader.hpp"
|
31
|
+
#include "Transform_2D.hpp"
|
32
|
+
|
33
|
+
//OpenGL 関係
|
34
|
+
#include "GLEW/include/GL/glew.h"
|
35
|
+
#include "gl/GL.h"
|
36
|
+
#include "GLFW/include/GLFW/glfw3.h"
|
37
|
+
|
38
|
+
//数学ライブラリ
|
39
|
+
#include "glm/glm.hpp"
|
40
|
+
#include "glm/gtx/euler_angles.hpp"
|
41
|
+
#include "glm/gtx/quaternion.hpp"
|
42
|
+
|
43
|
+
|
44
|
+
//FreeType 関係
|
45
|
+
#include "ft2build.h"
|
46
|
+
#include FT_FREETYPE_H
|
47
|
+
#include "freetype/fterrors.h" //エラーライブラリ
|
48
|
+
#undef FTERRORS_H_
|
49
|
+
#define FT_ERRORDEF( e, v, s ) { e, s },
|
50
|
+
#define FT_ERROR_START_LIST {
|
51
|
+
#define FT_ERROR_END_LIST { 0, NULL } };
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
//前方宣言
|
56
|
+
class Entry;
|
57
|
+
//class Transform_2D;
|
58
|
+
|
59
|
+
/*###############################################################################################################
|
60
|
+
# 文字描画
|
61
|
+
#################################################################################################################*/
|
62
|
+
|
63
|
+
class Text : public Transform_2D
|
64
|
+
{
|
65
|
+
public:
|
66
|
+
Text(Entry* g);
|
67
|
+
~Text();
|
68
|
+
//文字レンダリング
|
69
|
+
//座標、大きさ、色、文字
|
70
|
+
void RenderText(float x, float y, float scale, glm::vec3 color, const char* format, ...);
|
71
|
+
|
72
|
+
private:
|
73
|
+
|
74
|
+
//char str[10000];
|
75
|
+
|
76
|
+
struct Character {
|
77
|
+
unsigned int TextureID; // ID handle of the glyph texture
|
78
|
+
glm::ivec2 Size; // Size of glyph
|
79
|
+
glm::ivec2 Bearing; // Offset from baseLine_2D to left/top of glyph
|
80
|
+
unsigned int Advance; // Horizontal offset to advance to next glyph
|
81
|
+
};
|
82
|
+
|
83
|
+
FT_Library ft;
|
84
|
+
FT_Face face;
|
85
|
+
std::map<GLchar, Character> Characters;
|
86
|
+
unsigned int VAO, VBO;
|
87
|
+
unsigned int texture = 0;
|
88
|
+
|
89
|
+
|
90
|
+
// Shader* ShaderProgram;
|
91
|
+
std::unique_ptr<Shader> ShaderProgram;
|
92
|
+
|
93
|
+
|
94
|
+
Entry* Owner;
|
95
|
+
|
96
|
+
};
|
97
|
+
|
98
|
+
|
99
|
+
#endif
|
100
|
+
```
|
101
|
+
|
7
102
|
```cpp
|
103
|
+
#include "../Header/Text.hpp"
|
8
104
|
|
105
|
+
|
106
|
+
|
9
107
|
/*****************************************************************************************************************
|
10
108
|
* 文字 描画クラス
|
11
109
|
******************************************************************************************************************/
|
@@ -16,10 +114,10 @@
|
|
16
114
|
Owner = g;
|
17
115
|
|
18
116
|
// シェーダープログラム
|
19
|
-
ShaderProgram = std::make_unique<Shader>(g,"Shader/2D/Text.vert","Shader/2D/Text.frag");
|
117
|
+
ShaderProgram = std::make_unique<Shader>(g, "Shader/2D/Text.vert", "Shader/2D/Text.frag");
|
20
|
-
|
21
|
-
FT_Error fe[100]; //エラー配列
|
22
118
|
|
119
|
+
FT_Error fe[100] = { 0 }; //エラー配列
|
120
|
+
|
23
121
|
//FreeTypeを初期化
|
24
122
|
fe[0] = FT_Init_FreeType(&ft);
|
25
123
|
|
@@ -35,7 +133,17 @@
|
|
35
133
|
//ピクセルストレージモードを設定する
|
36
134
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
37
135
|
|
136
|
+
// エラー表示
|
137
|
+
for (int i = 0; i < 100; i++)
|
138
|
+
{
|
139
|
+
if (fe[i] != 0)
|
140
|
+
{
|
141
|
+
printf("%d\n",fe[i]);
|
142
|
+
}
|
38
143
|
|
144
|
+
}
|
145
|
+
|
146
|
+
|
39
147
|
//テクスチャを生成する
|
40
148
|
glGenTextures(1, &texture);
|
41
149
|
glBindTexture(GL_TEXTURE_2D, texture);
|
@@ -100,7 +208,7 @@
|
|
100
208
|
|
101
209
|
//
|
102
210
|
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(float), 0);
|
103
|
-
|
211
|
+
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
104
212
|
}
|
105
213
|
|
106
214
|
|
@@ -161,7 +269,7 @@
|
|
161
269
|
|
162
270
|
|
163
271
|
// ポリゴンをレンダリング
|
164
|
-
|
272
|
+
glDrawArrays(GL_TRIANGLES, 0, 6);
|
165
273
|
|
166
274
|
|
167
275
|
x += (ch.Advance >> 6) * scale; // 次のグリフにカーソルを進める
|
@@ -183,4 +291,12 @@
|
|
183
291
|
glBindVertexArray(0);
|
184
292
|
glDeleteVertexArrays(1, &VAO);
|
185
293
|
}
|
294
|
+
```
|
295
|
+
|
296
|
+
```cpp
|
297
|
+
void Scene::Draw()
|
298
|
+
{
|
299
|
+
Text a(Owner);
|
300
|
+
a.RenderText(0,0,2.0,glm::vec3(1,0,0),"AAAAAAAAAAAAAAAAA");
|
301
|
+
}
|
186
302
|
```
|
2
文章を修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
OpenGL テキスト
|
1
|
+
OpenGL テキストレンダリングで文字が正常に描画出来ない理由が知りたい。
|
body
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
+
提示画像ですがなぜ文字が表示されないのでしょうか?描画は出来ているみたいですが描画文字であるAAAAAが表示されない原因が知りたいです。
|
1
|
-
|
2
|
+
コンストラクタ部がで何かしている見たいなのですがこれは何が悪いのでしょうか?
|
2
|
-
|
3
|
+
|
3
4
|

|
4
5
|
|
5
6
|
|
1
文章を修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
OpenGL テキストがレンダリング出来ない理由が知りたい。
|
1
|
+
OpenGL テキストがレンダリングで文字が正常に描画出来ない理由が知りたい。
|
body
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
+
提示コードですが提示画像ようなテキスト描画になってしまうのですがどうすれば正常に描画出来るのでしょか?
|
1
|
-
|
2
|
+
"AAAAA"という引数がRenderText()関数の引数になるのですがなぜ描画がおかしくなるのでしょうか?原因がどうしてもわかりません
|
2
|
-
|
3
|
+

|
3
4
|
|
5
|
+
|
4
6
|
```cpp
|
5
|
-
#include "../Header/Text.hpp"
|
6
7
|
|
7
|
-
|
8
|
-
|
9
8
|
/*****************************************************************************************************************
|
10
9
|
* 文字 描画クラス
|
11
10
|
******************************************************************************************************************/
|
@@ -16,7 +15,6 @@
|
|
16
15
|
Owner = g;
|
17
16
|
|
18
17
|
// シェーダープログラム
|
19
|
-
// ShaderProgram = new Shader(g, "Shader/2D/Text.vert", "Shader/2D/Text.frag");
|
20
18
|
ShaderProgram = std::make_unique<Shader>(g,"Shader/2D/Text.vert","Shader/2D/Text.frag");
|
21
19
|
|
22
20
|
FT_Error fe[100]; //エラー配列
|
@@ -83,11 +81,6 @@
|
|
83
81
|
|
84
82
|
}
|
85
83
|
|
86
|
-
|
87
|
-
//開放
|
88
|
-
// glBindTexture(GL_TEXTURE_2D, 0);
|
89
|
-
// glDeleteTextures(1, &texture);
|
90
|
-
|
91
84
|
//FreeTypeの終了処理
|
92
85
|
FT_Done_Face(face);
|
93
86
|
FT_Done_FreeType(ft);
|
@@ -106,8 +99,7 @@
|
|
106
99
|
|
107
100
|
//
|
108
101
|
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(float), 0);
|
109
|
-
|
102
|
+
// glBindBuffer(GL_ARRAY_BUFFER, 0);
|
110
|
-
|
111
103
|
}
|
112
104
|
|
113
105
|
|
@@ -158,19 +150,20 @@
|
|
158
150
|
};
|
159
151
|
|
160
152
|
|
161
|
-
|
153
|
+
|
162
154
|
//テクスチャを設定
|
163
155
|
glBindTexture(GL_TEXTURE_2D, ch.TextureID);
|
164
156
|
glBindVertexArray(VAO);
|
165
157
|
glBindBuffer(GL_ARRAY_BUFFER, VBO);
|
166
158
|
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices); //
|
167
|
-
|
159
|
+
|
168
160
|
|
161
|
+
|
169
162
|
// ポリゴンをレンダリング
|
170
163
|
glDrawArrays(GL_TRIANGLES, 0, 6);
|
171
164
|
|
172
165
|
|
173
|
-
x += (ch.Advance>> 6) * scale; // 次のグリフにカーソルを進める
|
166
|
+
x += (ch.Advance >> 6) * scale; // 次のグリフにカーソルを進める
|
174
167
|
}
|
175
168
|
|
176
169
|
|
@@ -184,12 +177,9 @@
|
|
184
177
|
glDeleteTextures(1, &texture);
|
185
178
|
|
186
179
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
187
|
-
glDeleteBuffers(1, &
|
180
|
+
glDeleteBuffers(1, &VBO);
|
188
181
|
|
189
182
|
glBindVertexArray(0);
|
190
|
-
glDeleteVertexArrays(1, &VAO);
|
183
|
+
glDeleteVertexArrays(1, &VAO);
|
191
|
-
|
192
|
-
|
193
|
-
|
194
184
|
}
|
195
185
|
```
|