【OpenGL学习笔记】1.准备工作,环境和库

11 篇文章 0 订阅
3 篇文章 0 订阅

OpenGL是一个接口规范,由Khronos组织制定并维护的规范。OpenGL规范确定了每个函数如何执行,以及输出值。至于内部具体实现由OpenGL的开发者自行决定。所以具体的OpenGL库都是由开发者来维护,内部实现可能不同。

   OpenGL的渲染模式有固定管线模式和可编程模式。现代的OpenGL编程要求开发者使用可编程渲染模式。这种方式十分灵活,可以实现各种复杂的效果。但需要对OpenGL的渲染流程有深入的理解。

   在开始OpenGL编程之前,我们需要下载一些库,帮助我们更快的开发。

   GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入,这正是我们需要的。

  GLFW下载地址:https://www.glfw.org/download.html

最好下载源码进行编译。好处是生成的库不会出现由于编译环境不同出现奇怪的问题。需要CMake来生成对应的工程。

source code:解压的文件路径。

build the binaries: 生成路径,自己创建一个。

点击Configure,选择本地编译环境,点击Finish。

程序会自动在build目录生成一个工程。

再点击Configure。之后点击Generate。工程就可以使用了。

点击Open Project 就可以打开创建好的工程。之后编译整个工程。

编译完成后,会生成一个glfw3.lib文件,拷贝到你的lib库中,同时链接你的OpenGL工程里。将include文件夹里的内容拷贝到你的include文件夹中。

GLAD是一个在线服务,可以基于官方文档生成针GL/GLES/EGL/GLX/WGL等多种语言的加载生成器。

因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本众多,它大多数函数

的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其

保存在一个函数指针中供以后使用。取得地址的方法因平台而异,在Windows上会是类似这样:

// 定义函数原型
typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
// 找到正确的函数并赋值给函数指针
GL_GENBUFFERS glGenBuffers  = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
// 现在函数可以被正常调用了
GLuint buffer;
glGenBuffers(1, &buffer);

GLAD可以简化这个过程。减少代码量。

    打开GLAD的在线服务,将语言(Language)设置为C/C++,在API选项中,选择3.3以上的OpenGL(gl)版本(我们的教程中将使用3.3版本,但更新的版本也能正常工作)。之后将模式(Profile)设置为Core,并且保证生成加载器(Generate a loader)的选项是选中的。现在可以先(暂时)忽略拓展(Extensions)中的内容。都选择完之后,点击生成(Generate)按钮来生成库文件。

   GLAD现在应该提供给你了一个zip压缩文件,包含两个头文件目录,和一个glad.c文件。将两个头文件目录(gladKHR)复制到你的Include文件夹中(或者增加一个额外的项目指向这些目录),并添加glad.c文件到你的工程中。

关于工程设置,需要添加include路径,添加lib库路径。对于windows的系统会自带opengl32.lib这个库,需要连接进来。

环境到此搭建完成。


 本文是根据LearnOpenGL教程自己整理的笔记,详细的教程内容请到LearnOpenGL官网查看。地址:https://learnopengl-cn.github.io/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值