Go OBJ渲染不正确的纹理坐标

Go OBJ渲染不正确的纹理坐标,go,opengl,rendering,.obj,Go,Opengl,Rendering,.obj,我在GoLang编写了一个obj加载程序,并试图渲染一个立方体。立方体已经预三角化,我已经确保在导出它之前在blender中正确设置UV。问题是纹理没有在立方体上正确渲染,我不确定是什么原因造成的。我首先按照索引对纹理坐标和法线进行排序。 我目前得到的: 我期望得到的是: 代码 () 为了实际渲染模型,我简单地绑定纹理,创建一个变换矩阵,绑定我之前生成的VAO,然后绘制元素 gl.ActiveTexture(gl.TEXTURE0) gl.BindTexture(gl.TEXTURE_2D,

我在GoLang编写了一个obj加载程序,并试图渲染一个立方体。立方体已经预三角化,我已经确保在导出它之前在blender中正确设置UV。问题是纹理没有在立方体上正确渲染,我不确定是什么原因造成的。我首先按照索引对纹理坐标和法线进行排序。 我目前得到的:

我期望得到的是:

代码 ()

为了实际渲染模型,我简单地绑定纹理,创建一个变换矩阵,绑定我之前生成的VAO,然后绘制元素

gl.ActiveTexture(gl.TEXTURE0)
gl.BindTexture(gl.TEXTURE_2D, texture)
rotation := mgl32.AnglesToQuat(0, 0, 0, mgl32.XYZ)
transformMatrix := render.CreateTransformMatrix(mgl32.Vec3{0, 0, -10}, rotation, 1)

for _, element := range cubeModel.Parts {
    element.Vao.Bind()
    gl.UniformMatrix4fv(transformationMatrixUniform, 1, false, &transformMatrix[0])
    gl.DrawElements(gl.TRIANGLES, int32(len(element.Indices)), gl.UNSIGNED_INT, gl.Ptr(element.Indices))
}

事实证明,问题是我在读取人脸时对纹理坐标进行排序,OpenGL试图根据其顶点索引渲染UV。 修复它就像对顶点进行排序一样简单,然后创建一个从0开始到顶点长度的新索引数组,因为现在所有数据都已正确排序

gl.ActiveTexture(gl.TEXTURE0)
gl.BindTexture(gl.TEXTURE_2D, texture)
rotation := mgl32.AnglesToQuat(0, 0, 0, mgl32.XYZ)
transformMatrix := render.CreateTransformMatrix(mgl32.Vec3{0, 0, -10}, rotation, 1)

for _, element := range cubeModel.Parts {
    element.Vao.Bind()
    gl.UniformMatrix4fv(transformationMatrixUniform, 1, false, &transformMatrix[0])
    gl.DrawElements(gl.TRIANGLES, int32(len(element.Indices)), gl.UNSIGNED_INT, gl.Ptr(element.Indices))
}