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分別表示顯示器設置中的分辨率,下圖是我的顯示器的可選設置的一部分:

my monitor resolution settings

  接下來的三個參數,分別表示顯示器中的紅,綠,藍三通道的字節深度,一般默認都是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)。

optional settings of video modes on my monitor

  祝好!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章