opengl中从世界坐标转化为屏幕坐标该如何变换?、

比如我拿到的是一个如下所示的数组,他表示为一个正方形,坐标是世界坐标;

    float vertices[] = {
        // positions          
         5.0f,  5.0f, 0.0f,  
         5.0f,  -5.0f, 0.0f,  
        -5.0f, -5.0f, 0.0f, 
        -5.0f,  5.0f, 0.0f,  
    };

而我想要将这个坐标最终绘制到屏幕上,需要经过 model、view、project变换;
但是这个过程我该如何用代码实现,将其转换为如下所示的,能够让opengl绘制的归一化坐标?

       0.5f,  0.5f, 0.0f,   
         0.5f, -0.5f, 0.0f,   
        -0.5f, -0.5f, 0.0f, 
        -0.5f,  0.5f, 0.0f,

我看了https://learnopengl-cn.github.io/01%20Getting%20started/08%20Coordinate%20Systems/这个教程里面说的,看他的代码还是没有太明白opengl是如何使用他自己的函数实现的坐标转换最终绘制到屏幕上的?
代码地址:https://learnopengl.com/code_viewer_gh.php?code=src/1.getting_started/6.1.coordinate_systems/coordinate_systems.cpp

https://blog.csdn.net/iispring/article/details/27970937