0

このリンクに従うDirectX では、次の行を追加するだけです。

#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 バージョンを指定します。コーディング中に最新の GL ライブラリを使用していることを確認できるように、これを OpenGL でどのように実現できますか。#defineコードで使用する何かまたは GL 関数で OpenGL のバージョンを判断する必要がありますか?

私の.exeプログラムが使用しているopenGLのバージョンを知ることができるc ++または他のソフトウェアの方法はありますか?

4

1 に答える 1

5

それは OpenGL の仕組みではありません。OpenGL は、静的にリンクするものではありません (または、それだけで十分というわけではありません)。(一般的に言えば)使用する OpenGL 関数を動的にロードする必要があります。これは通常、ある種のOpenGL ロード ライブラリを採用することで行われます。したがって、これを #include ヘッダーに減らし、初期化中 (OpenGL コンテキストの作成後) に関数を呼び出します。

使用する OpenGL の「バージョン」は、実装でサポートされているバージョンと、使用する関数/列挙型によって異なります。コードが OpenGL 3.3 に対して記述されていても、実装が 4.1 をサポートしている場合は問題ありません。3.3 との下位互換性があります。

提供されている OpenGL の OpenGL バージョンを確認する方法はありますが、これは実行時のクエリであり、コンパイル時の構造ではありません。コンテキストの作成時に (要求したもの以上の) バージョンを明示的に要求できます。これにより、そのバージョンが実装でサポートされていない場合、コンテキストの作成が失敗します。

これにより、コードが少し柔軟になります。たとえば、OpenGL 4.1 が利用可能で、デフォルトで 3.3 になる場合など、より多くの機能を提供できるプログラムのオプション部分を作成できます。2 つの (やや) 異なる API を使用したり、それらの共通要素をマージする抽象化を構築したりする必要はありません。コードのどこかに 4.1 が提供されていることを確認する条件があり、提供されている場合は、他のいくつかの関数を呼び出します。それ以外の場合は、3.3 の処理を​​行います。

于 2013-08-26T08:26:12.593 に答える