WMeow 发表于 2023-3-16 12:03

OpenGL学习记录【创建初始窗口】

#include <iostream>

#define GLEW_STATIC//告诉编译器使用static版本的glew
#include <GL/glew.h>
#include <GLFW/glfw3.h>//引用opengl档头
//为了配置好Opengl我一开始下载的vs2022 但是一直报错并且无法运行,恕我没有能力理解这些错误为什么会出现,我只能卸载了vs2022并重新安装了vs2019,幸运的是这次成功运行了,并且没有我无法理解的报错

int main() {

        glfwInit();//初始化
        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//该段告诉我们想要配置什么,我们可以从中选择一个大枚举作为_glfw的备用前缀(英文不太好,只能这么理解了)
        glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//配置GLFW,一个整数,为我们的option设置一个值(所有可能的选项和对应的值都可以在GLFW'S window handling文档中列出,如果现在运行了程序并报错未定义的引用这意味着没有成功引用到glfw档头)
        glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//保证初始化代码能够工作

        //Open GLFW Window,下面创建一个窗口对象,并且包含了所有其他窗口对象所需要的窗口数据
        GLFWwindow* window = glfwCreateWindow(800, 600, "MY OPGLGL GAME", NULL, NULL);//glfwCreateWindow函数需要窗口高度和宽度分别做为前两个参数,第三个参数是设置窗口的名称
        if (window == NULL)
        {
                printf("opengl window failed.");
                glfwTerminate();
                return -1;

        }
        glfwMakeContextCurrent(window);//告诉glfw将窗口的上下文当作当前线程的主上下文(上下文是什么意思呀我基础不太好


        //Init GLEW
        glewExperimental = true;
        if (glewInit() != GLEW_OK)
        {
                printf("Init GLEWfailed.");
                glfwTerminate();
                return -1;

        }

        glViewport(0, 0, 800, 600);//在进行渲染之前告诉OpenGL窗口的尺寸,这样OpenGL就能知道我们想要的窗口数据和坐标,我们通过glViewport函数设置这些尺寸
        while (!glfwWindowShouldClose(window))
        {
                glfwSwapBuffers(window);//双缓冲确保了屏幕不会出现闪烁错误,而且确保了实时刷新,一个缓冲区用于显示,另一个缓冲区用于渲染计算
                glfwPollEvents();

        }
        glfwTerminate();
        return 0;
//一旦我们想要推出渲染循环,我们想要正确的删除或者清理glfw‘s的资源,我们可以通过在主函数的末尾调用glfwTerminate函数来做到这一点(这个函数看起来经常被调用



}

最后运行代码,窗口正常跳出

weiya909 发表于 2023-3-16 14:01

为啥vs2022会报错,没引入库吗?

WMeow 发表于 2023-3-16 14:27

引入了,但是它一直提示报错,步骤和vs2019一样,感觉是版本问题

WMeow 发表于 2023-3-16 14:28

weiya909 发表于 2023-3-16 14:01
为啥vs2022会报错,没引入库吗?


引入了,但是它一直提示报错,步骤和vs2019一样,感觉是版本问题
页: [1]
查看完整版本: OpenGL学习记录【创建初始窗口】