如何在Windows平台搭建完整的OpenGL開發環境?

來源:互聯網
上載者:User
1.OpenGL概說

    OpenGL從本質上說是電腦圖形學的一個編程介面(API)標準。該標準用C語言進行規範,規定了函數的原型與全域變數類型與名稱。目前這個規範在各個平台上都有實現。在Linux+X平台上有Mesa3D,儘管名字不叫OpenGL但是完全符合OpenGL規範。mesa3D更新的速度很及時,基本上保持與OpenGL標準發展同步,所以如果在Linux平台開發OpenGL程式,只要這一個庫就可以了。

    在Windows平台上,曾經的微軟給予了很大支援,就是opengl32.lib, glu32.lib這兩個庫。然而隨著微軟脫離OpenGL協會發展自身的Direct3D後,這兩個庫再也沒有更新過,目前仍只支援到OpenGL1.1版本,而最新的OpenGL規範以達到了3.0(2009)。

 

2.匯出顯卡驅動支援的OpenGL函數 

    那麼,是不是說我們在Windows平台開發OpenGL程式,只能使用OpenGL1.1版本的API了呢?否。其實OpenGL32.lib,glu32.lib本身並沒有實現OpenGL的功能,而是從顯卡驅動程式(顯卡供應商提供)匯出這些函數的介面而已。Windows下各個顯卡驅動始終保持著更新,並追隨OpenGL新的版本規範,然而這些新函數並沒有匯出介面給開發人員使用(這個匯出工作顯然不能有顯卡供應商提供,那樣的話,由於廠家眾多,很難規範)。為了使用這些雖然存在但未匯出的函數,我們有兩種方法。

2.1手工匯出要使用的OpenGL函數

    也就是通過

 

    hmoudle = LoadLibray("顯卡驅動.dll");

    gl*=GetProcAddress(hmoudle, 要匯出的函數名稱);

    gl*(...);

這樣做的最大缺點就是麻煩,沒用到一個函數都要匯出。

 

2.2 使用現有的擴充庫

    有一些好人開發了擴充庫,如glew。只要開發時包含了glew.h檔案,只要顯卡驅動支援的OpenGL函數都可以直接使用。glew的主要工作就是使用glewInit()函數匯出所有顯卡支援的函數。使得開發代碼如下:

    glewInit();

    gl*(...);

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.