图像应用程序大部分是 C++ 编写,OpenGL 调用实现与 3D 渲染相关任务将会使用一些扩展库: GLEW、GLM、GLFW、SOLL2 等。
GLFW 库包含 GLFWwindow 类,我们可以在其上进行 3D 场景绘制。OpenGL 也向我们提供了用于 GLSL 程序载入可编程着色阶段并对其进行编译的命令。最后 OpenGL 使用缓冲将 3D 模型和其他相关图像数据发送到管线中。
GLFWwindow 实例并为其设置背景颜色
初始化 GLFW
实例化 GLFWwindow
初始化 FLEW
调用 init()
重复调用 display() 函数
glClearColor() //命令指定了清楚背景时用的颜色,(1.0, 0.0, 0.0, 1.0) R G B 不透明
glClear(GL_COLOR_BUFFER_BIT); // 红色填充颜色缓冲区
// 创建 GLFW 窗口, 参数为 宽,高,名称,全屏显示,资源共享
GLFWwindow* window = glfwCreateWindow(600, 600, "Chapter2 - 2.1", nullptr, nullptr);
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
using namespace std;
void init(GLFWwindow* window)
{
}
void display(GLFWwindow * window, double currentTime)
{
glClearColor(1.0, 0.0, 0.0, 1.0); // RGB 透明
glClear(GL_COLOR_BUFFER_BIT); // 红色填充颜色缓冲区
}
int main()
{
if (!glfwInit()) { exit(EXIT_FAILURE); } // 初始化
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); // 主版本
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6); // 小版本
// 创建 GLFW 窗口, W, H, TileName, 全屏显示, 资源共享
GLFWwindow* window = glfwCreateWindow(600, 600, "Chapter2 - 2.1", nullptr, nullptr);
glfwMakeContextCurrent(window); // OpenGL 上下文与 GLFW 窗口关联
if (glewInit() != GLEW_OK) { exit(EXIT_FAILURE); } // 初始化
glfwSwapInterval(1); // 开启垂直同步
init(window);
// 简单的渲染循环
while (!glfwWindowShouldClose(window)) {
display(window, glfwGetTime());
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);// 销毁窗口
glfwTerminate(); // 关闭窗口
exit(EXIT_SUCCESS);
return 0;
}