c++ opengl 环境配置+demo

c++ opengl 环境配置+demo,第1张

c++ opengl 环境配置+demo

参照

编译指令
参照g++ 的编译顺序: 从右边到左边, 所以很多情况下,如果编译出错,需要调整一下编译顺序.
否则就会出现,xxx找不到.

还有一点,需要注意:
linux 环境下,需要
创建软链接,实现opengl的库的搭建

sudo ln -s xxxxxxxxxxxx  /usr/bin/libGL.so
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ 生成活动文件",
            "command": "/usr/bin/g++",
            "args": [
                // g++ main.cpp -std=c++17 -lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi -o run

                "./main.cpp",
                "./glad.c",
                "-fdiagnostics-color=always",
                "-g",
                "-o",
                "main",
                "-lglfw",
                "-lvulkan",
                "-ldl",
                "-lpthread",
                "-lX11",
                "-lXxf86vm",
                "-lXi",
                "-lGL",
                "-lXrandr",

            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

#include 
#include 

#include 

using namespace std;



// 重绘 窗口
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    glViewport(0, 0, width, height);
}



// 获取用户esc键
// 并且退出
void processInput(GLFWwindow *window)
{
    if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
        glfwSetWindowShouldClose(window, true);
}



int main(){

    // 初始化
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);


    // 创建窗口
    GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
    if (window == NULL)
    {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);


    // 初始化glad
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }



    // 回调函数
    // 根据用户的当前的窗口大小,进行调整
    glfwSetframebufferSizeCallback(window, framebuffer_size_callback);



    // 循环窗口
    // 不断的绘制窗口事件
    while(!glfwWindowShouldClose(window))
    {
        // 注册用户按键函数
        processInput(window);

    
        // 检查并调用事件,交换缓冲
        glfwSwapBuffers(window);
        glfwPollEvents();    
    }






    // 终止,并释放所有的资源
    glfwTerminate();
    
    
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5713793.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存