我正在SDL中进行游戏,并对分辨率进行了监督。一切(精灵)都太大了,我想知道是否可以提高分辨率,因此一切都较小,而无需更改每个精灵或修改如何创建曲面?以下是我处理的:如何更改SDL中窗口的分辨率?一切都太大
回答
由于SDL 2.0.0,您可以使用函数SDL_RenderSetLogicalSize
to set a device independent resolution for rendering。
这种方式,你可以设置你的渲染与期望的目标分辨率和借鉴一切,如果你是该决议的工作。
我举官方documentation:
这是在好的时候,您可以更改逻辑呈现大小,以达到不同的效果,但主要用途是这样的:而不是试图使该系统的工作与你的渲染大小,我们现在可以使您的渲染大小与系统一起工作。在我的1920x1200显示器上,该应用程序认为它现在正在与640x480分辨率对话,但SDL正在使用GPU将其缩放以使用所有像素。请注意,640x480和1920x1200的纵横比不尽相同:SDL也会尽可能地缩放比例,并将其差异化。
请注意,您可以控制缩放是如何发生的与bunch of hints,作为一个例子SDL_HINT_RENDER_SCALE_QUALITY
。
尽管如此,'SDL_RenderSetLogicalSize()'单独缩放每个绘图(而不是使用渲染目标)。这可能会导致屏幕上出现瑕疵,特别是当您不绘制整个纹理时(例如,使用精灵表)。 有关于使用渲染目标而不是单独缩放每个绘图的讨论。 AFAIK这还没有实现,它依赖于api/hw/platform /等提供的渲染到纹理功能。 –
有趣。我正在研究小游戏,通常我没有精灵表,所以老实说,我从来没有见过你说的那些文物。无论如何,如果您可以提供几个链接,我很乐意将回复与更多细节进行整合。谢谢。 – skypjack
[This](http://forums.libsdl.org/viewtopic.php?t=10411&postdays=0&postorder=asc&start=15)是讨论这个问题的线索之一。可悲的是代码不在那里了,提到的问题是我(mr_tawan在该板),所以它很难成为一个参考。在Sam(SDL dev)的下面提到,他已经承认这个问题,并且会考虑解决这个问题。 –
是的,你可以把分辨率提高一点。如果您使用全屏模式,这会使您的精灵显得更小,就像调整显示器分辨率一样。当你处于窗口模式时,窗口会变大,但精灵看起来是一样的。
你可以求助于虚拟分辨率@skypjack所提及。一种方法是使用SDL_RenderSetLogicalSize()
,另一种是做渲染目标。
也可以调整子画面,无论是联机(指定目标RECT是小于源),或离线(使用类似的ACDSee或Photoshop批量图像处理工具)。
到底你有更多的空间来填补。
我的建议是,当你与图形工作,尝试铭记的目标分辨率,例如1280×720 800×600或。然后围绕此分辨率设计所有资产。最后,您将拥有合适的资产,而无需借助编程技巧。那么如果你遇到不同分辨率的设备,你可以使用上面提到的'虚拟分辨率'来修复它。还有一些技巧,比如安全框架或者信箱也是需要的,但是让我们把它作为一个提前的问题:-)。
- 1. Android手机中SDL窗口/纹理的分辨率问题
- 2. LibGDX分辨率太大
- 3. 改变分辨率后排列窗口
- 4. 如何使元素不调整窗口大小/分辨率更改
- 5. 如何限制可调整大小的窗口的分辨率?
- 6. 如何阅读屏幕分辨率 - 并更改此分辨率?
- 7. 窗口中的帧分辨率 - Cocos2dx
- 8. 更改System.Windows.Media.Imaging.ImageSource图像大小/分辨率?
- 9. 迪亚出口分辨率太小
- 10. X11,更改分辨率并使窗口全屏
- 11. 如何更改对话框来调整不同窗口的分辨率
- 12. 如何更改android屏幕分辨率
- 13. 更改屏幕分辨率
- 14. 更改图像分辨率
- 15. 如何在C++中获得窗口的分辨率?
- 16. 更改iPhone中图像的分辨率?
- 17. 更改html中的图像分辨率
- 18. 如何在不同分辨率下自动调整JavaFx中的窗口大小?
- 19. 如何根据分辨率更改图像大小?
- 20. 如何在小分辨率上更改字体大小
- 21. SuperCollider FreqScope:更改频率分辨率
- 22. 可调整大小的窗口分辨率
- 23. SDL - 获取本机屏幕分辨率
- 24. 在Python中更改数据分辨率
- 25. 在DirectX9中更改分辨率
- 26. 在OpenTK中更改分辨率
- 27. 在DirectX 11中更改分辨率
- 28. c#在显示分辨率上调整窗口大小
- 29. 用PHP获取浏览器窗口大小/分辨率
- 30. 防止调整窗口大小取决于分辨率
在纯SDL2,你将不得不精灵与像SDL2_gfx外部库减少。也许现在是时候让你学习OpenGL,它可以在没有像SDL那样的性能损失的情况下进行这些操作。 –
谢谢!在我的游戏中,我预先加载了主循环之前的所有精灵,所以最小化它们不应该影响性能......任何进一步......;) – Dane
对于游戏开发网站可能是一个更好的问题。 – CDuck