OpenGL, C++ -> 你如何在屏幕上布置对象?

OpenGL, C++ -> How do you lay out objects on screen?

本文关键字:屏幕 布置 对象 C++ gt OpenGL      更新时间:2023-10-16

当我编写java代码时,有像"grid bag"answers" box "这样的布局管理器。

我正在制作一款使用Cocos2D-X的游戏,并且遇到了在屏幕上布局对象的问题,所以它们不是硬编码的位置,而是基于布局。设备之间的像素差异导致了我的问题。

我知道Cocos2D有办法处理这个问题,但我的美术作品又大又高质量,我想根据设备来调整它的大小。

所以我想只是去本地OpenGL,但尝试,因为我可能无法弄清楚是否有布局管理器已经可用。

谁能讨论的方式一个可能布局对象在OpenGL?c++

OpenGL有Viewport的概念。这是屏幕/窗口坐标中的方框,你将绘制到其中。一旦你设置了视口,你现在就使用了所谓的相机坐标。

摄像机坐标从视口最左边的-1.0到最右边的1.0。同样的,对于Y坐标-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来定位精灵。+自定义缩放,将它们调整为您想要的大小。