MCPcopy Create free account
hub / github.com/TheRealMJP/BakingLab / InitFromAssimpMesh

Method InitFromAssimpMesh

SampleFramework11/v1.02/Graphics/Model.cpp:118–244  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

116}
117
118void Mesh::InitFromAssimpMesh(ID3D11Device* device, const aiMesh& assimpMesh)
119{
120 numVertices = assimpMesh.mNumVertices;
121 numIndices = assimpMesh.mNumFaces * 3;
122
123 uint32 indexSize = 2;
124 indexType = IndexType::Index16Bit;
125 if(numVertices > 0xFFFF)
126 {
127 indexSize = 4;
128 indexType = IndexType::Index32Bit;
129 }
130
131 // Figure out the vertex layout
132 uint32 currOffset = 0;
133 D3D11_INPUT_ELEMENT_DESC elemDesc;
134 elemDesc.InputSlot = 0;
135 elemDesc.InputSlotClass = D3D11_INPUT_PER_VERTEX_DATA;
136 elemDesc.InstanceDataStepRate = 0;
137 std::vector<const aiVector3D*> vertexData;
138
139 if(assimpMesh.HasPositions())
140 {
141 elemDesc.Format = DXGI_FORMAT_R32G32B32_FLOAT;
142 elemDesc.AlignedByteOffset = currOffset;
143 elemDesc.SemanticName = "POSITION";
144 elemDesc.SemanticIndex = 0;
145 inputElements.push_back(elemDesc);
146 currOffset += 12;
147 vertexData.push_back(assimpMesh.mVertices);
148 }
149
150 if(assimpMesh.HasNormals())
151 {
152 elemDesc.Format = DXGI_FORMAT_R32G32B32_FLOAT;
153 elemDesc.AlignedByteOffset = currOffset;
154 elemDesc.SemanticName = "NORMAL";
155 elemDesc.SemanticIndex = 0;
156 inputElements.push_back(elemDesc);
157 currOffset += 12;
158 vertexData.push_back(assimpMesh.mNormals);
159 }
160
161 for(uint32 i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i)
162 {
163 if(assimpMesh.HasTextureCoords(i))
164 {
165 elemDesc.Format = DXGI_FORMAT_R32G32_FLOAT;
166 elemDesc.AlignedByteOffset = currOffset;
167 elemDesc.SemanticName = "TEXCOORD";
168 elemDesc.SemanticIndex = i;
169 inputElements.push_back(elemDesc);
170 currOffset += 8;
171 vertexData.push_back(assimpMesh.mTextureCoords[i]);
172 }
173 }
174
175 if(assimpMesh.HasTangentsAndBitangents())

Callers 1

CreateWithAssimpMethod · 0.80

Calls 7

HasPositionsMethod · 0.45
push_backMethod · 0.45
HasNormalsMethod · 0.45
HasTextureCoordsMethod · 0.45
resizeMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected