当我以前编写java代码时,有一些布局管理器,如“网格包”和框。
我正在使用Cocos2D-X进行游戏,并且在屏幕上布置对象时遇到了麻烦,因此它们不是硬编码位置,而是基于布局。设备之间的像素差异是造成我的问题的原因。
我知道Cocos2D有办法解决这个问题,但我的作品质量很大,质量很高,我想根据设备调整尺寸。
所以我在考虑使用原生的OpenGL,但是我可能无法弄清楚是否有布局管理器已经可用。
有人可以讨论在OpenGL中布局对象的方法吗? C ++
答案 0 :(得分:0)
OpenGL具有Viewport的概念。这是您要绘制的屏幕/窗口坐标框。设置视口后,您现在使用的是有时称为相机坐标的视图。
摄像机坐标从视口最左侧的-1.0到极端的1.0。类似地,Y坐标在极端底部为-1.0,在极端顶部为1.0。视口之外的任何东西都不是绘制的。
您的模型可以存在于您喜欢的任何坐标系中。然后使用转换矩阵将对象转换为相机坐标。
答案 1 :(得分:0)
不需要为此而去Opengl,而不是以像素为单位来定位你的作品;你实际上可以根据屏幕百分比来定位它们。
如果是背景图片,您可以将其定位 CCSize size = CCDirector :: ....-> getWinSize(); x = size.width / 2; y = size.height / 2; 图像 - > setPosition两种(X,Y); 如果图像的锚点是中心,则图像将居中。
如果你有很多艺术品,那就不一样了。
增加更多(更新)
retina = 2048×1536
normal = 1024×768
retinaWidth = normal.width * 2;//(2048)
retinaHeight = normal.height * 2;//(1536)
spriteInNormalRes{
x = 250px(which you will define with the percentage, in my first answer)
y = 264px(which you will define with the percentage, in my first answer)
}
spriteInRetinaRes{
x = spriteInNormalRes.x * 2
y = spriteInNormalRes.x * 2
}
你可以加倍x,y来定位精灵。 +自定义scaleRatio,以您想要的大小调整大小。
注意:您不一定要将值加倍,为您测试正确的值。