質問編集履歴

5

文章とタイトルを修正

2021/06/29 04:29

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- glbegin()を使っててテクスチャ描画を行いたい
1
+ glbegin() テクスチャの表示座標の誤差の修正方法が知りたい
test CHANGED
@@ -1,14 +1,12 @@
1
- 提示コード部のglbegin();関数部内部すが座標を変えても座標が変化せずスケールを触ると大きと座標が変化しこれはどういうことでしょうか?原因がわかりません。
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
- ######glTranslatef関数の値を確認
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(100,100),glm::vec2(48,48),glm::vec2(48 * 2,48 * 2),0,"Assets/Item.png");
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
- glm::vec2 p = FrameWork::getWindowPosition(pos);
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
- glm::vec2 scale = glm::abs(sizeEnd - sizeStart);
117
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
124
118
 
125
119
  glMatrixMode(GL_MODELVIEW);
126
120
 
127
- glScalef(0.5,0.5, 0);
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
- //glTranslatef(p.x,p.y,0);
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_POLYGON);
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.y);
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

文章を修正

2021/06/29 04:29

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- glTranslatef();関数で表示座標が変わらな原因が知りたい。
1
+ glbegin()を使っててテクスチャ描画を行いたい。
test CHANGED
@@ -4,9 +4,13 @@
4
4
 
5
5
  ######一旦スケール、回転、平行移動を無視して矩形を描画
6
6
 
7
- ######glRranslatef関数の値を確認
7
+ ######glTranslatef関数の値を確認
8
8
 
9
9
  ######スケールの値をいじる。(提示画像)
10
+
11
+ ###### UV座標を確認
12
+
13
+
10
14
 
11
15
 
12
16
 

3

文章とタイトルを修正

2021/06/29 03:11

投稿

退会済みユーザー
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
- glm::vec2 scale = glm::abs(sizeEnd - sizeStart);
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

タグを修正

2021/06/29 01:37

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes

1

タイトルを修正

2021/06/28 12:37

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- glTranlated();関数で表示座標が変わらない原因が知りたい。
1
+ glTranslatef();関数で表示座標が変わらない原因が知りたい。
test CHANGED
File without changes