Je suis en train de lire un projet open source, et j'ai trouvé qu'il y avait une fonction qui lisait les données 3D (disons un caractère) du fichier obj, et le dessinait. le code source:Comment lire les données du graphique 3D avec 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;
}
Et pourquoi il faut lire les données manuellement dans directX? Pour autant que je sache, dans la programmation XDA, il suffit d'appeler une fonction pour charger la ressource. Est-ce parce que c'est dans DirectX, il n'y a aucune fonction pour lire la ressource? Si oui, alors comment préparer la ressource 3D? dans XDA nous avons juste besoin d'utiliser d'autres logiciels pour dessiner l'image 3D, puis exporter. mais que dois-je faire dans DirectX?
Merci, Dif nous voulons écrire une application 3D, pourquoi nous devons charger les données spécifiques au lieu de suivre la norme, y a-t-il des avantages? – MemoryLeak
Je ne suis pas tout à fait sûr de ce que vous voulez dire? Êtes-vous en train de suggérer qu'il serait plus facile de convertir certaines données au format X-File que de simplement les charger dans les tampons de vertex et les tampons d'index pertinents? Bien sûr, le chargement post-traduction serait plus rapide mais tout dépend de ce que vous voulez faire avec les données ... – Goz