threejs纹理会导致“ GL错误:GL_INVALID_OPERATION:glDrawElements”

问题描述 投票:1回答:1

我正在尝试将纹理应用于运行时创建的几何,并从远程服务器读取二进制资产。我创建分配UV(geometry.faceVertexUvs = uvs;),法线(face.vertexNormals.push(...))和切线(face.vertexTangents.push(...))的几何。

如果尝试使用基本材料创建网格,没有问题,但是当我使用该几何形状创建网格并尝试应用纹理时,webgl不会显示任何几何形状,并且会出现此警告:] >

[。WebGLRenderingContext] GL错误:GL_INVALID_OPERATION:glDrawElements:尝试访问属性1中超出范围的顶点]

有人知道发生了什么吗?我认为我的几何图形有问题,因为如果使用THREE.Sphere,我实际上可以应用纹理。

但是每个人都告诉我,要应用纹理,我需要UV,并且我有。

我认为我的faceVertexUvs错误。

真正的问题是:geometry.faceVertexUvs.length应该等于geometry.vertices.length,或者应该等于geometry.faces.length?

非常感谢。

PS:我已经阅读了以下帖子

WebGL drawElements out of range?

Three JS Map Material causes WebGL Warning

THREEjs can't use the material on the JSON Model when initializing. Gives me WebGL errors

Loading a texture for a custom geometry causes “GL_INVALID_OPERATION” error

我正在尝试将纹理应用于运行时创建的几何,并从远程服务器读取二进制资产。我创建了分配UV(geometry.faceVertexUvs = uvs;),法线(face ....

dictionary three.js webgl textures
1个回答
1
投票

问题已解决!

@@ GuyGood:说每个顶点都需要UV-Vector2是正确的,但是说geometry.faceVertexUvs.length应该等于geometry.vertices.length ...是错误的。

似乎facevertexUvs是一个矩阵,而不是一个数组..好,它是一个数组的数组..不正确是一个矩阵..事实上,我认为它可以用于处理多网格对象。.如果facevertexUvs .length == 3,我们有3个子网格,所以3个数组..每个数组的长度等于特定子网格的面数..每个面都知道关于定义该面的3个顶点的UV映射。 。

© www.soinside.com 2019 - 2024. All rights reserved.