編集: SDLを使用するか、Window、Linux、Mac、iOS、Androidで実行される、これを行うためのビルド済みライブラリはありますか?
現時点では、コンテキストを変更する方法が非常に優れたデザインであるかどうかはわかりませんが、完全には完成していません。私は自分の時間を無駄にすることを本当に心配しています。ウィンドウ管理とイベント処理にSDLを使用しています。
私は現在、これを管理するためにSDL(具体的にはSDL 2)をクラスでラップしています。これらは私のクラスとそれらが行うことです:
- ウィンドウ-ウィンドウについて説明します
- WindowContext -Windowのコンテキストを記述します(抽象クラス)
- WindowDelegate-コンテキストがいつ変更されたか、ウィンドウがいつ開閉するかなどを決定するために使用されます。
- WindowEventListener-ウィンドウからのイベントをリッスンします(関数をコールバックするのではなく、ポーリングに固執する必要があるかどうかはわかりません)
とにかく、これがどのように機能するかの例です:
OglWindowContext* context = new OglWindowContext;
// change context's settings
Window window(ipoint2(), idimension2(640, 480), "Test Window",
Window::Resizeable, context, &windowListener,
NULL /* window delegate */);
while(window.isOpen())
{
window.processEvents(); // calls back events to the WindowEventListener
window.draw(); // calls the context's draw method
}
注:ipoint2は2Dポイントです
そして、次のように呼び出すことで、コンテキストを途中で変更できます。
window.setContext(new Dx9Context); // or whatever context you would like
これを行うためのより簡単な方法はありますか、またはより効率的な方法を言う必要がありますか?