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

本文记录了一位小白自学OpenGL3.3的过程,推荐学习核心模式,介绍如何配置OpenGL3.3环境,包括使用GLFW、GLAD库,并提供了详细配置步骤,最终在VS中成功创建并运行了基础项目,显示黑色窗口。

心血来潮

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

关于OpenGL

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

关于如何配置OpenGL3.3

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

然后在附加库目录里面把lib给加进去。
这里写图片描述
这里写图片描述
最后在附加依赖项里面加入这两个:opengl32.lib,glfw3.lib
这里写图片描述
到此就配置完了。下面我们来测试一下看是否配置成功。

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

结果如下,出来了一个黑色的窗口。成功!
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值