零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 转场
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 函数
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES GPUImage 使用
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES GLSL 编程
一.glad 简介
GLEW 扩展库作用:不同的显卡公司,也会发布一些只有自家显卡才支持的扩展函数,你要想用这数涵数,不得不去寻找最新的 glext.h ,有了 GLEW 扩展库,你就再也不用为找不到函数的接口而烦恼,因为 GLEW 能自动识别你的平台所支持的全部 OpenGL 高级扩展函数。也就是说,只要包含一个 glew.h 头文件,你就能使用gl glu glext wgl glx 的全部函数。
glad 是继 gl3w,glew 之后,当前最新的用来访问 OpenGL 规范接口的第三方库。简单说 glad 是 glew 的升级版,就是说 glew 比较老,glad 比较新,Windows 中 使用:
// 定义函数原型
typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
// 找到正确的函数并赋值给函数指针
GL_GENBUFFERS glGenBuffers = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
// 现在函数可以被正常调用了
GLuint buffer;
glGenBuffers(1, &buffer);
OpenGL 只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于 OpenGL 驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用,这就是 glfw 和 glew 的共同之处;
二.glad下载
GLAD 是一个开源的库,它能解决我们上面提到的那个繁琐的问题。GLAD 的配置与大多数的开源库有些许的不同,GLAD 使用了一个在线服务。在这里我们能够告诉 GLAD 需要定义的 OpenGL 版本,并且根据这个版本加载所有相关的 OpenGL 函数。
下载地址:https://glad.dav1d.de/
打开 GLAD 的在线服务,将语言(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 文件到你的工程中。
四.glad 使用
链接库:opengl32.lib 和 glfw3.lib
Windows 上的 OpenGL 库:如果你是Windows平台,opengl32.lib 已经包含在 Microsoft SDK 里了,它在 Visual Studio 安装的时候就默认安装了。由于这篇教程用的是VS编译器,并且是在 Windows 操作系统上,我们只需将opengl32.lib 添加进连接器设置里就行了。值得注意的是,OpenGL库64位版本的文件名仍然是 opengl32.lib(和32位版本一样),虽然很奇怪但确实如此。
Linux 上的 OpenGL 库:在Linux下你需要链接 libGL.so 库文件,这需要添加
-lGL
到你的链接器设置中。如果找不到这个库你可能需要安装 Mesa, NVidia 或 AMD 的开发包,这部分因平台而异(而且我也不熟悉 Linux )就不仔细讲解了。
1.OpenGL glfw + glad 效果演示
2.OpenGL glfw + glad 《源码下载》
注意当前代码只编译了Windows x64 平台,如果需要 x86 ,自己配置工程属性编译即可,源码下载:OpenGL_glfw_glad
二.猜你喜欢
- OpenGL ES 简介
- OpenGL ES 版本介绍
- OpenGL ES 2.0 和 3.0区别
- OpenGL ES 名词解释(一)
- OpenGL ES 名词解释(二)
- OpenGL ES GLSL 着色器使用过程
- OpenGL ES EGL 简介
- OpenGL ES EGL 名词解释
- OpenGL ES EGL eglGetDisplay
- OpenGL ES EGL eglInitialize
- OpenGL ES EGL eglGetConfigs
- OpenGL ES EGL eglChooseConfig
- OpenGL ES EGL eglGetError
- OpenGL ES EGL eglCreateContext
- OpenGL ES EGL eglCreateWindowSurface
- OpenGL ES EGL eglCreatePbufferSurface
- OpenGL ES EGL eglMakeCurrent
- OpenGL ES EGL eglSwapBuffer
- OpenGL ES EGL eglDestroySurface
- OpenGL ES EGL eglDestroyContext
- OpenGL ES EGL eglQueryContext
- OpenGL ES EAGLContext 和 EGLContext
- OpenGL ES OpenGL WebGL EGL WGL 区别
- OpenGL ES freeglut 下载和使用
- OpenGL ES glew 下载和使用
- OpenGL ES glut 下载和使用
- OpenGL ES glfw 下载和使用
- OpenGL ES glad 下载和使用
ChatGPT 3.5 国内中文镜像站免费使用啦
暂无评论内容