用 love2d 画线会导致程序崩溃
2021-5-12 21:6:6
收藏:0
阅读:171
评论:2
我正在尝试使用 love2d 画一个六边形网格,使用 love.graphics.line,但在画了大约15000条线后,程序就会崩溃,并且只会显示 abort (core dumped) 这一个提示信息。
function love.load()
ww, wh = love.graphics.getDimensions()
hexradius = 10
size = 50
hexgrid = newGrid(hexradius, size, size)
end
function love.draw(dt)
drawgrid()
end
function drawgrid()
local jxOffset = hexgrid.rad * -math.tan(math.pi/1.5)
local ixOffset = jxOffset/4
local iyOffet = jxOffset * math.sin(math.pi/3)
for i=1,hexgrid.size.x do
for j=1,hexgrid.size.y do
love.graphics.push()
love.graphics.translate(ixOffset + j * jxOffset, i * iyOffet)
love.graphics.line(
hexgrid.hex[1].x, hexgrid.hex[1].y,
hexgrid.hex[2].x, hexgrid.hex[2].y,
hexgrid.hex[3].x, hexgrid.hex[3].y,
hexgrid.hex[4].x, hexgrid.hex[4].y,
hexgrid.hex[5].x, hexgrid.hex[5].y,
hexgrid.hex[6].x, hexgrid.hex[6].y,
hexgrid.hex[1].x, hexgrid.hex[1].y)
love.graphics.pop()
end
ixOffset = -ixOffset
end
end
function newGrid(rad, xsize, ysize)
local g = {
rad = rad,
hex = {},
size = {
x = xsize,
y = ysize,
},
}
for i=1,6 do
local dir = math.pi/3 * (i+0.5)
g.hex[i] = {}
g.hex[i].x = g.rad * math.cos(dir)
g.hex[i].y = g.rad * math.sin(dir)
end
return g
end
我对 love2d 和图形编程都比较陌生,所以可能我试图画了太多的线,导致无法实现,但我生成的网格并不是很大。我使用的是 LOVE 11.3。
先提前感谢!
点赞
用户6426128
如Luther在评论中建议的那样,这是Löve中的一个错误。它已经被修复并将在下一个版本Löve 11.4中提供。
谢谢!
2021-05-14 03:06:57
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

我建议使用多边形来绘制,看看是否能获得更好的效果。
love.graphics.polygon( mode, vertices )https://love2d.org/wiki/love.graphics.polygon
for i = 1, hexgrid.size.x do for j = 1, hexgrid.size.y do love.graphics.push() love.graphics.translate( ixOffset +j *jxOffset, i *iyOffet ) love.graphics.polygon( 'line', hexgrid.hex[1].x, hexgrid.hex[1].y, hexgrid.hex[2].x, hexgrid.hex[2].y, hexgrid.hex[3].x, hexgrid.hex[3].y, hexgrid.hex[4].x, hexgrid.hex[4].y, hexgrid.hex[5].x, hexgrid.hex[5].y, hexgrid.hex[6].x, hexgrid.hex[6].y ) love.graphics.pop() end ...或者,可以使用带有可选
segment参数设置为6的圆来绘制六边形。love.graphics.circle( mode, x, y, radius, segments )https://love2d.org/wiki/love.graphics.circle
for i = 1, hexgrid.size.x do for j = 1, hexgrid.size.y do love.graphics.circle( 'line', ixOffset +j *jxOffset, i *iyOffet, hexradius, 6 ) end ...