go - 如何增加光线投射渲染距离?
问题描述
为了学习 Golang 并从中获得乐趣,我尝试将现有的 raycaster 项目从 C# 转换为 Go:https ://github.com/harbdog/raycaster-go
该原始项目主要基于lodev 光线投射教程。
这是我第一次创建 raycaster 引擎,除了一个主要问题:渲染距离太短,我想渲染得更远,但我看不到明显的参数,我已经设法让它进入良好的工作状态那将允许这样做。任何建议,将不胜感激!
如果您查看远处较大的墙何时决定绘制,这是一个 youtube 视频演示它和渲染距离问题: https ://www.youtube.com/watch?v=HqNorhH37xY
解决方案
原来是最近修复的 Ebiten 2D 渲染引擎中的一个错误!更新到最新版本的 Ebiten 解决了该问题。
go get -u github.com/hajimehoshi/ebiten/...
它的要点是旧版本的 Ebiten 不会渲染 Y 缩放小于 0.25 的 1 像素宽度的图像,根据 Ebiten 开发人员的说法,问题是:
好的,原因是使用线性过滤器选择 mipmap:如果几何矩阵的行列式很小,则使用 mipmap,但在您的情况下,mipmap 级别太高以至于图像宽度变为 0。这不会发生使用最近的过滤器,因为在这种情况下不使用 mipmap。
推荐阅读
- javascript - 曲线 25519 标量乘法库
- mysql - 存储在数据库中的日期和从数据库中获取的日期不同
- return - return 语句未按预期工作
- python - Cython 定义函数的类型
- angular - 如何使用角度通用预渲染执行 http 请求?
- python - 当模型有外键时,django-seeder 是否也使用?
- javascript - 使用 localstorage 将变量的值从子域传递到域
- python - 使用 py2app 将 python 应用程序转换为独立应用程序的正确方法是什么?
- html - 父 CSS 属性不会被覆盖
- cmake - 尝试构建 gprc 时出现未定义的引用错误