ページ 11

DirectXにおける描画について

Posted: 2013年7月07日(日) 19:17
by atori
現在、私はC++でフレームワークを作っております。

一箇所迷っている部分がありまして、皆さんの意見を聞けたらなと思いトピックを立てました。
タイトルにもあるとおり描画に関してなのですが、私は現在、描画を担当するDxRenderarというクラスを作って、
Draw3DやDraw2Dと言ったメソッドの引数にメッシュの情報や、テクスチャの情報を渡して描画するという方法を取っています。

が、友達のソースを見た時、私とは違う方法を取っていました。それは、例えば3DObjというクラスがあったとしたら、そのメソッドにDrawというメソッドを
作り、描画しているというものです。

確かに、自分自身を描画する、という概念だとスッキリします。
しかし、「描画」というのは一つの機能であり、それ専用のクラスを作ったほうがスッキリするような気もします。

皆さんは、どちらの方法を取るべきだと思いますか?

Re: DirectXにおける描画について

Posted: 2013年7月07日(日) 19:56
by softya(ソフト屋)
オブジェクト指向的には出来るだけ抽象化した方が良いので、テクスチャを渡すって考え方自体を隠蔽したいところですね。

>しかし、「描画」というのは一つの機能であり、それ専用のクラスを作ったほうがスッキリするような気もします。
機能別に分けるのは、どちらかと構造化プログラミングの考え方です。
この分け方の問題は、各オブジェクト間が密接に繋がりかねない事だと思います。

Re: DirectXにおける描画について

Posted: 2013年7月07日(日) 20:56
by ym114
私もゲーム作りと並行してフレームワークを作成・拡張していますが,RendererクラスもObjクラスも作りました.
ObjのDraw関数内でRendererの描画関数を呼んでいます。
例の3DObjは一体何をどのように描画するのか分かりませんが,どちらか一つ選ぶ状況なのでしょうか(何か勘違いしていたらすみません)

Re: DirectXにおける描画について

Posted: 2013年7月07日(日) 23:32
by atori
ソフト屋さん さんが書きました:機能別に分けるのは、どちらかと構造化プログラミングの考え方です。
機能別に分けるのが構造化プログラミング、抽象的な概念で分けるのがオブジェクト指向プログラミングなのですね。
大事な事を曖昧なままC++をやっていました。ありがとうございます。

ym114 さんが書きました:私もゲーム作りと並行してフレームワークを作成・拡張していますが,RendererクラスもObjクラスも作りました.
私もそうしています。描画だけを別の考え方として新しくクラスを作っていました。


今のフレームワークを改造して、DxRenderarクラスを消去する方針で行こうと思います。
3DObjのコンストラクタでLPDIRECT3DDEVICEを渡して、それを使って描画しようと思います。

オブジェクト指向プログラミングと構造化プログラミングの考え方の違いを明確に知ることが出来ました。
ありがとうございました。
このトピックは閉じさせて頂きます。