私が見つけることができるすべての紹介とサンプルは、GLUTまたは他のフレームワークを使用してOpenGLを「初期化」しているようです。GL と GLU で利用できるものだけで OpenGL を初期化する方法はありますか? そうでない場合、それなしでは不可能な GLUT の機能は何ですか?
7 に答える
luke が指摘したように、コンテキストを作成してバインドするコードは、各ウィンドウ プラットフォームに固有です。
特定のプラットフォームでの OpenGL の初期化に関して、いくつかの機能を開始できます。
Windows (チュートリアルはこちら)
- wglCreateContext(hDC)
Mac OS X -- OS X には基本的に 3 つのオプションがあります。Carbon、Cocoa、およびその下にある Core Graphics Layer です。
- Mac OS X OpenGL 開発のガイド全体
- カーボン: aglCreateContext
- Cocoa : NSOpenGLView を作成 (またはサブクラス化) します。それらは独自のコンテキストを作成し、メソッドのドキュメントを読んで最新のものにする方法を見つけることができます。
- CoreGraphicsLayer : CGLCreateContext
Linux
- glx : glXCreateContext
GLUTソースコードを取得して、関係するプラットフォームのinitコードを確認できます。
GL は API であり、GLU は GL 上のユーティリティ ライブラリです。オペレーティング システムに完全に依存しません。
OpenGL の初期化と拡張機能の取得は、プラットフォームに依存する操作です。したがって、OpenGL だけでは何もできません。
GLUT は高速では不十分で、ひどく貧弱なライブラリです。それは、opengl コンテキストを初期化し、いくつかの基本的なマウス/キーボード入力モジュールを提供して作業を続行させることだけです。
Win32 には、opengl コンテキストを初期化するツールも用意されています。Linux の場合、GLX を確認できます。また、システムに依存しない方法が必要な場合は、SDL を調べることができます。さまざまなプログラミング言語に対して、プラットフォームに依存しないデスクトップ API を提供するユーティリティが存在する場合があります。
Galaxy Forces V2 のソース ( http://www.galaxy-forces.com/ ) を確認できます。
Windows、Mac、および Linux で GLUT やその他のライブラリを使用せずに OpenGL のクラスを実装します。ネイティブ プラットフォーム コードを使用し、すべてパブリック ドメインです。
GLUTを使用せずにOpenGLを初期化する方法(ウィンドウを想定)の基本的で優れた紹介を次に示します。
Luke が言ったように、GLUT を使用したくない場合は、開発しているオペレーティング システムに関する特定の情報が必要です。GLUT を使用すると、コードの移植が容易になります。