質問編集履歴
5
文章とタイトルを修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
glbegin()
|
1
|
+
glbegin() テクスチャの表示座標の誤差の修正方法が知りたい
|
test
CHANGED
@@ -1,14 +1,12 @@
|
|
1
|
-
提示
|
1
|
+
提示画像ですが赤矢印の部分宝箱の左端に茶色の枠組み(0,0)左上端に描画では表示されません。これはなぜでしょうか?何かの誤差だと思うのですが原因がわかりません。
|
2
2
|
|
3
|
-
|
3
|
+
```cpp
|
4
4
|
|
5
|
-
|
5
|
+
glTranslatef(pos.x + (glm::abs(sizeEnd - sizeStart).x * dx / 2.0f), pos.y - (glm::abs(sizeEnd - sizeStart).y * dy / 2.0f), 0);
|
6
6
|
|
7
|
-
|
7
|
+
```
|
8
8
|
|
9
|
-
|
9
|
+
部の座標のpos部を(-1,1)としましたがまだどこかで誤差が出ているため端が表示されませんこれは何の誤差なのでしょうか?提示コードの////コメント部のコード
|
10
|
-
|
11
|
-
###### UV座標を確認
|
12
10
|
|
13
11
|
|
14
12
|
|
@@ -18,33 +16,19 @@
|
|
18
16
|
|
19
17
|
|
20
18
|
|
19
|
+
![イメージ説明](3192d3cae52892c0dba2b660a9bf8680.png)
|
20
|
+
|
21
|
+
```cpp
|
21
22
|
|
22
23
|
|
23
24
|
|
25
|
+
FrameWork::DrawTexture(glm::vec2(100, 100), glm::vec2(0, 0), glm::vec2(48, 48), 0, "Assets/Item.png");
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
![イメージ説明](81e92a051fe6d6a3d7e9842fd60336c2.png)
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
```cpp
|
40
|
-
|
41
|
-
FrameWork::DrawTexture(glm::vec2(
|
27
|
+
FrameWork::DrawTexture(glm::vec2(0, 0), glm::vec2(0, 0), glm::vec2(48, 48), 0, "Assets/Item.png");
|
42
28
|
|
43
29
|
|
44
30
|
|
45
31
|
```
|
46
|
-
|
47
|
-
|
48
32
|
|
49
33
|
```cpp
|
50
34
|
|
@@ -60,7 +44,7 @@
|
|
60
44
|
|
61
45
|
float dy = 1.0f / (FrameWork::getWindowContext()->getSize().y / 2);
|
62
46
|
|
63
|
-
|
47
|
+
pos = FrameWork::getWindowPosition(pos);
|
64
48
|
|
65
49
|
// std::cout << p.x << std::endl;
|
66
50
|
|
@@ -71,6 +55,14 @@
|
|
71
55
|
TextureData data = FrameWork::LoadTexture(fileName);
|
72
56
|
|
73
57
|
GLuint texture;
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
const float aspect = FrameWork::getWindowContext()->getSize().x / FrameWork::getWindowContext()->getSize().y; //アスペクト比
|
62
|
+
|
63
|
+
const glm::vec2 offset = glm::vec2(aspect, -1.0f);
|
64
|
+
|
65
|
+
const float rate = 2.0f / FrameWork::getWindowContext()->getSize().y;
|
74
66
|
|
75
67
|
|
76
68
|
|
@@ -114,35 +106,39 @@
|
|
114
106
|
|
115
107
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
116
108
|
|
109
|
+
glm::vec2 scale = glm::abs(sizeEnd - sizeStart);
|
110
|
+
|
117
111
|
|
118
112
|
|
119
113
|
glPushMatrix();
|
120
114
|
|
121
115
|
{
|
122
116
|
|
123
|
-
|
117
|
+
//////////////////////////////////////////////////////////////////////////////////////////////////////////
|
124
118
|
|
125
119
|
glMatrixMode(GL_MODELVIEW);
|
126
120
|
|
127
|
-
gl
|
121
|
+
glTranslatef(pos.x + (glm::abs(sizeEnd - sizeStart).x * dx / 2.0f), pos.y - (glm::abs(sizeEnd - sizeStart).y * dy / 2.0f), 0);
|
128
122
|
|
129
|
-
//glScalef(dx * scale.x,dy * scale.y, 0);
|
130
123
|
|
131
|
-
glTranslatef(0, 0, 0);
|
132
124
|
|
133
|
-
|
125
|
+
glScalef(scale.x * dx, scale.y * dy, 0);
|
126
|
+
|
127
|
+
std::cout << "pos.x: " << pos.x << std::endl;
|
128
|
+
|
129
|
+
std::cout << "pos.y: " << pos.y << std::endl;
|
134
130
|
|
135
131
|
glRotated(FrameWork::GetAngle(r), 0, 0, 1);
|
136
132
|
|
133
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
137
134
|
|
138
135
|
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
-
glBegin(GL_P
|
139
|
+
glBegin(GL_QUAD_STRIP);
|
140
140
|
|
141
141
|
{
|
142
|
-
|
143
|
-
glTexCoord2f(start.x, end.y);
|
144
|
-
|
145
|
-
glVertex2f(-1, -1);
|
146
142
|
|
147
143
|
|
148
144
|
|
@@ -152,15 +148,23 @@
|
|
152
148
|
|
153
149
|
|
154
150
|
|
155
|
-
glTexCoord2f(end.x, start.
|
151
|
+
glTexCoord2f(end.x, start.x);
|
156
152
|
|
157
153
|
glVertex2f(1, 1);
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
glTexCoord2f(start.x, end.y);
|
158
|
+
|
159
|
+
glVertex2f(-1, -1);
|
158
160
|
|
159
161
|
|
160
162
|
|
161
163
|
glTexCoord2f(end.x, end.y);
|
162
164
|
|
163
165
|
glVertex2f(1, -1);
|
166
|
+
|
167
|
+
|
164
168
|
|
165
169
|
}
|
166
170
|
|
4
文章を修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
gl
|
1
|
+
glbegin()を使っててテクスチャ描画を行いたい。
|
test
CHANGED
@@ -4,9 +4,13 @@
|
|
4
4
|
|
5
5
|
######一旦スケール、回転、平行移動を無視して矩形を描画
|
6
6
|
|
7
|
-
######gl
|
7
|
+
######glTranslatef関数の値を確認
|
8
8
|
|
9
9
|
######スケールの値をいじる。(提示画像)
|
10
|
+
|
11
|
+
###### UV座標を確認
|
12
|
+
|
13
|
+
|
10
14
|
|
11
15
|
|
12
16
|
|
3
文章とタイトルを修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,28 @@
|
|
1
|
-
提示コードの
|
1
|
+
提示コードの下部のglbegin();関数部内部ですが座標を変えても座標が変化せずスケールを触ると大きさと座標が変化しますこれはどういうことなのでしょうか?原因がわかりません。
|
2
2
|
|
3
|
+
###調べたこと
|
4
|
+
|
5
|
+
######一旦スケール、回転、平行移動を無視して矩形を描画
|
6
|
+
|
3
|
-
値を
|
7
|
+
######glRranslatef関数の値を確認
|
8
|
+
|
9
|
+
######スケールの値をいじる。(提示画像)
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
![イメージ説明](81e92a051fe6d6a3d7e9842fd60336c2.png)
|
4
26
|
|
5
27
|
|
6
28
|
|
@@ -22,7 +44,7 @@
|
|
22
44
|
|
23
45
|
```cpp
|
24
46
|
|
25
|
-
void DrawTexture(glm::vec2 pos, glm::vec2 sizeStart, glm::vec2 sizeEnd,GLfloat r, const char* fileName)
|
47
|
+
void DrawTexture(glm::vec2 pos, glm::vec2 sizeStart, glm::vec2 sizeEnd,GLfloat r, const char* fileName)
|
26
48
|
|
27
49
|
{
|
28
50
|
|
@@ -34,17 +56,13 @@
|
|
34
56
|
|
35
57
|
float dy = 1.0f / (FrameWork::getWindowContext()->getSize().y / 2);
|
36
58
|
|
37
|
-
////////////////////////////////////////////////////////////////////////////////
|
38
|
-
|
39
59
|
glm::vec2 p = FrameWork::getWindowPosition(pos);
|
40
|
-
|
41
|
-
|
42
60
|
|
43
61
|
// std::cout << p.x << std::endl;
|
44
62
|
|
45
63
|
// std::cout << p.y << std::endl;
|
46
64
|
|
47
|
-
|
65
|
+
|
48
66
|
|
49
67
|
TextureData data = FrameWork::LoadTexture(fileName);
|
50
68
|
|
@@ -98,17 +116,17 @@
|
|
98
116
|
|
99
117
|
{
|
100
118
|
|
119
|
+
glm::vec2 scale = glm::abs(sizeEnd - sizeStart);
|
120
|
+
|
101
121
|
glMatrixMode(GL_MODELVIEW);
|
102
122
|
|
103
|
-
gl
|
123
|
+
glScalef(0.5,0.5, 0);
|
104
124
|
|
105
|
-
glScalef(dx * scale.x,dy * scale.y, 0);
|
125
|
+
//glScalef(dx * scale.x,dy * scale.y, 0);
|
106
126
|
|
107
|
-
|
127
|
+
glTranslatef(0, 0, 0);
|
108
128
|
|
109
|
-
glTranslatef(p.x,p.y,0);
|
129
|
+
//glTranslatef(p.x,p.y,0);
|
110
|
-
|
111
|
-
///////////////////////////////////////////////////////////////////////////
|
112
130
|
|
113
131
|
glRotated(FrameWork::GetAngle(r), 0, 0, 1);
|
114
132
|
|
@@ -162,4 +180,6 @@
|
|
162
180
|
|
163
181
|
|
164
182
|
|
183
|
+
|
184
|
+
|
165
185
|
```
|
2
タグを修正
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
1
タイトルを修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
glTranlate
|
1
|
+
glTranslatef();関数で表示座標が変わらない原因が知りたい。
|
test
CHANGED
File without changes
|