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