1、获取立方体顶点信息
//VBO数据
float vertices[] = {
…
}
2、顶点信息设置到VBO
unsigned int VBO;
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
3、启用深度测试
//启用深度测试,遮挡的部位就不会绘制出来
glEnable(GL_DEPTH_TEST);
//添加清除深度信息
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
4、将3D立方体投射到2D屏幕
//uniform传递旋转位移等变换矩阵矩阵
glUniformMatrix4fv(glGetUniformLocation(pshader->ID, “modelMat”), 1, GL_FALSE, glm::value_ptr(modelMat));
glUniformMatrix4fv(glGetUniformLocation(pshader->ID, “viewMat”), 1, GL_FALSE, glm::value_ptr(viewMat));
glUniformMatrix4fv(glGetUniformLocation(pshader->ID, “projMat”), 1, GL_FALSE, glm::value_ptr(projMat));
5、绘制立方体
//VBO方式绘制
glDrawArrays(GL_TRIANGLES, 0, 36);
链接Git: link.