現在、私はC++でフレームワークを作っております。
一箇所迷っている部分がありまして、皆さんの意見を聞けたらなと思いトピックを立てました。
タイトルにもあるとおり描画に関してなのですが、私は現在、描画を担当するDxRenderarというクラスを作って、
Draw3DやDraw2Dと言ったメソッドの引数にメッシュの情報や、テクスチャの情報を渡して描画するという方法を取っています。
が、友達のソースを見た時、私とは違う方法を取っていました。それは、例えば3DObjというクラスがあったとしたら、そのメソッドにDrawというメソッドを
作り、描画しているというものです。
確かに、自分自身を描画する、という概念だとスッキリします。
しかし、「描画」というのは一つの機能であり、それ専用のクラスを作ったほうがスッキリするような気もします。
皆さんは、どちらの方法を取るべきだと思いますか?
DirectXにおける描画について
DirectXにおける描画について
Done is better than perfect.(Mark Elliot Zuckerberg)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: DirectXにおける描画について
オブジェクト指向的には出来るだけ抽象化した方が良いので、テクスチャを渡すって考え方自体を隠蔽したいところですね。
>しかし、「描画」というのは一つの機能であり、それ専用のクラスを作ったほうがスッキリするような気もします。
機能別に分けるのは、どちらかと構造化プログラミングの考え方です。
この分け方の問題は、各オブジェクト間が密接に繋がりかねない事だと思います。
>しかし、「描画」というのは一つの機能であり、それ専用のクラスを作ったほうがスッキリするような気もします。
機能別に分けるのは、どちらかと構造化プログラミングの考え方です。
この分け方の問題は、各オブジェクト間が密接に繋がりかねない事だと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: DirectXにおける描画について
私もゲーム作りと並行してフレームワークを作成・拡張していますが,RendererクラスもObjクラスも作りました.
ObjのDraw関数内でRendererの描画関数を呼んでいます。
例の3DObjは一体何をどのように描画するのか分かりませんが,どちらか一つ選ぶ状況なのでしょうか(何か勘違いしていたらすみません)
ObjのDraw関数内でRendererの描画関数を呼んでいます。
例の3DObjは一体何をどのように描画するのか分かりませんが,どちらか一つ選ぶ状況なのでしょうか(何か勘違いしていたらすみません)
Re: DirectXにおける描画について
機能別に分けるのが構造化プログラミング、抽象的な概念で分けるのがオブジェクト指向プログラミングなのですね。ソフト屋さん さんが書きました:機能別に分けるのは、どちらかと構造化プログラミングの考え方です。
大事な事を曖昧なままC++をやっていました。ありがとうございます。
私もそうしています。描画だけを別の考え方として新しくクラスを作っていました。ym114 さんが書きました:私もゲーム作りと並行してフレームワークを作成・拡張していますが,RendererクラスもObjクラスも作りました.
今のフレームワークを改造して、DxRenderarクラスを消去する方針で行こうと思います。
3DObjのコンストラクタでLPDIRECT3DDEVICEを渡して、それを使って描画しようと思います。
オブジェクト指向プログラミングと構造化プログラミングの考え方の違いを明確に知ることが出来ました。
ありがとうございました。
このトピックは閉じさせて頂きます。
Done is better than perfect.(Mark Elliot Zuckerberg)