簡體   English   中英

如何為Windows C ++安裝當前版本的OpenGL?

[英]How do I install a current version of OpenGL for Windows C++?

我正在使用Visual Studio 2010運行Windows 7.包含OpenGL的版本(#include)是版本1.1,我想使用合理的當前版本 - 某種版本3或4。

到達那個州我需要做什么? http://www.opengl.org/sdk/上的OpenGL SDK頁面似乎表示您不允許下載SDK,並且http://www.opengl.org/wiki/Getting_Started上的OpenGL wiki說您應該已經擁有它,如果您沒有它,它會指向您可以下載圖形卡制造商的DLL的網站。 但是我肯定不需要為我將要使用的每個顯卡構建一個不同版本的游戲。

StackOverflow似乎也沒有任何東西,至少沒有以我能遵循的方式表達。 我只想要一個我可以運行的安裝程序的下載鏈接,這將給我一個合理的最新OpenGL API ...我該去哪里獲取它?

更新: OpenGL似乎具有某種類型的同義詞習慣用法,它不涉及擁有SDK - 即包含.DLL,.lib和頭文件。 我正在使用DirectX。 (事實上​​,DirectX SDK甚至包含文檔!)

首先所有的OpenGL的是不是有些集中管理庫和實現(反對的DirectX),這就是為什么你不能下載 SDK,因為這是OpenGL的不是如何工作的。 OpenGL本身只是一堆描述驅動程序提供的API和程序可以使用的文檔。 但是,API的實際實現存在於操作系統的上下文中。 如果您希望您的API獨立於操作系統,這會讓事情變得有點困難。 DirectX很容易,因為它只適用於一個特定的操作系統。 該操作系統是Windows,這意味着可以針對底層操作系統的某些部分編寫DirectX。 這使得SDK的開發可管理。

那么OpenGL會做什么呢? 嗯,它要求操作系統的某些部分是如此慷慨,並使其可用於該程序。 以最簡單的形式(事后看來,這將是更好的選擇,因為它可以保存像你這樣的許多問題)這個接口只能提供一個函數: GetProcAddress 對於OpenGL規范中的每個函數,您可以通過該函數獲得指向OpenGL驅動程序中實際內容的指針。 但是,懶得像大多數程序員一樣,他們走得很簡單並且說: “哦,好吧,OpenGL的當前版本在版本1.1,我們如何在接口庫的表面上公開所有的OpenGL-1.1。以及我們之后發生的一切通過GetProcAddress加載的擴展來公開;畢竟,有多少新功能......“ 事實證明:很多。

無論如何,每個提供OS支持的編譯器都應該為OS附帶的每個API提供接口庫。 適用於Windows的是OpenGL-1.1。 如果您想在OpenGL接口庫上實際版本顛簸,那將意味着操作系統更新。 但這與DirectX沒有什么不同,DirectX是新的DirectX版本隨OS更新發布的。 只是微軟沒有理由支持OpenGL。 所以OpenGL-1.1是表面上可見的,我們必須處理它。 而且由於它包含在編譯器發布的內容中,因此沒有理由提供實際的SDK來下載,因為在編譯器安裝中已經有了必要的一切。

好的,那么如何從更高版本的OpenGL中獲取這些功能呢? 好吧: GetProcAddress 這是正式的做法。 並且因為實際的細節取決於所討論的操作系統,但OpenGL與操作系統無關,因此根本不可能是一個明確的 OpenGL SDK。 所以你要正式做的是:

  • http://opengl.org/registry下載更高版本的OpenGL標頭
  • 對於要使用的每個函數,定義一個函數指針變量來保存它
  • 使用GetProcAddress加載函數指針

當然,如果你只是想使用現代的OpenGL,這是相當繁瑣的。 所以有些人開發了第三方工具來為你做事。 對於那些與程序員有關的事情,這些工具的行為非常類似於SDK。 到目前為止最受歡迎的選擇(但不幸的是,關於OpenGL的前沿,它並非完全無故障)是GLEW。 使用GLEW非常簡單。 我建議使用它靜態鏈接:

  1. http://glew.sourceforge.net下載GLEW
  2. 將glew.c和glew.h放在項目源文件旁邊。
  3. 將glew.c添加到已編譯源列表中; 確保將GLEW_STATIC預處理器宏定義配置到項目全局編譯器標志中。
  4. 使用#include "glew.h"代替#include <GL/gl.h>
  5. 在程序中創建OpenGL窗口后立即調用glewInit()

現在一些建議:你應該學習閱讀文檔(不僅僅是瀏覽它)。 我剛剛寫的所有內容都在你鏈接的參考文獻中說明。

讓我通過引用您提供的鏈接來回答

對於您熟悉的大多數庫,您只需#include一個頭文件,確保庫鏈接到您的項目或makefile,這一切都有效。 OpenGL不能那樣工作。 由於最終與此討論無關的原因,您必須通過特定於平台的API調用手動加載函數。 這個樣板工作是通過各種OpenGL加載庫完成的; 這些使這個過程順利進行。 強烈建議您使用一個

這段文章包含一個方便的鏈接到一個名為OpenGL Loading Library的wiki頁面

據我所知,在OpenTK框架(C#)和JOGL框架(Java)中工作,您的OpenGL版本由您的圖形卡決定。 我知道我的筆記本電腦僅在我的桌面上支持OpenGL 1.1,它支持最新版本。

筆記本電腦有英特爾IGP和I5觸發器。

桌面有一個Radeon 6950HD。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM