如何创建纹理坐标

时间:2013-10-18 09:53:31

标签: c++ opengl opengl-es 3d blender

我使用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



...........



}

1 个答案:

答案 0 :(得分:1)

您需要使用Blender中的纹理坐标导出模型(不是此处相关的主题.Blenders教程应该为您解答)。转换为.h(不确定您以前做过什么)时,请确保不要跳过UV /纹理坐标。把它们放在一个我也称之为SampleUVs的数组中。

你应该在glVertexPointer之后调用glDrawArrays之前添加它:

glTexCoordPointer(3, GL_FLOAT, 0, SampleUVs);

启用数组SampleUVs的纹理坐标。 3表示x,y,z纹理坐标(仅对x,y变为2)。

您还需要导入纹理并将其绑定到纹理。我建议你正确阅读一些关于基本模型加载和纹理的教程。周围有很多,虽然这是我的最爱:

http://nehe.gamedev.net/tutorial/texture_mapping/12038/