1

以前写java代码的时候,有“grid bag”和box之类的布局管理器。

我正在使用 Cocos2D-X 开发游戏,并且在屏幕上布局对象时遇到了麻烦,因此它们不是硬编码的位置,而是基于布局。设备之间的像素差异是导致我的问题的原因。

我知道 Cocos2D 有办法解决这个问题,但我的作品很大而且质量很高,我想根据设备调整它的大小。

所以我想只使用原生 OpenGL,但我可能无法弄清楚是否已经有布局管理器可用。

任何人都可以讨论在 OpenGL 中布局对象的方式吗?C++

4

2 回答 2

0

OpenGL 有一个视口的概念。这是您将要绘制的屏幕/窗口坐标中的框。设置视口后,您现在就可以使用有时称为相机坐标的东西。

相机坐标从视口最左侧的 -1.0 到最右侧的 1.0。类似地,对于 Y 坐标 -1.0 在极端底部,1.0 在极端顶部。位于视口之外的任何东西都不会被绘制。

您的模型可以存在于您喜欢的任何坐标系中。然后,您使用转换矩阵将对象转换为相机坐标。

于 2013-06-08T19:14:39.023 回答
0

无需为此使用 Opengl,而无需使用像素来定位您的艺术品;您实际上可以根据屏幕百分比定位它们。

如果它的背景图片你可以通过 CCSize size = CCDirector::....->getWinSize(); x = 尺寸.宽度/2; y = 尺寸.高度/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 以您想要的大小调整它们的大小。

注意:您不一定要将值加倍,为您测试正确的值。

于 2013-06-10T21:53:14.183 回答