2013-10-18 43 views
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 



........... 



} 

回答

1

你需要有質感從攪拌機(不是一個話題那是與此有關。混料機教程應該座標導出模型回答你的問題)。當轉換爲.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/