void AssetImporter::assembleAsset( ID3D11Device* d3dDevice, const aiScene* scene, unsigned int meshIndex, aiMatrix4x4 transform, GRAPHICS::RESOURCES::Mesh* meshArr, GRAPHICS::RESOURCES::Material* materialArr, GRAPHICS::Scene& outScene ) { GRAPHICS::RESOURCES::Renderable asset; asset.mesh = meshArr[meshIndex]; asset.material = materialArr[scene->mMeshes[meshIndex]->mMaterialIndex]; asset.transformation = DirectX::XMFLOAT4X4((const float*)(&transform.Transpose())); GRAPHICS::D3D11Utility::createBuffer<DirectX::XMFLOAT4X4>( d3dDevice, D3D11_BIND_CONSTANT_BUFFER, D3D11_USAGE_DYNAMIC, &asset.transformation, 1, asset.transformationBuffer ); outScene.addStaticRenderable(asset); }
void QMesh::draw(aiMatrix4x4 transform) const { glPushMatrix(); aiMatrix4x4 mult; aiMatrix4x4::Translation(aiVector3D(0,-100,0), mult); transform = mult * transform; transform.Transpose(); //Transpose for some reason glMultMatrixf(static_cast<GLfloat*>(transform[0])); glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, faceColor); const GLuint *indices = geom->faces.constData(); glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_INT, indices + start); glPopMatrix(); }