Mac と Windows の両方で OpenGL C++ コードを実行するために使用できる if 構文があるかどうかを知りたいです。より具体的には、コードの開始時に、コードが Mac (通常は xcode) または Windows (通常は Visual C++) で実行されているかどうかを判断する if 条件を配置し、それに応じてヘッダー ファイルを含めることができます。
3 に答える
プリプロセッサを使用できます#ifdef
。
#ifdef __APPLE__
#ifdef TARGET_OS_MAC
#include <osx.h>
#endif
#elif defined(_WIN32) || defined(_WIN64)
#include <win.h>
#endif
適切なものを使用するには、システムインターフェイスを抽象化する必要があります。これはビルド時に検出される可能性があります。または、Windowsビルド用にMSVCプロジェクトを配置し、OSX上にXcode/Makefileプロジェクトを配置することもできます。
Win32では、Win32APIの使用が引き続き適切であることをご存知だと思います。OS Xでは、Carbonはサポートされなくなりつつあるため、Objective Cを使用して最小限のウィンドウシステムを実装する必要があります。幸い、これはそれほど難しくなく、一度配置すると、メインアプリケーションを問題なく実行できます。
プロトタイピングの場合、SDL / GLUT / Qtなど、このことを念頭に置いて作成されたフレームワークを使用するのが賢明かもしれません。本番環境では、ターゲットプラットフォームごとに特化することで、パフォーマンスと制御が向上します。
C/C++ で標準ヘッダー ファイルを使用した場合、必要なのは glut を使用して OpenGL ウィンドウを初期化し、ユーザーからキーボード/マウス イベントを取得することだけです。GLUt は OS レイヤーを抽象化します。
Mac用のGLUTのリンクは次のとおりです(開始)
http://developer.apple.com/library/mac/#samplecode/glut/Introduction/Intro.html
前のリンクで見つけることができます(OSに依存しません)
GLUT のダウンロード リンクは次のとおりです。
http://www.opengl.org/resources/libraries/glut/glut_downloads.php
myProject.xcode と myProject.vcproj という 2 つの別個のプロジェクト ファイルが必要です。他のすべてのファイルは共有する必要があります。
注: タイマーやその他すべての OS 関連のものを使用することは避けるべきであり、代わりに GLUT の指定された機能を使用する必要があります。
Windows/Linux/Mac 用にビルドする場合は、適切な GLUT にリンクする必要があります。