Canvas:drawImage方法失败,没有错误
Canvas: drawImage method fails without error
一个小背景:
我正在制作一款基于二维浏览器的游戏。渲染代码将移动对象和场景对象拆分为两组,然后将每组整体绘制到8192x8192画布上,该画布不直接显示。只有当该组中的某些内容以某种方式发生变化时,才会执行此操作。对于所有帧,完成以下操作:
canvas.drawImage(
zoneBufferStatic,
Math.floor((w / 2 - playerX) * tileSize),
Math.floor((h / 2 - playerY) * tileSize)
);
canvas.drawImage(
zoneBufferDynamic,
Math.floor((w / 2 - playerX) * tileSize),
Math.floor((h / 2 - playerY) * tileSize)
);
(其中,canvas
是用户可见画布的2d上下文;zoneBufferStatic
和zoneBufferDynamic
分别是场景和移动对象的屏幕外画布;w
和h
是用户可见的画布的宽度和高度(以瓦片为单位);playerX
和playerY
是玩家的位置,同样以瓦片为准;tileSize
是瓦片侧面的像素数,目前为32)
UI(聊天文本、对话框)直接绘制在可见画布上。
上面显示的两个drawImage调用在我的桌面上完全正常工作(16GB RAM、i7、GTX 780),但在我的Chromebook(三星ARM(代号daisy、snow)、2GB RAM)上什么都没用。UI显示正常,但从不显示场景和字符。Chrome的开发者控制台中没有错误。我已经确认,后台缓冲区是使用Chrome开发人员控制台中的document.body.appendChild(zoneBufferStatic)
绘制的。
有没有更好的方法来做到这一点,或者有一种(非黑客的)方法来检测它何时失败,这样我就可以直接在可见的画布上画画了?
Chromebook是否可能内存不足,从而导致问题?如果每个像素是4个字节(RGBA),并且内存中有6710万像素(8192x8192),那么这几乎是250Mb的RAM。如果你有一堆其他程序在运行或选项卡打开,再加上操作系统使用RAM,我想你很容易就会耗尽RAM。现在2Gb的内存不多了。
- 回复'js'仅当请求有错误时(否则使用html)
- 表单已发送,但验证有错误
- 如果文件不存在,fs.watch是否有错误处理程序
- 反应错误“失败的 propType:提供给”提供者“的无效道具'子项',需要单个 ReactElement'
- 分析错误失败-What'It’他错了
- Meteor上有错误的同步问题
- 表单验证:如果有错误,不要't使手风琴动起来
- JS开放数据库有时会失败
- 我有错误文档.注册元素未被细化
- 如何转换为特定于 json 的类 c#?我有错误
- 如果当前输入有错误或警告,则禁用所有下一个表单输入字段
- 通过有错误的 Ajax-Request 打印出 HTML 会阻止进一步的 JS 工作
- 脸书应用程序有错误
- XDomainRequest 总是有错误
- HTML5 Canvas游戏有错误,点击时第一个拼图块会变成不同的块
- Page_ClientValidate返回 false,但没有一个验证器有错误
- 量角器由中继器命令中是否有错误
- Jquery 验证器 - 表单被保存但有错误
- 在Windows10通用Javascript应用程序中写入文件有时会失败
- 任何人看到我的重置功能有错误