OpenGL有很多library,在建置环境之前,我们需要了解要下载什麽东西
这边我们选择了GLFW + GLAD来建置我们的OpenGL
GLFW 是一个跨平台的OpenGL应用框架,支持窗口创建、读取输入和处理事件等功能。特点:轻量级、开源和跨平台。取代glut 或 freeglut。
GLAD是OpenGL C++的extension library,支援更高级的OpenGL函式。GLAD 可以说是 GLEW的升级版。
可以想成我们安装了一个GLFW提供了GL的基本函数,而GLAD提供了更进阶的GL高级函数。
关於更多的说明可以参考最下面连结[1][2]
Download Cmake https://cmake.org/download/
下载後安装Cmake,开启Cmake GUI
tool->configure
source选择好刚刚下载的glfw folder,build的资料夹若没有就自己创建一个。点击configure
点击Generate
点击Open Project,会自动用VS2019开启刚刚build好的专案,点选建置方案
我们这边编译Debug, x64设定
编译後的lib会在src/debug里面
保存所有编译好的library
先创建资料夹如下,路径可自行选择
include 放GLFW里面的include资料
lib里面放刚刚的glfw3.lib
开启新的空白专案
设定include与lib路径
新增 连结器->输入->其他相依性
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
配置GLAD
https://glad.dav1d.de/
language C/C++
Profile Core
gl version 3.3 or higher
下载glad.zip
将include资料复制到刚刚创建的include目录下
glad.c则加入到你的专案里
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;
}
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的实际应用 我们昨天讲了ScrollView的基本使用,今天我们要来讲...
先简单回顾一下,今天预计分析的题目: 题目连结:https://leetcode.com/prob...
tags: OC 30 day 什麽是对象? 对象是现实生活中的一个具体存在。看得见,摸得着。拿过来...
Recyclerview Recyclerview在App开发中十分常见,接下来就用kotlin来呈...
这是今天要介绍的详细一点的数据类型: 整型(int/integer) 浮点型(float) 布尔型(...