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);
}
Beispiel #2
0
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();
}