返回顶部
首页 > 资讯 > 后端开发 > GO >如何在 2d 游戏中处理全屏?
  • 569
分享到

如何在 2d 游戏中处理全屏?

2024-04-04 23:04:55 569人浏览 安东尼
摘要

大家好,我们又见面了啊~本文《如何在 2d 游戏中处理全屏?》的内容中将会涉及到等等。如果你正在学习golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下

大家好,我们又见面了啊~本文《如何在 2d 游戏中处理全屏?》的内容中将会涉及到等等。如果你正在学习golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我正在使用 go 和渲染库“pixel”制作游戏。

我正在尝试全屏/调整大小,但我有一个问题,这就是如何处理图像拉伸

我已经看到并使用过游戏中“信箱”效果的解决方案。

也就是说,以相同的宽高比绘制游戏,因此拉伸不会成为问题,将多余的空间保留为黑条。

我的问题是,当尝试在此渲染库中执行此操作时,我只能缩放我正在绘制的“画布”的矩阵。

我习惯了使用 c++ 的 sfml,在其中我可以为“视图”[正在绘制的内容]定义固定大小,而不是缩放它。

这就是我获取矩阵当前缩放比例的方法,这是不正确的,但它就是我所拥有的。

camzoom是2.0,它在那里所以屏幕更大。如果 camzoom 为 1.0 [正常],则图像太小。

func letterBox(win *pixelgl.Window) {
windowRatio := winWidth / winHeight
viewRatio := win.Bounds().W() / win.Bounds().H()
sizeX := 1.
sizeY := 1.

horizontalSpacing := true
if windowRatio < viewRatio {
    horizontalSpacing = false
}

if horizontalSpacing {
    sizeX = viewRatio / windowRatio
} else {
    sizeY = windowRatio / viewRatio
}

viewMatrix = pixel.IM.
    Moved(pixel.V(win.Bounds().Center().X/camZoom, win.Bounds().Center().Y/camZoom)).
    ScaledXY(pixel.V(win.Bounds().Center().X/camZoom, win.Bounds().Center().Y/camZoom), pixel.V(sizeY, sizeX))

}

这是目前的样子:

正常[未调整大小,1024x768]:

窗口宽度增加[缩小] []2

窗口高度增加[在x上拉伸,隐藏大部分“画布”] []3

全屏[仅保持其原始大小,但“画布”的宽度略有缩小] []4

我实在无法弄清楚其中的数学原理。

如果这不是解决我遇到的全屏问题的最佳方法,请告诉我,我可以提出另一个问题,但有人告诉我这就是你应该这样做的方法。


解决方案


最终变得非常简单,只是我的一个数学错误。

func letterBox(win *pixelgl.Window) {
sizeX := 1.
sizeY := 1.

if win.Bounds().H()-winHeight > win.Bounds().W()-winWidth {
    sizeX = win.Bounds().W() / winWidth
    sizeY = win.Bounds().W() / winWidth
} else {
    sizeX = win.Bounds().H() / winHeight
    sizeY = win.Bounds().H() / winHeight
}

viewMatrix = pixel.IM.
    Moved(pixel.V(win.Bounds().Center().X/camZoom, win.Bounds().Center().Y/camZoom)).
    ScaledXY(pixel.V(win.Bounds().Center().X/camZoom, win.Bounds().Center().Y/camZoom), pixel.V(sizeX, sizeY))

}

只需弄清楚新尺寸窗口的宽度差异是否更大,或者高度差异更大,然后应用相同的比率[新窗口宽度/旧框架宽度]来正确缩放矩阵。对一个愚蠢问题的愚蠢回答。

以上就是《如何在 2d 游戏中处理全屏?》的详细内容,更多关于的资料请关注编程网公众号!

您可能感兴趣的文档:

--结束END--

本文标题: 如何在 2d 游戏中处理全屏?

本文链接: https://lsjlt.com/news/596187.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在 2d 游戏中处理全屏?
    大家好,我们又见面了啊~本文《如何在 2d 游戏中处理全屏?》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下...
    99+
    2024-04-04
  • win10玩游戏如何全屏
    要将Windows 10上的游戏全屏,您可以尝试以下方法:1. 使用键盘快捷键:按下Alt + Enter键,这将使游戏在全屏和窗口...
    99+
    2023-09-01
    win10
  • 在windows上玩游戏不能全屏如何解决
    这篇“在windows上玩游戏不能全屏如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“在windows上玩游戏不能全屏...
    99+
    2023-06-27
  • win10系统如何设置游戏全屏
    这篇文章主要介绍win10系统如何设置游戏全屏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!win+R打开运行,然后输入regedit。依次打开HKEY_CURRENT_USER\Software\Blizzard ...
    99+
    2023-06-28
  • win7系统如何设置游戏全屏
    这篇文章给大家分享的是有关win7系统如何设置游戏全屏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、按“win+r”组合键唤出运行,然后在运行内输入“regedit”,点击确定。二、在展开的注册表编辑器中,依...
    99+
    2023-06-28
  • win10玩游戏不能全屏如何解决
    这篇文章主要介绍“win10玩游戏不能全屏如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win10玩游戏不能全屏如何解决”文章能帮助大家解决问题。win10玩游戏不能全屏解决方法:按下快捷键...
    99+
    2023-07-01
  • win7玩游戏不能全屏如何解决
    如果在Windows 7上玩游戏时无法全屏,请尝试以下解决方法:1. 确保游戏和显卡驱动程序都是最新版本。有时,更新游戏或驱动程序可...
    99+
    2023-10-18
    win7
  • Python在游戏中如何进行热更新处理
    小编给大家分享一下Python在游戏中如何进行热更新处理,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!原理:1.标准import都知道Python提供了import可以导入一个标准的python模块,将模块载入内存,并加到...
    99+
    2023-06-25
  • 怎么在win8电脑中实现全屏玩游戏
    小编给大家分享一下怎么在win8电脑中实现全屏玩游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先,咱们需要返回到win8电脑的传统桌面位置,之后,咱们在wi...
    99+
    2023-06-28
  • win7电脑玩游戏不能全屏如何解决
    如果您的Windows 7电脑在玩游戏时无法全屏,可以尝试以下解决方法:1. 检查游戏设置:在游戏中,查看游戏的设置选项,确保全屏模...
    99+
    2023-08-25
    win7
  • win10游戏录屏如何开启
    要在Windows10中开启游戏录屏功能,可以使用内置的“游戏栏”工具。请按照以下步骤操作:1. 打开你想要录制的游戏,并确保它正在...
    99+
    2023-09-11
    win10
  • win11打游戏卡顿如何处理
    如果您在使用Windows 11操作系统时遇到游戏卡顿的问题,以下是一些可能的解决方法:1. 更新显卡驱动程序:确保您的计算机上安装...
    99+
    2023-09-08
    win11
  • 笔记本电脑玩游戏不能全屏如何解决
    这篇文章主要讲解了“笔记本电脑玩游戏不能全屏如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“笔记本电脑玩游戏不能全屏如何解决”吧!一、点击开始,选择:控制面板,把查看方式选择为类别,点...
    99+
    2023-06-28
  • ​win7系统玩游戏无法全屏显示如何解决
    如果在Windows 7系统中玩游戏时无法全屏显示,可以尝试以下解决方法: 检查游戏设置:进入游戏设置菜单,查看是否有“全屏显示...
    99+
    2023-10-21
    ​win7
  • win10打游戏的时候如何切屏
    在Windows 10上玩游戏时,可以使用以下方法切换屏幕:1. 使用快捷键:按下Alt + Tab键,以在打开的应用程序之间进行切...
    99+
    2023-09-01
    win10
  • Win7游戏管理器的使用让第三方游戏在游戏管理器中显示
      提起Win7的游戏管理器,可以将众多的游戏集成到一个窗口中且能完整地显示每个游戏的详细信息,因此非常方便我们从中选择自己喜欢的游戏来玩。但美中不足的是,Windows7游戏管理器只支持显示微软自己开发的某些游戏(如&...
    99+
    2023-06-02
    win7 游戏管理器 使用 游戏 管理器 Win7
  • 如何在CocosCreator中使用游戏手柄
    这篇文章主要介绍了如何在CocosCreator中使用游戏手柄,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.场景布置2. 添加手柄监听器1.监听事件的变化由原先的mous...
    99+
    2023-06-14
  • 如何在PHP中实现游戏开发
    随着互联网的迅猛发展,游戏开发已经成为了一个全新的行业,吸引越来越多的开发者前来尝试。游戏开发所需的技能包括图形处理、物理处理、游戏逻辑和网络通信等,在这些技能中,编程技能是不可或缺的一部分。PHP作为一种流行的编程语言,虽然被认为主要用于...
    99+
    2023-05-21
    PHP 实现 游戏开发
  • win11玩游戏蓝屏重启如何解决
    遇到Windows 11玩游戏蓝屏重启的问题,可以尝试以下解决方法:1. 更新显卡驱动程序:使用最新的显卡驱动程序可以解决许多游戏相...
    99+
    2023-09-08
    win11
  • win10录屏只能录游戏如何解决
    这篇文章主要介绍“win10录屏只能录游戏如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win10录屏只能录游戏如何解决”文章能帮助大家解决问题。解决方法:点击开始选择“Xbox 控制台小帮...
    99+
    2023-07-01
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作