GLFW实例介绍(1)

一、简介
本篇文章中,我们将对GLFW实现实例进行介绍。

二、实例分析
官网上给了一个简单的例子来说明如何使用:
#include <GLFW/glfw3.h>

int main(void)
{

GLFWwindow* window;

/* 初始化glfw库 */
if (!glfwInit())
return -1;

/* 创建一个窗口和它的OpenGL上下文 /
window = glfwCreateWindow(640, 480, “Hello World”, NULL, NULL);
if (!window)
{
/
没有创建会返回NULL */
glfwTerminate();
return -1;
}

/* 设置当前的窗口上下文 */
glfwMakeContextCurrent(window);

/* 循环,直到用户关闭窗口 /
while (!glfwWindowShouldClose(window))
{
/
在这里做渲染 */
glClear(GL_COLOR_BUFFER_BIT);

/* 交换缓冲区,即在window上更新内容 */
glfwSwapBuffers(window);

/* 轮询事件 */
glfwPollEvents();
}

glfwTerminate();
return 0;
}

接下来我们来说一下基本的使用:
首先是引用头文件:
#include <GLFW/glfw3.h>
要注意的是,引用了这个头文件之后就不要再引用你自己的OpenGL头文件了,如果是Windows系统,<windows.h>也不必引用了。
GLFW还特意强调了,某些平台(Windows就是你)只提供了旧版本OpenGL头文件,需要使用一个Extension loader library。
如果使用这种库,请在引用GLFW库之前引用它,比如glad库
#include <glad/glad.h>
#include <GLFW/glfw3.h>

初始化GLFW:
if (!glfwInit())
{
// 初始化失败执行的操作
}

终止GLFW:
在我们使用完毕后,需要在程序退出前及时的终止它
glfwTerminate();

设置错误回调:
当程序发生错误的时候,我们可以通过这个函数来捕获错误
void error_callback(int error, const char* description)
{
fprintf(stderr, “Error: %s\n”, description);
}
当然你要在使用之前把它设置好
glfwSetErrorCallback(error_callback);

创建窗口以及上下文
GLFWwindow* window = glfwCreateWindow(640, 480, “My Title”, NULL, NULL);
if (!window)
{
// 创建失败需要执行的操作
}
其中第一个参数是窗口宽度,第二个参数是窗口高度,第三个参数是窗口标题,第四个参数是显示模式,NULL为窗口化,如果需要显示全屏,则需要指定覆盖的显示器,在这里不多讲,第五个参数是设置与那个窗口共享资源,默认为NULL,即不共享资源。
另外,由于GFLW创建的OpenGL上下文可能是任何版本的,所以你可以设置OpenGL的最低版本。
下面的代码设置了OpenGL最低版本为2.0。
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); // OpenGL主版本号
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); // OpenGL副版本号
GLFWwindow* window = glfwCreateWindow(640, 480, “My Title”, NULL, NULL);
if (!window)
{
// 创建失败需要执行的操作
}
窗口句柄被传递给所有与窗口相关的函数,并被提供给所有与窗口相关的回调函数,所以它们可以告知哪个窗口收到了事件。
当你不再需要某个窗口及上下文时,请销毁它。
glfwDestroyWindow(window);

设置当前OpenGL上下文:
在使用OpenGL API之前,你必须设置好当前的OpenGL上下文glfwMakeContextCurrent(window);

三、总结
本篇文章中我们对其代码编写的框架进行了分析,接下来我们将会结合这些内容进行实战。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值