これまで同様の質問が何度か聞かれてきました。しかし、これは別のケースです。オブジェクトは自分自身を描く必要がありますか? (ジオメトリとテクスチャの混合)
私はSDL2を使用してC++でゲームを書いています。現在、すべてのオブジェクトが描画されます。彼らはすべてが少し違って描くからです。例えば
、ボタンパラメータとしてSDL_TTFによって生成されたテクスチャーをとるSDL_RenderCopy()
を使用して描かれているテキストを含むもSDL_RenderFillRect();
ボタンで描かれた矩形を、含んでいます。
さらに、MapViewウィジェット(基本的にはタイルマップをロードできるグリッド)は、水平および垂直のSDL_RenderDrawLine()
呼び出しを含む 'for'ループを使用してグリッドを描画します。
最後に、それ自体がテクスチャとして格納されているタイルは、SDL_RenderCopy()
を使用して描か。
私は一般的にオブジェクトが自分自身を描画していないことが望ましいことを理解しています。しかし、オブジェクトの描き方には多少のバリエーションがあるので、私は別の方法を知りません!
私は幾何学的なオブジェクトがテクスチャを生成することがありましたが、各オブジェクトに対してGetTexture()関数を持つことが可能であるかもしれない、とテクスチャを使用したものは単に「テクスチャを返す」と考えていました。グリッドは、ユーザーがゲームの世界を移動するときに常に更新されるため(オフセット値が変更され、移動するとグリッドが再描画されるため)、MapViewオブジェクトが複雑になります。
私はオブジェクトを描くことに何らかの問題があるとは思わない。通常は描画されたものを制御し、オブジェクトを切り抜くなどの他の処理を行うためにレンダリング・キューがあります。オブジェクトが描画されるかどうかに関係なく、オブジェクトごとにデータにアクセスする関数を使用して描画します。オブジェクトの種類ごとに1つずつ描画関数を設定し、それらの間で切り替えることができます。 – Harish