在3D游戏中,UI这一块也是挺重要的, 它提供了用户友好的操作接口。一般的话,需要一个控件库,都基本采用自绘来组织。基本上都是贴图及位置计算,布局,消息传递等。我之前也做过两年信息系统的UI,感觉应该没什么问题,跟游戏大致相同。不过游戏要求要适应多分辨率布局支持,好了,这下麻烦了,由于早期OpenGL一般只支持256*256以下的图片,而要做一张512*512的底图显然需要四张256*256的小贴图拼接而成,虽然说OpenGL会提供相当的图片像素点插值来扩大或缩小贴图,但如果你移动窗口底图到某个地方的话, 很显然的会出现 + 裂缝,经过各种方式都未能搞定。 大家有做过这种问题的, 或者有什么好的建议的好, 跟我说一下, 谢谢!
注:WOW的UI窗口底图也是256*256的底图拼接而成,但它为什么就不会出现裂缝呢?而且它的UI界面还可以调整缩放的,真的好强,但我不明白它当中的道理, 闷就只有一个字, 对你说一次, 有搞过的, 一定要对我说喔, 十分感谢!
问题终于解决了, 原来OpenGL的纹理没有镜像寻址方式, 所以很麻烦, 暂时没想到更好的方法, 只能让窗口的底图有一张图。后来我改用了D3D,知道D3D有一种纹理寻址方式叫D3DTADDRESS_MIRROR, 过滤方式使用线性插值就可以了。现在窗口的底图完全可以像wow一样,用四张图拼成,每张图不超过256*256, 以适应配置更低的机器使用。