我正在使用SDL和C++编写2D平台游戏.但是我遇到了涉及扩展到分辨率的巨大问题.我希望游戏在全高清中看起来不错,因此游戏的所有图像都已创建,因此游戏的自然分辨率为1920x1080.但是,如果有人使用较小的分辨率,我希望游戏缩小到正确的分辨率,如果有人使用更大的分辨率,我希望缩小比例.
问题是我无法找到一种有效的方法来实现这一点.我首先使用SDL_gfx库预先缩放所有图像,但这不起作用,因为它会产生大量的逐个错误,一个像素丢失的地方.并且由于动画播放时我的动画包含在一个图像中,因此动画会在每帧上下移动.
经过一番回顾后,我尝试使用opengl来处理缩放.目前我的程序将所有图像绘制到一个1920x1080的SDL_Surface.然后,它将此曲面转换为opengl纹理,将此纹理缩放到屏幕分辨率,然后绘制纹理.这在视觉上很好用,但问题是它根本没有效率.目前我得到的最大fps为18 :(
所以我的问题是,是否有人知道将SDL显示缩放到屏幕分辨率的有效方法?
当在c ++中重载"=="运算符时,是否存在关于明确意味着什么的标准定义,或者"=="应如何表现的一组准则?
我目前有一个类不会将其整个自我存储在内存中.它基本上使用优先级队列来确定自身内部对象的使用频率,以及何时从队列末尾弹出对象,将它们从内存中删除并写入磁盘.
所以现在问题出现在相等的问题上,这两个对象的相同之处是什么意思.因为我们可以从对象A和B开始,它们在各方面都是相同的,所以它们将相同的数据加载到内存中,并且它们在磁盘上具有相同的数据.但是在调用A和B上的一系列函数后,它们现在可能会有所不同.A和B在磁盘上仍然具有相同的数据,但它们将不同的数据加载到内存中.那么问题应该A == B是真的还是假的?
是否有一套规则或指导方针来定义这应该如何运作?或者这只是我决定什么对程序最有意义并记录"=="的作用的情况?
c++ equality operator-overloading equivalence-classes c++-concepts