Unix(X11のグラフィックスコンテキストを使用)とWindows(WindowのGDIを使用)の両方で理想的に動作するような簡単なゲームを実装しています両方のウィンドウマネージャー。コードを構造化するための最良の方法は何でしょうか?私は単に正しいC++クラスをプラグインして各OSで動作させることができますか?X11とWin32用のシンプルなゲームのコードを整理する最良の方法
具体的には、実際のゲームコンポーネントからグラフィックス&ウィンドウコンポーネントを完全に分離するにはどうすればよいですか? (例えば、ゲームコンポーネントがユーザ入力のためにプラットフォーム特有のウィンドウコンポーネントを観察し、スプライトをロード/表示するための共通インタフェースを作成し、再描画のための別の共通インタフェースを作成するなどのように、オブザーバパターンを使用する)。各オブジェクトのグラフィックス/デバイスコンテキストをコピーしてメイン画面のgc/dcに貼り付ける責任は誰にありますか?どのコンポーネントにメインイベントループ/ウィンドウコールバックが含まれるべきか(メインコンポーネントの場合は、各プラットフォームに2つのバージョンのメインコンポーネントが必要ですか?)また、各オブジェクト(ブロック、文字など)データ型(X11ではgc
、GDIではDC
)?
2つの基本的な要件は、私はX11とGDIのみを使用でき、マルチスレッド化できないことです。
ウィンドウシステム?それはマルチスレッドではありませんか?私は参照してください... – corsiKa
なぜブロックや文字がデバイスコンテキストを格納する必要がありますか?とにかくSDLを考えましたか? –
@BenVoigt私にこれを教えてください。私は実際にどのコンポーネントが実際に各スプライトのgc/dcを保持すべきかも分かりません。グラフィックスマネージャに渡すオブジェクトごとにロードされたgc/dcを返すリソースマネージャが必要ですか?グラフィックマネージャはそれをコピーしてメインスクリーンgc/dcに貼り付けますか? XlibとGDI以外のライブラリを使用することはできません。 – JosephH