Как читать данные 3D-диаграммы с помощью DirectX? - PullRequest
0 голосов
/ 05 апреля 2010

Я читаю проект с открытым исходным кодом и обнаружил, что есть функция, которая считывает трехмерные данные (скажем, символ) из файла obj и рисует его. Исходный код:

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 нам просто нужно использовать другое программное обеспечение, чтобы нарисовать трехмерную картинку и затем экспортировать. но что мне делать в DirectX?

1 Ответ

1 голос
/ 05 апреля 2010

Приведенный выше код предназначен для загрузки КОНКРЕТНОГО формата файла. Это не тот, который поддерживается. XNA позволяет загружать файлы .X и FBX. DirectX поддерживает загрузку файлов .X, но файлы .FBX должны создаваться с использованием FBX SDK.

Для рендеринга .FBX с использованием DXSDK загрузите SDK и перенесите всю информацию в соответствующий набор аппаратной структуры данных:)

...