如何创建纹理坐标
How to create texture coordinates
我用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/
相关文章:
- OpenGL 4.3 错误地将第 4 个纹理坐标映射到与第 3 个纹理坐标相同的位置
- 移植DXUT SDKMesh以导入OBJ文件,在哪里添加纹理坐标和索引
- 替代gl_texcoord.xy获得纹理坐标
- OpenGL 纹理坐标不起作用
- 着色器和纹理坐标问题
- 将浮点数组存储在纹理中,并使用纹理坐标从着色器访问浮点
- Opengl 土壤纹理坐标无法识别
- 将纹理坐标呈现到帧缓冲区
- 使用纹理坐标重复纹理的部分
- 如何在渲染 VBO 后仅更改纹理坐标?
- OpenGL:动态更改纹理坐标
- 如何创建纹理坐标
- OpenGL 对齐纹理坐标
- 用于渲染 3D 球体的纹理坐标
- 在DirectX9/C++中为OBJMesh加载纹理坐标
- DirectX剪辑空间纹理坐标
- 包裹纹理坐标在可变大小的四边形上
- 对象模型加载纹理坐标和顶点位置没有正确加载
- Opengl纹理坐标用于全屏效果
- 圆柱体()和纹理坐标偏移/乘数