0
我正在制作一个给定obj文件的程序,它将呈现模型。目前它的工作原理没有纹理贴图,但是我想实现这个功能,读取材质库文件。在从obj文件加载的模型上映射纹理的有效方法
但我看到顶点的数量可以不同于纹理坐标的数量。看这个例子:
# Blender v2.58 (sub 0) OBJ File: ''
# www.blender.org
mtllib /home/frenk/Documenti/Progetti/dado.mtl
o Cube
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -0.999999
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
vt 0.593772 0.740196
vt 0.593666 0.869263
vt 0.394866 0.869219
vt 0.394973 0.740152
vt 0.792572 0.740240
vt 0.993810 0.740284
vt 0.993703 0.869351
vt 0.792466 0.869307
vt 0.792360 0.995233
vt 0.593560 0.995189
vt 0.593984 0.482061
vt 0.792784 0.482105
vt 0.792678 0.611172
vt 0.593878 0.611129
usemtl dado_verde_dado.tga
s off
f 1/1 2/2 3/3 4/4
f 5/5 8/6 7/7 6/8
f 1/1 5/5 6/8 2/2
f 2/2 6/8 7/9 3/10
f 3/11 7/12 8/13 4/14
f 5/5 1/1 4/14 8/13
所以我不能使用函数drawElements(),因为索引不匹配。我是否将顶点坐标映射到纹理坐标,一对一?
//example
glBegin(GLTriangles);
gltexcoord2f(...); glvertex3f(...);
...
blaBlaBla(...);
...
glEnd();
我认为一个高效的API必须存在做我想做的。
ASSIMP库会为您加载.obj文件,并根据需要设置所有内容。但是,您仍然必须生成GL对象才能使用模型。 – Robinson 2012-04-21 19:53:51