2016-05-08 25 views
0

Ich habe SO gesucht und habe nicht einen gefunden, der sich auf die Grundlagen bezieht und Schritt für Schritt erklärt. Wir brauchen das.Wie render ich alle Akteure in einem einzigen Bereich mit DirectX 11 in C++ effizient und einfach?

Angenommen, ich verwende nur die DirectX SDK von Microsoft geliefert.

Auch vorausgesetzt, dass ich .fbx und .3ds Modelle bereits gemacht habe und im Arbeitsverzeichnis, die generische, monochrome sind, Formen (Würfel, Kugel, Pyramide, etc.).

Bitte beachten Sie auch die Rendering-Prozess in eine Funktion kondensieren, die directX Funktionen verwendet als Beispiel (wie in, können zusammengestellt werden),:

//the following is a suggestion, not a guideline for those who 
//want to get into 3D programming. 
vector<DX3DModel>modelsToBeRendered; 
void bufferFrame(vector<DX3DModel>models){ 
    while(1){ 
    /* something something vertexes, lets say DX3DModel only contains vertexes 
    and a string as a file link 
    (Rendering code would make it very 
    messy in the question, but please include it in the answer.) */ 

     //render models.end(); here 

     models.pop_back(); 
    } 
} 

ein ähnliches Verfahren wie Verwendung, was ich oben haben, wie würde Ich (sicher) rende alle anderen Akteure in einem einzigen "Bereich", während ich immer noch in der Lage bin, Vertexe nach Belieben zu manipulieren?

(Region ist ein (AxBx1) Modell, das wir field.fbx nennen. Dies ist eine Grenze für alle Akteure auf zu existieren)

+0

Wenn Sie etwas hinzufügen möchten (oder mich klären), tun Sie bitte. Diese Frage soll anderen helfen. – DarmaniLink

+0

Sie müssten die Meshes der Modelle in Vertexpuffer und die Texturen der Modelle in Texturressourcen laden. Sie müssten einen Vertex-Shader laden, der transformiert, Skins (animiert) und möglicherweise die Scheitelpunkte des Meshes beleuchtet, und einen Pixel-Shader, der die Textur anwendet und möglicherweise die Pixel beleuchtet. Legen Sie dann für jedes Modell den Vertex-Puffer und die Textur fest, legen Sie eine Transformation fest, um das Modell zusammen mit den für das Enthäuten erforderlichen Transformationen zu positionieren, und zeichnen Sie dann das Modell. Außerdem habe ich eine ganze Reihe von Details weggelassen, weil diese Frage zu weit gefasst ist, um sie zu beantworten. –

Antwort

1

Die Direct3D 11 API, ähnlich wie die OpenGL API, ein Low-Level-Rendering API, die in Bezug auf Ressourcen und Zeichenoperationen für Konstrukte arbeitet, die Punkte, Linien und Dreiecke enthalten. Es ist keine High-Level-API, die direkt eine Modelldatei aus einem 3D-Editor laden oder rendern kann, noch besitzt sie ein Material/Effekt-System. Wenn Sie neu in DirectX 11 sind, sollten Sie die Verwendung des DirectX Tool Kit als einen guten Ausgangspunkt in Betracht ziehen. Sie können nicht direkt von einem Modell 3DS oder FBX rendern, aber Sie können entweder die integrierte Visual Studio-Inhalts-Pipeline für die Konvertierung in CMO verwenden oder Samples Content Exporter verwenden, um in SDKMESH zu konvertieren, die beide von DirectX Tool geladen werden können Kit.

Mit dem DirectX Toolkit können Sie die Klasse verwenden und etwas im Grunde wie das, was Sie vorschlagen, erhalten. Siehe die DirectX Tool Kit tutorial, insbesondere die Lektion Rendering a model.

Für 11 Direct3D Entwicklung, sollten Sie stark nicht mit dem Legacy-DirectX SDK betrachten, da es veraltet ist. Wenn Sie VS 2012 oder höher verwenden, benötigen Sie es nicht. Siehe Where is the DirectX SDK (2015 Edition)? und The Zombie DirectX SDK.