web-dev-qa-db-ja.com

現在のバージョンのOpenGL for Windows C ++をインストールするにはどうすればよいですか?

私はVisual Studio 2010でWindows 7を実行しています。含まれているOpenGLのバージョン(#include)はバージョン1.1であり、合理的に現在のバージョン(ある種のバージョン3または4)で作業したいと思います。

その状態になるために何をする必要がありますか? http://www.opengl.org/sdk/ のOpenGL SDKページは、SDKおよび http:/のOpenGLウィキをダウンロードすることが許可されていないことを示しているようです/www.opengl.org/wiki/Getting_Started は、すでにそれを持っていることが期待されていることを示しています。持っていない場合は、グラフィックカードメーカーのDLLをダウンロードできるサイトを示します。確かに、これから作業するグラフィックカードごとに、作業しているゲームの異なるバージョンをビルドする必要はありません。

StackOverflowにも何もないようですが、少なくとも私が理解できるような言い回しはありません。実行できるインストーラーへのダウンロードリンクが欲しいだけです。これにより、かなり最新のOpenGL APIが残ります...どこで入手できますか?

更新:OpenGLには、SDKを必要としない、ある種の固有のイディオムがあるようです-つまり、.DLL、.libのパッケージ、およびヘッダー。私はDirectXを使用しています。 (実際、DirectX SDKにはドキュメントも含まれています!)

16
ExOttoyuhr

まず第一に、OpenGLは集中管理されたライブラリと実装ではありません(DirectXとは対照的です)。これがSDKをダウンロードできない理由ですSDK。 OpenGLは動作します。 OpenGL自体は、ドライバーが提供し、プログラムが使用できるAPIを説明するドキュメントの集まりにすぎません。ただし、APIの実際の実装は、オペレーティングシステムのコンテキストで行われます。また、APIをOSから独立させたい場合は、少し難しくなります。 DirectXは、特定の1つのOS向けに設計されているため、簡単です。そのOSはWindowsであり、つまり、基になるOSの一部に対してDirectXを書き込むことができます。これにより、SDKの開発が管理しやすくなります。

では、OpenGLは何をするのでしょうか?まあ、それはOSの一部がとても寛大で、プログラムで利用できるようにする必要があります。最も単純な形式(そして、後から考えると、これはあなたのような非常に多くの質問を保存するので、これがより良いオプションでした)では、このインターフェイスはGetProcAddressの1つの関数を提供します。 OpenGL仕様にあるすべての関数について、その関数によってOpenGLドライバーの実際のものへのポインターを取得できます。しかし、ほとんどのプログラマーは怠惰なので、次のように簡単に言った:「まあ、OpenGL itのバージョン1.1での現在の仕様、OpenGL-1.1のすべてをインターフェイスライブラリの表面に公開するのはどうだろう。 。そして、GetProcAddressによってロードされる拡張機能を介して公開した後のすべて、結局のところ、どれだけの新しい機能が追加されるのか... "。判明:たくさん。

とにかく、OSのサポートを提供するすべてのコンパイラーは、OSが提供するすべてのAPIのインターフェースライブラリーを提供することになっています。 WindowsではOpenGL-1.1です。 OpenGLインターフェイスライブラリで実際のバージョンのバンプが必要な場合は、OSの更新を意味します。しかし、それはDirectXとそれほど違いはなく、新しいDirectXバージョンがOSアップデートとともに出荷されます。 MicrosoftがOpenGLをサポートする理由を理解していないだけです。したがって、OpenGL-1.1は表面に表示されるものであり、それに対処する必要があります。また、コンパイラーの出荷時に含まれているため、ダウンロードする実際のSDKを提供する必要はありません。必要なものはすべて、コンパイラーのインストール時にすでにそこにあるからです。

では、OpenGLのlaterバージョンからこれらの関数を取得する方法を教えてください。さて:GetProcAddress。これが正式な方法です。そして、実際の詳細は問題のOSに依存しますが、OpenGLはOSに依存しないため、definitiveOpenGL SDKは存在できません。だから公式にあなたがしなければならないことは:

  • 以降のバージョンのOpenGLヘッダーを http://opengl.org/registry からダウンロードします
  • 使用する関数ごとに、それを保持する関数ポインタ変数を定義します
  • GetProcAddressを使用して関数ポインタをロードします

もちろん、最新のOpenGLを使用したいだけの場合は、かなり面倒です。そのため、一部の人々はあなたに代わってサードパーティのツールを開発しました。そして、プログラマーとしてあなたに関係するすべてのものについて、これらのツールはSDKのように非常に動作します。これまでで最も人気のある選択肢(残念ながら、OpenGLの最先端については、完全に問題がないわけではありません)はGLEWです。 GLEWの使い方はとても簡単です。静的にリンクして使用することをお勧めします:

  1. GLEWを http://glew.sourceforge.net からダウンロードします。
  2. プロジェクトのソースファイルの横にglew.cとglew.hを配置します。
  3. コンパイルされたソースのリストにglew.cを追加します。 _GLEW_STATIC_プリプロセッサマクロ定義がプロジェクトのグローバルコンパイラフラグに設定されていることを確認してください。
  4. _#include "glew.h"_の代わりに_#include <GL/gl.h>_を使用する
  5. プログラムでOpenGLウィンドウを作成した直後にglewInit()を呼び出します

ここでいくつかのアドバイス:readのドキュメントを実際に学ぶ必要があります(単に読み飛ばすだけではありません)。私が書いたばかりのすべては、あなたがリンクしたまさにそのリファレンスに述べられています。

21
datenwolf

あなたが提供したリンクを引用して答えさせてください

慣れているほとんどのライブラリーでは、ヘッダーファイルを#includeし、ライブラリーがプロジェクトまたはメイクファイルにリンクされていることを確認するだけで、すべてが機能します。 OpenGLはそのようには機能しません。最終的にこの説明に関係のない理由により、プラットフォーム固有のAPI呼び出しを介して関数を手動でロードする必要があります。 この定型的な作業は、さまざまなOpenGLロードライブラリで行われます。これらはこのプロセスをスムーズにします。 oneを使用することを強くお勧めします。

この一節には OpenGL Loading Library というタイトルのWikiページへの便利なリンクが含まれています

8
PeterT

OpenTKフレームワーク(C#)とJOGLフレームワーク(Java)での作業でわかる限り、OpenGLのバージョンはグラフィックカードによって決まります。私のラップトップはデスクトップでOpenGL 1.1のみをサポートしていることを知っています。最新バージョンをサポートしています。

ラップトップには、I5プロセッサを備えたIntel IGPがあります。

デスクトップにはRadeon 6950HDが搭載されています。

4
Ryan Butcher