2

私の目標は、C++とOpenGLでクロスプラットフォームベースのアプリケーションを開発することです。

私はMacbookProを使用しているので、その自然なIDEはXcodeなので、それを使用したいと思います。プロジェクトのテンプレートとしてコマンドラインツールを使用して、Xcodeで純粋なC++コードを正常にコンパイルしました。

私の質問は、CocoaとObjective-CをいじらずにOpenGLコードをコンパイルするにはどうすればよいかということです。この背後にある主な理由は、クロスプラットフォームアプリケーションをデプロイしたいので、可能な限りC++に固執したいということです。

これは事実ですが、Objective-CとCocoaを少し使用する必要があれば、それほど問題にはなりません。しかし、メインプロジェクトコードをC ++で取得し、Objective-C / Cocoaの可能性を減らし、クラス、オブジェクト、および関連するものなど、アプリケーションに固有のコードを「メインプロジェクトコード」で理解したいと思います。アプリケーションの目的、すなわち。、コードの本体。

Obj-C/CocoaをいじらずにC++/ OpenGLを使用する価値がない場合、質問は単純にXcodeで単純なOpenGLコードをコンパイルする方法として再定式化できますか?

4

3 に答える 3

2

Qt はクロス プラットフォーム アプリケーションを簡単に作成できるので、この API を検討するのもよいかもしれません。それらには OpenGL モジュールがあり、XCode 内でセットアップできます: http://qtnode.net/wiki/Qt4_with_Xcode

于 2012-08-16T16:45:43.697 に答える
2

OpenGL はクロス プラットフォーム API ですが、既存のグラフィックス コンテキストでグラフィックス操作を実行することに非常に特化しており、そのようなコンテキストの作成、ウィンドウ イベントの処理、またはプラットフォーム固有の機能との統合を必要とするその他のものは含まれていません。それはプラットフォーム固有の API に任されています。

各プラットフォームの OpenGL 実装には、必要なタスクを実行するためのプラットフォーム固有の API が含まれます。Windows には WGL、X11 には GLX、OS X には低レベルの CGL または高レベルの NSOpenGLView があります。OpenGL は、これらのプラットフォーム固有の API が何らかのレベルで使用されていないと使用できません。さらに、あらゆる種類の GUI を取得するには、これと同じ種類のプラットフォーム固有のコードが必要です。

コンテキストを作成し、OpenGL の範囲外のウィンドウ処理やその他のイベントを処理するための移植可能な API を提供するために、さまざまなプラットフォーム固有の API をラップしたプロジェクトがあります。OpenGL を使い始めるときに最も一般的に使用されるのは GLUT です。OS X は GLUT を備えたフレームワークを提供しますが、OS X の最新の OpenGL サポートを使用するように更新されておらず、OpenGL 2.x のままです。2.x と 3.x の間の OpenGL コア プロファイルの導入により、OpenGL API に大きな変更がありました。つまり、現在 GLUT を使用して OS X で最新の OpenGL プログラムを作成することはできません。

さらに、クロスプラットフォームの性質上、GLUT はプラットフォームの標準に準拠した適切な GUI を提供できません。適切な GUI を提供するということは、常にプラットフォーム固有の API を直接使用すること、または少なくとも特定のプラットフォームを念頭に置いて GUI を設計することを意味します。

プラットフォーム間のもう 1 つの違いは、OS X では、標準の OpenGL ヘッダーを含めて関数を呼び出し、他のライブラリを使用しているかのように識別子を使用するだけで、サポートされているどのバージョンの OpenGL も使用できることです。Windows では、OpenGL ヘッダーは古い OpenGL 1.2 以降のものを提供しません。それよりも新しい OpenGL 機能を使用することは、OpenGL の拡張メカニズムを介してアクセスすることを意味します。このような状況下で OpenGL を使用できるようにすることを目的とした別のライブラリ GLEW があります。

したがって、OpenGL はクロスプラットフォーム API ですが、OpenGL を効果的に使用するには、コア OpenGL コードの周りにプラットフォーム固有のコードをある程度使用する必要があります。GLUT は、OpenGL 3.x で導入された OpenGL コア プロファイルをサポートするために OS X で更新されていないことを除いて、少なくとも OpenGL を学習するためのクロスプラットフォームのオプションとしておそらく優れています。しかし、GLUT を使用しても、OpenGL 拡張メカニズムを介して、または最新のヘッダーを介して直接、OpenGL 機能にアクセスする方法の違いに対処する必要があります。

于 2012-08-16T16:13:19.240 に答える
0

OpenGLは、時間をかけて学ぶ価値があります。OpenGLは、C ベースのプラットフォームに依存しない API です

ここから始めて、GL の基礎を学びましょう。

プラットフォームに依存しないウィンドウ作業にはGLUTを使用することをお勧めします。ここで見つけてください

プラットフォームに依存しないウィンドウ作業にfreeglutを使用すると役立ちます。ここで見つけてください

于 2012-08-16T14:07:14.827 に答える