GLFW理解之Video mode

GLEW理解之Video mode

  学习一门新的语言或者库的时候,总会出现难以理解的语言或者库的设计机制和概念。针对GLFW库,第一个让我头疼的概念就是这个Video mode,终于在看了几遍文档,加上例子程序,终于是对这个概念有所理解了。

PS: 因此建议学习GLFW库的同学们要自己去用cmake编译一下GLFW库的源码,生成的GLFW.sln中包含了很多的tests和examples程序,可以帮助你很好的理解其中的一些概念,而且从他们提供的代码中,可以学习到很多的编程技巧,再者就是,因为官方文档中,对很多功能或者函数的介绍都是停留在比较表面的层次上,怎样正确的去使用,还是要通过例子代码 去学习理解。

  对于Video mode,可以翻译成视频模式,可以看成是显示器的一套设置,其中包含的参数如下(也就是是GLFW中的GLFWvidmode Struct):

int width 
int height 
int redBits 
int greenBits 
int blueBits 
int refreshRate

  其中,width和height分别表示显示器设置中的分辨率,下图是我的显示器的可选设置的一部分:

GLFW理解之Video mode_第1张图片

  接下来的三个参数,分别表示显示器中的红,绿,蓝三通道的字节深度,一般默认都是8,基本不用做什么更改,这个就不深究了,我理解的也不是很具体。
  最后一个refreshRate叫做刷新频率,单位是Hz,我见过很多的显示器的设置中,一般设置有两种模式,就是50Hz和60Hz,我电脑的默认设置为60Hz。
在学习GLFW中的关于Video mode概念的过程中,最让我头疼的一句描述差不多如下:

The supported video mode most closely matching the desired video mode will be set for the chosen monitor as long as the window has input focus.

  意思就是说,你给定一套Video mode的设置,最后生成的程序的Video mode的设置可不一定就是你设置的值,因为从显示器的分辨率设置就能看出来了,分辨率的设置是几组固定的设置,你要是来个10X10,那显然不行,GLFW会自动找一个比较接近的一组设置,比如我电脑商最低的是800X600,所以如果我设置成了10X10的话,最后的程序在全屏模式下的分辨率应该会是800X600(猜的,哈哈)。
  最后,我把测试程序monitor在我电脑中的运行结果给大家看一下,加深一下理解(我就是看了这个程序才真正理解了上面那句让我比较头疼的话的,可想而知,自己编译GLFW多么重要,你可以选择编译GLFW源码,但是电脑中GLFW的配置,照样使用直接下载的编译好的.dll和.lib)。

GLFW理解之Video mode_第2张图片

  祝好!

你可能感兴趣的:(OpenGL,GLFW)