|
|
我的2D内容是用Sprite画上去的:(下面是“伪”代码啊)
sprite.begin(alphaBand)
sprite.draw2D(texture1,x,y,color);
sprite.draw2D(texture2,x,y,color);
……
sprite.end();
当然也有其他的方式,但我觉得这种方法蛮管用。
内容是事先存在材质里的,不用每个周期都更新。
每个按钮单独一个材质。后面那个color可以影响她的外观,比如:正常情况浅灰、鼠标经过白色,不允许按用深灰,阴影用透明色。这些她都会自动给你过滤。按钮在案下的时候可以做个判断,加一个偏移量。
有的材质是固定的,而有的就得动态更新,比如说地图。地图是有一个材质作为缓冲,在放大缩小地图的时候,或者人物移动的时候更新这个材质。我是用GDI做的:
graphics.fromImage(buffer);
graphics.clear();
graphics.drawImage(原始地图,x,y,w,h);
graphics.transform(中点位置);
graphics.rotation(角色方向);
graphics.drawImage(人物的图标);
……
new texture(buffer);
我喜欢让地图以外的地方成为透明的,所以先清空。之后又加了人物图标的显示。好像每次更新得重新生成材质。
有的朋友担心使用DX3D编2D游戏得懂图形学,其实不用的。因为只有Sprite和textrue是3D的,不用作3D变换。有的人可能认为这样做很慢,事实上对性能并没有什么影响。并且她是和复杂度无关的,所以完全不用担心。 |
|