OpenGL建筑物贴图问题

rick1983 2007-09-30 04:48:09
我要制作一个建筑物的三维模型,在一张含有建筑物部分纹理(例如房顶纹理)的影像上,截取长方形的影像块,生成了纹理,再在纹理中取出所需部分贴在建筑物的顶部。思路是没有错的,但是问题出来了,贴的纹理每次都不一样,有时候是正确的,有时候又是错误的希望高手能帮助解决这个问题。部分代码如下:
(注:影像的坐标系为屏幕坐标系)
struct POINT3D_IMG {
double X, Y, Z;
float ix, iy; // texture coordinate
};

DrawTriangle( POINT3D_IMG *pts ,double xmin, double ymin, double wid, double hei)
{
glBegin( GL_TRIANGLES );
glColor3f(1.0f, 1.0f, 1.0f);


for( int i=0; i<3; i++)
{
glTexCoord2f((pts->ix-xmin)/wid, 1-(pts->iy-ymin)/hei);
glVertex3d( pts->X, pts->Y, pts->Z );

pts++;
}

glEnd();
}
...全文
74 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rick1983 2007-10-07
  • 打赏
  • 举报
回复
现在问题解决了,确实就是纹理大小的问题
以前对纹理尺寸的关注程度不够高
现在我直接将纹理的大小设定为256*256或者512*512
问题就解决了
呵呵
真的要谢谢dungeon——lord的帮助
rick1983 2007-10-06
  • 打赏
  • 举报
回复
在程序测试的时候,我注意了纹理的大小,因为大小取决于建筑物而定,所以尺寸不可能是2的n次方。
而且贴图正确的时候的纹理尺寸也不是2的n次方。
rick1983 2007-10-05
  • 打赏
  • 举报
回复
谢谢dungeon——lord的分析,很有道理,可能真的是纹理尺寸的问题。
我不太明白您所说的“特定厂商的扩展”是指什么,因为我对OpenGL了解得还不够深入,如果方便的话,希望您能解释一下
谢谢
dungeon_lord 2007-10-02
  • 打赏
  • 举报
回复
"有时候是正确的,有时候又是错误"
检查一下你的纹理尺寸。纹理的尺寸应该是2的n次方,如果没有使用特定厂商的扩展的话。
“有时候正确”也许碰巧纹理的尺寸是2的n次方,也许根本就是错误的(因为你的眼睛分辨不出来,错误的程度很小)。
再一个可能的原因就是你的坐标计算有错误。

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧