我使用Blender创建3D模态。我创建了.obj文件并转换为.h文件,但.h文件只有glVertexPointer,glDrawArrays。我用.png图像文件。但是当图像跟踪3D模态时,显示不正确。这是一些黑色的颜色。如何使用blender创建纹理坐标,或者如果我导入.obj文件,任何其他软件都会创建纹理坐标
/*
created with obj2opengl.pl
source file : .\Sample.obj
vertices : 8428
faces : 14040
normals : 0
texture coords : 0
// include generated arrays
#import ".\Sample.h"
// set input data to arrays
glVertexPointer(3, GL_FLOAT, 0, SampleVerts);
// draw data
glDrawArrays(GL_TRIANGLES, 0, SampleNumVerts);
*/
unsigned int SampleNumVerts = 42120;
float SampleVerts [] = {
// f 2 1 3 4
-0.233114614641671, 0.446055325439014, 0.223483335097295,
0.266885385358329, 0.446055325439014, 0.223483335097295,
0.266885385358329, 0.446055325439014, -0.276516664902705,
// f 2 1 3 4
-0.233114614641671, 0.446055325439014, 0.223483335097295,
-0.233114614641671, 0.446055325439014, -0.276516664902705,
0.266885385358329, 0.446055325439014, -0.276516664902705,
// f 6 5 7 8
...........
}
答案 0 :(得分:1)
您需要使用Blender中的纹理坐标导出模型(不是此处相关的主题.Blenders教程应该为您解答)。转换为.h(不确定您以前做过什么)时,请确保不要跳过UV /纹理坐标。把它们放在一个我也称之为SampleUVs的数组中。
你应该在glVertexPointer之后调用glDrawArrays之前添加它:
glTexCoordPointer(3, GL_FLOAT, 0, SampleUVs);
启用数组SampleUVs的纹理坐标。 3表示x,y,z纹理坐标(仅对x,y变为2)。
您还需要导入纹理并将其绑定到纹理。我建议你正确阅读一些关于基本模型加载和纹理的教程。周围有很多,虽然这是我的最爱: