#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
// 初始化OpenGL窗口
void initWindow(GLFWwindow** window) {
if (!glfwInit()) {
std::cerr << "Failed to initialize GLFW" << std::endl;
exit(EXIT_FAILURE);
}
// 设置OpenGL版本和配置
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
// 创建窗口
*window = glfwCreateWindow(800, 600, "C++ OpenGL Example", NULL, NULL);
if (!*window) {
std::cerr << "Failed to create GLFW window" << std::endl;
glfwTerminate();
exit(EXIT_FAILURE);
}
// 设置当前上下文
glfwMakeContextCurrent(*window);
glewExperimental = GL_TRUE;
// 初始化GLEW
if (glewInit() != GLEW_OK) {
std::cerr << "Failed to initialize GLEW" << std::endl;
exit(EXIT_FAILURE);
}
}
// 渲染循环
void renderLoop(GLFWwindow* window) {
while (!glfwWindowShouldClose(window)) {
// 设置背景颜色
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// 检查并调用事件
glfwPollEvents();
// 交换缓冲区
glfwSwapBuffers(window);
}
}
int main() {
GLFWwindow* window;
initWindow(&window);
// 开始渲染循环
renderLoop(window);
// 清理资源
glfwTerminate();
return 0;
}
初始化窗口:
glfwInit()初始化GLFW库。渲染循环:
glfwPollEvents()处理输入事件。glfwSwapBuffers()交换前后缓冲区以显示渲染结果。清理资源:
glfwTerminate()清理GLFW资源。这段代码展示了如何使用C++和OpenGL创建一个简单的窗口,并在其中进行基本的渲染操作。
上一篇:c++ new数组
下一篇:c++ 初始化列表
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站