在3D游戲中,UI這一塊也是挺重要的, 它提供了用戶友好的操作接口。一般的話,需要一個控件庫,都基本采用自繪來組織。基本上都是貼圖及位置計算,布局,消息傳遞等。我之前也做過兩年信息系統的UI,感覺應該沒什么問題,跟游戲大致相同。不過游戲要求要適應多分辨率布局支持,好了,這下麻煩了,由于早期OpenGL一般只支持256*256以下的圖片,而要做一張512*512的底圖顯然需要四張256*256的小貼圖拼接而成,雖然說OpenGL會提供相當的圖片像素點插值來擴大或縮小貼圖,但如果你移動窗口底圖到某個地方的話, 很顯然的會出現 + 裂縫,經過各種方式都未能搞定。 大家有做過這種問題的, 或者有什么好的建議的好, 跟我說一下, 謝謝!
注:WOW的UI窗口底圖也是256*256的底圖拼接而成,但它為什么就不會出現裂縫呢?而且它的UI界面還可以調整縮放的,真的好強,但我不明白它當中的道理, 悶就只有一個字, 對你說一次, 有搞過的, 一定要對我說喔, 十分感謝!
問題終于解決了, 原來OpenGL的紋理沒有鏡像尋址方式, 所以很麻煩, 暫時沒想到更好的方法, 只能讓窗口的底圖有一張圖。后來我改用了D3D,知道D3D有一種紋理尋址方式叫D3DTADDRESS_MIRROR, 過濾方式使用線性插值就可以了。現在窗口的底圖完全可以像wow一樣,用四張圖拼成,每張圖不超過256*256, 以適應配置更低的機器使用。