Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c++ opengl

作者:此岸蝶恋花   发布日期:2026-03-05   浏览:72

#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;
}

解释说明

  1. 初始化窗口:

    • 使用glfwInit()初始化GLFW库。
    • 设置OpenGL的版本和配置。
    • 创建一个800x600的窗口,并设置标题为"C++ OpenGL Example"。
    • 初始化GLEW库以加载OpenGL函数。
  2. 渲染循环:

    • 在主循环中,设置背景颜色并清除屏幕。
    • 调用glfwPollEvents()处理输入事件。
    • 使用glfwSwapBuffers()交换前后缓冲区以显示渲染结果。
  3. 清理资源:

    • 当窗口关闭时,调用glfwTerminate()清理GLFW资源。

这段代码展示了如何使用C++和OpenGL创建一个简单的窗口,并在其中进行基本的渲染操作。

上一篇:c++ new数组

下一篇:c++ 初始化列表

大家都在看

c++闭包

c++向上取整的代码

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++ functional

c++框架代码

c++格式化字符串

c++ orm框架

c++ string类

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站