游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3450|回复: 5

OpenGL纹理贴图,显示效果如何保持同一比例?

[复制链接]

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2006-7-2 21:11:00 | 显示全部楼层 |阅读模式
采用同一副BMP位图(例如砖墙位图),向多个的四边形上进行贴图,不规则的四边形包括不同长度、宽度的矩形,以及梯形。
以前采用下述方式进行贴图:
glTexCoord2f(0.0f,0.0f);
glVertex3f(v1.m_x,v1.m_y,v1.m_z);

glTexCoord2f(1.0f,0.0f);
glVertex3f(v2.m_x,v2.m_y,v2.m_z);

glTexCoord2f(1.0f,1.0f);
glVertex3f(v3.m_x,v3.m_y,v3.m_z);

glTexCoord2f(0.0f,1.0f);
glVertex3f(v4.m_x,v4.m_y,v4.m_z);

由于不同的矩形的长度、宽度不一致,因此砖墙的纹理不统一,显示效果较差。现在需要将这些纹理的比例在显示上一致,例如一块砖的长度在任何四边形上都保持一致,在OpenGL中该如何设置?
恳请大家指点!

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-7-2 23:00:00 | 显示全部楼层

Re:OpenGL纹理贴图,显示效果如何保持同一比例?

将纹理坐标用投影空间的顶点坐标代替,OGL我没用过,不过相应的功能肯定是有的,你去找一下吧,或者直接用shader也行

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2006-7-2 23:38:00 | 显示全部楼层

Re:OpenGL纹理贴图,显示效果如何保持同一比例?

感谢楼上的兄弟,给的提示。将纹理坐标用投影空间的顶点坐标代替,不知道如何做?有没有兄弟知道稍微具体点的步骤,不甚感激!

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2006-7-3 12:52:00 | 显示全部楼层

Re:OpenGL纹理贴图,显示效果如何保持同一比例?

焦急等待中!!!

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-7-3 21:13:00 | 显示全部楼层

Re:OpenGL纹理贴图,显示效果如何保持同一比例?

将顶点坐标经过WORLD*VIEW*PROJ矩阵变换之后,再除以w分量,然后取xy分量作为纹理坐标,纹理寻址模式设为WRAP

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2006-7-7 09:14:00 | 显示全部楼层

我来告诉你吧

glTexCoord2f(0.0f,0.0f);
glTexCoord2f(1.0f,0.0f);
glTexCoord2f(1.0f,1.0f);
glTexCoord2f(0.0f,1.0f);
这样明显是"完整地"显示一张BMP,如果顶点坐标不同,那当然就失去比例了.
应该用顶点坐标来计算,得到文理坐标.
顶点4边形的 长宽比例为 1:m 时
glTexCoord2f(0.0f , 0.0f);
glTexCoord2f(1.0f , 0.0f);
glTexCoord2f(1.0f , m);
glTexCoord2f(0.0f , m);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 21:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表