0

虽然 chrome 更新到他的最新版本,但我的 WebGL 应用程序不再工作......模型只是黑色的,因为纹理不会加载。

这是失败消息。纹理都是2的幂,所以我不知道问题出在哪里。它适用于 Chrome 版本 28.0.1500.72 m

GL_INVALID_ENUM : glActiveTexture: texture was GL_LINE_LOOP 


 WebGL: drawArrays: texture bound to texture unit 2 is not renderable.  

它可能不是 2 的幂并且具有不兼容的纹理过滤或不是“纹理完整”。或者纹理是具有线性过滤的浮点或半浮点类型,而 OES_float_linear 或 OES_half_float_linear 扩展未启用。

我的抽奖电话

   // draw the Triangles

   gl.drawElements(gl.TRIANGLES, Model.TriangleCount, gl.UNSIGNED_SHORT, 0);
4

2 回答 2

1

我设法解决了这个问题。

解决方案是查询另一个扩展:oes_texture_float_linear; http://www.khronos.org/registry/gles/extensions/OES/OES_texture_float_linear.txt 它为浮动纹理添加了过滤器,现在代码又可以工作了。

于 2013-09-17T07:09:17.597 回答
0

你能告诉我们部分代码吗?

你有这样的东西:(?)

gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, ...);

阅读:

GL_INVALID_ENUM is generated if texture is not one of GL_TEXTUREi, where i ranges from 0 to (GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1).

这里关于“不可渲染”的几句话

https://twitter.com/mrdoob/status/346950885039030273

你使用压缩纹理吗?

于 2013-09-16T22:10:18.120 回答