OpenGLコアプロファイルのみを強制するコンパイラフラグまたは別の方法はありますか?私はglRotatefのような廃止された関数を使うときにエラーを出したい。強制的にOpenGLコアプロファイルを強制する
EDIT1:私はLinuxを使用しています、しかし、私はまた、Windowsで
EDIT2をこれを行う方法を知ることに興味があります:私は、コンパイル時にエラーを取得することを好むだろうが、ランタイムエラーは、同様にOKだろう。
OpenGLコアプロファイルのみを強制するコンパイラフラグまたは別の方法はありますか?私はglRotatefのような廃止された関数を使うときにエラーを出したい。強制的にOpenGLコアプロファイルを強制する
EDIT1:私はLinuxを使用しています、しかし、私はまた、Windowsで
EDIT2をこれを行う方法を知ることに興味があります:私は、コンパイル時にエラーを取得することを好むだろうが、ランタイムエラーは、同様にOKだろう。
gl.h
の代わりにgl3.h
を使用してコードをコンパイルできます。
wglCreateContextAttribsARB()をWGL_CONTEXT_CORE_PROFILE_BIT_ARB
と試してください。
glXCreateContextAttribsARBGLX_CONTEXT_CORE_PROFILE_BIT_ARB
である。
this exampleがテストベッドとして役立つ場合があります。
あなたのOpenGLコンテキストを作成するかに依存します。あなたは(私は心からスタンドアロンOGLウィンドウのアプリのためにお勧めします)GLFWを使用している場合は、ウィンドウを作成する前に、あなたが行うことができます
:
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR,3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR,1);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);
// the last line shouldn't be necessary
// as you request a specific GL context version -
// - at least my ATI will then default to core profile
あなたは事前3.0 GLコンテキストを要求した場合ことに注意してください最新のハードウェア/ドライバでは、代わりに互換モードで最新のコンテキストを受け取る可能性が高いです。あなたのGPUがglGetString(GL_VERSION)
から返すものを確認してください。
OpenGLコンテキストの作成に別のAPIを使用する場合は、そのリファレンスマニュアルで同様の機能を確認してください。
ところで: 私はコンパイル時にエラーを取得することは不可能だと考えている - あなたのコンパイラは、あなたがあなたの要求(もしあれば)の後に受け取ることになりますどのようなOpenGLのコンテキストを理解することはできません。アウトオブバージョンの機能を使用していないことを確認する正しい方法は、glGetError()
のテストです。
また、Windows用にコンパイルする場合は、gl3w
拡張ラッパーを使用することをお勧めします。 OpenGLのコアプロファイルをロードし、互換性を取り除くためにその可能性「GLロード」コンポーネントを使用することにより
http://glsdk.sourceforge.net/docs/html/index.html
:
私が使用して非公式のOpenGLのソフトウェア開発キットを、それを行うための別の方法を発見しましたOpenGL 3.1以上のバージョンのenumと関数短いハウツーはここにあります:
https://www.opengl.org/wiki/OpenGL_Loading_Library#Unofficial_OpenGL_SDK
あなたはどのプラットフォームですか?あなたの質問に対する答えは、OpenGLにリンクするために使用するものによって異なります。 – ltjax