我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

大家好,我们又见面了啊~本文《如何在 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 游戏中处理全屏?》的详细内容,更多关于的资料请关注编程网公众号!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

win10玩游戏如何全屏

要将Windows 10上的游戏全屏,您可以尝试以下方法:1. 使用键盘快捷键:按下Alt + Enter键,这将使游戏在全屏和窗口模式之间切换。2. 在游戏设置中更改:进入游戏的设置选项,通常可以在游戏的主菜单或选项中找到。在设置中,寻找
2023-09-01

在windows上玩游戏不能全屏如何解决

这篇“在windows上玩游戏不能全屏如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“在windows上玩游戏不能全屏
2023-06-27

win7系统如何设置游戏全屏

这篇文章给大家分享的是有关win7系统如何设置游戏全屏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、按“win+r”组合键唤出运行,然后在运行内输入“regedit”,点击确定。二、在展开的注册表编辑器中,依
2023-06-28

win10系统如何设置游戏全屏

这篇文章主要介绍win10系统如何设置游戏全屏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!第一步:win+R打开运行,然后输入regedit。第二步:依次打开HKEY_CURRENT_USER\Software\B
2023-06-28

Python在游戏中如何进行热更新处理

小编给大家分享一下Python在游戏中如何进行热更新处理,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!原理:1.标准import都知道Python提供了import可以导入一个标准的python模块,将模块载入内存,并加到
2023-06-25

win10玩游戏不能全屏如何解决

这篇文章主要介绍“win10玩游戏不能全屏如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win10玩游戏不能全屏如何解决”文章能帮助大家解决问题。win10玩游戏不能全屏解决方法:1、按下快
2023-07-01

win7玩游戏不能全屏如何解决

如果在Windows 7上玩游戏时无法全屏,请尝试以下解决方法:1. 确保游戏和显卡驱动程序都是最新版本。有时,更新游戏或驱动程序可以解决全屏问题。2. 检查游戏设置。在游戏中的“选项”或“设置”菜单中查找全屏选项,并确保已启用。3. 检查
2023-10-18

怎么在win8电脑中实现全屏玩游戏

小编给大家分享一下怎么在win8电脑中实现全屏玩游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.首先,咱们需要返回到win8电脑的传统桌面位置,之后,咱们在
2023-06-28

win7电脑玩游戏不能全屏如何解决

如果您的Windows 7电脑在玩游戏时无法全屏,可以尝试以下解决方法:1. 检查游戏设置:在游戏中,查看游戏的设置选项,确保全屏模式已经被启用。2. 更新显卡驱动程序:访问您的显卡制造商的官方网站,下载并安装最新的显卡驱动程序。更新显卡驱
2023-08-25

win11打游戏卡顿如何处理

如果您在使用Windows 11操作系统时遇到游戏卡顿的问题,以下是一些可能的解决方法:1. 更新显卡驱动程序:确保您的计算机上安装了最新的显卡驱动程序。您可以访问显卡制造商的官方网站,下载并安装最新的驱动程序。2. 降低图形设置:在游戏中
2023-09-08

​win7系统玩游戏无法全屏显示如何解决

如果在Windows 7系统中玩游戏时无法全屏显示,可以尝试以下解决方法:检查游戏设置:进入游戏设置菜单,查看是否有“全屏显示”或类似选项,确保该选项已启用。更新显卡驱动程序:更新显卡驱动程序可以解决许多与图形相关的问题。可以从显卡制造商的
2023-10-21

笔记本电脑玩游戏不能全屏如何解决

这篇文章主要讲解了“笔记本电脑玩游戏不能全屏如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“笔记本电脑玩游戏不能全屏如何解决”吧!一、点击开始,选择:控制面板,把查看方式选择为类别,点
2023-06-28

在Cocos2D-X中如何处理横版游戏的相机移动方式

编程学习网:我们在用Cocos2D-X制作横版游戏的时候,经常会用到相机移动这个功能,本篇教程将告诉你如何处理横版游戏的相机移动方式。
在Cocos2D-X中如何处理横版游戏的相机移动方式
2024-04-23

如何在CocosCreator中使用游戏手柄

这篇文章主要介绍了如何在CocosCreator中使用游戏手柄,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.场景布置2. 添加手柄监听器1.监听事件的变化由原先的mous
2023-06-14

游戏开发中的碰撞检测与处理机制(如何实现游戏中精确的碰撞检测与处理?)

碰撞检测和处理机制对于游戏开发至关重要,确保物体相互作用真实。精确检测和处理碰撞可以创建身临其境的游戏体验。有边界框、像素完美和网格等碰撞检测方法,每种方法都有其优点和缺点。碰撞处理包括刚体物理、脚本和状态机。要实现精确碰撞检测,需要考虑精度水平、实时性能和物体复杂性。具体实现涉及选择检测方法、定义处理机制、优化性能和进行广泛测试。最佳实践包括使用混合方法、利用空间分区、缓存结果和更新数据。精确的碰撞检测和处理对于创建可玩性和身临其境的玩家体验是必不可少的。
游戏开发中的碰撞检测与处理机制(如何实现游戏中精确的碰撞检测与处理?)
2024-04-02

如何在Ubuntu中快速迭代Pygame游戏

在Ubuntu中快速迭代Pygame游戏涉及几个关键步骤,包括安装必要的软件、组织项目结构、编写代码以及测试和调试。以下是一个基本的指南,帮助你高效地迭代Pygame游戏:1. 安装必要的软件首先,确保你的Ubuntu系统上安装了Pyt
如何在Ubuntu中快速迭代Pygame游戏
2024-10-13

全屏模式下如何处理Silverlight控件

小编给大家分享一下全屏模式下如何处理Silverlight控件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第1种方式,即应用图片的Stretch属性:
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录