3D引擎:Horde3D:窗口类API:glfw
来源:互联网 发布:apache cxf 下载 编辑:程序博客网 时间:2024/06/14 02:37
Horde3D是基于 opengl的 次世代,轻量级渲染引擎。
glfw 这个开源库是一个很好便捷 opengl创建窗口的库, 它创建一个 opengl 上下文的窗口,并可以接收窗口输入事件
关于 glfw 创建窗口的demo,可以参考:http://www.glfw.org/documentation.html
首先,分析Horde3D 用glfw创建窗口的方式
1 头文件添加, #include "glfw.h"
2 初始化 glfw库
glfwInit();
3 设置输入模式为 STICK 模式
glfwEnable(GLFW_STICKY_KEYS);
功能:
这种模式能检测到最新输入状态,并立即更新。 在glfw3版本中,这种方法被 替换为 glfwSetInputMode(window, GLFW_STICKY_KEYS, 1)
它防止了一些即时状态的丢失
4 创建窗口
bool setupWindow(int width, int height, bool fullscreen);
该函数里封装了 创建窗口,设置窗口事件监听事件等 功能:
4.1 glfwOpenWindow(width, height, 8, 8, 8, 8, 24, 8, fullscreen?GLFW_FULLSCREEN:GLFW_WINDOW)
参数1-2: 窗口的宽高
参数3-8: 颜色rgba的bit大小,以及depth buffer bit 和stencil buffer bit的大小
参数9: 设置全屏模式
功能:
它创建了一个可以显示位图的窗口,分配相应的buffer。 在glfw3版本中,这种方法被替换成了GLFWwindow *glfwCreateWindow(int wight, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
4.2 禁止vertical synchronization
glfwSwapInterval(0);
参数: glfwSwapBuffers操作之间,屏幕需要等待更新的次数
什么是vertical synchronization?
它是用来防止屏幕撕裂现象的
Screen tearing
http://wiki.eanswers.com/en/Screen_tearing?ext=t&cid=5083
Screen tearing 引起的原因是:
简单的说是,GPU往屏幕渲染的帧率大于屏幕刷新的帧率,也就是 说,当屏幕绘制(刷新)一帧到中间时, GPU已经向屏幕输送了好几帧,而屏幕会继续绘制(刷新),但这时用的数据是GPU向屏幕更新的数据。 这样就
导致的屏幕撕裂的问题。 它也并不是GPU比屏幕刷新的快, 总体来说,如果GPU的刷新率不是屏幕刷新率的倍数,那么就会出现撕裂的问题, 而解决这种问题的方式,就是 v-sync
V-sync:
Vertical synchronization 是 大多数系统的一个选项。 它是防止显卡想显存输送数据,直到屏幕刷新完当前帧为止。
在Vertical blanking interval的时间里,驱动会命令显卡 要么 快速的复制离屏区域到 激活现实区域里,俗称 double buffering,要么两个buffer都是可以现实的,然后再前后buffer之间切换,即 page flipping
4.3 实现监听设置
....
glfwSet开头的API设置 窗口关闭,键盘按键响应,以及鼠标键回调事件
4.4 设置窗口标题
glfwSetWindowTitle(app->getTitle());
参数: char *
4.5 其它一些api
glfwTerminate() 终止窗口, 当推出游戏时或者创建窗口
glfwCloseWindow(),关闭窗口
glfwDisable 关闭一些功能,如GLFW_MOUSE_CURSOR 取消鼠标标识显示
glfwGetTime() 获取当前时间
glfwSwapBuffers() 交换前后buffer
0 0
- 3D引擎:Horde3D:窗口类API:glfw
- 3D引擎:Horde3D:App类
- 3D引擎:Horde3D的 Resource类
- 3D引擎:Horde3D:小感3
- 3D引擎:Horde3D:小感
- 3D引擎:Horde3D:小感2
- 3D引擎:Horde3D:Cocos 和 Horde3D渲染部分的设计比较
- 3D引擎:Horde3D:如何解析Shader文件(一)
- 3D引擎:Horde3D:读取Shader文件流程(二)
- 3D引擎:Horde3D:Shader类里的 结构体,以及渲染一个 Logo的简单流程(三)
- Horde3D——基于C++编写的3D渲染引擎
- 用glew,glfw实现opengl绘制3D学习笔记1-实现一个窗口
- 自制3D显示引擎八:矩形窗口裁剪
- windows,glut,glfw窗口设计
- 闪客工具:基于Flash 3D API Molehill 进行GPU加速2D的引擎
- ZLib2000 3D引擎
- 3D引擎架构
- 3D引擎数据库
- HashMap 排序,按照 value,找出字符出现次数最多的
- X皮书之初识Redis(基本操作)
- Reverse Linked List
- JVM学习--认识虚拟机
- 逐渐有意识地适当远离Windows环境编程和C语言
- 3D引擎:Horde3D:窗口类API:glfw
- 【跟我学Apache Commons】【一】综述
- js实现复选框全选和反选功能
- 魔兽军团前端项目的一些总结
- 3D引擎:Horde3D:App类
- 【跟我学Apache Commons】【二】Lang&Math
- 关于win2003 iis6 不显示验证码的解决方法
- POJ 3468 线段树入门题
- uvaoj 1352Colored Cubes