繁体   English   中英

如何创建纹理坐标

[英]How to create texture coordinates

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



...........



}

您需要从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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM