gg004-Mesh project copy-paste-rename gg002-App folder vcxproj, filters átnevezés solution/add existing project rename project working dir: $(SolutionDir) Project Properties/Configuration Properties/Debugging/Command Arguments ugyanaz build, run
gg004-Mesh project include additional include C:/Program Files/Assimp/Include; linker general/additional library directories c:\Program Files\Assimp\lib\x86 input assimp.lib
Game class csak ezt az osztályt fogjuk átírni, hogy betöltsön egy modellt kirajzolja a sima idle technikával
Game.cpp #include "DXUT.h" #include "Game.h" #include <assimp/importer.hpp> #include <assimp/scene.h> #include <assimp/postProcess.h>
Game.cpp // continued from previous slide Assimp::Importer importer; const aiScene* assScene = importer.ReadFile( App::getSystemEnvironment(). resolveMediaPath("giraffe.obj") , 0); // if the import failed if( !assScene || !assScene->HasMeshes() || assScene->mNumMeshes == 0) { MessageBox(); return E_FAIL; } // continued on next slide
Eredmény
Mesh modul használata ne manuálisan kelljen összerakni a buffereket input layoutok medzselése shader/geometria kombinációk anyagrendszer
Game.h Egg::Mesh::InputBinder::P inputBinder; Egg::Mesh::Shaded::P shadedMesh; // többi tagváltozó mehet a levesbe
Game.cpp HRESULT Game::createResources() { using namespace Microsoft::WRL; inputBinder = Egg::Mesh::InputBinder::create(device); // assimp import ide jön Egg::Mesh::Geometry::P geometry = Egg::Mesh::Importer::fromAiMesh(device, assScene->mMeshes[0]);
Utána VS betöltés PS betöltés Egg::Mesh::Material létrehozása ComPtr<ID3D11InputLayout> inputLayout = inputBinder->getCompatibleInputLayout( vertexShaderByteCode, geometry); shaded mesh létrehozása
Game::draw shadedMesh->draw(context);