欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小白的OpenGL3.3自学之路(1)OpenGL3.3配置

程序员文章站 2023-12-25 09:10:57
...

心血来潮

本来写Qt跟Opencv的界面写的正好,前段时间师兄在搞四角面片跟消隐的问题。我也被拉去当壮丁。只是师兄是用occ搞的,我懒得学occ。加上以前也没系统学过opengl。于是趁此机会好好自学了一下opengl。

关于OpenGL

OpenGL有两种模式,立即渲染模式跟核心模式。即固定管线与可编程管线,我只推荐大家学习核心模式也就是可编程管线。用的是OpenGL3.3的版本。主要学习方式无非就是跟着LearnOpenGL CN然后再自己摸索。这里附上LearnOpenGL CN的网址:https://learnopengl-cn.github.io/

关于如何配置OpenGL3.3

老规矩先下载GLFW。官网有两种版本。一种是预编译版。一种是源码。如下图:
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
那个glfw-3.2.1.bin.WIN64就是预编译版本。也就是别人帮你编译好了你直接拿来用即可。但是我肯定是自己用源码编译的x64版本。我从来不用x86版本。至于怎么用cmake编译glfw的源码我就不说了,看我之前的博客。写过太多了。懒得写了。反正最后我编译好的都会上传到群文件里面。有需要的自己加群下。群号是736854977。
可能你会问之前写opengl的程序时都有什么gl,glew,freeglut等等。但是不管是glut还是freeglut还是glew都太老了。太过时了。现在都流行用GLAD库。
怎么配置glad库之前Learn OpenGL CN里面都有。我就不细细说了。下面直接上最终opengl的文件夹:
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
好,接下来就是如何在vs里面加opengl3.3了。
首先创建一个空项目然后添加一个源文件。
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
然后再添加一个现有的glad.c到源文件里面。
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
然后在附加包含目录里面把include给加进去。
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
小白的OpenGL3.3自学之路(1)OpenGL3.3配置

然后在附加库目录里面把lib给加进去。
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
最后在附加依赖项里面加入这两个:opengl32.lib,glfw3.lib
小白的OpenGL3.3自学之路(1)OpenGL3.3配置
到此就配置完了。下面我们来测试一下看是否配置成功。

#include <glad/glad.h>
#include <GLFW/glfw3.h>

#include <iostream>

void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window);

const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;

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(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
    if (window == NULL)
    {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

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

    while (!glfwWindowShouldClose(window))
    {
        processInput(window);

        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

void processInput(GLFWwindow *window)
{
    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
        glfwSetWindowShouldClose(window, true);
}

void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    glViewport(0, 0, width, height);
}

结果如下,出来了一个黑色的窗口。成功!
小白的OpenGL3.3自学之路(1)OpenGL3.3配置

相关标签: OpenGL3.3

上一篇:

下一篇: