前言
专业课,花了两三周看掉的吧,不过也就看到模板测试没看了,到底啥才是兴趣点呢。
那本蓝宝书还是没有Github网站教学好啊,这里添上链接,这是最新链接,之前有个老版本的网站,别走错了。
详细教程网站都有,这里只是类似于备份下之前努力手敲的代码吧,毕竟我的片段着色器、顶点着色器文件是综合的,而且着色器头文件、摄像机头文件、网格头文件和模型头文件都是手打,修改了下的,不过大体都一样,只不过自己傻傻吧,手打,记忆深刻些罢了,想必不用还是会忘得一干二净吧。
环境搭建
本地新建OpenGL文件夹
①子目录:include——用于放置.h文件
②子目录:libs——用于放置.lib文件
配置GLEW库
①官网下载地址:http://glew.sourceforge.net/
②解压Glew压缩包,进入build目录,用本机Visual Studio打开vs12目录下的工程
③用Visual Studio打开glew.sln,编译此项目(生成解决方案)
④打开glew-2.1.0\lib\Debug\Win32,将glew32sd.lib拷贝至OpenGL\libs文件夹下
⑤打开glew-2.1.0\include\GL,将所有文件(elew.h,glew.h,glxew.h,wglew.h)拷贝至OpenGL\include文件夹下
配置GLFW库
①安装CMake工具和下载GLFW库:
官方下载地址:https://cmake.org/
官网下载地址:http://www.glfw.org/
③安装好CMake后,打开cmake-gui.exe,点击Browse Source将目录设置为glfw-3.2.1目录
④点击Browse Build,将目录设置为glfw-3.2.1\build文件夹(build自己新建)
⑤点击Configure,选择目标平台,例如本机的Visual Studio 2017,所以选择Visual Studio 12 2017,点击确定
⑥再次Configure,然后Generate生成项目:
⑦关闭CMake,进入build,用Visual Studio打开GLFW.sln,并编译
⑧build\src\Debug目录下有刚才编译项目生成的glfw3.lib库,将次库拷贝到OpenGL\libs目录下。将glfw-3.2.1\include下的GLFW中的文件拷贝到OpenGL\include文件夹下
配置GLAD库
GLAD是一个开源的库,它能解决我们上面提到的那个繁琐的问题。GLAD的配置与大多数的开源库有些许的不同,GLAD使用了一个在线服务。在这里我们能够告诉GLAD需要定义的OpenGL版本,并且根据这个版本加载所有相关的OpenGL函数。
打开GLAD的在线服务(http://glad.dav1d.de/),将语言(Language)设置为C/C++,在API选项中,选择3.3以上的OpenGL(gl)版本(我们的教程中将使用3.3版本,但更新的版本也能正常工作)。之后将模式(Profile)设置为Core,并且保证生成加载器(Generate a loader)的选项是选中的。现在可以先(暂时)忽略拓展(Extensions)中的内容。都选择完之后,点击生成(Generate)按钮来生成库文件。
GLAD现在应该提供给你了一个zip压缩文件,包含两个头文件目录,和一个glad.c文件。将两个头文件目录(glad和KHR)复制到你的Include文件夹中(或者增加一个额外的项目指向这些目录),并添加glad.c文件到你的工程中。
至此,已经配置好OpenGL库:
项目添加库目录和链接依赖项
①新建空项目(C++项目)
②右击项目-属性-VC++目录
包含目录选择定位到OpenGL\include
库目录选择定位到OpenGL\libs
![OpenGL图示16(/assets/img/openGL/OpenGL_Sixteen.png)]
③进入链接器输入-附加依赖项:
加入以下库目录:
opengl32.Lib
glfw3.lib
glew32sd.lib
OpenGL_Learn_ElementaryCourse
OpenGL_Learn_ElementaryCourse_One_Geometric_Primitives.cpp
1 |
|
OpenGL_Learn_ElementaryCourse_Two_Shader_Complicated.cpp
1 |
|
OpenGL_Learn_ElementaryCourse_Two_Shader_Reduced.cpp
1 |
|
OpenGL_Learn_ElementaryCourse_Three_Texture.cpp
1 |
|
OpenGL_Learn_ElementaryCourse_Four_Geometric_Translate.cpp
1 |
|
OpenGL_Learn_ElementaryCourse_Five_3DModel.cpp
1 |
|
OpenGL_Learn_ElementaryCourse_Six_Camera_Origin.cpp
1 |
|
OpenGL_Learn_ElementaryCourse_Six_Camera_Class.cpp
1 |
|
OpenGL_Learn_ElementaryCourse_Combined.cpp
1 |
|
OpenGL_Learn_Lighting
OpenGL_Learn_Lighting_One_BasicLighting.cpp
1 |
|
OpenGL_Learn_Lighting_Two_Material.cpp
1 |
|
OpenGL_Learn_Lighting_Three_LightingMap.cpp
1 |
|
OpenGL_Learn_Lighting_Four_LightingCasters.cpp
1 |
|
OpenGL_Learn_Lighting_Five_MultipleLights.cpp
1 |
|
OpenGL_Learn_LoadModel
OpenGL_Learn_LoadModel.cpp
1 |
|
OpenGL_Learn_AdvancedOpenGL
OpenGL_Learn_AdvancedOpenGL_One_DepthTesting.cpp
1 |
|
OpenGL_Learn_AdvancedOpenGL_Two_StencilTesting.cpp
1 |
|
Components
Shader.h
1 |
|
Camera.h
1 |
|
Mesh.h
1 |
|
Model.h
1 |
|
Shader.vs
1 |
|
Shader.fs
1 |
|