歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> OpenGL ES之GLFW窗口搭建

OpenGL ES之GLFW窗口搭建

日期:2017/3/1 9:19:47   编辑:Linux編程

OpenGL窗口

能用於OpenGL的窗口庫有很多,常見的有glut、freeglut、SDL、GLFW等。glut基本已經被廢棄,其他幾個再不同場合都有不同的應用。

GLFW為opengl superbible 6th & 7th中推薦的第三方開源窗口庫。GLFW的特點大概總結如下

跨平台,能在window、Linux和wayland中使用; 支持OpenGL、OpenGL ES; 底層的可配置性;

下面我們來實際看下使用GLFW的實際意義。

OpenGL ES在嵌入式開發中實際比在PC上開發opengl的環境搭建似乎要復雜很多,通常嵌入式開發中使用EGL創建OpenGL渲染的surface,使用wayland創建窗口的surface來實現。在實際開發過程中,我們想通過在PC上開發EGL + OpenGl ES的程序,這個時候,如果平台不同,我們往往在不同平台上實現不同的窗口,如:

window:

      OpenGL ES + EGL + Window系統窗口(實際運行還需要加OpenGL ES的模擬器,OpenGL.ES.3.0.Programming.Guide中有介紹高通芯片等模擬器的使用的章節);

Linux:

      OpenGL ES + EGL + X11窗口;

ARM:

      OpenGL ES + EGL + wayland窗口;

window 窗口系統、X11窗口和wayland窗口的創建和窗口事件獲取及處理方式各不相同,而GLFW所做的事情,就是提供統一的窗口創建的方法,使我們能在GLFW上開發與平台無關的OpenGL ES代碼。

2、GLFW Window版編譯介紹

GLFW官網有詳細的各個平台編譯步驟介紹,在此我們針對Window + VS2005 + EGL + Mail模擬器進行進行介紹。

        下載CMake並安裝(官網可直接尚在安裝包進行安裝);
下載Mail模擬器安裝包,安裝完成後,在安裝路徑下可以看待我們在開發過程中需要用到的頭文件和相應的dll,大家可以點擊mali-cube.exe來測試自己的機器是否能正常運行此模擬器,VM虛擬機對OpenGL版本的支持比較低,一般無法運行此虛擬機,因此大家可能在虛擬機上開發OpenGL ES會受到一些障礙;

下載GLFW源碼,使用CMake GUI編譯GLFW; 在CMake安裝目錄bin下找到cmake-gui.exe並運行; 選擇源碼路徑和編譯路徑;

點擊Configure進行配置

完成後,我們得到了配置屬性設置項,官網有對每項配置的介紹;

配置完成後我們點擊Generate,即可完成項目文件的創建; 在build的目錄下,我們可以使用vs2005 打開GLFW.sln並編譯GLFW庫;

至此,編譯部分大致介紹完成,大家在實際編譯過程中可能會遇到其他問題,參考官網的介紹應該都能解決。

3、GLFW使用介紹

我們把GLFW編譯出來的庫和頭文件復制到我們的OpenGL ES VS工程中(當然也必須添加模擬器的Dll),如下為實例代碼。

OpenGL編程指南(原書第7版)中文掃描版PDF 下載 http://www.linuxidc.com/Linux/2012-08/67925.htm

-------------------------------------分割線-------------------------------------

OpenGL 渲染篇 http://www.linuxidc.com/Linux/2011-10/45756.htm

Ubuntu 13.04 安裝 OpenGL http://www.linuxidc.com/Linux/2013-05/84815.htm

OpenGL三維球體數據生成與繪制【附源碼】 http://www.linuxidc.com/Linux/2013-04/83235.htm

Ubuntu下OpenGL編程基礎解析 http://www.linuxidc.com/Linux/2013-03/81675.htm

如何在Ubuntu使用eclipse for c++配置OpenGL http://www.linuxidc.com/Linux/2012-11/74191.htm

《OpenGL超級寶典》學習筆記 http://www.linuxidc.com/Linux/2013-10/91414.htm

Copyright © Linux教程網 All Rights Reserved