WebGL无法在某些设备上渲染纹理

埃里克

我正在为游戏探索WebGL的功能,并正在各种设备上对其进行测试。现在,我正在使用Turbulenz引擎引擎为我处理所有此类渲染。

但是,在我测试过的某些移动设备和标签设备(三星Galaxy和三星Galaxy Tab II)上,纹理无法正确渲染。它们要么不显示,要么变成黑色或空白。

我的设置如下:

  • 三星Galaxy S /三星Galaxy Tab II
  • Android 2.3(姜饼),Android 4.2(Jelly Bean)
  • 启用了WebGL的Google Chrome Beta
  • Turbulenz的旋转木箱示例

看一下我制作的这张屏幕截图:

在此处输入图片说明

我进行了一些重新搜索,发现此页面描述了完全相同的问题不幸的是,为什么会发生这种现象的一个很好的解释,而没有提供解决方案。

您是否在这些“旧”设备上有此主题的经验,为什么会出现此问题?我读过某个地方,操作系统在加载纹理时正在缩放纹理,是这样吗?那如何避免呢?

先感谢您!

man

错误

bindAttribLocation: index out of range

建议代码尝试使用太多属性。找出GPU支持多少个属性

maxAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);

WebGL实现必须支持的最低要求是8。

该错误为bindAttribLocation表示代码调用bindAttribLocation的值> =maxAttributes

这有点令人惊讶,因为对于大多数常见的3D应用程序,它们将具有位置,法线,纹理坐标,然后可能具有切线,双法线和顶点颜色。那只是6个属性。第二或第三组纹理坐标并没有不同寻常,但是看起来似乎很少见。但是,这仍然是错误消息的提示。

仅仅为了它,我检查了动荡的游戏Score Rush它正在使用属性0、3和8。为什么不使用0、1和2我不知道,但是在仅支持最少8个属性的任何设备上尝试使用属性8都会失败,因为7是最高属性。


更新:我查看了湍流的来源。按照目前的设计,它需要16个属性。它给每个属性0到15特定的用途。因此,例如,第一组纹理坐标始终位于属性8上(这就是为什么看到纹理消失的原因)。第一组切线始终位于属性14上。等等。这是作业列表

SEMANTIC_POSITION = 0;
SEMANTIC_POSITION0 = 0;
SEMANTIC_BLENDWEIGHT = 1;
SEMANTIC_BLENDWEIGHT0 = 1;
SEMANTIC_NORMAL = 2;
SEMANTIC_NORMAL0 = 2;
SEMANTIC_COLOR = 3;
SEMANTIC_COLOR0 = 3;
SEMANTIC_COLOR1 = 4;
SEMANTIC_SPECULAR = 4;
SEMANTIC_FOGCOORD = 5;
SEMANTIC_TESSFACTOR = 5;
SEMANTIC_PSIZE0 = 6;
SEMANTIC_BLENDINDICES = 7;
SEMANTIC_BLENDINDICES0 = 7;
SEMANTIC_TEXCOORD = 8;
SEMANTIC_TEXCOORD0 = 8;
SEMANTIC_TEXCOORD1 = 9;
SEMANTIC_TEXCOORD2 = 10;
SEMANTIC_TEXCOORD3 = 11;
SEMANTIC_TEXCOORD4 = 12;
SEMANTIC_TEXCOORD5 = 13;
SEMANTIC_TEXCOORD6 = 14;
SEMANTIC_TEXCOORD7 = 15;
SEMANTIC_TANGENT = 14;
SEMANTIC_TANGENT0 = 14;
SEMANTIC_BINORMAL0 = 15;
SEMANTIC_BINORMAL = 15;

要使它在属性少于16个的GPU上运行,需要进行一些重新设计或间接设计。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

WebGL纹理部分渲染

来自分类Dev

使用webgl在屏幕上渲染高位深度纹理

来自分类Dev

网格上的纹理无法正确渲染Libgdx

来自分类Dev

WebGL渲染为浮点纹理

来自分类Dev

在WebGL中渲染到纹理

来自分类Dev

在WebGL中渲染到纹理

来自分类Dev

在某些设备上使用OpenGL ES 2.0的Android绘图纹理在某些设备上运行缓慢

来自分类Dev

在某些设备上使用OpenGL ES 2.0的Android绘图纹理在某些设备上运行缓慢

来自分类Dev

使用TextureAtlas时,某些设备上不显示ImageButton的纹理

来自分类Dev

OpenGL纹理在某些android设备上扭曲了颜色

来自分类Dev

纹理无法正确渲染

来自分类Dev

OBJMTLLoader无法渲染纹理

来自分类Dev

OpenGLRenderer上的问题:路径太大,无法渲染到纹理

来自分类Dev

无法在其他硬件OpenGL上渲染为纹理

来自分类Dev

填充无法在某些设备上使用

来自分类Dev

NSFileManager:无法在某些设备上创建目录

来自分类Dev

AlarmManager在某些设备上无法启动?

来自分类Dev

NSFileManager:无法在某些设备上创建目录

来自分类Dev

Android应用无法在某些设备上运行

来自分类Dev

某些设备上的自定义ViewPager渲染问题

来自分类Dev

无法在 WebGl 中加载纹理

来自分类Dev

WebGL iOS渲染为浮点纹理

来自分类Dev

phaser / webgl:绑定到纹理单元0的纹理不可渲染

来自分类Dev

Android OpenGL ES 2.0-纹理在某些设备上未显示

来自分类Dev

Google Maps v2无法在某些设备上加载

来自分类Dev

轮播页面无法在某些设备上滑动

来自分类Dev

TreeMap无法在某些设备上对元素进行排序

来自分类Dev

在某些android设备中,图像无法在FlatList上呈现

来自分类Dev

AnimatedVectorDrawable-reset()在某些华为设备上无法正常工作

Related 相关文章

热门标签

归档