Condition préalable,
Avant d'apprendre cet article, vous devez parcourir complètement le projet
Entrée du moteur de rendu
modèle d'importation
Parce que le rendu doit utiliser des normales, des tangentes, le cube d'origine, les quads ne suffisent pas
Par conséquent, notre moteur doit encore importer le modèle, car il est profondément influencé par l'unité, et il existe également un moteur "grand dieu". Après cette exigence d'itération, la première réaction est d'utiliser fbx pour charger le modèle, et yaml pour sérialiser
Bien sûr, ce n'est pas le but du rendu
1. Installez fbx sdk (1.6g est assez gros)
//官方下载 exe
2. Rencontré le problème de conversion de Fbxstring en chaîne
(Le code de Dieu peut être compilé directement sans conversion, et le code de Dieu sera affiché en bas)
std::string nodeName=MyString::FbxStr2StdStr(pNode->GetName());
3. Symbole externe non résolu
(sdk2017.lib utilisé au début, il y aura ce problème, pas de solution)
Plus tard, lorsque vous passerez à sdk2010, il apparaîtra et une invite plus inexplicable apparaîtra.
xxxxxxxx symbole externe non résolu __cdcel 2019
résoudre
Il semble que la nouvelle version ait modifié certaines méthodes d'appel et
ajouté quelques bibliothèques statiques.
(Clic droit, Propriétés du projet, Linker -> Input
libfbxsdk-mt.lib
wininet.lib
libxml2-mt.lib
zlib-mt.lib
Ce qui précède utilise -mt.lib, donc il demandera LNK2038,
Temps de compilation VC : la différence entre MT, MTd, MD, MDd - Blog de JoliceYU - Blog CSDN
Il existe une solution : faites un clic droit sur le projet - "Propriétés - "c/c++ - "Génération de code - "Runtime Library
Après avoir réfléchi à ce qui suit, il n'y a aucune raison de modifier la configuration de l'ensemble du projet pour une bibliothèque.
Parce que j'utilise cette bibliothèque, alors écrivez directement -md.lib , vous pouvez
Pour la différence entre mt et md, veuillez vous référer à :
Temps de compilation VC : la différence entre MT, MTd, MD, MDd - Blog de JoliceYU - Blog CSDN
3.1 Structures C++ silencieuses
//有毒不能用
//#include <DirectXMath.h>
//using namespace DirectX;
//用的很旧的 d3d,而用xnamth之前必须include <d3d11.h>
#include<d3d11.h>
#include<xnamath.h>
3.2 Construction de l'environnement FBX SDK
4. Lire le code d'implémentation de fbx
cheval mort pour cheval vivant
Après avoir configuré le SDK fbx conformément à ce qui précède, il vous indiquera que le .dll est introuvable
Mettez la dll du répertoire d'installation de fbx sdk et placez-la dans le même répertoire de niveau de .sln (j'ai essayé de la mettre directement dans le répertoire /debug, mais ça ne marche pas)
Pour le mettre dans le répertoire racine, je ne sais pas pourquoi le répertoire lib est évidemment ancien, c'est-à-dire qu'il est introuvable
faut copier
Lisez le code fbx : (maintenant, il y a beaucoup d'informations sur Internet)
https://www.twblogs.net/a/5ee5d022b4c39c99158fb411
Lecture complémentaire :
Séparation de modèles et analyse du SDK FBX (Python/C++) Develop Paper
Aide sur les documents officiels Fbx
Système de coordonnées 3dmax et système de coordonnées fbx exporté - wantnon - Blog Park