My Pixi.js"游戏";当网页(请参阅评论部分的临时链接(第一次加载时,或者在新的Chrome/Incognito视图页面中加载时,绘制得还可以,工作得很好。然而,当重新加载页面时,(webgl(画布上总是会出现绘图错误。
如果我从Chrome开发工具中启用Chrome DISABLE CACHE设置,那么这个问题就不会出现,所以它必须与缓存相关。需要清除画布缓存,以便重新正确绘制画布。
我必须假设在页面重新访问/重新加载之间,客户端上还有一些缓存的(webgl(内容,这导致了画布上的绘图错误。即使按Shift+reload也会再次出现重新绘制错误。
关于Pixi WebGl Canvas,我每次都试图制作一个新的画布作为修复,但似乎没有帮助,新的画布是这样的,但Pixi总是制作自己的画布
r.app = new l.Application({
backgroundColor: 16777215,
height: 620,
width: 1100, clearBeforeRender: true, view : document.getElementById("canv"&location.search.split('v=')[1])
})
},
我更喜欢以某种方式强制清除画布缓存,总是使用新的画布名称或提供一些画布选项有帮助吗?
另一种选择是完全不使用WebGL模式。如何强制PixiJS永远不要使用WebGL?
你能先试试这个吗?
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
如果它不起作用,这是我的另一个问题。
你是在本地运行服务器吗?或者,您使用的是静态html文件?如果你使用的是一种服务器,你确实需要根据服务器类型遵循以下说明。
- [http://cristian.sulea.net/blog/disable-browser-caching-with-meta-html-tags/]
每次调用新的PIXI.Texture.fromImage时都会创建好的textureCache,它会检查它(或baseTexture(是否已经保存在缓存中,以防止一次又一次地下载纹理。。。。如果已经加载,则从服务器中删除。
想象一下,创建一个雨效果,并用i<=200;如果没有纹理缓存,这意味着您将不得不调用服务器200次。纹理缓存是从两个元素创建的。
textureCache和baseTexture。(缓存的每个纹理下都有一个基础纹理如果您要通过调用.dedestroy((来移除textureCache,这将移除纹理,但将基本纹理保留在内存中。实际上,这意味着如果你在舞台上有一个精灵,并且你在纹理上调用destroy((。上传到舞台的精灵仍然可以渲染。但在这样做之后,如果您要调用相同的(以前删除的纹理(,它会从服务器重新部署它。
对纹理使用destroy(true(方法将删除textureCache和baseTexture。实际上,如果你在舞台上的精灵使用的纹理上使用这个方法,那么精灵就会变成黑色。baseTextures在WebGl上下文中大量使用,以通过使用gl方法来加快计算速度。
https://github.com/GoodBoyDigital/pixi.js/issues/949#issuecomment-54502749