-1
我正在閱讀一個開源項目,並且我發現有一個函數可以從obj文件讀取3D數據(讓我們說一個字符)並繪製它。 源代碼:如何使用directX讀取三維圖表數據?
List<Vertex3f> verts=new List<Vertex3f>();
List<Vertex3f> norms=new List<Vertex3f>();
Groups=new List<ToothGroup>();
//ArrayList ALf=new ArrayList();//faces always part of a group
List<Face> faces=new List<Face>();
MemoryStream stream=new MemoryStream(buffer);
using(StreamReader sr = new StreamReader(stream)){
String line;
Vertex3f vertex;
string[] items;
string[] subitems;
Face face;
ToothGroup group=null;
while((line = sr.ReadLine()) != null) {
if(line.StartsWith("#")//comment
|| line.StartsWith("mtllib")//material library. We build our own.
|| line.StartsWith("usemtl")//use material
|| line.StartsWith("o")) {//object. There's only one object
continue;
}
if(line.StartsWith("v ")) {//vertex
items=line.Split(new char[] { ' ' });
vertex=new Vertex3f();//float[3];
if(flipHorizontally) {
vertex.X=-Convert.ToSingle(items[1],CultureInfo.InvariantCulture);
}
else {
vertex.X=Convert.ToSingle(items[1],CultureInfo.InvariantCulture);
}
vertex.Y=Convert.ToSingle(items[2],CultureInfo.InvariantCulture);
vertex.Z=Convert.ToSingle(items[3],CultureInfo.InvariantCulture);
verts.Add(vertex);
continue;
}
,爲什麼它需要在DirectX手動讀取數據?據我所知,在XDA編程中,我們只需要調用一個函數來加載資源。
這是因爲它在DirectX中,沒有函數來讀取資源? 如果是,那麼如何準備3D資源?在XDA中,我們只需要使用其他軟件繪製3D圖片然後導出。但是我應該在DirectX中做什麼?
謝謝,家庭綜合我們想寫一個3D應用程序呈現.FBX,爲什麼我們需要加載具體數據而不是按照標準,是否有任何好處? – MemoryLeak 2010-04-05 10:25:04
我不完全確定你的意思?您是否建議將某些數據轉換爲X-File格式比將其加載到相關的頂點緩衝區和索引緩衝區更容易?當然,翻譯後加載會更快,但這完全取決於你想要對數據做什麼... – Goz 2010-04-06 07:39:05