2013-08-26 100 views
0

THIS LINK如下因素在DirectX中的代碼,我可以簡單地添加此行:的OpenGL如何確定最新版本

#include <d3d11.h> 
#include <d3dx11.h> 
#include <d3dx10.h> 
#pragma comment (lib, "d3d11.lib") 
#pragma comment (lib, "d3dx11.lib") 
#pragma comment (lib, "d3dx10.lib") 
... 

指定「最新」 DX版本,我想在的代碼如何。這是在OpenGL中實現的,所以我可以肯定我在編碼時使用了最新的GL庫。我應該使用#define某些東西還是我在代碼中使用的GL函數確定了OpenGL的版本?

在C++或其他軟件中是否有方法可以說明我的.exe程序正在使用哪個版本的openGL?

回答

5

這不是OpenGL的工作原理; OpenGL不是你靜態鏈接的東西(或者說,你不得不這樣做,全部是)。你必須(一般來說)dynamically load the OpenGL functions you work with。這通常是通過使用某種OpenGL loading library來完成的,因此在初始化過程中(在創建OpenGL上下文之後)將其減少到#include頭部並調用一個函數。

您使用的OpenGL「版本」取決於您的實施支持哪個版本以及您選擇使用哪些函數/枚舉。如果你的代碼是針對OpenGL 3.3編寫的,但是你的實現支持4.1,那很好;它向後兼容3.3。

有幾種方法可以運行ask which OpenGL version of OpenGL is being provided,但這是一個運行時查詢,而不是編譯時構造。您可以在上下文創建時明確請求一個版本(大於或等於您要求的版本),如果該版本不受實現支持,則會導致上下文創建失敗。

這使您的代碼更靈活一些。例如,您可以編寫程序的可選部分,以提供更多功能,例如,OpenGL 4.1可用,但默認爲3.3。您不必使用兩個(有點)不同的API,或者構建一個合併其通用元素的抽象。您只需在代碼中有條件驗證是否提供了4.1,如果是,則調用其他幾個函數。否則,你做3.3的東西。