0

我尝试使用 Phaser 制作我的第一款游戏,但是当我将 tileSprite 函数与我自己的图像一起使用时出现错误:

this.game.load.image('ground', 'assets/ground.png');
this.ground = this.game.add.tileSprite(0, game.world.height - 432, game.world.width, 281, 'ground');
this.ground.tileScale.setTo(2, 2);

“ground.png”显示为黑色,我在控制台中收到此错误:

错误:WebGL:根据 OpenGL ES 2.0.24 规范第 3.8.2 节,纹理将被渲染为黑色,因为它是 2D 纹理,具有不需要 mipmap 的缩小过滤器,其宽度或高度不是 2 的幂,并且使用不同于 CLAMP_TO_EDGE 的环绕模式。

使用相同的代码但其他图像(来自演示移相器游戏)我没有收到此错误。

这是我的PNG(谁得到了错误)

这是另一个运行良好的PNG

4

1 回答 1

1

精灵的宽度和高度必须是 2 的幂:

错误:WebGL:根据 OpenGL ES 2.0.24 规范第 3.8.2 节,纹理将被渲染为黑色,因为它是 2D 纹理,具有不需要 mipmap 的缩小过滤器,其宽度或高度不是 2 的幂,并且使用不同于 CLAMP_TO_EDGE 的环绕模式。

(我强调)

您的栅栏是两个精灵的幂,宽度为 128 像素,高度为 16 像素,但是,您的“Tapis”(无论是什么)是 19x13,这不是二的幂。

2 的幂是它背后的实际数学,即2^nn任何正整数。您所有的宽度和高度测量值都必须与 2 的幂相匹配。

于 2014-02-27T13:31:52.807 回答