Modern OpenGL: VBO, GLM and Matrix Stacks

后端 未结 4 1399
一向
一向 2020-12-09 13:15

After searching and reading about Modern OpenGL in order to upgrade my existing project, I\'m a bit confused, since my 3D framework based on OpenGL 2.1.

so, as far a

4条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-09 14:00

    If your rendering already happens hierarchically using, for example, function recursion then you already have matrix stack!

    void renderMesh(Matrix transform, Mesh mesh)
    {
        // here call glDrawElements/glDrawArrays and send transform matrix to MVP uniform
        mesh->draw(transform);
    
        // now render all the sub-meshes, then will be transformed relative to current mesh
        for (int i=0; isubMeshCount(); i++)
        {
            Matrix subMeshTransform = mesh->getSubMeshTransform(i);
            Mesh subMesh = mesh->getSubMesh();
    
            renderMesh(subMeshTransform * transform, subMesh);
        }
    }
    
    // somwhere in main function
    ...
    Matrix projection = Matrix::perspective(...);
    Matrix view = camera->getViewMatrix();
    
    Matrix transform = view * projectIon;
    renderMesh(transform, rootMesh);
    

提交回复
热议问题