终于抽出时间系统学习OpenGL 教程,同时也一步一步记录怎样利用openGL进行加速计算。
目录
- 1、环境准备
- 1.1、库的下载
- 1.2、库的选择及安装
- 2、OpenGL第一个项目,Hello World!
- 2.1、新建hello world控制台项目
- 2.2、配置openGL环境
- 2.2.1 包含目录配置
- 2.2.2 库目录配置
- 2.2.3 库文件配置
- 2.2.4 glad.c文件包含
- 2.3、Hello World主程序代码
1、环境准备
1.1、库的下载
需下载glfw库、glad库
1、glfw库:官方下载地址
2、glad库:官方下载地址
访问官网后,根据下图配置下载的版本等信息,点击右下角的按钮进入下载界面
在下载界面,下载压缩包即可,如下图
这里我也提供一下云盘下载地址,方便学习使用
通过网盘分享的文件:openGL_Lib
链接: https://pan.baidu.com/s/13Piu-gvnDoBylxkjZ5buJQ?pwd=6pk1 提取码: 6pk1
--来自百度网盘超级会员v5的分享
1.2、库的选择及安装
1、glad.zip文件解压后如下图
看看文件树如下图,里面没有lib文件,都是源码文件。所以glad.c文件后续跟着工程项目进行加载即可。
2、glfw-3.4.bin.WIN64.zip解压后如下,工程中重点使用include文件夹和下面各个VS库即可
我用的是VS2017,lib-vc2017文件夹如下,是个动态库
2、OpenGL第一个项目,Hello World!
2.1、新建hello world控制台项目
2.2、配置openGL环境
2.2.1 包含目录配置
2.2.2 库目录配置
2.2.3 库文件配置
2.2.4 glad.c文件包含
把glad.zip解压的src中的glad.c文件拷贝到项目main.cpp同级目录,并且添加进工程里
2.3、Hello World主程序代码
主程序main.cpp文件代码修改如下,一个空的openGL窗口即可弹出
#include <glad/glad.h>
#include "GLFW/glfw3.h"
#include <iostream>
void framebuffer_size_callback(GLFWwindow* window,int width,int height)
{
glViewport(0, 0, width, height);
}
void processInput(GLFWwindow *window)
{//检测是否有外部输入
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
{
glfwSetWindowShouldClose(window, true);//把关闭状态设置为true
}
}
int main()
{
glfwInit();//初始化上下文环境
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);//要求opengl 3版本以上
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);//
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL Core", NULL, NULL);//创建窗体
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);//上下文绑定窗体
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))//初始化函数指针,为下面函数做准备
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
glViewport(0,0,800,600);//设置需要渲染的视口
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);//设置回调函数
while ( !glfwWindowShouldClose(window))//创建的window关掉后就退出while循环
{
processInput(window);//
glClearColor(0.2f,0.3f,0.3f,1.0f);//设置颜色
glClear(GL_COLOR_BUFFER_BIT);//用设置的颜色把画布进行清零掉
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
std::cout << "Hello World!\n";
return 0;
}
运行后如下空窗口弹出,本篇完结。