Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
opengl中的错误绘制模型_Opengl_Go_Glfw - Fatal编程技术网

opengl中的错误绘制模型

opengl中的错误绘制模型,opengl,go,glfw,Opengl,Go,Glfw,因此,我正在尝试一个基本的opengl程序,它读取.obj文件,然后渲染它(obj文件包含以下格式的三角形顶点 v1.0000002.0000003.00000 下面是我的代码(我使用GLFW和一个Golang绑定库)(我目前也忽略法线) 然而,当我运行这个程序时,结果并不完全正确 我在互联网上找到的其他几个文件上试用了它,得到了类似的结果。看起来三角形的顶点几乎是偏移的或什么的。您应该将所有顶点数据读取到数组中。Obj文件包含有关三角形的信息,以及顶点应该如何索引。以f开头的行包含3个数字w

因此,我正在尝试一个基本的opengl程序,它读取
.obj
文件,然后渲染它(obj文件包含以下格式的三角形顶点
v1.0000002.0000003.00000

下面是我的代码(我使用GLFW和一个Golang绑定库)(我目前也忽略法线)

然而,当我运行这个程序时,结果并不完全正确


我在互联网上找到的其他几个文件上试用了它,得到了类似的结果。看起来三角形的顶点几乎是偏移的或什么的。

您应该将所有顶点数据读取到数组中。Obj文件包含有关三角形的信息,以及顶点应该如何索引。以
f
开头的行包含3个数字w它描述三角形。所以你的代码应该是这样的(我不知道怎么走):


您应该将所有顶点数据读取到数组中。Obj文件包含有关三角形的信息,以及顶点应如何索引。以
f
开头的行包含3个描述三角形的数字。因此,您的代码应该如下所示(我不知道如何):


Obj文件除了存储顶点(v线)外,还存储如何将它们组合成面(f线)。顶点本身的存储没有特定的顺序,这意味着第一个三角形不一定由顶点0-2组成

您必须将所有顶点读取到向量/列表/数组中,然后解析面条目,根据额外存储的附加信息(法线、纹理坐标),这些条目可以通过四种不同的方式组合(根据此处):

f v1 v2 v3 ...
f v1/vt1 v2/vt2 v3/vt3 ...
f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 ....
f v1//vn1 v2//vn2 v3//vn3 ...
在哪里

对于您的示例,您必须执行类似于此伪代码的操作(假设所有面都已三角化)


Obj文件除了存储顶点(v线)外,还存储如何将它们组合成面(f线)。顶点本身的存储没有特定的顺序,这意味着第一个三角形不一定由顶点0-2组成

您必须将所有顶点读取到向量/列表/数组中,然后解析面条目,根据额外存储的附加信息(法线、纹理坐标),这些条目可以通过四种不同的方式组合(根据此处):

f v1 v2 v3 ...
f v1/vt1 v2/vt2 v3/vt3 ...
f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 ....
f v1//vn1 v2//vn2 v3//vn3 ...
在哪里

对于您的示例,您必须执行类似于此伪代码的操作(假设所有面都已三角化)


是否通过调试器运行?顶点的值是否与文件中的值相同?是否通过调试器运行?顶点的值是否与文件中的值相同?
f v1 v2 v3 ...
f v1/vt1 v2/vt2 v3/vt3 ...
f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 ....
f v1//vn1 v2//vn2 v3//vn3 ...
v  ... index into the list of v-entries
vt ... index into the list of vt-entries (texture coordinates)
vn ... index into the list of vn-entries (normals)
v-list vertices[];
parse each v-line into v-list

foreach (f-line)
{
    parse v-indices -> {v0, v1, v2}

    draw triangle {vertices[v0], vertices[v1], vertices[v2]}
}