如何创建纹理坐标

How to create texture coordinates

本文关键字:纹理 坐标 创建 何创建      更新时间:2023-10-16

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

...........

}

您需要从Blender导出带有纹理坐标的模型(此处不是相关的主题。搅拌机教程应该为您回答这个问题)。转换为 .h 时(不确定您以前是做什么的),请确保您没有跳过 UV/纹理坐标。将它们也放在一个数组中,我称之为 SampleUV。

你应该在调用glDrawArrays之前,在glVertexPointer之后添加这个:

glTexCoordPointer(3, GL_FLOAT, 0, SampleUVs);

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

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

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