OpenGL教程——准备

Posted collectionne

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenGL教程——准备相关的知识,希望对你有一定的参考价值。

在正式开始学习OpenGL之前,我们需要先配置好OpenGL环境。

 

IDE

 

首先我们需要选择一个IDE。支持OpenGL的IDE有很多,这里我们选择Visual Studio 2015(Windows平台)作为我们的IDE。

 

GLFW

 

OpenGL是一个图形库,而要画图,就需要先创建一个窗口。不幸的是,OpenGL没有提供创建窗口的功能,必须自己创建窗口。而创建窗口在每一个操作系统上都不同(在Windows上代码量也不少)。因此我们将会使用一个窗口库来简化这一过程。常用的OpenGL窗口库有GLUT、GLFW和SDL。这里我们选择GLFW。

 

GLFW可以从它的官方网站上下载。你可以下载已经编译好的binaries(如果里面有符合你的编译器的),也可以自己编译(需要使用CMake)。这里我使用的GLFW版本是3.2.1。

 

这里以直接下载GLFW为例,关于自己编译以后再讲。

 

如果下载已经编译好的binaries,解压并打开,找到含有针对你的编译器的binary的文件夹(对于VS2015,文件夹名称是lib-vc2015)。include/路径下有glfw3.h,这个是我们会使用到的GLFW头文件。lib/路径下有相应的静态链接库和动态链接库(Windows下,两种库的扩展名分别是.lib和.dll,别的操作系统我就不知道了)。Windows下,lib/中有glfw3.lib,glfw3dll.lib和glfw3.dll。

 

建议将本教程使用的所有的头文件和库文件分别整理到两个文件夹中(我把它们命名为include和lib)。

 

GLEW

 

除了GLFW,我们还需要一个GLEW库。Visual Studio对于OpenGL(gl.h)只支持到1.1,而本教程要学的是OpenGL 3.3。但是,OpenGL是由显卡支持的,显卡已经提供了我们需要的OpenGL函数。因此就需要在运行程序时动态地获取函数地址。在Windows下,以glGenBuffers为例,大概是这样的:

 

#include <windows.h>
#include <GL/gl.h>
...
// define the functions‘ prototypes
typedef void * (*WGLGETPROCADDRESS)(const char *);
typedef void (*GLGENBUFFERS)(GLsizei, GLsizei *);

// load opengl32.dll and query the address of wglGetProcAddress
HMODULE hDll = LoadLibrary("opengl32.dll");
WGLGETPROCADDRESS wglGetProcAddress = (WGLGETPROCADDRESS)GetProcAddress(hDll, "wglGetProcAddress");
FreeLibrary(hDll);
// query the OpenGL functions‘ addresses GLGENBUFFERS glGenBuffers = (GLGENBUFFERS)wglGetProcAddress("glGenBuffers"); // now the function can be used as normal GLuint vbo; glGenBuffers(1, &vbo);

 

以上是关于OpenGL教程——准备的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL教程 学习笔记

OpenGL教程 学习笔记

OpenGL ES 学习教程(十三) Stencil_TEST(模板缓冲测试)

OpenGL ES 学习教程(十三) Stencil_TEST(模板缓冲测试)

OpenGL片段着色器不照亮场景

片段着色器中未使用纹理数据 - OpenGL