2016-08-18 10 views
-1

これまで同様の質問が何度か聞かれてきました。しかし、これは別のケースです。オブジェクトは自分自身を描く必要がありますか? (ジオメトリとテクスチャの混合)

私はSDL2を使用してC++でゲームを書いています。現在、すべてのオブジェクトが描画されます。彼らはすべてが少し違って描くからです。例えば

、ボタンパラメータとしてSDL_TTFによって生成されたテクスチャーをとるSDL_RenderCopy()を使用して描かれているテキストを含むもSDL_RenderFillRect();

ボタンで描かれた矩形を、含んでいます。

さらに、MapViewウィジェット(基本的にはタイルマップをロードできるグリッド)は、水平および垂直のSDL_RenderDrawLine()呼び出しを含む 'for'ループを使用してグリッドを描画します。

最後に、それ自体がテクスチャとして格納されているタイルは、SDL_RenderCopy()を使用して描か。

私は一般的にオブジェクトが自分自身を描画していないことが望ましいことを理解しています。しかし、オブジェクトの描き方には多少のバリエーションがあるので、私は別の方法を知りません!

私は幾何学的なオブジェクトがテクスチャを生成することがありましたが、各オブジェクトに対してGetTexture()関数を持つことが可能であるかもしれない、とテクスチャを使用したものは単に「テクスチャを返す」と考えていました。グリッドは、ユーザーがゲームの世界を移動するときに常に更新されるため(オフセット値が変更され、移動するとグリッドが再描画されるため)、MapViewオブジェクトが複雑になります。

+0

私はオブジェクトを描くことに何らかの問題があるとは思わない。通常は描画されたものを制御し、オブジェクトを切り抜くなどの他の処理を行うためにレンダリング・キューがあります。オブジェクトが描画されるかどうかに関係なく、オブジェクトごとにデータにアクセスする関数を使用して描画します。オブジェクトの種類ごとに1つずつ描画関数を設定し、それらの間で切り替えることができます。 – Harish

答えて

2

このタイプのように多くの疑問と同じように答えは:それはあなたのプログラムに依存します。

あなただけのすべてのそれにSDLを使用して同じように、その後、理由はない理由はないを描画しようとしている場合。もう1つの選択肢は、オブジェクトごとに特定のレンダリングクラスを用意することですが、それはその作業を2倍にします。すべてのレンダリングコードを単一のクラスまたは関数に入れても問題ありませんが、大きく複雑になります。

これは、コードの複雑さと、今後どのようなことをしたいのかを判断するためのものです。私の助言は、最も簡単な解決策を選択することです。潜在的な欠点を考慮している限り、教育上の決定を下すことができます。

関連する問題