[英]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)。
您还需要导入纹理并将其绑定到纹理。 我建议您正确阅读一些有关基本模型加载和纹理化的教程。 周围有很多,尽管这是我的最爱:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.