OpenGL - 四边形上的纹理坐标
Posted
技术标签:
【中文标题】OpenGL - 四边形上的纹理坐标【英文标题】:OpenGL - Texture coordinates on quad 【发布时间】:2012-09-25 14:56:13 【问题描述】:我不知道出了什么问题。一切似乎都很好。这是代码(已加载纹理,只是绘图):
glBegin( GL_QUADS );
float TX1,TX2,TY1,TY2;
TX1=some_numbers_check_below_code;
TX2=some_numbers_check_below_code;
TY1=some_numbers_check_below_code;
TY2=some_numbers_check_below_code;
glTexCoord2f(TX1,TY2);
glVertex3f( float(RectOutput.x), float(RectOutput.y), 0.0f );
glTexCoord2f(TX2,TY2);
glVertex3f( float(RectOutput.x+InputWidth), float(RectOutput.y), 0.0f );
glTexCoord2i(TX2,TY1);
glVertex3f( float(RectOutput.x+InputWidth), float(RectOutput.y+InputHeight), 0.0f );(InputY)/float(Input.H)) );
glTexCoord2f(TX1,TY1);
glVertex3f( float(RectOutput.x), float(RectOutput.y+InputHeight), 0.0f );
glEnd();
没关系:
TX1=0.0;
TX2=1.0;
TY1=1.0;
TY2=0.0;
(好:http://i.imgur.com/xLeBm.png)
但是被(例如)破坏了:
TX1=0.0;
TX2=0.5;
TY1=1.0;
TY2=0.5;
(像这样:http://i.imgur.com/UykBh.png)
真的,这让我很烦。可能问题不在此代码中。一切都应该没问题……但事实并非如此。
有什么想法吗?
【问题讨论】:
我不太了解你在做什么,我也不是 opengl 专家,但你似乎错过了以某种方式将纹理坐标发送到平面的三角形之一。 【参考方案1】:“我不知道出了什么问题。一切似乎都很好”。那太好了,不用回答了!
您应该首先解释在第二种情况下您期望得到什么。我不是 OpenGL 专家,但你的第二组坐标似乎坏了。
第一个:0,0 -> 1,0 -> 1,1 -> 0,1
:
0 1
0 x---->x
| |
| |
| v
1 x<----x
第二个:0,.5 -> .5,.5 -> .5,1 -> 0,1
:
0 1
0 +-----+
| |
x->x |
| v |
1 +--x->x
如果你想缩放纹理(但我不知道你没有写出应该是什么结果)那么这显然是错误的。
【讨论】:
感谢您的回答,但我自己修好了。这只是一个愚蠢的错误 glTexCoord2i insted of glTexCoord2f ;)【参考方案2】:哦……我觉得自己很愚蠢。抱歉耽误了时间。这是错误:
glTexCoord2i(TX2,TY1);
我应该使用 glTexCoord2 f 而不是 i ...只是忘记更改它...
【讨论】:
以上是关于OpenGL - 四边形上的纹理坐标的主要内容,如果未能解决你的问题,请参考以下文章