Visual studio 2019 OpenGL setup on windows 10

OpenGL有很多library,在建置环境之前,我们需要了解要下载什麽东西

这边我们选择了GLFW + GLAD来建置我们的OpenGL

GLFW 是一个跨平台的OpenGL应用框架,支持窗口创建、读取输入和处理事件等功能。特点:轻量级、开源和跨平台。取代glut 或 freeglut。

GLAD是OpenGL C++的extension library,支援更高级的OpenGL函式。GLAD 可以说是 GLEW的升级版。

可以想成我们安装了一个GLFW提供了GL的基本函数,而GLAD提供了更进阶的GL高级函数。
关於更多的说明可以参考最下面连结[1][2]

实际安装

  1. 下载并安装visaul studio 2019
  2. Building GLFW
    Download GLFW source package https://www.glfw.org/download.html
    https://i.imgur.com/tRRgeQ7.png

Download Cmake https://cmake.org/download/
https://i.imgur.com/wElpNsD.png

下载後安装Cmake,开启Cmake GUI
tool->configure
https://i.imgur.com/JxxNq5L.png

source选择好刚刚下载的glfw folder,build的资料夹若没有就自己创建一个。点击configure
https://i.imgur.com/StsY3Vk.png

点击Generate
https://i.imgur.com/f9ZTblX.png

点击Open Project,会自动用VS2019开启刚刚build好的专案,点选建置方案
我们这边编译Debug, x64设定
https://i.imgur.com/CSXOA8M.png

编译後的lib会在src/debug里面
https://i.imgur.com/6EZCpal.png

保存所有编译好的library
先创建资料夹如下,路径可自行选择
https://i.imgur.com/CyweC7U.png

include 放GLFW里面的include资料
https://i.imgur.com/eZmbj4A.png

lib里面放刚刚的glfw3.lib
https://i.imgur.com/UmeuNdH.png

开启新的空白专案
https://i.imgur.com/wksle1e.png

设定include与lib路径
https://i.imgur.com/E1eXwT1.png

新增 连结器->输入->其他相依性
if you’re on Windows the OpenGL library opengl32.lib comes with the Microsoft SDK, which is installed by default when you install Visual Studio
https://i.imgur.com/O8BPLdH.png

配置GLAD
https://glad.dav1d.de/
language C/C++
Profile Core
gl version 3.3 or higher
https://i.imgur.com/djTIoEq.png

下载glad.zip
https://i.imgur.com/t4X44Oj.png

将include资料复制到刚刚创建的include目录下
https://i.imgur.com/VCbuz9a.png

glad.c则加入到你的专案里
https://i.imgur.com/1nSNkQ7.png

Source.cpp加入以下范例程序

#include <glad/glad.h>
#include <glfw3.h>
#include <iostream>
// 设置窗口尺寸
const unsigned int SCR_WIDTH = 400;
const unsigned int SCR_HEIGHT = 300;
#include <glad/glad.h>
#include <glfw3.h>
#include <iostream>
// 设置窗口尺寸
const unsigned int SCR_WIDTH = 400;
const unsigned int SCR_HEIGHT = 300;
int main()
{
    // glfw: 初始化
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#ifdef __APPLE__
    // uncomment this statement to fix compilation on OS X
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif
    // glfw 创建窗口
    GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "Test<GLFW+GLAD>", NULL, NULL);
    if (window == NULL)
    {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    // glad: load all OpenGL function pointers
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }
    // render loop
    while (!glfwWindowShouldClose(window))
    {
        glClearColor(0.0f, 1.f, 0.0f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        // glfw: swap buffers and poll IO events (keyspressed/released, mouse moved etc.)
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    // glfw: terminate, clearing all previously allocated GLFWresources.
    glfwTerminate();
    return 0;
}

https://i.imgur.com/PCslq17.png

reference :
[1] https://www.cnblogs.com/chencarl/p/10722839.html
[2] https://www.twblogs.net/a/5d166394bd9eee1e5c82a048
[3] https://learnopengl.com/Getting-started/Creating-a-window
[4] https://www.twblogs.net/a/5d166394bd9eee1e5c82a048


<<:  ISO 27001 资讯安全管理系统 【解析】(十)

>>:  只要三分钟就能上手的Markdown语法~ 让你沉浸於笔记

Day 25 - Socket的实际应用

Day 25 - Socket的实际应用 我们昨天讲了ScrollView的基本使用,今天我们要来讲...

【第二十九天 - 系统分析 题目分析】

先简单回顾一下,今天预计分析的题目: 题目连结:https://leetcode.com/prob...

iOS APP 开发 OC 第六天, 类&对象

tags: OC 30 day 什麽是对象? 对象是现实生活中的一个具体存在。看得见,摸得着。拿过来...

Android学习笔记03

Recyclerview Recyclerview在App开发中十分常见,接下来就用kotlin来呈...

Day10 PHP数据类型--基本类型之数字与布尔型

这是今天要介绍的详细一点的数据类型: 整型(int/integer) 浮点型(float) 布尔型(...