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

心血来潮

本来写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配置_第1张图片
那个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配置_第2张图片
小白的OpenGL3.3自学之路(1)OpenGL3.3配置_第3张图片
小白的OpenGL3.3自学之路(1)OpenGL3.3配置_第4张图片
好,接下来就是如何在vs里面加opengl3.3了。
首先创建一个空项目然后添加一个源文件。
小白的OpenGL3.3自学之路(1)OpenGL3.3配置_第5张图片
小白的OpenGL3.3自学之路(1)OpenGL3.3配置_第6张图片
然后再添加一个现有的glad.c到源文件里面。
小白的OpenGL3.3自学之路(1)OpenGL3.3配置_第7张图片
然后在附加包含目录里面把include给加进去。
小白的OpenGL3.3自学之路(1)OpenGL3.3配置_第8张图片
小白的OpenGL3.3自学之路(1)OpenGL3.3配置_第9张图片
小白的OpenGL3.3自学之路(1)OpenGL3.3配置_第10张图片

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

#include 
#include 

#include 

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配置_第14张图片

你可能感兴趣的:(OpenGL)