碎碎念
准备毕业了,因为工作可能会跟opengl更多的打交道,所以在毕业前算是重新复习下opengl的知识点吧(其实之前也没怎么掌握过,感觉更像是重新学习hh)
学习资料:
- 之前粗略看过learnopengl
- 最近看了下cherno老哥的opengl视频
- 实习期间我的精神导师介绍了opengl红宝书
内容的话感觉是尽量偏向learnopengl吧,毕竟比较熟悉,而且还有示例代码!太棒啦!!
感觉本系列更像是自己的一个笔记吧!记录下自己重新学习opengl的过程,之后再想想转到vulkan(看的云里雾里的hh)
当然文章会涉及imgui的相关知识,不过不重点介绍,重点还是opengl!!
项目准备
下一篇才会开始opengl的知识点,因为我觉得有一个好的,方便的框架才能更专注的学习各种知识点(当然这只是我个人的观点),因为之前我就因为各种环境的配置而浪费了蛮多的时间,所以我希望以后的我看到这一篇文章的时候能够直接拿过去用,拿过去测试,而不是重新又搭一遍环境这样子~
git项目:https://github.com/BadbadLoli/LRCLearnOpenglWithRedbook
各种版本:
- glfw-3.3.4:用就完4儿了
- opengl4.5:learnopengl里提到的是opengl3.3,而红宝书则是用到了4.5版本,会有更多高级特性,我会用到opengl4.5,用AIDA64 Extreme可以看看自己的显卡支不支持opengl各版本,我的是1650显卡,能支持到4.6
- glad:learnopengl中用的是glad,红宝书的示例代码以及imgui的示例代码里用的是gl3w,我觉得用哪个都没关系啦,感觉用glad配置会方便点(learnopengl里关于如何配置glad非常详细)
- imgui-1.83:这是看cherno老哥教程的时候意外看到的一个非常好用的gui库!
- other:还有glm,stb_image都是在learnopengl里有介绍到的
接下来准备项目,因为之前有看过cherno老哥的game engine系列(还没看完呢!)里面用到的premake我挺喜欢的,所以一开始的项目准备就照猫画虎的学过来了
第一个commit:https://github.com/BadbadLoli/LRCLearnOpenglWithRedbook/tree/ae847fdfd87d8d3a7c510e56bdd255c29899cc39
这里是把引入的库都在里面备好了,直接拉下来执行 GenerateProject.bat 即可,生成的是visual studio 2019的项目,如果用的是vs2018,用文本打开 GenerateProject.bat 把里面的2019改成2018即可
测试代码如下:
main.cpp
#include <GLFW/glfw3.h>
#include <glad/glad.h>
#include "imgui.h"
#include "imgui_impl_glfw.h"
#include "imgui_impl_opengl3.h"
#include <iostream>
int main(void)
{
// glfw: initialize and configure
glfwInit();
GLFWwindow* window = glfwCreateWindow(640, 480, "LearnOpenGL", NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
if (!