シェーダーに対応したぜーというところまでは良かったのですが、固定機能を使っているところとの混在が面倒な感じだなーということで、その辺に手をいれることにした。
そうするかーってことなんだけど、とりあえず何から始めればいいのかよくわからないので、DrawIndexesPrimitiveを使うように変更することに。
ってことはーXファイルからその辺の情報を拾ってくることになるんだからーということでVertexBufferとIndexBufferを作るところから始める。
ものっすごい前にクラスを作ってから使われることがなかったものがようやく陽の目を見ることになりました! とかクラスライブラリを作ってる人にしかわからない話を交えつつぽちぽちと作ってみたら他にも色々なものが必要というのがわかってきまして、あれやこれややることになりました。
描画をするのにマテリアルの数でDrawSubsetしていたのですが、アトリビュートの数で描画をしなくちゃいけなくなるので、ID3DXMesh::GetAttributeTableなんてものを呼び出して拾おうとしたら、Optimizeしてからじゃないと拾えませんとヘルプに書いてあって、なんじゃそりゃーと思ったりしました。DrawSubsetは引数がアトリビュートIDなんだからきっとどっかでやってるんだろうし、勝手にやってくれればいいのにとかね。
贅沢な話でしょうかw
最終的に出ることは出たのですが、なんか色々とめんどうだなーとか思ったり思わなかったり。
IndexBufferを使わないでも描画するDrawメソッド用意しておかないと面倒そうです・・・。
合間にAIONとかいう強敵もあったのですが、シェーダー対応してました。
とりあえずID3DXEffectを基本にしてつくってみたんですが、シェーダーに渡すのに名前で検索してハンドル経由だったり、使うテクニックも名前解決なんですよね。
まぁ、それはそれでいいのですが、シェーダーって渡すパラメーターがシェーダーによって違うんだけど、他の人はどうやって汎用性を持たせているのかなぁとかいうのが凄く疑問にのこったままです。
とりあえずシェーダーの設定をするコールバックを作って見たのだけど、なんかもっといい方法あるのかなぁ。とおもって調べて見たけど、もっと大規模なプロジェクトはもっと大変なことになるぜって話はあったんだけど、そんな規模のモノをつくってるわけじゃないんだよなーと・・・。
悩ましい。
まぁ、もうちょっとシェーダー自体の勉強をしてきますね。
射影行列の前方クリップの値を0.0fにしていたんだけど、それがまずかったらしくて、1.0fにしたらきちんとでましたよっと。
うーん? 視錐台の前方クリップの位置がカメラから0距離になるだけだから問題ないような気がするんだけど・・・? とか悩んで図を見ながら0距離だと視野角もなくなるからダメなのかしらとかなんかいい加減な感じで納得しました。
よーわからん(ぉ
ふーようやく表示できた(´Д`)
なんかバキバキ割れているのはなんだろう。
カリングとかっつーよりも、単純に.xに落としたときにデータがおかしくなっているだけな気がしないでもない。
テクスチャがモデルデータからの相対パスなんで、今は読み込むときに誤魔化したけど、真面目に作るとなるとちょっとパスの処理を入れなきゃいかんなーとか思いつつも、シェーダーも後回しにしているので、そのへんもやらんきゃいけないけど、とりあえず寝る!
モデルは、ntnyさん著「ローポリスーパーテクニック」から勝手に拝借したグレタ2Pカラーです。
暫くこのキャラをいじらせて貰おうかと思ってたりもします。
自前でゲームを作る時にこさえているライブラリを改良しているわけですが、今まで3Dのモデルを扱っていなかったので(3D平面のみ)、その辺を対応するかーとぽちぽち書き直しています。
ついでにシェーダーの勉強もしたいので、それへの対応もするかーというわけで、色々と機能追加なわけです。
3Dのモデル表示しよう
↓
シェーダーも対応しよう
↓
既存のレンダリング構造を改良
↓
簡単なエフェクトクラスの作成
↓
とりあえず.xファイルから表示しよう
↓
.xファイルを読み込むところを作ろう
↓
マテリアルとかのクラス追加( 今ココ! )
この後3Dモデルをどうたらこうたらとかあるわけですが、なんとも手間のかかる話です。
まぁ、3Dのモデルを出すのはただの自己満足にすぎないので、もっと必要なUVリストの作成ツールとか作らないとだめなんですけどね。
UVリストから自動的に2Dスプライトを作成すれば、デザイナ側からの変更も楽になるし、デザイナ側も大胆に配置変更しても平気だぜってことになるので・・・。
毎度苦労してるんだからさっさと作れとか言わないでくださいw
MSDNの有効期限が切れそうだから、おーぽんびじねすにして2年間コースにすることにした!
Visual Studio Professional w/MSDN Pro (J/E) SA Open Business
税込の合計:\125,082
た、たけぇぜ・・・ 個人で払い続けるには辛いものを感じるので売れる物を作りたい今日この頃です。
高い買い物で不安で仕方ないので、これでいいでしょうかとかメールしちゃったよ(笑)
ひさびさに自分のライブラリのヘルプでも作ってみようかとdoxygenをDLしてきて、Doxyfileをぽちぽちと作ってみたら、あら途中で落ちましたよと。
なんだろかーとちょいちょいと調べてみたのですが、どうやら出力エンコード方法とか変えれるようですね。
なのでSHIFT-JISでえいやっとしてみたら、でることはでたんですが、Qt-Styleで書いているタグがどうにも美味くないようです。
\file テストファイル
\brief これはテスト用です
ってソースに書いたとしたら、\fileや\briefの部分がカットされずにそのままdoxygenの出力ファイルに混じってきてます。
なんでーとかおもいつつJavadoc形式にしてみたらきちんと消えます。
どうにも\の処理が美味しくないんでしょうかねぇ。
かといってソースをUTF8にするとかは、ちょっとまだ早いですしねぇ。
VCで開けるけどコードページを指定できないので、色々とうるさいことをいわれるし。
んーむとしらべてたら、どうやらSHIFT-JISではなくてCP932と指定すればいいよてきなことが書いてあったので、ほっほーとやってみたら、今度は落ちましたorz
パースが終わって、
Generating page documentation…
Generating group documentation…
Generating group index…
Generating class documentation…
Generating annotated compound index…
Generating alphabetical compound index… ← ここでおちます。
昔よりはかなり扱い安くなっているかもーなだけに、なんともかんとも残念。
zipの方を落としたのですが、インストーラーの方はフロントエンドのGUIもはいっているようです。
ところで、周りをみてると、Javadocで書いてますってのをよく見かけるんだけど、実はQt-Styleの方がマイノリティなのかしら?
別にこだわりはないんだけど、コマンドが全部Qt-Styleなんだよね。
Javadocを選んだ人はなんでそっちを選んだのか教えてくださいませw
ある日、フォントの話をしてて、フォントの組み込みって出来ないの? ってみぐさんから言われました。
ほうほう?
と話をきいてたら、こういうフォントを使いたいなぁとか言われまして、どうやら権利的には問題ないと言うことなので、ははぁ、じゃあ組み込んでみましょうかねぇ。って返答したんですよ。
そしたら、ついでに、縁取りもしようぜ。しないといじめちゃうんだから♪ なんていわれましてね。
色々と方法を探って試してみたんですが、どうにも馬鹿正直にやるのが一番なのかなぁという結論に達して組んでみました。
実際の画像が上です。
下の赤い縁取り部分がプログラム的に追加しているところ。
赤いところを抽出する方法はこんな感じ。
1.馬鹿正直に点を8方向にずらして、ビットフラグを立てる。
2.ビットフラグを元に総和を求める。
3.総和を点の数で割る→縁のα値
4.α値を元に黒の描画
5.普通のフォントを普通に描画
なんといっても1.と2.が泥臭すぎるのと、直線なのにいきなり縁取りが一段明るくなったりするのが、どうしたらいいのかなぁというところです。
もっと数学的なところからせめて、縁を検索とかをした方がいいですかねぇと思いつつ、この程度のピクセル数なのに必要ないよねぇとかそんな感じです。
泥臭くやるにしても、数学的にでもこうやるとこんなに綺麗だぜって人は教えてくださいませ。ぜひぜひ。
Feature Packがインストールできないよ。うわーんと思っていたのですが、なんかServicePack1に既に一緒にはいっていたようで、Wizard使って適当にぽちぽちしたら結構なものが出来ました。
これはいじりたくなる(*´Д`)ハァハァ
今日、会社で暇つぶし(ぉぃ)に読んでいたCodeZineの記事でVisual C++ 2008 Feature Packなるものを紹介している記事がありました。前にVBで似たようなパッケージが出たのは知っていたのですがC++のパッケージが出ていたのには気がつきませんでした。
IDEを起動したときのニュースは欠かさずチェックはしているのですが、あれは日本語で提供されているのまでしか拾わないのかしら・・・。
それはそれとして、意外と面白い内容でちょっと興味がわきました。
あと、一番MFCが強化されたというところで、ちょっと心ワクワクという感じです。
MFCは6.0からさっぱり更新されなくて、UIを作る時にはいつも何にしようかとおもって、前回もC#をちょっといじってみるかねぇ・・・ なんてやってすっきりしない気持ちで触っていたのですが、やっぱりすっきりしないんですよねw
tr1も追加されているようですが、あんまその辺には興味がないというか、まぁ、なんか必要になったらちょっと使ってみるかー程度なんで、どうでもよかったり。生粋のC++マニアならtr1で色々と追加されてるよ、ひゃほーいなんでしょうけど、C++スキーですが、用途が無いうちに追加された機能に関してはとんとさっぱり興味が湧きません。
正規表現できるよーとか書かれても、boost::xpressiveの方が興味があったりします。
まぁ、ぼちぼちいじってなんか書こうとは思いますが、それはまた別な時に。
正直泥臭いことばかりやってるんで、記事にしようもないということばかりなんですがね!
最近のコメント