2

SDLでゲームをプログラミングしています。私はSDL_gfxライブラリのzoomSurface関数を介してスケーラブルなウィンドウサイズを実装しましたが、少年はフレームレートに打撃を与えます(おそらくzoomSurfaceを呼び出すたびに、まったく新しいSDL_Surfaceインスタンスが作成され、継続的にズームするには呼び出す必要があるためです)それはすべてのフレームです)。

私は SDL を使ったプログラミングにかなり慣れていないので、SDL が持っている可能性のある他の機能については知りません。これを行うためのより速い方法はありますか?

4

1 に答える 1

1

SDL はこれを実際にはサポートしていません。

最も「正しい」方法は、基になるグラフィックス API (OpenGL または DirectX) を使用してスケーリングを行うことです。たとえばglScale{f,d}、ボンネットの下で OpenGL を使用している場合の呼び出し。Windows 上の SDL は DirectX を使用するようにコンパイルされていると思いますが、これは移植可能なソリューションではありません。

別の方法は、何らかの倍率ですべてをズームする必要がある場合に、すべてのサーフェスを再作成することです。これは遅いですが、すべてのフレームで行う必要はありません。スケーリング係数が変更されたときに一度だけ実行する必要があり、その後、スケーリングされたサーフェスをメモリに保持して、フレームごとに再利用できます。

通常、2D ゲームでスケーリングされたサイズ変更を許可することは意味がないことに注意してください。スプライトは、何らかのフィルターを使用しない限り、引き伸ばされたときに見栄えが悪くなる傾向があるためです。

于 2011-09-17T05:29:02.887 に答える