0

我使用 Blender 创建 3D 模态。我创建了 .obj 文件并转换为 .h 文件,但 .h 文件只有 glVertexPointer、glDrawArrays。我使用了 .png 图像文件。但是当图像跟踪时,3D 模态显示不正确。有点黑什么的。如何使用搅拌机创建纹理坐标,或者如果我导入 .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



...........



}
4

1 回答 1

1

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

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

glTexCoordPointer(3, GL_FLOAT, 0, SampleUVs);

这将启用来自数组 SampleUVs 的纹理坐标。3 表示 x,y,z 纹理坐标(仅对 x,y 更改为 2)。

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

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

于 2013-10-18T10:52:19.133 回答