【C++】 DirectX初心者質問スレ Part27 【C】
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2010/01/09(土) 17:13:25これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
0002デフォルトの名無しさん
2010/01/09(土) 17:14:10【C++】 DirectX初心者質問スレ Part26 【C】
http://pc12.2ch.net/test/read.cgi/tech/1256403984/
0003デフォルトの名無しさん
2010/01/09(土) 17:16:26乙
0004デフォルトの名無しさん
2010/01/09(土) 17:21:45>引数で渡すのが一番安全の意味が分からない。。。
例えば
pD3Dev = Create・・・
unko();
if(pD3Dev)
はもしかしたらunko()の中でpD3Devは開放されるか値が変わってしまってるかもしれないよね?
それどころか?pD3Devが触られてるかどうかすらわからないよね?
これがグローバル変数関数の恐怖
プログラムすべてでグローバル変数を使用しないとしたとき(引数を通した場合)は
pD3Dev = Create・・・
unko(pD3Dev);
if(pD3Dev)
こうやってunko関数の中でpD3DevにしかアクセスしてないことがわかるしpD3Devにアクセスしてることがわかるよね?
また、引数で渡すようにしたときに今度はunko関数がpD3Devにアクセスしてないことがわかるよね?
pD3Dev = Create・・・
unko();
if(pD3Dev)
でもグローバル変数関数つかいまくりだとunko関数で何がおきているかはunko関数の中身を
すべて調べないとわからないよね?
これがダメなプログラムの例
0005デフォルトの名無しさん
2010/01/09(土) 19:29:240006デフォルトの名無しさん
2010/01/09(土) 22:42:40そう?
少なくとも俺はこのレベルでの話をしたつもりだけどね
0007デフォルトの名無しさん
2010/01/09(土) 23:18:35見えるようにできたらと考えているのですが可能でしょうか?
環境はXP,DirectX9です。
レイヤードウィンドウを作成して、SetLayeredWindowAttributesで
D3DX側の背景色を指定してみたのですが、さすがにそう甘くはなかった…orz
画面閉じてもD3DXの描画部が残る始末。。
描画先?描画デバイス?が違うみたいだから無理なのかな?
ウィンドウの向こう側をコピーして、D3DXで描画するオブジェクトと合成
という手段も考え中ですが、ビルボードに貼り付けじゃなんか違うよなぁ…
良い方法ありましたら教えてください。
0008デフォルトの名無しさん
2010/01/09(土) 23:55:34それは単なるルールじゃないの?
0009デフォルトの名無しさん
2010/01/10(日) 00:15:11真ん中の場合も解放されてるかどうかはunko関数の中身を調べてみないとわからないんじゃ
0010デフォルトの名無しさん
2010/01/10(日) 01:21:36その渡すための元の変数をどこに置くかって話でそ
クラス設計の話なんだから
>>4みたいな構造化プログラミングの思考で考えてもしょうがない
0011デフォルトの名無しさん
2010/01/10(日) 02:23:06スレ違いになるんじゃね
0012デフォルトの名無しさん
2010/01/10(日) 03:23:39クラスでやってるな自分は
勝手に解放されてしまうかもしれない、なんてのはスマポ使おうが何使おうが
ラップして隠蔽でもしない限り、防ぎようが無いから気にしてもしょうがない
0013デフォルトの名無しさん
2010/01/10(日) 08:32:29はぁ?
0014デフォルトの名無しさん
2010/01/10(日) 11:28:17気にしてもしょうがないですね
0015デフォルトの名無しさん
2010/01/10(日) 15:43:51なるほど、参考になります
0016デフォルトの名無しさん
2010/01/10(日) 15:48:06いつロストしてもなるべくリストアできるようにする設計は考えなくてはいけない
まぁ、10からはロストなくなったんだっけ?
0017デフォルトの名無しさん
2010/01/10(日) 15:50:48どうなんでしょうね・・・
0018デフォルトの名無しさん
2010/01/10(日) 15:54:04グローバルの場合はなかなか見つからない上にたとえわかっても対策できないだろ
途中までロスト考慮しないでグローバルで組んでしまったD3DDeviceのポインタは
1つ1つラップしていくぐらいしかどうにもならねーだろ
この組み方は致命的なんだよってわからないなら設計なんて考えないでもう根性だけで組んだらいいんじゃない?
別にそれが悪いわけではないってのもついでにいっておく
0019デフォルトの名無しさん
2010/01/10(日) 16:04:20プログラムの美意識に関する問題だからぶっちゃけ結論は出ない気がするな
プログラマは何故か「美しい」プログラムに拘る人種だから
たとえそれが有効だとしても
グローバル変数なんて「美しくない」ものを使いたくないという気持ちが働く
シンプルさを求めるか堅牢性を求めるかも人によって違うし
0020デフォルトの名無しさん
2010/01/10(日) 16:13:020021デフォルトの名無しさん
2010/01/10(日) 16:22:49でも綺麗に組むなら引数とキチンと通してグローバル変数は一切使わずに・・・っていうのは
知っておいてもいいだろ?
これを正当化するようなことは技術者ならあってはならない
あくまでも時間がなかったり現場の作法やらで
しょうがないからグローバル変数・関数を使ってることは理解しておいてもらわないと困る
グローバル変数を使ったほうが綺麗とか言い出したら間違いなくそいつはなにも理解してないわけだし
0022デフォルトの名無しさん
2010/01/10(日) 16:24:27引数で渡すにしたって渡すための変数は
その関数がよばれる全てのスコープ内ではグローバルじゃなきゃいけないわけでしょ?
引数で渡すのはあくまで可読性を高める規則であって
それが守られてる保障が無い限りデバックがどうとかは関係ない希ガス
0023デフォルトの名無しさん
2010/01/10(日) 16:26:410024デフォルトの名無しさん
2010/01/10(日) 16:40:26順をおって考えると
あるクラス内でデバイスにアクセスしたい
オブジェクト指向で考えるとクラス内ににデバイスへのポインタがあるのが望ましいよね
じゃあ、インスタンス生成時に初期化子としてデバイスへのポインタを渡そう
あ、でも、もしかしてどっかでデバイスのアドレスが変わったらそれって無効だよね…
じゃあ、あまりC++っぽくないけどダブルポインタで渡しとく?
どっちにしても毎回渡すのはメンドクサイし
クラスを生成する可能性のある場所からはデバイスが見えてないといけないし
それって結局グローバルじゃないの?
ってことじゃ?
0025デフォルトの名無しさん
2010/01/10(日) 16:45:47は?C言語大丈夫かよw
0026デフォルトの名無しさん
2010/01/10(日) 16:47:54全然違うね
違うデバイスかもしれないぜ
できるかどうか知らないけどD3DDeviceが2つもてたら?
それも可能だし、あってもいいよね?
0027デフォルトの名無しさん
2010/01/10(日) 16:56:52デバイスが必要なのって描画クラスと後はせいぜいリソース管理クラスくらいだろ
たとえデバイスをグローバル変数(あるいはstaticメンバ変数)として配置したとしても
そこにアクセスできるのは描画クラスのみという設計にしておけば良い
デバックするときは描画クラス内だけをみればいい訳だし
ゲームの実装部分はデバイスには触れずに必ずそのクラス経由で描画するようにすれば
たとえばDirectX9から11にしたいなんて時には
その描画クラス内のみを変更すればゲーム部分はそのまま使えるよね
変に引数であっちこっちにデバイスをばら撒いちゃって
どっからでもデバイスにアクセスできるようにしちゃうと
もしDirectXの仕様がかわってある関数の引数の数が変わりましたなんてことになったら
修正箇所を全部直すことになるし
うっかりデバイスの変数名を変えたい、なんてことになったときに一括置換じゃちょっと怖いよね
0028デフォルトの名無しさん
2010/01/10(日) 16:59:48うるせー
0029デフォルトの名無しさん
2010/01/10(日) 17:02:250030デフォルトの名無しさん
2010/01/10(日) 17:06:13あれあれ?
君の実装の仕方だったら確実に俺のほうが影響範囲少ないよ
わからないかな?
0031デフォルトの名無しさん
2010/01/10(日) 17:12:050032デフォルトの名無しさん
2010/01/10(日) 17:27:07特定メモリに対する書き込みアクセスはVC++のデバッガでも簡単に補足できるから、
グローバルだろうが破壊されるタイミングは簡単にチェックできる。
むしろアドレスが不定のグローバル変数の方がブレークポイント一発で楽なくらいだ。
それより、>>16とかはデバイスロストを誤解してると思う。
ロストしたデバイスをリセットできるタイミングは前フレームの描画終了〜次フレームの
描画開始の間の1ヶ所だけで、描画の途中でやたらに戻していいものではないよ。
0033デフォルトの名無しさん
2010/01/10(日) 17:34:580034デフォルトの名無しさん
2010/01/10(日) 17:56:04●下記の話題は何度繰り返されても結論が出ず、無駄に荒れるだけなので避けましょう
・全角英数でのレス
・コーディングルール全般
・古典タスクシステム
・オブジェクト指向
・バージョン管理システム
・エクストリームプログラミング
・テスト駆動開発
・言語論争
・進路問題(大学にいくべきか、ゲーム専門学校にいくべきか等)
・エディタの強制
・読解力の指摘
・プラットフォームの優劣について
0035デフォルトの名無しさん
2010/01/10(日) 18:18:48心当たりがありすぎて笑えるw
http://www.geocities.co.jp/HeartLand-Kaede/9677/read.htm
0036デフォルトの名無しさん
2010/01/10(日) 19:12:33は?そのレス、俺への反論になってると思ってるの?
そりゃお前がいってるのは死んだときのみの話で
死ぬ可能性がある、もしくは変更される可能性があるってところまでは全くわからないよね?
したら前に例をあげたような関数の中身を全部すみずみまでチェックしないといけないわけだよね?
そこわかって反論してるの?
もう結論でてるでしょ?
育ちの悪いガキの必死な反論聞いてるの馬鹿らしくっていらいらすんだよw
0037デフォルトの名無しさん
2010/01/10(日) 20:15:02>>36がKYなのは分かった
0038デフォルトの名無しさん
2010/01/10(日) 20:15:370039デフォルトの名無しさん
2010/01/10(日) 20:56:12D3DDeviceのポインタがロストする訳じゃねーし
勘違いの上で議論重ねても仕方なくね?
だからさ、
>>987
よくわからんくせに、講釈たれんなよ
0040デフォルトの名無しさん
2010/01/10(日) 21:13:350041デフォルトの名無しさん
2010/01/10(日) 21:28:210042デフォルトの名無しさん
2010/01/10(日) 22:16:580043デフォルトの名無しさん
2010/01/10(日) 23:06:34サンキュウ。
ちょっと調べてくる
0044デフォルトの名無しさん
2010/01/11(月) 02:14:11>D3DDeviceのポインタがロストする訳じゃねーし
否
デバイスロストの種類は2種類
1つはポインタごとふっとぶ
0045デフォルトの名無しさん
2010/01/11(月) 02:52:050046デフォルトの名無しさん
2010/01/11(月) 03:46:333Dのスクリーンセーバーが起動するたびに運が悪いと落ちるんじゃねか?
0047デフォルトの名無しさん
2010/01/11(月) 04:06:330048デフォルトの名無しさん
2010/01/11(月) 04:44:43だから苦労するんだし
D3DDeviceのポインタ保持ってるような組み方してると復帰できない
0049デフォルトの名無しさん
2010/01/11(月) 04:49:46もう一つは?
0050デフォルトの名無しさん
2010/01/11(月) 04:59:01D3DDeviceは生きててPOOLMANAGEだかなんだかに設定してると復旧してくれる
本題からかなりずれるけど用はグローバル変数にしててどっかでdeleteされたり変更されたりすると
その変更がわからないってのが問題なわけよ
別にD3DDeviceは例として挙げただけで他のもんでもおこるだろ?
グローバル変数にしてしまうと
unko();
の中身で使用されてるかどうかがまったくわからない
unko(pD3Device);
これだとわかるでしょ?
って話よ
単純な話してんだけどなんで食いつき方おかしいかな?
0051デフォルトの名無しさん
2010/01/11(月) 05:41:26D3DERR_DEVICEREMOVED、D3DERR_DRIVERINTERNALERROR、
D3DERR_OUTOFVIDEOMEMORYな状況のことを言いたいんだろうけど
インターフェースは生きているんだし「ポインタごとふっとぶ」なんて
普通は言わないと思うが。
0052デフォルトの名無しさん
2010/01/11(月) 06:00:31自分なりに解釈して調べてみたんだけど、
1.CreateOffscreenPlainSurfaceでオフスクリーンサーフェイスを作成
2.SetRenderTargetで用意したサーフェイスに描画先を変更
3.描画処理
4.DIBを作成
5.サーフェイスのDCを取得し、StretchDIBitsで作成したDIBにコピー
6.DIBをなんらかの手段でレイヤーウィンドウに描画
って流れでいいのかな?
2すらうまくできてないみたいでまだ最後まで試せてないから、
とんちんかんなこと言ってるなら指摘してもらえるとありがたいですm()m
0053デフォルトの名無しさん
2010/01/11(月) 06:20:29>D3DERR_DEVICEREMOVED、D3DERR_DRIVERINTERNALERROR、
>D3DERR_OUTOFVIDEOMEMORYな状況
こんな重大なエラーに直面したらメッセージ出して落とすくらいしか
やることないのではと思うんですが
上手くまとめて処理を継続できるのかなあ?
0054デフォルトの名無しさん
2010/01/11(月) 06:43:00デスクトップアクセサリみたいなウィンドウ枠のない描画をしたいってこと?
0055デフォルトの名無しさん
2010/01/11(月) 07:32:14まぁありすぎても困ったことになるんだが
0056デフォルトの名無しさん
2010/01/11(月) 08:18:060057デフォルトの名無しさん
2010/01/11(月) 11:01:51これは勘違いでOK?
大体COMなんだから、俺が参照保持してる時点で
インスタンスを開放されちゃ困るよ。唯のバグじゃんそれ。
0058デフォルトの名無しさん
2010/01/11(月) 12:04:23はぁ?
0059デフォルトの名無しさん
2010/01/11(月) 12:24:06>1つはポインタごとふっとぶ
詳細が書かれたlink貼ってくれないか?
0060デフォルトの名無しさん
2010/01/11(月) 12:33:430061デフォルトの名無しさん
2010/01/11(月) 12:53:00説明下手でごめんなさいm()m
イメージ的にはそのデスクトップアクセサリとやらに近いみたいです。
でもウィンドウ枠は表示できたらいいな(´・ω・)
0062デフォルトの名無しさん
2010/01/11(月) 13:37:09謝罪が足りない
0063デフォルトの名無しさん
2010/01/11(月) 19:00:500065デフォルトの名無しさん
2010/01/13(水) 18:29:340066デフォルトの名無しさん
2010/01/13(水) 20:00:58お好きなようにどうぞ
0067デフォルトの名無しさん
2010/01/13(水) 21:44:161個の頂点バッファに入れるってこういうことですか?
//描画処理
//三角形をデータに設定
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX));
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 1);
//第3引数は四角形のデータまでのバイト数
g_pd3dDevice->SetStreamSource( 0, g_pVB, sizeof(CUSTOMVERTEX)*4, sizeof(CUSTOMVERTEX));
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2);
0068デフォルトの名無しさん
2010/01/13(水) 22:08:05D3DPT_TRIANGLESTRIPじゃなくて
D3DPT_TRIANGLELISTで一回のDrawPrimitiveで描いた方が
パフォーマンスには優しいんじゃないの?
頂点数が増えるのが嫌ならインデックスバッファ使って
0069デフォルトの名無しさん
2010/01/14(木) 22:03:440070デフォルトの名無しさん
2010/01/14(木) 23:11:30まとめて書いたほうが早いのは昨今のビデオカードでは
API関係なく共通の設計上の都合だが。
0071デフォルトの名無しさん
2010/01/14(木) 23:30:09寄ってるから、歪なのは致し方ない。
0072デフォルトの名無しさん
2010/01/15(金) 00:23:32トレードオフにならね?
確実に画面に入るってわかってるならいいけど
まとめてっていうのもどんな視点で言ってるのか明確にしないとわけがわからなくなる
一番速いのはなにもしないこと(クリッピングではじく)であるのは絶対覆らないわけだし
0073デフォルトの名無しさん
2010/01/15(金) 01:10:31複数の図形が
いくつ出るのか、動的に数が変わるのか、
それぞれが毎フレーム移動したり回転したりするのか
最低でもそれくらい分からないと
0074デフォルトの名無しさん
2010/01/15(金) 15:24:490075デフォルトの名無しさん
2010/01/15(金) 20:33:52解決策がアップされたら自分で検証して、
自分の考えがまとまったら御礼のレスを
書き込めばよい
0076デフォルトの名無しさん
2010/01/16(土) 00:24:43メインスレッドがCOINIT_APARTMENTTHREADでないと困る状況の場合、
それでもかまわないのでしょうか? それともXAudio2用にスレッドをつくるものなのでしょうか?
0077デフォルトの名無しさん
2010/01/17(日) 09:18:16参考書籍でおすすめの本とかありませんか?
0078デフォルトの名無しさん
2010/01/17(日) 14:14:46コレさえ読めばOKみたいなパーフェクト本はありません
実際に書店に行って自分のレベルにあったものを選びましょう
積まずに3−4冊消化してようやく「なんとなく解ってきた」と思えるでしょう
そこまでいけば今自分が知りたい情報というのも自ずと分かってくるので本選びで悩むこともなくなるでしょう
そんなお金無い貧乏さんor近くに専門書店がない田舎人さんは
MSDNのオンラインヘルプをじっくり読みましょう
十分な情報量です
0079デフォルトの名無しさん
2010/01/18(月) 07:33:030080デフォルトの名無しさん
2010/01/18(月) 09:47:050081デフォルトの名無しさん
2010/01/18(月) 14:12:410082デフォルトの名無しさん
2010/01/18(月) 18:58:14なんでランタイムあんな仕様なの?w
あー、ダメだvc.netのランタイムの仕組み作った奴殴りたくてしょうがねぇ
0083デフォルトの名無しさん
2010/01/18(月) 21:56:36楽すぎて溜息が出るね
0084デフォルトの名無しさん
2010/01/18(月) 23:14:14Direct2Dで歪な3角形または多角形を書く方法無いですか?
ブラシで塗ったヤツほしいんですけど。
もしかして、ジオメトリー系でいけますか?
WIZとかメガテンみたいなゲームのダンジョンぽいものをつくりたいんです。
迷路の自動生成は出来てて、後は表示がががが。
008584
2010/01/18(月) 23:21:34余計なことかいてすません。
明日がんばるです。おやすみです。
0086デフォルトの名無しさん
2010/01/19(火) 02:58:12逆再生したい時はどうすれば良いのだろう?
負数入れても、アニメーションがStopするだけで逆再生されないです・・・
0087デフォルトの名無しさん
2010/01/19(火) 05:10:17ID3DXAnimationController::AdvanceTime
Parameters
TimeDelta
[in] Amount, in seconds, by which to advance the global animation time. TimeDelta value must be "non-negative" or zero.
って書いてあるがな
俺がかなり前にAdvanceTimeをラップした時は
正負を見て負の時はSetTrackPositionで強制巻き戻ししてたけど
他にいい方法があるかどうかは知らない
0088デフォルトの名無しさん
2010/01/19(火) 15:51:09行って合格した者だけを送ったほうがいいんですか?
0089デフォルトの名無しさん
2010/01/19(火) 16:12:030090デフォルトの名無しさん
2010/01/19(火) 19:22:500091デフォルトの名無しさん
2010/01/19(火) 22:08:22アニメーションをループさせずに最大値のポーズで固定したままにしたいのですが、どうもうまくいきません
0092デフォルトの名無しさん
2010/01/19(火) 22:36:41初期値
アニメーションコントローラー->SetTrackPosition(トラック,0.0f) ;
最大値
double endTime = 現在のアニメーションセット->GetPeriod() ;
アニメーションコントローラー->SetTrackPosition(トラック,endTime) ;
最大値はちょっと減らさないとダメとかあったような気がするけどよく覚えてない
0093デフォルトの名無しさん
2010/01/19(火) 23:04:16今試してみた所できました!
御丁寧にどうもありがとうございました
0094デフォルトの名無しさん
2010/01/20(水) 23:46:09情報どうも。でも残念ながら、SetTrackPositionで巻き戻しても
Animationは逆再生しなかった・・・仕方ない、D3DX使うの諦めて
自力でAnimationシステム作るしかないか・・・。
0095デフォルトの名無しさん
2010/01/21(木) 18:53:24自宅のXPに開発環境をインストールしてみた。ここまでやるのに今日一日かかった。
Microsoft Visual C++ 2008 Express Edition SP1
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1
Microsoft DirectX SDK (Mar 2008)
無料のExpressってMFCが使えないみたいだけど、Visual Studio買う余裕もないし
DirectX のアプリ作るのなら必要ないかもしれないから、とりあえずこの環境でざっとSDKを見ています。
そこで質問なんですけど、DirectX SDKのサンプルにあるDXUTってみなさん使ってますか?
これを使えば楽になりそうなんですけど、短所はありますか?
例えば、初心者が使うと中身が理解できなくなるとか、これを使ったアプリを公開するとマイクロソフトに
叱られるだとか…この辺が怖いです。公開することなんてないだろうけどさ。
http://homepage2.nifty.com/natupaji/DxLib/index.html
少し調べただけでも似たようなものがありますし。最初はどれを使ったほうがいいのか、もしくは
使わないほうがいいのか。
みなさんはどうしてますか? 独自のライブラリを開発してあるのかな。
0096デフォルトの名無しさん
2010/01/21(木) 19:17:24特に初期化周りのシステムは
ゲームとは関係ないところのくせに面倒で初心者が躓きがちだし
使うことによってもっと他の大事なことを勉強する時間ができるならどんどん使うべき
あとDXUTは普通のミドルウェアライブラリと違ってソースが全公開なので
心に余裕ができたら中身ののぞいてみるもよし
参考にしてDXUTを使わない独自システムを開発するもよし
よく見るといろいろ使える小ネタがいっぱい仕込んであるので
頼るというよりどちらかというと勉強の素材でもある
0097デフォルトの名無しさん
2010/01/21(木) 19:25:14通報した
0098デフォルトの名無しさん
2010/01/21(木) 20:04:44DirectXの知識は身に付かないけどゲームプログラミングをやりたいだけならDxLibみたいなライブラリを使った方が楽ですよ。
0099デフォルトの名無しさん
2010/01/21(木) 21:55:080100デフォルトの名無しさん
2010/01/21(木) 22:49:190101デフォルトの名無しさん
2010/01/21(木) 23:39:14そのくらいDXUTはカオス。
0102デフォルトの名無しさん
2010/01/21(木) 23:45:55画像Loaderがjpgやpngやdxtやbmpなど、いろいろサポートしてるし。
あとデバイスのResetやLostなどの管理も楽。
010395
2010/01/21(木) 23:46:23Graphics 部分のSDKとDXUTのソース見てみたけど情報が膨大で気力が萎えそうになった
仰るとおりデバイスの持ってる機能チェックと初期化部分はめんどくさそうですね。
デバイスのロストとか(マルチタスクで競合が起るから?)よくわからん事もあるみたいですし。
とりあえずDXUTを使ってゲームプログラムの作りに慣れようかと思います。
>>98
そうですね。初心者には覚えることが膨大そうなので、DXUTで少しずつDirectXの勉強もしていこうと思います。
>>99
それにVisual Studio 2010 というのが出るらしいですし、今の俺は2万円使うの怖いんです。
>>100
ライセンスとかよくわからないので、それを聞いて安心しました。
>>101
いつか独自のライブラリを作れるくらいになりたいです。
みなさんご意見ご回答ありがとうございました。
さっき青い画面だけのサンプルのコンパイルが通りました。
デバッグでDXUTの中まで追っていけるのはいいですね。何をやってるのかわからなかったけど…先は長そうです。
0104デフォルトの名無しさん
2010/01/22(金) 00:10:08画像読み込みは結局D3DXなんだが・・・
0105デフォルトの名無しさん
2010/01/23(土) 00:39:09どうプログラムを組んでいいのかわからない人の為の物だと思ってる
0106デフォルトの名無しさん
2010/01/23(土) 17:25:590107デフォルトの名無しさん
2010/01/23(土) 18:40:170108デフォルトの名無しさん
2010/01/23(土) 22:35:470109デフォルトの名無しさん
2010/01/23(土) 23:31:060110デフォルトの名無しさん
2010/01/24(日) 00:29:490111デフォルトの名無しさん
2010/01/24(日) 08:13:43しかしこれは「これは俺が書いたんだぜ」と言うのがNGなだけで
開発者はマイクロソフトが許諾する範囲内でこれを自由に利用することが出来る
0112デフォルトの名無しさん
2010/01/24(日) 16:02:050113デフォルトの名無しさん
2010/01/24(日) 17:02:20DXUTでゲームを作って売るのはOK
0114デフォルトの名無しさん
2010/01/24(日) 17:03:05俺のことか
0115デフォルトの名無しさん
2010/01/24(日) 17:42:170116デフォルトの名無しさん
2010/01/24(日) 22:23:460117デフォルトの名無しさん
2010/01/24(日) 23:20:23DirectXを始めてすらいないので、ここでいいかわからないのですが、関連だと思うのでここで質問させてください。
OSはVista、開発環境はVisualStudio2008Professionalで、これからDirectX SDKを使おうと思っているのですが
この環境で開発したゲームをXPでも動作できるようにするにはDirectXは9.0でいいのでしょうか?
それがわかるリンクを張っていただけるだけでも結構です。よろしくお願いします。
0118デフォルトの名無しさん
2010/01/24(日) 23:27:130119デフォルトの名無しさん
2010/01/24(日) 23:34:38そうですよね。ありがとうございます。
0120デフォルトの名無しさん
2010/01/25(月) 00:18:37なんていうか別にいいんだけどいかにも日本的な考えだなっと。
0121デフォルトの名無しさん
2010/01/25(月) 00:23:050122デフォルトの名無しさん
2010/01/25(月) 00:28:530123デフォルトの名無しさん
2010/01/25(月) 00:32:260124デフォルトの名無しさん
2010/01/25(月) 00:43:33初心者ならなおさら枯れてるDirectX9でいいだろ。
最新技術は海外にまかせときゃいい。
0125デフォルトの名無しさん
2010/01/25(月) 07:19:310126デフォルトの名無しさん
2010/01/25(月) 09:38:52と考えて11へゴー。10はいらない子と認識している俺
0127デフォルトの名無しさん
2010/01/25(月) 09:41:140128デフォルトの名無しさん
2010/01/25(月) 09:43:310129デフォルトの名無しさん
2010/01/25(月) 09:51:590130デフォルトの名無しさん
2010/01/25(月) 10:10:12賭けてもいい dx11 は流行らないと
0131デフォルトの名無しさん
2010/01/25(月) 10:15:190132デフォルトの名無しさん
2010/01/25(月) 10:22:17これならかつる!
0133デフォルトの名無しさん
2010/01/25(月) 10:41:540134117
2010/01/25(月) 11:42:06もうひとつ質問させてください。
昨日は作ったものを「配る」ことと本や資料の充実を考え、DirectX9を勉強しようと思ったのですが、
「勉強する」ことを考えると9より10の方が良いのでしょうか?
私は現在学生ですが、いずれゲーム作りを仕事にしたいと思っています。
アドバイスをください。お願いします。
0135デフォルトの名無しさん
2010/01/25(月) 12:29:530136デフォルトの名無しさん
2010/01/25(月) 13:10:28どうせどんどん新しいのが出てきてずっと勉強し続けることになるんだから。
0137デフォルトの名無しさん
2010/01/25(月) 14:13:380138デフォルトの名無しさん
2010/01/25(月) 14:25:420139デフォルトの名無しさん
2010/01/25(月) 16:59:14ttp://d.hatena.ne.jp/zuzu_sion/
・就職考えるなら、流行り廃りに乗っとけ
・バイトしろ
・2ch あんま見んな
くらいしか言うべきことはない。あとはじぶんで考えろ
0140デフォルトの名無しさん
2010/01/25(月) 19:04:36rt->Clear(D2D1::ColorF(1.0f, 1.0f, 1.0f, 0.5f));
rt->CreateSolidColorBrush(D2D1::ColorF(1.0f, 0.0f, 0.0f, 1.0f), &brush1);
rt->FillRectangle(&rect1, brush1);
rt->CreateSolidColorBrush(D2D1::ColorF(0.0f, 1.0f, 0.0f, 1.0f), &brush2);
rt->FillRectangle(&rect2, brush2);
これで白半透明な背景の上に不透明な赤矩形と緑矩形が出来るけど、
この後、赤いところだけ Clear 直後の白半透明な色に戻したいのです。
Clear すると緑のとこも消えちゃうし、赤のところに何色を多重 FillRectangle しても無意味なんですが、
どうすれば良いのでしょう? 範囲限定の Clear とか、領域を半透明色で重ね塗りじゃなくて置き換えとか無いっぽいし。
Direct3D は全く知らないので、なんか凄い初歩的なことなのかなーと。
0141デフォルトの名無しさん
2010/01/25(月) 19:18:350142デフォルトの名無しさん
2010/01/25(月) 19:32:25あと、その説明を呼んだ限りだと、赤矩形を描かなきゃいいだけだと思うが。
0143デフォルトの名無しさん
2010/01/25(月) 19:36:55説明が下手ですいません。半透明のキャンパスの上に赤四角と緑四角を描いた絵を見せてから、
次に赤四角「だけ」を消した絵を見せたいのです。
キャンパスが不透明なら、赤四角をキャンパス色で上書きすれば良いのですが、
キャンパス自体が半透明なので。
いっぺん Clear して緑四角だけ書き直せというのはありかもしれませんが、
実際には緑四角以外にも大量にいろいろ描かれているので、ちょっと難しく。
0144141
2010/01/25(月) 19:57:18あんまり綺麗じゃない方法だと、一回ビットマップに書き出して、おぱしてぃ1.0で上書きとかだと無理なのかなぁ??
すまん。解らない。
0145デフォルトの名無しさん
2010/01/25(月) 20:03:54FVF設定の D3DFVF_XYZRHW でできるような『極めて平面的なテクスチャ表示』を
3D空間に置いてあるポリゴン(ビルボード)で行いたいのですが、
当然3D空間だと距離による拡大縮小を受けてしまいます。
これを距離による拡大縮小を受けず、1pxがプロジェクションされても1pxのままになるようにするには、
どうすれば良いのでしょうか?
0146デフォルトの名無しさん
2010/01/25(月) 20:14:17キャンバスに描かれた絵には、赤の矩形の情報は乗っていないので
それだけ消すのは無理だろう。
普段実行したコマンドを記録していって、赤の矩形を消すとなったら
赤の矩形描画まで巻き戻すのはどうだ?
まあ、俺だったら採用しないが。
0147デフォルトの名無しさん
2010/01/25(月) 21:30:06悩むなら9か11かだ。
0148デフォルトの名無しさん
2010/01/25(月) 21:35:490149デフォルトの名無しさん
2010/01/25(月) 21:41:0811で9,10,11に対応してんだから10の意味がない。
0150117
2010/01/26(火) 00:18:15レスしてくださった皆様ありがとうございました。
0151デフォルトの名無しさん
2010/01/26(火) 00:36:12確かに11の新要素は魅力的で使いたいんだが、
ATIのカードを導入するとCUDAとかLinux上でのGL開発で困るから入れられん。
初心者ならとりあえず9で始めればいいと思うけど。
0152デフォルトの名無しさん
2010/01/26(火) 01:38:16けっきょくDirectComputeに取って代わられるんだろうな・・・
cgにたいするHLSLみたいな感じで。
0153デフォルトの名無しさん
2010/01/26(火) 08:24:33いや、考えればなんとかなる。頑張って
0154デフォルトの名無しさん
2010/01/26(火) 09:56:393Dなのに距離に影響を受けずって何がやりたいのかわからんけど
パースペクティブ射影じゃなくて
D3DXMatrixOrthoOffCenterLHあたりで画面サイズの正射影行列つくって
射影トランスフォーム行列に設定すればそうなるんじゃない?
0155デフォルトの名無しさん
2010/01/26(火) 11:02:32カス
0156デフォルトの名無しさん
2010/01/26(火) 11:11:38スレ違いという指摘もあるので試行錯誤してから移動しようと思いますが、
・clipしてbitmapにcopyしたものを、clearしたところにdrawする
・数千文字・箱程度なら毎回全部書き直す
あたりの速度を試してみることにします。ありがとうございました。
要は「(頻繁に)キャンパスの一部を透明にする」方法っぽいのだけど、
opacity 1 で alpha 0 の色を塗るとかしても駄目なのがとほほ。
0157デフォルトの名無しさん
2010/01/26(火) 13:05:55ありがとうございます。
>D3DXMatrixOrthoOffCenterLH
こんな関数が有ったんですね。可能性の1つとして覚えておきます。
ありがとうございました。
0158デフォルトの名無しさん
2010/01/27(水) 00:54:013D空間の点をD3DXVec3Project関数でスクリーン空間に射影
射影した点から適当に四角形でも作って(z座標はずらさない)
座標変換済み頂点として描画
これでおkなはず
偶然なのか
ゲ製作技術板のDirectXスレにも似た質問ある
0159デフォルトの名無しさん
2010/01/27(水) 15:22:18あちらで数名様にご回答を頂けて、もう締め切られてしまったかな?と思い、
一応ビルボードというお答えを頂いて別の技術っぽいし、1スレッドで1人で連続質問しまくるのもレス流しで迷惑になるかも?とも思い、
こちらで質問させて頂いていたら、あちらで思いもよらぬ追加助言を頂けてしまって; 申し訳ないです;
0160デフォルトの名無しさん
2010/01/27(水) 16:00:07D3DDECLUSAGEの
POSITIONのHELPの説明が
(-1,-1) 〜 (1,1) の範囲の位置データです。
ってなてんですけど、どういう事ですか?
まさか float x = 2.0 float y = 3.4 ・・という具合に
(-1,-1) 〜 (1,1) の範囲を超えてはならないという
分けじゃないでしょうに・・・。
0161デフォルトの名無しさん
2010/01/27(水) 17:09:43どこにもそんなこと書いてないけどどこ見てる?
0162デフォルトの名無しさん
2010/01/27(水) 17:27:13英語のHELPにもそう書いてあるし
日本語のMSDNにも↓書いてあります
http://msdn.microsoft.com/ja-jp/library/bb172534(VS.85).aspx
0163デフォルトの名無しさん
2010/01/27(水) 18:08:510164デフォルトの名無しさん
2010/01/27(水) 18:30:12そうですか。
そういえばZバッファか何かがその範囲だったような・・・
画面座標系を出力するデータと言う意味なのかも知れない
・・・とかよく分からんけど自問自答してみます。
0165デフォルトの名無しさん
2010/01/27(水) 20:29:03http://msdn.microsoft.com/en-us/library/ee416464(VS.85).aspx
なんだこりゃ?
0166デフォルトの名無しさん
2010/01/27(水) 20:48:27http://msdn.microsoft.com/ja-jp/library/cc324315.aspx
0167デフォルトの名無しさん
2010/01/28(木) 01:15:42シェーダーって左右の座標反転とかできんのかなあ?
0168デフォルトの名無しさん
2010/01/28(木) 02:04:41D3DXMatrixReflect関数で鏡を境に反転する行列を作る
その行列を混ぜて
面の表裏を逆にして描画
こういうことじゃなくて?
0169デフォルトの名無しさん
2010/01/28(木) 08:57:18水面の反射だともうちょい面倒くさいな。
0170デフォルトの名無しさん
2010/01/28(木) 09:19:43水面ごとにオブジェクトを反転させて描画するの?
大抵のゲームはひとつの高さの水面しかないけど・・・。
0171デフォルトの名無しさん
2010/01/28(木) 09:21:19水面の場合は別のテクスチャに反転モデルを描画する。
面倒くさいから普通は水面は1個しかない。
高さが違う水面が画面内にいくつもあるって状況も普通に考えてレアだろう。
0173デフォルトの名無しさん
2010/01/28(木) 10:51:44これってレイが命中する目標が回転してる時ってどうすればいいの?
メッシュに回転行列かければいいのだろうけど
そんな関数ある?
0174デフォルトの名無しさん
2010/01/28(木) 10:57:440175デフォルトの名無しさん
2010/01/28(木) 11:34:410176デフォルトの名無しさん
2010/01/28(木) 19:52:18反転したモデルをそのまま描画するのもありだと思う最近
水面は透けてるだけ
0177デフォルトの名無しさん
2010/01/28(木) 20:19:58視点と鏡面との反射角によって見えるものが違うからな
ちゃんとやるには計算するしかない
0178デフォルトの名無しさん
2010/01/28(木) 23:26:54実用的な方法が思いつかん・・・
0179デフォルトの名無しさん
2010/01/28(木) 23:41:01基本的には平面に対する反射行列で描画するだけ。
0180デフォルトの名無しさん
2010/01/29(金) 06:38:590181デフォルトの名無しさん
2010/01/29(金) 09:10:300182デフォルトの名無しさん
2010/01/29(金) 09:56:020183デフォルトの名無しさん
2010/01/29(金) 10:00:19別に難しい処理ではないんだけど単純にめんどいね。
0184デフォルトの名無しさん
2010/01/29(金) 10:04:36例えばプールの排水溝を開けば、その上部の水面は引っ張られて沈む。
さらにその周囲は少しずつ角度が緩くなるだけで、トランポリンが変形するのと同じような状態になる。
0185デフォルトの名無しさん
2010/01/29(金) 10:59:28物理現象の再現や検証はCUDAでも使ってやってろ
0186デフォルトの名無しさん
2010/01/29(金) 21:38:39ググルと論理フォントから作成できるものもあるみたいなんですけど、定義されていません。今はもうないのでしょうか?
これ→HRESULT D3DXCreateFont( LPDIRECT3DDEVICE9 pDevice, HFONT hFont, LPD3DXFONT *ppFont );
アンダーライン付きのフォントは作成できなくて、やるとしたら線を引くしかないんでしょうか?
0187デフォルトの名無しさん
2010/01/29(金) 22:50:280188デフォルトの名無しさん
2010/01/30(土) 00:04:34将来、文字にルビを振る機能が欲しくなったら、まあ自前で処理するしかない。
それを思えば線を自前で描くとか楽勝だろ。
0189デフォルトの名無しさん
2010/01/30(土) 01:11:32事前にわかってる文字列であれば、あらかじめ描画済みのテクスチャを用意しておけということですよね。
なるほど、ちょっと考えてみます。
>>188
線を描く場合は、線の位置がフォントによって変わってしまうので、どうしたものかと困っています。
アンダーラインの位置を決定できる方法があればいいんですけど、それはもうスレ違いの話題になってしまいそうですし。
何にしても現状では出来ないということですね。ありがとうございました。
0190デフォルトの名無しさん
2010/01/30(土) 01:16:490191デフォルトの名無しさん
2010/01/30(土) 02:03:33CreateDIBSectionでメモリ上に文字を書いて、
そのビットマップ情報をテクスチャに書き出して
動的に文字列書いてるな。
Windowsに入ってるフォントなら何でも使えるし。
0192デフォルトの名無しさん
2010/01/30(土) 10:28:00そっか、勘違いしてました。
あらかじめ文字列描画済みの画像をリソースなりで用意しておくんじゃなくて
動的にテクスチャへ書き込むんですね。>>187さんもたぶんそういう意味だったんですね。
そもそもフレーム毎にDrawTextするより速度的にもいいような気がしてきました。
サンプルとかで用意してあるテクスチャしか使ったこと無かったので、その発想はなかった
ありがとうございました。
0193デフォルトの名無しさん
2010/01/30(土) 13:01:52| | |
+-+-+
| | |
+-+-+
こんな風に格子上になってる真ん中の頂点法線を求めたいんですけど、
高速に求める方法というのはありますか?
周りの頂点から三角形作って面法線を求めて、各頂点の角度を重みを掛けて
法線を求めているんでですけどもっと高速にする方法はないかなと悩んでます。
0194デフォルトの名無しさん
2010/01/30(土) 13:09:330195デフォルトの名無しさん
2010/01/30(土) 13:27:230196デフォルトの名無しさん
2010/01/30(土) 13:40:04動的に波うってたりするわけ?
0197デフォルトの名無しさん
2010/01/30(土) 18:36:16求めたい頂点の左右と上下の4点から外積で求めるのが普通じゃないかな。
0198デフォルトの名無しさん
2010/01/30(土) 19:08:134点ってそれはつまり・・・何?
0199デフォルトの名無しさん
2010/01/30(土) 20:05:05外積は2ベクトル。
4点あれば2ベクトル作れる。
0200デフォルトの名無しさん
2010/01/30(土) 20:41:170201デフォルトの名無しさん
2010/01/30(土) 20:41:44それって参照する三角形の枚数を減らせってだけでしょ?
0202デフォルトの名無しさん
2010/01/30(土) 21:42:34確かD3DもOpenGLもそれを採用しているはず。
なので、それで正しいと言えるかもしれない。
しかし俺としては、単純に面法線を平均する方法では
各面の大きさが考慮されず、品質的に問題があると思う。
各面3頂点の外積から作った正規化してない法線を
平均化する方が良いものが出来ると思う。
0203デフォルトの名無しさん
2010/01/30(土) 23:00:42説明が全然足りてませんでした。
下図のようにトライアングルストリップで面を作ってます。
幅は均一で高さだけが違います。
+-+-+
|\|\|
+-+-+
|\|\|
+-+-+
本を見ながら作ったので外積とかがよく分かっていません。
中心の頂点に接する面が6面あるので、面法線と角度を重みとして
平均を求めてました。
外積を調べてみます。
0204デフォルトの名無しさん
2010/01/31(日) 00:38:10123
456
789
としたら3角形(452)、(256)、(658)、(854)の面法線の平均にすれば4面でもよさそうな
0205デフォルトの名無しさん
2010/01/31(日) 01:29:40かなりポリゴン多くて1つ1つの法線がテキトーでいいなら
こんなのもテキトーでいいだろ
0206デフォルトの名無しさん
2010/01/31(日) 05:46:381つ言えることは、、規則的な一様な格子であるなら、
三角形ストリップの向き(|\|\| か |/|/| か)によって計算結果が変わるべきではないから、
ストリップ化後の非対称な6つの三角形をベースにして重み付けを考えるのはあまりよろしくない。
0207デフォルトの名無しさん
2010/01/31(日) 06:49:02部分的なやりたいことじゃなくて最終的なやりたいことも書こうぜ
根本的に本当にそのアプローチで良いのかどうかわからんだろ
これは地形を動的に生成したいとかそういう話?
0208デフォルトの名無しさん
2010/01/31(日) 11:15:57>>206
あ〜なるほど。インデックスを利用してできる三角形を
利用することしか考えていませんでした。参考になります。
>>207
まだ買ってないんですが数値地図(標高メッシュ)を読み込んで
描画させようとしています。なので動的といえば動的です。
描画させるためのテストプログラムを書いています。
0209デフォルトの名無しさん
2010/01/31(日) 12:38:32x
-1 0 1
-1 +--+--+
| | |
y 0 +--+--+
| | |
. 1 +--+--+
とおいて、この9点のz座標が
| a b c | | 1 |
z = |1 x x^2| | d e f .| | y |
| g h i | |y^2|
を満たすようなa〜iを求めて、この曲面のx=0,y=0における法線を計算するかな。
0210デフォルトの名無しさん
2010/01/31(日) 12:48:280211デフォルトの名無しさん
2010/01/31(日) 15:55:180212デフォルトの名無しさん
2010/01/31(日) 20:36:30水面演出?
0213デフォルトの名無しさん
2010/02/02(火) 02:04:24トランプゲームをC++を作ってみようと思うのですが、DirectXを使うのとWin32APIを使うのはどちらがいいのでしょうか?
トランプゲームはGUIで実装してオンライン対戦できたらと考えています
0214デフォルトの名無しさん
2010/02/02(火) 02:14:110215デフォルトの名無しさん
2010/02/02(火) 04:32:48基本どっちでも良い
Win32APIのBitBltは低速
だが、更新部分のみ書き換えれば良いカードゲームくらいなら大丈夫、かもしれない
毎フレームフル画面更新したり派手なエフェクトを使いたい場合は
BitBltでは処理落ち確定、DirectX推奨
0216デフォルトの名無しさん
2010/02/02(火) 06:52:21DDBのBitBltはほぼGPU性能そのものなんだが、いったい何が低速なのか、
>>215が無能の間違いなんじゃないか?
0217デフォルトの名無しさん
2010/02/02(火) 10:44:290218デフォルトの名無しさん
2010/02/02(火) 11:06:20win7ではドライバによって違ってくるあたりがややこしいけどなー
0219デフォルトの名無しさん
2010/02/02(火) 12:01:32すでにVistaでもWDDM1.1対応になっているんだが、いったいいつの話をしているんだ?
0220デフォルトの名無しさん
2010/02/02(火) 12:16:06公的な資料で「vistaでもGDIのアクセラレーションが有効になる」と書かれているソースってある?
0221デフォルトの名無しさん
2010/02/02(火) 12:34:310222デフォルトの名無しさん
2010/02/02(火) 12:38:500223デフォルトの名無しさん
2010/02/02(火) 15:04:05そこよく文面変わっているけど、「vistaにWDDM1.1が導入される」と
書かれていたことは一度もないんだよね
0224デフォルトの名無しさん
2010/02/02(火) 16:27:55グダグダ文句をつける意味が分からん。
0225デフォルトの名無しさん
2010/02/02(火) 16:39:14DXGI1.1の機能をサポートするのにWDDM1.1のドライバが必要になるんだから、
あえて言及していないだけだろ。
理解する力がないのか探す力がないのか、どちらにしてもアホとしか言いようがない。
0226デフォルトの名無しさん
2010/02/02(火) 16:53:500227デフォルトの名無しさん
2010/02/02(火) 17:01:41ってほんとに自分で試してから言ってるのか問い詰めたい
0228デフォルトの名無しさん
2010/02/02(火) 18:12:250229デフォルトの名無しさん
2010/02/02(火) 18:27:05技術者の発言とは思えんw
0230デフォルトの名無しさん
2010/02/02(火) 18:39:23そんな態度だからリアルでも使えないやつなんだよ
0231デフォルトの名無しさん
2010/02/02(火) 18:43:590232デフォルトの名無しさん
2010/02/02(火) 18:50:520233デフォルトの名無しさん
2010/02/02(火) 19:43:45>DXGI1.1の機能をサポートするのにWDDM1.1のドライバが必要になるんだから、
WDDM1.0のvistaでもDXGI1.1が動くのはナゼデスカ?
0234デフォルトの名無しさん
2010/02/02(火) 21:55:55だから機能をサポートするのにとわざわざ書いているだろ。
本当に理解力が足りないな。
0235デフォルトの名無しさん
2010/02/02(火) 22:21:13>ナゼデスカ?
とか言い出すんだろうな。もはやどうしようもない。
0236デフォルトの名無しさん
2010/02/02(火) 22:22:260237デフォルトの名無しさん
2010/02/02(火) 22:59:15DXGI1.1 required WDDM1.1みたいに書いたのは>>225なんだけどさ
結局>>225はPlatform Update==WDDM1.1の答えになっていないってことで良いよね
つか、俺が知りたいのはvistaでもGDIのアクセラレーションが機能するかの一点だけだよ
いくらプロファイル取ってもvista上でのそれを確認できんのよ
俺の中じゃwin7のWDDM1.1とvistaのWDDM1.1は別物って疑惑があがってるんだが
不在の証明ができないもんで公的な資料公的な資料ってわけだ
0238デフォルトの名無しさん
2010/02/02(火) 23:05:15DDBの話はとっくの昔に話題になっているし、そのときにきっちり試しているに決まっているだろ。
メインメモリの消費量を監視してDDBがVRAM上に確保されていることも確認した。
VRAMが使われるかはドライバ依存だが、化石のビデオカードでもない限りまずあり得ない。
話が古いだけで今更当たり前のことなんだが、何でそんなに頭が悪いの?
0239デフォルトの名無しさん
2010/02/03(水) 00:42:000240デフォルトの名無しさん
2010/02/03(水) 00:51:52DirectXで作った画面って普通に印刷できないんでしょうか?
BMP画像にしてから印刷するという情報しかないんですが、、、
見当違いなこと言ってたらすみません。
0241デフォルトの名無しさん
2010/02/03(水) 01:01:18いやいや、自爆しているという点でその行は重要だよ。
今更当たり前の話なら、VistaのGDIが問題視されることもなかったのにね・・・
>>240
プログラム上での話なら、プリンタDCに描画する必要があるから
一旦バックバッファを読み込んでGDIオブジェクトに変換する必要はあるよ。
ただ遊んでるゲームのスクショを取りたいだけなら、質問するのはここじゃない。
0242240
2010/02/03(水) 01:15:42今作っているアプリケーションでDirectXを使っているんですが、
印刷すると真っ白で出てきてしまって困っていたところです。
よくわかっていないのですが、GDIオブジェクトというのは、
例えばどういうものでしょうか?
0243デフォルトの名無しさん
2010/02/03(水) 01:34:26「印刷すると」と言っているが、今は実際どんな方法で印刷を試みているの?
0244デフォルトの名無しさん
2010/02/03(水) 07:07:07>今更当たり前の話なら、VistaのGDIが問題視されることもなかったのにね・・・
当たり前のことが当たり前に出来ないから問題になって改善されたんだろう。
まったく流れが読めてないね。
0245240
2010/02/03(水) 07:09:01今は、MFCアプリケーションを作ったときにデフォルトでできる印刷機能で
試みてます。
申し遅れましたが、印刷したいと思っているのは、Direct2Dを使って
描画した画面です。DirextX(3D)では、DCに描き込んでいないので、印刷できない
ことは予測がついたのですが、今回は、Dirext2Dで提供されているDCに
書き込む用の(?)レンダーターゲットを使ってやってみたので、印刷
できるかと期待したのですが、やはり無理でした。
0246デフォルトの名無しさん
2010/02/03(水) 07:13:49もし出来ていないなら印刷云々以前の問題。
0247240
2010/02/03(水) 07:21:12別のサーフェイスにコピーというのがどういうことかよくわかっていない
のですが、MSDNを見る限り、描画した画面を内部で画像として持つことは
できるようです。画像として保存することもできるようです。
0248デフォルトの名無しさん
2010/02/03(水) 11:39:09で、vistaでGDIアクセラレーションは効くようになったんですか?
0249デフォルトの名無しさん
2010/02/03(水) 11:53:140250デフォルトの名無しさん
2010/02/03(水) 12:38:19すでに各所でベンチマークもとられているのに、何でそのぐらい調べないんだろう?
0251デフォルトの名無しさん
2010/02/03(水) 12:53:11(win7でもWDDM1.0ならこの挙動になる)そこから変更加えなきゃいけないはずなんだけど、
グラフィクスドライバの更新だけでGDIアクセラレーションが有効なるってのがひっかかるんですよ
>すでに各所でベンチマークもとられているのに、
あーそれ気になるなぁ。探しても見つからないので教えてくらはい
0252デフォルトの名無しさん
2010/02/03(水) 13:24:27このスレに出ている話すらまともに読んでいないのかよ。
0253デフォルトの名無しさん
2010/02/03(水) 13:29:38WDMが変更されましたって書いてあるの?
0254デフォルトの名無しさん
2010/02/03(水) 13:53:39言っていることがさっきと変わっているぞ。
0255デフォルトの名無しさん
2010/02/03(水) 14:08:45実際にシステム上で対応ドライバがWDDM1.1として認識される。
しかもWDDM1.1が必須のDirect2Dもサポートに含まれている。
つまり1+1が2なのが辞典に載っていないから信用できないということか?
一人で一生やっていればいいんじゃないか。
0256デフォルトの名無しさん
2010/02/03(水) 14:30:42microsoftが公式でさんざん出している。
vistaのアップデートのリリースノートには、
今更理解できない馬鹿などいるはずがないから、わざわざ書かなかったんだろう。
しかし残念ながら馬鹿がいたようだけど。
0257デフォルトの名無しさん
2010/02/03(水) 15:00:21DXGI1.1と何をイコールで結び付けているのかわかりません
>実際にシステム上で対応ドライバがWDDM1.1として認識される。
でもWDMが相変わらずシステムメモリにGDIをリダイレクトしてたら意味無くない?
>しかもWDDM1.1が必須のDirect2Dもサポートに含まれている。
や、別に必須ってわけじゃないよ
>わざわざ書かなかったんだろう。
仮にvistaのWDMがwin7相当に変更されたとすると、
ウィンドウ毎のシステムメモリ抑制までvistaに導入されたことになるよね?
開発者どころか一般向けにも喧伝しそうなものだけど・・・
0258デフォルトの名無しさん
2010/02/03(水) 16:37:250259デフォルトの名無しさん
2010/02/03(水) 16:37:570260デフォルトの名無しさん
2010/02/03(水) 16:59:190261デフォルトの名無しさん
2010/02/03(水) 18:46:07http://msdn.microsoft.com/ja-jp/windows/ee427969.aspx
0262デフォルトの名無しさん
2010/02/03(水) 18:50:47とても実用速度にはならない。
0263デフォルトの名無しさん
2010/02/03(水) 19:19:013DレンダリングするわけでもないのにWARPを使う理由なんてどこにあるの?
GDI互換の部分で割食うだけだよ。
0264デフォルトの名無しさん
2010/02/03(水) 21:08:390265240
2010/02/04(木) 00:02:28そのD2D1DCRenderTargetを使ってやってみたんですけど、できませんでした。。。
0266デフォルトの名無しさん
2010/02/04(木) 01:53:52結論的には、いちおう客観面の問題です。
一般的な、構成要件に故意を含み、かつ、
不法領得の意思を窃盗罪の構成要件に要求する立場を前提とすると、
窃盗罪の”基本犯”の構成要件として
客観的要素・・・(窃取)行為、(占有移転)結果、因果関係
主観的要素・・・故意、不法領得の意思
があるわけですが、その”教唆犯”の構成要件としては、
客観的要素・・・教唆行為、(基本犯の構成要件充足)結果、因果関係
主観的要素・・・(以上の客観的要素に対する)故意
が要求されることになって、教唆犯にとっては、
基本犯の不法領得の意思とは、
教唆犯の結果の一部として、基本犯が不法領得の意思を持つこと、および、
教唆犯の教唆時の故意として、基本犯が不法領得の意思を持つように教唆する故意のあること、
として反映されなければなりません。
0267デフォルトの名無しさん
2010/02/04(木) 01:54:58すいません。
0268デフォルトの名無しさん
2010/02/04(木) 02:12:22GDI云々で論争している人ですね、わかります。
0269デフォルトの名無しさん
2010/02/04(木) 12:08:19現在はProfessionalゲームプログラミング 2ndEditionを買ってみようかと思っているのですが
0270デフォルトの名無しさん
2010/02/04(木) 13:42:540271デフォルトの名無しさん
2010/02/04(木) 18:16:57>>77-78
0272デフォルトの名無しさん
2010/02/04(木) 22:49:40あれこそが初心者入門で有るべきなのに
0273デフォルトの名無しさん
2010/02/05(金) 00:32:160274デフォルトの名無しさん
2010/02/05(金) 00:42:34アレを見て分らないなら素直にそういう本を買えばいい。
DirectX10以降は日本人のライターじゃ技術についていけなくなったのか
知らんけど和書で解説してる本は工学社の1冊しか見たこと無いけどな。
0275デフォルトの名無しさん
2010/02/05(金) 00:43:360276デフォルトの名無しさん
2010/02/05(金) 00:47:09工学社がDirectX10のを置換して11対応にしたやつを出して終わりそうな気がする。
0277デフォルトの名無しさん
2010/02/05(金) 00:47:58「透過テクスチャを貼ったポリゴン」を、forループで50近く描画しています。
1.普通に描画すると透過ポリゴン同士が後ろのを潰しておかしくなる
2.SetRenderState(D3DRS_ZENABLE, FALSE);をすると透過ポリゴン同士は潰しあわないが
結局全てのz値が壊れるせいか、他との描画順序を入れ替えてもアベコベな事になる
となって困っています。
これはforループではなく、全部の描画順序をちゃんと並べて描画していくしか
対処方法は無いのでしょうか?
0278デフォルトの名無しさん
2010/02/05(金) 00:55:380279デフォルトの名無しさん
2010/02/05(金) 01:10:280280デフォルトの名無しさん
2010/02/05(金) 01:36:15フレームごとに毎回ソートするわけでもないし全然問題なしだった。
0281デフォルトの名無しさん
2010/02/05(金) 13:26:130282デフォルトの名無しさん
2010/02/05(金) 18:18:26ありがとうございます。
アルファテストは魅力的ですが、対応してるかの問題が有るのですね。
今回はソートを組んでみようと思います。
ご助言、ありがとうございました
0283デフォルトの名無しさん
2010/02/05(金) 21:20:33一週間ほどかけて独自のフォントレンダラーを作って差し替えた。
10倍以上早くなった。
さようなら、先週までのオレ。
0284デフォルトの名無しさん
2010/02/05(金) 23:18:360285デフォルトの名無しさん
2010/02/05(金) 23:59:34びっくりするくらい差がなくてしょんぼりした記憶あるわ
ソートはなんの最適かもしてないクイックソートだったからさすがに枚数増えると辛かったけど。
いまのCPU、GPUだとどうなのかなー
0286デフォルトの名無しさん
2010/02/06(土) 00:02:37特定の用途でOFFにするんじゃない限りはフィルレートの無駄遣い。
0287デフォルトの名無しさん
2010/02/06(土) 00:11:540288デフォルトの名無しさん
2010/02/06(土) 00:52:080289デフォルトの名無しさん
2010/02/06(土) 01:55:27抜き色が1色とかならいいけど
最初からα値が入ってるテクスチャを描画しようとするときにおかしくならないか?
0290デフォルトの名無しさん
2010/02/06(土) 02:02:110291デフォルトの名無しさん
2010/02/06(土) 02:03:59いや、全然。
0292デフォルトの名無しさん
2010/02/06(土) 07:47:53おまえさんは半透明描画するときにα=0まで描画するのかよって話。
0293デフォルトの名無しさん
2010/02/06(土) 08:02:100294デフォルトの名無しさん
2010/02/06(土) 10:24:45> 特定の用途でOFFにする
ってことになるんじゃね
0295デフォルトの名無しさん
2010/02/07(日) 01:21:22頂点シェーダやピクセルシェーダの関数のようなものの引数や戻り値はどういった仕様なのでしょうか?
描画しようとしている情報が引数に入ってきて、戻り値に変換した値を返すのは分かるのですが、
そもそも取得したり返すことが出来る値がどれだけあるのかや
それらの値を正しく入出力するためにはどのようにすればいいのかが分かりません。
HLSLを解説しているサイトや本は中身の処理の説明はあるのですが上記についてほとんど触れられていませんでした。
0296デフォルトの名無しさん
2010/02/07(日) 02:01:51その質問じゃお前が何が解かってないかすら分かってないということしかわからん
もう少し具体的に聞いてくれ
http://msdn.microsoft.com/ja-jp/library/bb944006(VS.85).aspx
0297デフォルトの名無しさん
2010/02/07(日) 02:20:57http://msdn.microsoft.com/ja-jp/library/cc373165.aspx
俺も
やってみる→あれ?だめ?→やってみる→おお、いけた!→やってみる→あれ?ダメじゃん
の繰り返しでなんとか組んでるや
0298デフォルトの名無しさん
2010/02/07(日) 02:33:01http://msdn.microsoft.com/ja-jp/library/bb509647(VS.85).aspx
0299295
2010/02/07(日) 02:49:19>>296にレスしようと色々書いてたら>>298がずばりな答えでした。
マルチテクスチャのときにはDevice.SetTextureの第一引数に数値をTEXCOORD[n]のnの部分に入れて操作
・・・みたいな形になるんですよね。
じゃあPOSITION1ってどの頂点なんだろ などと調べることが増えたので楽しくなってきました。
0300295
2010/02/07(日) 03:06:05>>299は
ttp://www.mokehehe.com/assari/index.php?HLSL
サンプルの見方が変わったのであれこれ理解出来だしたのはいいものの、
>>297のような状態になりそうでちょっと怖いですね。
でもHLSLはそれでも良さそうな感じもしますし、うーん。
0301デフォルトの名無しさん
2010/02/07(日) 04:40:050302デフォルトの名無しさん
2010/02/07(日) 11:22:25現在、120x40のテクスチャを50枚Create〜Set〜描画してしまっています。
マテリアルの切り替えは非常に重いと聞きますから、これは論外なんだろうと思い
この際、種別に全てのテクスチャを1枚に押し込んでしまおうと思いました。
しかし大きすぎると非対応の場合、動作すらしないと聞き不安なのですが、
テクスチャのサイズの上限はみなさんお幾つ位にしてらっしゃるでしょうか?
1024x1024くらいは全然平気だったりするでしょうか。
0303デフォルトの名無しさん
2010/02/07(日) 11:26:120304デフォルトの名無しさん
2010/02/07(日) 12:16:42dxinfoで調べろ。
でも最終的に、制限は体で覚えるんだ!
0305デフォルトの名無しさん
2010/02/07(日) 12:20:51試行錯誤をやっていいのは、十分に資料がある時と、逆に資料を入手しようがない場合。
確かにHLSLには文法や型や仕様についてちゃんと説明されたサイトがMSDN含めて存在しない。
これ買っとけ。
DirectX9 DirectX Graphics (I・O BOOKS)
0306デフォルトの名無しさん
2010/02/07(日) 14:41:33頂点定義がちゃんと分かってるなら悩むとこでもなんでもない気がするが
0307デフォルトの名無しさん
2010/02/07(日) 15:45:400308デフォルトの名無しさん
2010/02/07(日) 17:29:28プログラミングの基礎としてDirectXが、DirectXの入門としてHLSLが使われている時代ですしね。
0309デフォルトの名無しさん
2010/02/07(日) 18:06:54それは固定シェーダー時代の経験があるから言えること。
いきなりゼロからやったらHLSL上の変数と親プログラム上で
その変数の値を設定してあげるところひとつとっても分かりにくいし、
techniqueの設定変更に関しては固定シェーダー時代の変更用のAPIと区別がつかないし、
まあ迷いどころは沢山あると思うよ。
ネット上で検索してすぐにひかかる日本語のサイトは
あまりに基本的なレベルの説明で終わってて
実用のレベルには届かないことが多いしね。
0310デフォルトの名無しさん
2010/02/07(日) 18:14:56ありがとうございます。
dxinfo こんなありがたいサイト様が有ったんですね。紹介感謝っ orz
2048x2048で開発を進めて行こうと思います。
0311デフォルトの名無しさん
2010/02/07(日) 18:44:26マジで?検索かけてt-potが見つからなかったとはいわせねー
0312デフォルトの名無しさん
2010/02/07(日) 20:06:44基礎ともいえることなので覚えて損はないが、
説明するにも今の時代に合った方法があるんじゃないかと思ってしまう。
C++の時代にアセンブラから説明しているような感覚なのかな。
0313デフォルトの名無しさん
2010/02/07(日) 20:39:40手動で高速にミップマップを生成するのはどうやるのがいいんだろう?
0314デフォルトの名無しさん
2010/02/07(日) 20:45:110315デフォルトの名無しさん
2010/02/07(日) 20:57:550316デフォルトの名無しさん
2010/02/07(日) 21:03:15アレ見て分らなかったら何見てもわかんねぇだろ。
0317デフォルトの名無しさん
2010/02/07(日) 21:24:02そうか?
techniqueに指定できる属性や与えられる値の種類とか、
TextureSampleの属性とか、MSDN調べても載ってないと思うが。
0318デフォルトの名無しさん
2010/02/07(日) 21:28:31この一覧で何が足りないんだ?
http://msdn.microsoft.com/en-us/library/ee418548(VS.85).aspx
techniqueは厳密にはHLSLではなくエフェクトの範疇だな
0319デフォルトの名無しさん
2010/02/07(日) 21:37:43それは既に試したが、遅すぎて使い物にならんかった。
0320デフォルトの名無しさん
2010/02/07(日) 21:40:53そこに気づかないと、情報が足りていないように感じるのかもしれない。
あとHLSLは、コンパイル先のasmシェーダの知識があることを前提としているんで
(例えば、oDepthの仕様など)
やはりこれも気づかないと、躓く原因になるかもしれない。
0321デフォルトの名無しさん
2010/02/07(日) 21:44:40D3DXで遅すぎるんなら、どの道CPUじゃ駄目だろう。
HDRのトーンマッピングの工程が、
GPUでガウスフィルタを使ってミッブマップを作る内容なんで
参考にしてみては?
0322デフォルトの名無しさん
2010/02/07(日) 23:32:43マジで?
HLSLの仕様が変わりすぎて書いてある内容実行できないとかそんなのだったらわかるけど
0323デフォルトの名無しさん
2010/02/08(月) 00:32:54もちろん1から全て学ぶのに越したことはないけど、それは努力とか根性など精神論が通じる状態じゃないよね。
いかに多くの技術に出会い、それを身に付けることが出来るかを考えたらt-potは悩むところ。
前衛的なサイトではないので、あくまで物事に詰まったら見る程度のサポート的存在に感じる。
0324デフォルトの名無しさん
2010/02/08(月) 06:46:430325デフォルトの名無しさん
2010/02/08(月) 13:28:00現在板ポリ1枚1枚をCreateVertexBuffer 〜 DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
としているのですが、DrawPrimitiveは重い処理と聞き削減しようと
D3DPT_TRIANGLELISTを使って板ポリを纏めてしまおうと思いました。
しかしこれを纏めてしまうと、透過テクスチャを描画する場合などに描画順序を操れず、
後ろに有るポリゴンが潰れる気がするのですが・・。潰れるのを避ける手立ては有るでしょうか?
特にエフェクト等、瞬間的に結構な数を描画する場合の負担が気になり、
纏められるなら纏めた方が良いと思うのですが、これは間違っているのでしょうか?
0326デフォルトの名無しさん
2010/02/08(月) 14:31:48DrawIndexedPrimiteveを使って実行直前に並べ替えたら?
0327デフォルトの名無しさん
2010/02/08(月) 14:48:56こんな関数が有ったのですね。早速テストしてみようと思います。
ありがとうございましたっ orz
0328デフォルトの名無しさん
2010/02/08(月) 16:00:50C++でゲーム開発をしようと思っているのですがDirectX SDKのバージョンで悩んでいます。
XP上のみならDirectX9.0c SDKを使えばよさそうですが、どうせならVistaやWindows7にも対応させたいと思っています。
調べると、VistaはDirectX9Exや10に、Windoes7は11?に対応していて、それらにはXPは対応してない模様・・。
こういう場合SDKは何を使用すればいいんでしょう?
たとえば9.0cと10の両方で開発して、プログラム内部でXPとVistaで分岐させるのが正攻法なのでしょうか?
あまり大変そうであればXP一択で行こうと思っています。
もうひとつ質問です。
2Dのゲームを作るつもりなのですがDirectDrawのある7.0までの方が製作しやすいなどあるんでしょうか。
またバージョンを落とすことで何か問題の出る可能性があるなら教えてほしいです。
よろしくおねがいします。
0329328
2010/02/08(月) 16:08:200330デフォルトの名無しさん
2010/02/08(月) 16:27:200331328
2010/02/08(月) 16:38:17うーん知識不足で申し訳ない。
どの機能を使いたいというのはないのですが(というよりまだよく知らない)
出来れば、開発したゲームがXP(や2000)・Vista・Windows7上で問題なく動作するようにしたいのです。
そのためにはSDKのバージョンをどう選べばいいか悩んでいるところです。
0332デフォルトの名無しさん
2010/02/08(月) 16:52:310333デフォルトの名無しさん
2010/02/08(月) 16:54:120334デフォルトの名無しさん
2010/02/08(月) 16:59:00後方互換を取りたいなら下位バージョンに拘束される。
Dx11は下位互換があるのでXPだったら9.0cを使えばそれ以上のバージョンでも動かないことも無い。
0335328
2010/02/08(月) 17:24:14最新版のSDKで9.0c使えばVistaとWindows7上でも動くということですね。
というかXP上で開発するならそれしか選択肢がないということですかね?
ともかく助かりました。
0336デフォルトの名無しさん
2010/02/08(月) 17:35:300337デフォルトの名無しさん
2010/02/08(月) 17:42:31ちょっと考えればわかりそうなものなのに
0338328
2010/02/08(月) 17:49:27確かにそうなのですが動作保障しないものや
Vista対応とわざわざ書いてあるゲームも結構見たので・・。
よく見るとwikiにも書いてありますね。。
SDKはXP上だと10や11は使えない→9.0cを使うしかない。ということですね。
下位互換があるなら7.0はどうなんでしょう。やはり最新版が無難かな。
スレ汚しすみませんでした。ありがとうございました。
0339デフォルトの名無しさん
2010/02/08(月) 17:57:237.0?なぜ使いたいんだ?理由を言えって
あと下位互換?わかってて言ってんの?ふざけてんの?
0340328
2010/02/08(月) 18:06:17なるほど。
理由は最初に書きましたが、2Dゲームを作りたいのでDirectDrawのある7.0までの方が製作しやすいとかあるのかなと(おそらく最新版の方がいいとは思いますが)。
ある程度調べたりはしましたが・・まだ分かってないこともあると思うので勘違いしてそうなら指摘してほしいです。
うーん自分はなにか色々勘違いしているようですが、断じてふざけてはないw 迷惑かけます。すみません。
0341デフォルトの名無しさん
2010/02/08(月) 18:09:40おまえは俺を不快にする事しかできないのか
0343デフォルトの名無しさん
2010/02/08(月) 18:17:430344デフォルトの名無しさん
2010/02/08(月) 18:22:260346デフォルトの名無しさん
2010/02/08(月) 18:24:300347デフォルトの名無しさん
2010/02/08(月) 18:34:200348デフォルトの名無しさん
2010/02/08(月) 18:46:19DirectX使うならまずゲームだろうから覗いて見ては・・どうだろうか・。?
ゲーム用とじゃないとしても、いかにもゲームに使うっぽく聞けばよろし。・・・
0349デフォルトの名無しさん
2010/02/08(月) 19:28:130350デフォルトの名無しさん
2010/02/08(月) 19:45:39何か文字化けしてるだけに見えてきた。
0351デフォルトの名無しさん
2010/02/08(月) 20:01:230352デフォルトの名無しさん
2010/02/08(月) 20:24:44そうやって ひとびとのこえに みみをかたむけるのだ
0353デフォルトの名無しさん
2010/02/08(月) 20:42:520354デフォルトの名無しさん
2010/02/08(月) 21:40:55分かち書きをしてる奴はキチガイ
これは譲れない
0355デフォルトの名無しさん
2010/02/09(火) 00:01:36ありがとう。でも書き込み余り無いからここで質問してみます。
0356デフォルトの名無しさん
2010/02/09(火) 01:02:15DX9ともおさらばさ!!みんな応援してね!!
0357デフォルトの名無しさん
2010/02/09(火) 01:18:060358デフォルトの名無しさん
2010/02/09(火) 01:31:26絶対勝てない勝負をする奴は馬鹿
0359デフォルトの名無しさん
2010/02/09(火) 02:47:37パーサーは提供されているんでシーンルートからどんどん読んでいくだけなんですけど。
最終的にほしいのは頂点バッファとインデックスバッファとマテリアルがメンバの構造体。
LoadMeshFromFile(ファイル名, メッシュ*) {
メッシュ* pMesh = new Mesh();
マテリアル *pMaterial = new Material();
LoadMesh(pMesh){}
LoadMaterial(*pMaterial){}
}
こんなんでいいんですかね??俺は馬鹿ですね
0360デフォルトの名無しさん
2010/02/09(火) 05:41:310361デフォルトの名無しさん
2010/02/09(火) 05:51:06今まで見た中で
DXUTとか↑の方ででてたシェーダー初歩とか一番初心者向けの本は
DirectX9実践プログラミング(WindowsVista対応版)だと思うなぁ
ただしこの本読んでもゲームやらアプリやらが作れるようになるわけではないのであしからず
0362デフォルトの名無しさん
2010/02/09(火) 06:21:44情報量が多すぎてある取捨選程度択できる人じゃないと
いっぱいいっぱいになっちゃうか「ふーん」で終わりになってしまうことが多そう
あと、今俺の持ってるのだと
DXUTの仕様が古くてコールバック関数のパラメーターとかが現行バージョンと違ってた気がする
たいした違いじゃないから修正は容易だけど
0363デフォルトの名無しさん
2010/02/10(水) 00:32:530364デフォルトの名無しさん
2010/02/10(水) 02:54:03どっちが便利か考えれば分かるだろ?
0365デフォルトの名無しさん
2010/02/10(水) 03:13:49じゃあ例えば
シェーダークラスのrender関数の引数にメッシュデータを渡して描画するという感じのほうが便利ですよね
0366デフォルトの名無しさん
2010/02/10(水) 03:17:05普通に審査通ってる機械はまともだよ。まぁ儲かるかどうかは知らんが。
演出が始まった時点で当たり外れは確定してるからボタン操作は無意味だけどね
0367デフォルトの名無しさん
2010/02/10(水) 06:15:08最近の事情はしらんけど
チームの他のメンバーは結構好きな人多かった
0368デフォルトの名無しさん
2010/02/10(水) 07:53:010369デフォルトの名無しさん
2010/02/10(水) 13:45:290370デフォルトの名無しさん
2010/02/10(水) 14:56:46軽く欝だ。
0371デフォルトの名無しさん
2010/02/10(水) 15:42:370372デフォルトの名無しさん
2010/02/11(木) 04:01:37頂点シェーダ矢ピクセルシェーダを直接使うの?
0373デフォルトの名無しさん
2010/02/11(木) 06:35:46どうやって変換すればいいでしょうか?
0374デフォルトの名無しさん
2010/02/11(木) 06:42:25http://marupeke296.com/DXG_No15_AttentionCoordinate.html
0375デフォルトの名無しさん
2010/02/11(木) 06:46:49ありがとう
解決しました 1から引けばいいんですね
0376デフォルトの名無しさん
2010/02/11(木) 11:06:29ttp://www.twin-tail.jp/wiki/index.php?%E3%83%9D%E3%83%AA%E3%82%B4%E3%83%B3%E3%81%B8%E3%81%AE%E3%83%A9%E3%82%A4%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86
このへん見とけばわかるんじゃね
0377デフォルトの名無しさん
2010/02/11(木) 20:04:270378デフォルトの名無しさん
2010/02/11(木) 20:49:39テクスチャに色情報を書き込む
0379デフォルトの名無しさん
2010/02/11(木) 21:16:19378は無視します。
0380デフォルトの名無しさん
2010/02/11(木) 21:19:35色情報を書き込む
以上
アンドゥーとかしたいなら使えないけど
そんなこと書かれてない1行質問じゃこれ以上答えようがないなぁ
0381デフォルトの名無しさん
2010/02/11(木) 21:24:510382デフォルトの名無しさん
2010/02/11(木) 21:35:37回答ありがとうございます。テクスチャに書き込むっていう方法はなんとなくわかっていたのですが
>>381の人がいうようにもっとお手軽な方法があるのではと気になって質問しました。
ただ点を描画するのがやたら面倒な気がしたので。
もしかして、幅×高さ分の四角いポリゴンを貼り付けるなんていうことをやるんじゃないかとか。
0383デフォルトの名無しさん
2010/02/11(木) 21:40:56どうしてもやりたいなら
マウスの位置から逆算してテクスチャに直接色を書き込むか
これだとマウスの移動速度がフレーム更新より速い場合、間が途切れてしまうので
一定間隔ごとにマウス座標を記録して
間をCatmull-Romスプライン曲線とかで自前で計算して間を補完してドットを打つしかない
0384デフォルトの名無しさん
2010/02/11(木) 21:50:580385デフォルトの名無しさん
2010/02/11(木) 22:15:24DirectX11ならComputeShaderもあるしかなり色々いけると思うが。
0386デフォルトの名無しさん
2010/02/11(木) 22:25:210387デフォルトの名無しさん
2010/02/11(木) 22:30:030388デフォルトの名無しさん
2010/02/11(木) 22:36:410389デフォルトの名無しさん
2010/02/12(金) 22:05:400390デフォルトの名無しさん
2010/02/12(金) 22:44:400391デフォルトの名無しさん
2010/02/13(土) 00:06:360392デフォルトの名無しさん
2010/02/13(土) 02:02:000393デフォルトの名無しさん
2010/02/13(土) 08:38:470394386
2010/02/13(土) 11:57:24>386で自分が言いたかったのは、
曲線を描く場合はDirectX、OpenGL、どちらも向いてない
ということ
OpenGL+曲線 でググると何か引っかかるみたいだが…
>>388,392
CS4でOpenGLを取り込んだ事と
ペイントソフトでやるような点や線の描き方の話
この二つに何か関係あるの?
一応言っとくけど389、391、393は自分じゃない
0395デフォルトの名無しさん
2010/02/13(土) 12:58:000396デフォルトの名無しさん
2010/02/13(土) 13:18:360397デフォルトの名無しさん
2010/02/13(土) 13:41:370398デフォルトの名無しさん
2010/02/13(土) 13:59:480399デフォルトの名無しさん
2010/02/13(土) 15:28:530400386
2010/02/13(土) 15:32:04>394では、>388,392氏の話に疑問があったから聞いただけで
別に煽ってるつもりは全く無いんだけど
0401デフォルトの名無しさん
2010/02/13(土) 19:14:54pDevice->SetTransform(D3DTS_WORLD, &matWorld);
におけるマトリックスmatWorldの解釈は次のどれが正しいでしょうか?
(1)World座標系XYZにおいて、3Dモデル(の頂点ベクトル)をX軸まわりに
θradだけ回転させるためのベクトル回転変換行列。
(2)3Dモデルの各頂点座標(ξ,η,ζ)を記述しているξηζ座標系が
ワールド座標系XYZに対してX軸回りにθradだけ回転している(3Dモ
デルもX軸回りにθradだけ回転している)。matworldは3Dモデルの
各頂点座標(ξ,η,ζ)を(X,Y,Z)座標に変換する座標変換行列。
(3)どちらの解釈でもいい。
(4)どちらの解釈も正しくない。
ベクトルの回転変換行列であろうと座標変換行列であろうと両者の要素の中身
は一致するから(3)でいい気がしますが、回転、移動操作に対応した行列
乗算の順序が右側にかけていくか、左側にかけていくかの違いが生じるのでは
ないか? という気もします。
0402デフォルトの名無しさん
2010/02/13(土) 20:20:51前二つに単位行列を入れておき、D3DTS_WORLDに全部自前で計算した結果だけ入れる使い方もあった。
0403デフォルトの名無しさん
2010/02/13(土) 20:32:150404デフォルトの名無しさん
2010/02/13(土) 21:31:10結局なにが聞きたいのかよくわからないな
そもそも3Dモデルを回転させるための行列と考えてるのが良くないんじゃ?
全ての頂点座標がワールド原点を中心に回転してるから
結果としてモデルが回転してるように見えてるだけ
当然回転行列をかける前の行列に移動オフセット値が入ってれば結果が変わる
0405デフォルトの名無しさん
2010/02/13(土) 22:14:54本題とはちょっとずれるけど
ココ見るとワールド行列とは何ぞやという理解が深まるよ
行列の中身が何を示してるのか分かればそんな質問でなくなるはず
http://marupeke296.com/DXG_No39_WorldMatrixInformation.html
0406デフォルトの名無しさん
2010/02/13(土) 22:21:25回答者として失格ですね。
ああ質問して損したなあ
0407デフォルトの名無しさん
2010/02/13(土) 22:31:12赤の他人なわけですし
ダメモトで質問し、もし良回答が得られれば儲けもの、くらいの気持ちでいなされ
0408デフォルトの名無しさん
2010/02/13(土) 22:32:160409デフォルトの名無しさん
2010/02/13(土) 22:34:26なんでム板ってIDでないの?
0410デフォルトの名無しさん
2010/02/13(土) 22:44:07仕様に関してはドキュメントを見れば?
解釈がどうのこうの書いてあるのか
俺は知らないけどね
0411デフォルトの名無しさん
2010/02/13(土) 23:24:07>>405
ありがとう。でも、その程度のことはわかった上で質問してます。
0412デフォルトの名無しさん
2010/02/13(土) 23:34:56>行列乗算の順序が右側にかけていくか、左側にかけていくかの違い
どうも、単純に行列積の理解が足りていないだけのような。
0413デフォルトの名無しさん
2010/02/13(土) 23:36:29ここはクズの集まりだから質問内容さえ理解できないということだろう
あきらめて他へ行った方が手っ取り早く的確な回答を得られる
0414デフォルトの名無しさん
2010/02/13(土) 23:46:44かなり痛い子がいるというか
>>411とか文章読んでてかなり恥ずかしいわw
これはまさしく厨二病
0415デフォルトの名無しさん
2010/02/13(土) 23:49:33とりあえず、アイちゃんの脳に
テレパシーで回答すると、
>>401
(3)でいい。
>回転、移動操作に対応した行列
>乗算の順序が右側にかけていくか、左側にかけていくかの違いが生じるのでは
>ないか? という気もします。
これは、いまいち意味不明だが
右から掛けるか、左から掛けるかは、
転置行列か否かによる。
OpenGLは右から左、
Direct3Dは転置なんで左から右
0416デフォルトの名無しさん
2010/02/13(土) 23:54:09勝手に納得してお引き取り願えるパターンじゃね?
0417デフォルトの名無しさん
2010/02/13(土) 23:56:100418デフォルトの名無しさん
2010/02/14(日) 00:06:43色々規格があってよくわからん・・・・
0419デフォルトの名無しさん
2010/02/14(日) 00:16:420420デフォルトの名無しさん
2010/02/14(日) 00:21:180421デフォルトの名無しさん
2010/02/14(日) 00:22:120422デフォルトの名無しさん
2010/02/14(日) 00:43:240423デフォルトの名無しさん
2010/02/14(日) 01:19:07それに対応するシェーダー(エフェクト)ってあらかじめ用意していく必要がありますよね?
そこらへんのクラス設計ってどうすべきか知りたいです。
lambertシェーダー(スキンなし)、lambertシェーダー(スキンあり)、lambertシェーダー(法線マップ有り)
こんな感じで何個も用意しておくんですかね?
0424デフォルトの名無しさん
2010/02/14(日) 01:27:51・エフェクトファイルを複数用意する
・一つのエフェクトファイルに複数のテクニックを詰め込んで切りかえる
・一つのテクニックでパスで効果を分けて切り替える
状況に応じて使いやすいほうで
0425デフォルトの名無しさん
2010/02/14(日) 01:48:00TutorialやText3Dでは50fpsくらいしか出ないのにPIXGameDebuggingだと120fpsくらい出ます。
(何もしないプログラムの方が早いと思ってましたがそうではないんですね^^
同じbeginnerなんですが、次に学ぶサンプルとしてはハードルが高い気がします。
早いDirectXプログラムを作るためのキーワード、参考書など教えていただけないでしょうか
0426デフォルトの名無しさん
2010/02/14(日) 02:08:10ファイルフォーマットとAPIどっちを聞いてるの?
0427デフォルトの名無しさん
2010/02/14(日) 02:45:26三日探し回ったんですが、Runtimeとか9以外はまったく見つかりませんでした。
だれか直接ダウンロードできるページのURLを貼ってください。
どうかよろしくお願いしますm(__)m
0428デフォルトの名無しさん
2010/02/14(日) 02:54:47文章からみるに座標系が全く理解できてない
ローカル座標とワールド座標ってのを知らないとダメ
後はキーワードで勝手にググレ
0429デフォルトの名無しさん
2010/02/14(日) 03:26:42"10の最新版"が必要ってのなら判らないけど
http://msdn.microsoft.com/ja-jp/directx/aa937788.aspx
ここの最新版なら9,10,11のサンプルがあったよ
vistaでないと動かない気もするけど…
0430デフォルトの名無しさん
2010/02/14(日) 03:53:23ありがとうございます・・・?
次はもっとはやくお願いしますm(__)m
0431デフォルトの名無しさん
2010/02/14(日) 04:39:460432デフォルトの名無しさん
2010/02/14(日) 09:42:170433デフォルトの名無しさん
2010/02/14(日) 10:09:54回答ありがとう。
directXは(行列*列ベクトル)の演算と違って(行ベクトル*行列)の演算
だから行列を転置にしなければならない。したがって、行列の積ではかける
順序が逆になる、というのはあなたの指摘どおりだ。
ところがベクトルを回転させる回転変換行列か、座標軸(もの指し)を
回転させた座標系間の座標変換行列かによっても乗算の順序は違う。
>>412 >> 414 >> 428
わかりもしないくせに偉そうなこと言うな雑魚! ひっこんでろ
>>416
お前も黙ってろ。
(1)の解釈で納得していたんだが、(2)の解釈でないと説明できない
問題が発生したんで(と、その時は思ってた)。
DirectXでは回転、移動の操作順ごとに行列を右側にかけていくよう
だから(そして転置行列の積だから)、(1)の解釈でいいようだ。
ただ、DirectXの関数が(1)(2)のどちらの考えにたって実装されているのか
確認したかったから聞いたのに >>410 の馬鹿が仕様を調べれば、とアホな
回答をしているのには閉口した。そんな事しか言えないなら黙ってろや。
わかっている人からのアドバイスには感謝するが、アホ相手するのも
面倒だからもう書かない。
アホはまた何か書くだろが、相手しない。
0434デフォルトの名無しさん
2010/02/14(日) 10:17:47もう少し言い方を考えなよ。
そんなんじゃ敵を増やすだけじゃん。
行列に関しては「DirectXだから」というわけではない。
別にOpenGLだってそういう風に行列ライブラリ作ればそうなるし。
Vector4本で表現できて扱いやすいから行列があの形になってるんだよ。
右から左って直感的にも逆になって分りづらいし。
シェーダーに渡すときは高速化の都合上転置が必要になるけど。
dotじゃなくmul/madで同じ命令数できるからまぁ気分の問題だろうな。
0435デフォルトの名無しさん
2010/02/14(日) 10:20:090436デフォルトの名無しさん
2010/02/14(日) 10:20:18わかってないのお前だけだと思うよw
入門書の一冊でも買えばいいのにごたごたごたごたこんなところで
恥かいてえらそうにしてる人間みるのはさすがに見苦しいな
ナニがアホの相手だ
SDKについてくる単純なモデルも表示できねぇくせに(爆笑w)えらそうなこというなw
ていうかお前、人のいうこと素直に聞けないならPGなんてさっさとやめろよ
まったく見込みねぇからw
座標系も理解できない奴にナニをどう教えろってんだ
このすっとこどっこい
0437デフォルトの名無しさん
2010/02/14(日) 10:24:13TutorialやText3Dがfps低いのは垂直同期がオンになっているから
0438デフォルトの名無しさん
2010/02/14(日) 10:32:20まじでドキュメント見ろw
0439デフォルトの名無しさん
2010/02/14(日) 10:38:42これは譲れない
0440デフォルトの名無しさん
2010/02/14(日) 10:42:50その上でアレが分らないコレが分らないつーのが順番として正しいんだが・・・。
0441427 ◆BnFNx9vEUQRt
2010/02/14(日) 12:02:32ありがとうございました。IDみてもらえばわかりますが、
嫌味なレスをしたのは私ではありません。荒らしのようです。
当方はOSはvista homepremiumを使っているので起動させることができそうです。
サンプルということは、DirectX10の最新版はないのでしょうか?
それならばどうりで私のような素人が探してもわからないはずです(笑)
0442427 ◆BnFNx9vEUQRt
2010/02/14(日) 12:04:080443デフォルトの名無しさん
2010/02/14(日) 14:51:56何を探しているの?
プログラム板で聞いてるんだし、SDKだよね?
0444デフォルトの名無しさん
2010/02/14(日) 15:22:22何を探しているの!?
0445デフォルトの名無しさん
2010/02/14(日) 15:32:22最新版に9、10、11のサンプルがあるってことは
最新版に9、10、11のライブラリがあるってこと
DirectX 9、10が最後に更新されたバージョンとかはしらね
0446デフォルトの名無しさん
2010/02/14(日) 18:47:31APIです。
以前はDirectShowにmp3突っ込んで鳴らしてました。
一応、鳴ってるのでこれで良いのかもしれませんが・・・。
0447デフォルトの名無しさん
2010/02/14(日) 19:31:26DirectX10からでないと利用できない。
0448デフォルトの名無しさん
2010/02/15(月) 08:13:520449デフォルトの名無しさん
2010/02/15(月) 08:25:240450427 ◆BnFNx9vEUQRt
2010/02/15(月) 23:36:57>>424
あ、いや、開発用のSDKではなく普通にゲームをプレイするようの
Directx10です。よろしくお願いします。
0451デフォルトの名無しさん
2010/02/15(月) 23:51:02ごめん意味わかんない。
何がしたいの?
0452デフォルトの名無しさん
2010/02/16(火) 00:19:480453デフォルトの名無しさん
2010/02/16(火) 00:24:27http://www.microsoft.com/downloads/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&DisplayLang=ja
February 2010
0454デフォルトの名無しさん
2010/02/16(火) 00:33:31どうも板ポリを描画するのが上手く行かないです。
症状としては、
マウスを動かしたりキーを押したりすると消える。
データをアップしたので、
誰かアドバイスをいただけると助かります。
http://uproda55.2ch-library.com/004942.zip.shtml
pass:dx9
0455デフォルトの名無しさん
2010/02/16(火) 01:06:320456デフォルトの名無しさん
2010/02/16(火) 04:08:01荒らしが即レスつけてるのか分からんな
0457454 ◆8VxhNQQKaU
2010/02/16(火) 06:04:45自己解決したようにとられてるっぽいので念のため。
0458デフォルトの名無しさん
2010/02/16(火) 06:15:110459デフォルトの名無しさん
2010/02/16(火) 06:42:58コンパイル通らん
entry.h(37) : fatal error C1083: include ファイルを開けません。'M3D.h': No such file or directory
0460デフォルトの名無しさん
2010/02/16(火) 06:44:010461デフォルトの名無しさん
2010/02/16(火) 07:17:38喧嘩売ってんだろ
0462デフォルトの名無しさん
2010/02/16(火) 08:09:29バグとは関係ないところだとは思うけど
CheckMsg関数は↓のように書き直すべき
メッセージが空になって無い状態でゲームの処理をするのは
行儀が悪い
BOOL CheckMsg()
{
static MSG msg;
while (msg.message != WM_QUIT)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) != 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
return TRUE;
}
}
return FALSE;
}
確かに、自分でデバッグはするものだと思います。
アップしたデータの"VertexRaster.h"と同じ方法で描画する形式なのに
正しく動かなくて、
自分なりにソースを読み返して怪しいところは書き換えてみたり、
調べてみたつもりなんですが何がいけないのかわからずじまいで、
頼ってしまいました。すいません。
>>459
entry.h 37行目 削除でお願いします。
協力してくださったのに、不手際があってすいません。
よろしければお願いします。
>>461
気に触れてすいませんでした。
レスありがとうございます。
以後気をつけます。ご指摘ありがとうございます。
0465デフォルトの名無しさん
2010/02/16(火) 16:46:08最近のゆとりは自分で解決する努力をほんとしないよな。
0466デフォルトの名無しさん
2010/02/16(火) 19:08:52バックバッファは320x240や640x480などといったサイズで問題があったとは聞いたことがありません。
メモリ上は2のn乗に収まる四角形になっているのかは分かりませんが
そうだとすればCreateTextureが融通が利かなかっただけなのでしょうか?
ブラーをかけようとしてレンダリングターゲット(テクスチャ)を用意したのはいいものの、
バックバッファは16:9でテクスチャは1:1で自分で設定してたからえらいことに(´・ω・`)
0467デフォルトの名無しさん
2010/02/16(火) 19:41:57その間に回答よろしくです(´・ω・`)
0468デフォルトの名無しさん
2010/02/16(火) 19:50:26回答まだでしょうか(´・ω・`)
0469デフォルトの名無しさん
2010/02/16(火) 19:54:430470デフォルトの名無しさん
2010/02/16(火) 20:06:420471466
2010/02/16(火) 20:39:49ん?テクスチャは四角形だけどもヘッダー情報があるから見た目以上にメモリを食っているという話でしょうか。
ということはバックバッファを確保する際のヘッダーとテクスチャのヘッダーが違うため
バックバッファは自由にサイズを決めれてもテクスチャが2のn乗のサイズ出ないとだめ・・・ということに?
0472デフォルトの名無しさん
2010/02/16(火) 20:44:18なにが聞きたいのかわからねぇよ
0473デフォルトの名無しさん
2010/02/16(火) 20:46:45"2のn乗"は二次元じゃないぞっと。
0474デフォルトの名無しさん
2010/02/16(火) 20:53:01テクスチャのレンダリングターゲットに描画するときに
バックバッファと同じ射影行列を使ったから本体とブラーが一致しなかったってことじゃね?
テクスチャに描画するときはアス比を1にして射影行列を作らないと
0475466
2010/02/16(火) 21:08:04・テクスチャが2のn乗の四角形でないとダメだった理由。
・バックバッファはそういった制限がなかった(問題になるほど取り上げられていない)理由。
・上記2点より、違いは何か。また、後者で起きなかった問題が前者で起こらないように対応が出来なかった理由。
>>473
サイズが1辺の話かバイトの話かってこと?・・余計に分からないです。
>>474
同じ比率にしなかったのはテクスチャは2のn乗という癖が出ていたためで、
私のPCでは2のn乗でなくても問題ないので大丈夫でした。
そこがどうこうではなく、そもそもバックバッファが2のn乗のサイズにする必要がなければ
元々テクスチャも2のn乗のサイズでなくても大丈夫なのでは?と思ってしまい、質問させていただきました。
0476デフォルトの名無しさん
2010/02/16(火) 21:32:22の話で、oggがベターというのを聞いて
ライブラリでデコード→メモリ上に展開→セカンダリバッファに入れて再生
というのは出来たのですが、
ゲームつくろー!
ttp://marupeke296.com/GameMain.html
というサイトで紹介しているような、
スレッドをもう一つ生成→ストリーム再生
という方法が難しく、理解できていません
こういうストリーム再生のコードは自分で書くのが普通ですか?
それともなにか便利なライブラリをつかってるのが主流なのですか?
0477デフォルトの名無しさん
2010/02/16(火) 21:47:35>320x240や640x480など
このサイズが2のn乗に反してると思う理由はなんなのよ。
0478デフォルトの名無しさん
2010/02/16(火) 21:52:29なぜ2のn乗が効率的に優れていたのかは自分でラスタライザーからエンジンを書けば分る。
0479デフォルトの名無しさん
2010/02/16(火) 21:53:35そういうことが聞きたいならここで聞くよりググったほうが速いだろ
・テクスチャが2のn乗の四角形
ハードの仕様
メモリの帯域幅の都合上2のn乗でしかブロック転送できなかった
現在は制限が無いとはいえ一番高速に動作するのは2のn乗
いまだって見かけ上は2のn乗でなくても内部的には余分に2のn乗で確保されてるビデオカードもある
・バックバッファはそういった制限がなかった
制限がなかったわけではなくむしろ逆
ハードのドライバ能力で許可されたサイズのバッファしか作れなかった
つまり320x240*8itや640x480*8bit等のサイズでしか作れなかったというのが正しい
いまみたいに任意に作れるようになったのも最近だ
0480デフォルトの名無しさん
2010/02/16(火) 22:16:57LPDIRECT3DTEXTURE9 型で作ったテクスチャを今まではそのまま名前指定で作っていました。
そこでテクスチャの生成は1つの関数を作って纏めようと思いました。
外部に関数を作り、そこにLPDIRECT3DTEXTURE9 型のポインタを送り
CreateTextureの第7引数に送る所までは良かったのですが、
いざLockRectして書き込もうとすると、ピリオドでもアロー演算子でも
「左側はクラス、構造体、共用体でなければなりません or ジェネリック型へのポインタではありません。」
等エラーが出てしまいます。
これはテクスチャを扱うイロハを理解してないからなのでしょうか?
それとも私のC++の理解が曖昧なのが原因なのでしょうか。
何かご指摘を頂けると幸いです。
0481466
2010/02/16(火) 22:16:59バックバッファとテクスチャってそこまで大きな違いがあったんですね。
テクスチャのほうばかり気にしていましたが、いつの間にかそこまで気にする必要のない時代になっていたり
バックバッファのほうが制限がきつかったなど知らなかった情報を得られて良かったです。
0482デフォルトの名無しさん
2010/02/16(火) 22:26:01C++どころかC言語の知識すら怪しい
その外部とやらはLPDIRECT3DTEXTURE9型が何であるのがちゃんと定義されてるのか?
0483デフォルトの名無しさん
2010/02/16(火) 22:28:28いずれにしろ気にしなくていいし知ったところで今となっては使い道のない知識だけどな。
ここ数年のハードウェアならINTEL製でもない限り
サイズが変だからってそれが原因で速度が落ちるような事はない。
処理速度をきにする状況ならもっと他にやるべき事がある。
0484デフォルトの名無しさん
2010/02/16(火) 22:44:18ありがとうございます。
むむ・・・。LPDIRECT3DTEXTURE9型で作ったテクスチャを、名前で普通に指定すれば正しく動作するのですが、
アンバサンドを付けて参照送りし、LPDIRECT3DTEXTURE9*で受け取って扱うとLockRectでエラーが出るので・・
扱う部分をポインタに変える以外は一切手を加えてないのですが・・うーん orz
とりあえずポインタを使うのを恐がり過ぎて何か勘違いも有りそうですし、再勉強が必要そうですね;
0485デフォルトの名無しさん
2010/02/16(火) 23:13:09そゆことか
LPDIRECT3DTEXTURE9はそれ自体がポインタ型なので
これを参照渡しした場合はダブルポインタ扱いになる
つまり参照先であつかうには
LPDIRECT3DTEXTURE9* texなら
(*tex)->LockRect
0486デフォルトの名無しさん
2010/02/16(火) 23:14:33MyCreateTexture(LPDIRECT3DTEXTURE9* texture) {
CreateTexture(256,256,0,0,D3DFMT_X8R8G8B8,D3DPOOL_DEFAULT,texture,NULL);
*texture->LockRect(); //これ?
}
こういうこと?
0487デフォルトの名無しさん
2010/02/16(火) 23:20:170488デフォルトの名無しさん
2010/02/16(火) 23:22:560489デフォルトの名無しさん
2010/02/17(水) 00:24:25再生までできてるならあともうチョイ!
ようはDirectSoundにイベントを設定してイベントがシグナルになったらデータの続きを読めばいいだけ
うまく設計しとけばogg以外のフォーマットも読み込み処理だけ多態で変えればストリーミングの仕組みが使えるから便利よ
0490デフォルトの名無しさん
2010/02/17(水) 00:39:05そっかぁ・・・
自作してる人もいるってことで励みにもなった、ありがとう
もし作るときに参考にしたサイトがあれば教えてほしいです
難しいけど自作するとやっぱ勉強になりそうなんでがんばってみまする
0491デフォルトの名無しさん
2010/02/17(水) 01:17:22イイヨ〜
「Ogg Vorbisを楽しむ」でググりなされ
0492デフォルトの名無しさん
2010/02/17(水) 10:06:45XAudio使えばストリームの機構も簡単に作れるよ。
0493デフォルトの名無しさん
2010/02/17(水) 12:06:25サンクス!
参考にしますぜ!
ストリーミングについてはゲームつくろー!
を参考にしたんですか?
0494デフォルトの名無しさん
2010/02/17(水) 12:08:40なるほど!
こういう方法は楽そうでいいですね!
これも検討してみまする
ありがとう
0495デフォルトの名無しさん
2010/02/17(水) 12:24:54DirectPlayが廃止されていることを知りました。
この場合Winsockを使用するのがベストなのでしょうか?
それとこの本がWinsockを学ぶのに良いと思ったのですがどうでしょうか?
結構古い本でDirectPlayのことが書いてあるのが引っかかりますが。
ttp://store.shopping.yahoo.co.jp/7andy/31608673.html
0496デフォルトの名無しさん
2010/02/17(水) 12:32:200497デフォルトの名無しさん
2010/02/17(水) 13:51:500498デフォルトの名無しさん
2010/02/17(水) 16:49:27あれってどういう仕組でやってるんでしょう?
1 描画するものを一つ一つ解像度に合わせて位置や大きさを調整する
2 テクスチャにレンダリングして、解像度に合わせてテクスチャを拡大表示する
3 その他
0499デフォルトの名無しさん
2010/02/17(水) 17:48:52どんなゲームを想定してるのか知らないが
1はどんだけ手間だよだし
2は解像度上げる意味がない
2Dにしろ3Dにしろ普通は解像度あげるとより外側まで描画されるように作るんじゃねーの?
0500デフォルトの名無しさん
2010/02/17(水) 18:36:33基本的に1だね。
サイズより位置、特に配置の仕方さえ注意していれば特に問題ないはず。
面倒なら最悪表示座標を倍掛けするだけで、当たり判定とかそのままで使える。
3Dなら何の問題もないけどね。
高解像度設定で文字が読みづらいというゲームもあるけど、これも対応が面倒なら放置。
0501デフォルトの名無しさん
2010/02/17(水) 18:36:450502デフォルトの名無しさん
2010/02/17(水) 18:37:27なにか根本的な勘違いしてる
3Dだったら
同じ射影行列で描画してる限り、いくらビューポートが広がっても
描画するピクセル数が増えるだけで描画される範囲は一緒だ
2Dでも正射影で基本のサイズに固定しておけばビューポートのサイズを気にする必要はない
画面サイズにあわせて自動で拡大縮小される
2Dで座標変換済み頂点で書いてたらちょっと面倒かもね
画面サイズによって再配置や大きさ調整のしくみを仕込んどく必要がある
0503498
2010/02/17(水) 20:03:27ありがとうございます。
0504デフォルトの名無しさん
2010/02/18(木) 03:53:17ありがとうございます。
なるほど、ダブルポインタになってたんですね。勉強すべきはそこ と。
感謝っ orz
0505デフォルトの名無しさん
2010/02/18(木) 11:28:35ポリゴン作成には各々の頂点の座標・色・テクスチャの座標が必要ですよね。
普通、最初に作成しておいたポリゴンを行列で変換する事で画像の移動等を行う、と
どこかで読んだのですがいわゆるテクスチャアニメーションをさせたい場合は
やはり毎回頂点作成を行わなければならないのでしょうか。
0506デフォルトの名無しさん
2010/02/18(木) 11:34:59やりたいようにやれ。
0507デフォルトの名無しさん
2010/02/18(木) 11:51:122Dでそんな事に悩むのはあほかもしれませんが、
取り合えずUVトランスフォームを調べてきます。
0508デフォルトの名無しさん
2010/02/18(木) 12:17:59ローカル変数はちゃんと初期化しないとダメだよ
ZeroMemory(&mViewPort, sizeof(D3DXMATRIX));
0509デフォルトの名無しさん
2010/02/18(木) 13:27:45単位化するのが普通じゃね。
0510デフォルトの名無しさん
2010/02/18(木) 13:33:080511デフォルトの名無しさん
2010/02/18(木) 14:09:530512デフォルトの名無しさん
2010/02/18(木) 14:22:120513デフォルトの名無しさん
2010/02/18(木) 21:46:150514デフォルトの名無しさん
2010/02/18(木) 23:52:28D3DFMT_A8R8G8B8 と D3DFMT_X8R8G8B8 にはどういう差が有るのでしょうか。
透過色を作りたいのですが、予期しない透過が起きたりで混乱しています。
0515デフォルトの名無しさん
2010/02/19(金) 01:03:35If the source texture contains fewer than four components, defaults are placed in the missing components.
とある
D3DFMT_X8R8G8B8ではα値は無視される
0516デフォルトの名無しさん
2010/02/19(金) 01:10:181000
0100
0010
0001
だから
D3DXMatrixIdentity()
で初期化がいんでねぇの?
0517デフォルトの名無しさん
2010/02/19(金) 01:16:43ありがとうございます。 X8R8G8B8はそもそも透過が無理だったんですね。
ついでにピクセル毎に転送するビット数の記述も3と4でミスってた所為で可笑しな事になってた様です。
解決できました。ありがとうございましたー orz
0518デフォルトの名無しさん
2010/02/19(金) 02:10:420519デフォルトの名無しさん
2010/02/19(金) 02:53:420520デフォルトの名無しさん
2010/02/19(金) 12:58:19WinMainCRTStartupでもサイズ全然増えないぞ
0521デフォルトの名無しさん
2010/02/19(金) 13:04:490522デフォルトの名無しさん
2010/02/19(金) 13:23:330523デフォルトの名無しさん
2010/02/19(金) 15:50:03ゼロで埋めていいのか保障ないでしょ
こんなの常識だよ、いまどき保育園児だって知ってるよ
0524デフォルトの名無しさん
2010/02/19(金) 16:05:560525デフォルトの名無しさん
2010/02/19(金) 16:38:140526デフォルトの名無しさん
2010/02/19(金) 16:44:40D3DXMATRIXは構造体で仮想関数も持っていない。
ゼロで埋めることは問題ないが、意味がない。
幼稚園児とか言っている奴は、自分の意見の補強に実情のない例を出す馬鹿。
以上。
0527デフォルトの名無しさん
2010/02/19(金) 16:49:07スルーしろって
0528デフォルトの名無しさん
2010/02/19(金) 16:58:210529デフォルトの名無しさん
2010/02/19(金) 17:00:53C++の基礎中の基礎。
0530デフォルトの名無しさん
2010/02/19(金) 17:07:24>>511
0531デフォルトの名無しさん
2010/02/19(金) 17:50:01問題ないからという理由で、取りうる最悪の選択するのはどうか
メモリをクリアする為のゼロと、浮動小数点数のゼロは違うもの
言ってもわからなさそうだが
0532デフォルトの名無しさん
2010/02/19(金) 18:51:31struct Bone {
int id;
Bone *firstChild;
Bone *sibling;
D3DXMATRIX initMat;
Bone() : id(), firstChild(), sibling() {
D3DXMatrixIdentity(&initMat);
}
};
質問なんですけど、このBone() : id()〜 { } はどういう意味ですか?
名称も分からないのでググりようも無いです。
0533デフォルトの名無しさん
2010/02/19(金) 18:54:22コンストラクタ初期化子じゃないの?
0534デフォルトの名無しさん
2010/02/19(金) 21:23:10C++の入門書を読むのが良いと思う。
0535デフォルトの名無しさん
2010/02/19(金) 21:49:430536デフォルトの名無しさん
2010/02/19(金) 21:49:57いろいろ試行錯誤して悩みましたが、
おかげでoggストリーム再生ができました!
いろいろまだ整えないといけない部分がありますが、がんばった甲斐がありました
改めて、
ありがとう
マルチスレッドはいろいろ考えなければならないことが多いようなので
しっかり調べて整えていきまする
0537デフォルトの名無しさん
2010/02/20(土) 04:37:40デフォルトコンストラクタなら書かなくても同じなのに、
何か中途半端な言語ヲタっぽい気持ち悪いコードだな。
0538デフォルトの名無しさん
2010/02/20(土) 05:22:110539デフォルトの名無しさん
2010/02/20(土) 05:42:390540デフォルトの名無しさん
2010/02/20(土) 06:17:08>>537は、id(), firstChild(), sibling() のように
引数なしでデフォルトコンストラクタを明示的に呼んでも無意味だろっていう意味ね。
初期化子を書かなくてもデフォルトコンストラクタは勝手に呼ばれるんだから。
(つうか、この3つは整数とポインタだからデフォルトコンストラクタも存在しないか。)
0541デフォルトの名無しさん
2010/02/20(土) 06:55:350542デフォルトの名無しさん
2010/02/20(土) 08:39:02id(), firstChild(), sibling() を省くと変数が初期化されない旨の警告が出る
0543デフォルトの名無しさん
2010/02/20(土) 09:08:09普通のコンパイラならそうなってる
0545デフォルトの名無しさん
2010/02/20(土) 09:50:010546デフォルトの名無しさん
2010/02/20(土) 09:50:56逆に id() と書くと id はどう初期化されるの?
0547デフォルトの名無しさん
2010/02/20(土) 10:21:33id()、firstChild()、sibling()は0で初期化される
もしbool型がならfalseになる
テンプレートで役に立つ場面がある
0548デフォルトの名無しさん
2010/02/20(土) 10:56:200549デフォルトの名無しさん
2010/02/20(土) 11:01:320550デフォルトの名無しさん
2010/02/20(土) 11:07:230551デフォルトの名無しさん
2010/02/20(土) 11:37:01そんなんじゃバグ取りなんて出来ないよ
#pragma comment( lib, "dxerr9.lib" )
#include <dxerr9.h>
HRESULT hr = device->CreateVertexBuffer( /* 省略 */ );
if( FAILED( hr ) )
{
DXTRACE_ERR( TEXT("IDirect3DDevice9::CreateVertexBuffer"), hr );
/* 省略 */
}
こう書いておけばデバッグ時に何処で何がどういう理由で失敗したのかが
デバッグウィンドウに出力されるぞ
0552デフォルトの名無しさん
2010/02/20(土) 11:37:26勉強になったわ。
0553デフォルトの名無しさん
2010/02/20(土) 11:41:160554デフォルトの名無しさん
2010/02/20(土) 21:52:18リソースの部分は「XFILE DISCARDABLE "test.x"」っていう書き方で特に問題ないですよね?
どうしてもD3DXLoadMeshFromXでエラーが出てしまう…
0555デフォルトの名無しさん
2010/02/20(土) 22:10:26何故問題がないと思えるのか、全く理解できない。
0556デフォルトの名無しさん
2010/02/20(土) 22:32:00SizeofResource関数 +
LoadResource関数 +
LockResource関数 +
D3DXLoadMeshFromXInMemory関数
もしくは
D3DXLoadMeshFromXResource関数
を使えばいいよ
0557デフォルトの名無しさん
2010/02/20(土) 22:53:18ファイルの先頭からnバイト進んだところからは元のJPEGやDDSのデータです。
D3DXCreateTextureFromFileExではファイル名の指定ですが
画像の先頭部分(=ヘッダの終端)のアドレスを渡して読み込ませることは出来ますか?
もしかして圧縮データを解析して1ピクセルずつ設定していくことになるのですか?
開発環境はWindowsXPでDirectX9です。
0558デフォルトの名無しさん
2010/02/20(土) 22:57:060559デフォルトの名無しさん
2010/02/20(土) 23:10:11ここ参考になるかも
ttp://marupeke296.com/DXCLS_MemoryMappedFile.html
0560デフォルトの名無しさん
2010/02/20(土) 23:35:01>>558
よくよく考えたら結局展開して使うので全てDDSにして解析すればできそうですね。
>>559
このアプローチは初めて知りました。
テクスチャ以外にも使えそうなので身につけようかと思います。
0561デフォルトの名無しさん
2010/02/21(日) 00:04:22リソースも読めると思ってました。
ありがとうございます。
0562デフォルトの名無しさん
2010/02/21(日) 02:44:32IDirect3D9::GetAdapterDisplayMode()と同じような機能が見つかりませんでした。
DXGIになってだいぶ変わった部分だとは思うのですが、
何故消えてるのかよくわかりません・・・
理由をご存知の方いましたら教えてください。
0563デフォルトの名無しさん
2010/02/21(日) 04:08:22デバイスの管理部と実際の描画部がきっちり仕分けられたので
アダプタが持ってる情報はアダプタインターフェースに問い合わせる形になったっぽい
IDXGIAdapter:EnumOutputs -> IDXGIOutput::GetDisplayModeListあたり? 自分もいまいち勉強中
0564デフォルトの名無しさん
2010/02/21(日) 07:16:35このへんかね
ttp://www.twin-tail.jp/wiki/index.php?%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AE%E6%83%85%E5%A0%B1%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%A8%E7%94%BB%E9%9D%A2%E3%81%AE%E3%82%AF%E3%83%AA%E3%82%A2
0565デフォルトの名無しさん
2010/02/21(日) 18:44:03必要なヘッダファイルを取ってきたのですが、
GUID_DirectMusicAllTypes
CLSID_DirectMusicLoader
IID_IDirectMusicLoader8
・
・
・
等が未解決エラーがでてしまいます
これらはどこのlibファイルに記述されているのでしょうか?
探しても見当たらなくて困っています。
0566デフォルトの名無しさん
2010/02/21(日) 18:53:16Direct SDKはそのまま全体を参照するように設定しないとダメ。
0567デフォルトの名無しさん
2010/02/21(日) 19:06:31ありがとうございます、GetDisplayModeListは既に見てたんですが列挙するということで
現在の画面モードとは関係ないと思って無視してました。
そもそも現在の画面モードはどうでもよくなってるのでしょうか(256色モードとかもう無くなってるし
フルスクリーンの場合、既定で現在のデスクトップ解像度を使うとかあったので
Windowモードでも同様なのかもしれませんね。
まだ実際に動作を見るところまで行ってないのでなんともですが;;
TwinTailのを参考にしてWindowモードで動かそうと思うので、何かわかったら報告します。
どうもありがとうございました。
0568デフォルトの名無しさん
2010/02/21(日) 20:44:37libファイルすべて参照したらいけました。
ありがとうございました。
0569デフォルトの名無しさん
2010/02/22(月) 02:11:310570デフォルトの名無しさん
2010/02/22(月) 04:02:37透明なポリゴン?
ポリゴンの裏側?
手前にすでになんらかのオブジェクトがあるポリゴン?
カメラの範囲外のポリゴン?
0571デフォルトの名無しさん
2010/02/22(月) 04:06:00すみません。曖昧でしたね。。。
>手前にすでになんらかのオブジェクトがあるポリゴン?
これのことです。
0572デフォルトの名無しさん
2010/02/22(月) 09:12:12DrawPredicatedってサンプルがまさにそれ
サンプルだけ見ても使い方は分かりにくいからリファレンスマニュアル読め
DirectX9以前でできるかは知らない
0573デフォルトの名無しさん
2010/02/22(月) 09:26:17なんの為にそうしたいのかによる。
たんに高速になるって勘違いしてるならソートして手前から書くほうが速い。
0574デフォルトの名無しさん
2010/02/22(月) 09:49:18>>573
ありがとうございます
LPDIRECT3DQUERY9とかでできそうですね・・・
ちょっとやってみます
0575デフォルトの名無しさん
2010/02/22(月) 22:26:440576デフォルトの名無しさん
2010/02/22(月) 22:51:58確保・開放を繰り返すとしまいに失敗したりするようなことって出てくる?
0577デフォルトの名無しさん
2010/02/23(火) 01:01:40SetTextureで手前と完全に同じポインタのテクスチャを設定した場合でも
やはりテクスチャ切替の負担はかかるのでしょうか?
0578デフォルトの名無しさん
2010/02/23(火) 01:54:400579デフォルトの名無しさん
2010/02/23(火) 05:47:26フレーム毎にテクスチャ生成、開放するだけのプログラム書いて放置してみればいい
0580デフォルトの名無しさん
2010/02/23(火) 08:18:11PCは大丈夫だろうけど360ではメモリをブロック単位で管理するとか常時保持出きるよう組み直すことも必要になるかも。
0581デフォルトの名無しさん
2010/02/23(火) 08:54:27オーバーヘッドはAPIの呼び出し回数だからなぁ
0582デフォルトの名無しさん
2010/02/23(火) 09:40:15ドキュメントに記載がない以上、環境やドライバに依存する可能性があるとしか言いようがない。
0583デフォルトの名無しさん
2010/02/23(火) 15:32:23D3DXMATRIXにある、
friend D3DXMATRIX operator * ( FLOAT, CONST D3DXMATRIX& );
というオペレータは、どういう効果を持っているのでしょうか?
値を渡して少し試してはみたのですが、どうにも何をやっているのかわからなくて…。
ドキュメントなどもオペレータ周りの解説は省かれているようです
使う、使わないはわかりませんが、知っておきたいのでよろしくお願いします。
0584デフォルトの名無しさん
2010/02/23(火) 15:38:400585デフォルトの名無しさん
2010/02/23(火) 15:40:430586デフォルトの名無しさん
2010/02/23(火) 15:40:59D3DXINLINE D3DXMATRIX
operator * ( FLOAT f, CONST D3DXMATRIX& mat )
{
return D3DXMATRIX(f * mat._11, f * mat._12, f * mat._13, f * mat._14,
f * mat._21, f * mat._22, f * mat._23, f * mat._24,
f * mat._31, f * mat._32, f * mat._33, f * mat._34,
f * mat._41, f * mat._42, f * mat._43, f * mat._44);
}
d3dx9math.inl見れば書いてあるよ。
0587デフォルトの名無しさん
2010/02/23(火) 15:46:40あ、なるほど。
MATRIX * floatを逆に書いた場合用ですね。
どうもありがとうございます
あと、d3dx9math.inlの存在を初めて知りました。
これ、とても勉強になりそうなので読んでみます。
ありがとうございました
0588デフォルトの名無しさん
2010/02/23(火) 17:04:32最適化があるから仕方ないけどさ
0589デフォルトの名無しさん
2010/02/23(火) 17:44:21実際に詳しく見てみたら、関数関連は全て闇の中ですね。
MSDNに式自体は載っているのでいいといえばいいのですが…
0590デフォルトの名無しさん
2010/02/23(火) 17:53:57「D3DXによる最適化のせいで、PC環境の違いが実際に計算結果の違いに現れる問題」
について、みなさんどう対処していますか?
当時「D3DXなんて使うなボケ」という煽りにも似た指摘をいただきましたが、
確かに今となってはD3DXは(ゲームロジックに対しては)使わないべきだと強く思っています。
次回作のために、D3DXの算術関数を全て自前で書くかなぁ…。と思っているのですが
みなさんはどうしてるんでしょうか?
0591デフォルトの名無しさん
2010/02/23(火) 18:37:46そんなの、用途によるだろ。
0592デフォルトの名無しさん
2010/02/23(火) 18:42:320593デフォルトの名無しさん
2010/02/23(火) 21:10:520594デフォルトの名無しさん
2010/02/23(火) 22:03:070596デフォルトの名無しさん
2010/02/24(水) 09:21:203D格闘ゲームで、通信対戦をキー情報のみやりとりする方式で作って公開したんですけど
計算誤差でガンガンずれて大変でしたw
結局D3DXをソフトウェア処理デバッグモードに強制的に変更してすませたんですけど、正規のやり方ではないですしなんとかしたいところ
昔ここで相談した時は「D3DXなんて使うなボケ」という意見が大勢でしたので、
何か有名なライブラリでもあるのかな?と思ったのですが・・・
0597デフォルトの名無しさん
2010/02/24(水) 09:31:550598デフォルトの名無しさん
2010/02/24(水) 09:42:17算術関連に限り自前で用意した方がいい場合があるってだけだ。
0599デフォルトの名無しさん
2010/02/24(水) 09:51:02メッシュの描画位置とキャラクターの位置情報を別に計算すりゃあいいじゃん。
前者はDirect3Dの管轄で、後者はゲームエンジン側。固定小数点ででも持ってればいい。
これで何か問題あるのかね。
0600デフォルトの名無しさん
2010/02/24(水) 10:00:250601デフォルトの名無しさん
2010/02/24(水) 10:05:34浮動小数を信用する方が悪い。
0602デフォルトの名無しさん
2010/02/24(水) 10:05:48キャラの拳の位置に攻撃判定をもたせるなど、アニメーションと密接に絡んでいたもので。
・AnimationControllerを使っている段階で誤差発生
・攻撃判定とくらい判定との衝突計算にD3DXを使い誤差発生
でした。
とりあえずAnimationControllerは二度と使わないですね。
そもそもバグ多すぎですあれ。
見つけたバグについて、海外フォーラムからも指摘入ってるのに最後まで直さず終わったみたいですし。
単に再生するだけなら良いものの、キーなどを動的に書き換えるとひどいことになります
幸いスキンアニメーションプログラム自体は難易度低いし、OpenGLの時には自前でやってましたからそれ使ってしまいますが…。
0603デフォルトの名無しさん
2010/02/24(水) 10:08:43お、ほんとですかそれ。
情報ありがとうございます。
float a = 何か;
float b = 何か;
a *= b;
これも、環境によって若干誤差がでてしまったりします?
コンシューマにどっぷりつかってた甘ちゃんなものですいません。
0604デフォルトの名無しさん
2010/02/24(水) 10:12:53数学関数等は設定を変更する関数を利用する。
0605デフォルトの名無しさん
2010/02/24(水) 10:25:200606デフォルトの名無しさん
2010/02/24(水) 10:28:10このあたりですかね?
precise が規定値で(自分のもこれになっています)
> これは、ANSI 基準に厳密に従う場合に要求されます。
と書かれているので、単純な計算は大丈夫そう?ですね。
数学関数っていうのは、math.hのsqrtとかのことですかね?
ちょっとこれの誤差を設定する関数というのが見当たらないのですが、教えていただけますでしょうか。
よろしくお願いします。
0607デフォルトの名無しさん
2010/02/24(水) 10:34:100608デフォルトの名無しさん
2010/02/24(水) 10:40:47俺も興味ある
0609デフォルトの名無しさん
2010/02/24(水) 12:06:11まあスレ違いだとは思うけど
0610デフォルトの名無しさん
2010/02/24(水) 12:55:590611デフォルトの名無しさん
2010/02/24(水) 12:57:420612デフォルトの名無しさん
2010/02/24(水) 14:48:16初心者ではない方はご退場願います。
0613デフォルトの名無しさん
2010/02/24(水) 14:49:010614デフォルトの名無しさん
2010/02/24(水) 16:29:59浮動小数点の互換性問題はDirect3Dでゲームを使っていればぶちあたる問題のわりに、スタンダードな対処法が確立されていない
丁度いいのでここで存分に語り合ったらどうだろう?
0615デフォルトの名無しさん
2010/02/24(水) 16:34:21なんで内容が脱線しているのに自分勝手に強行しようとするのか意味不明。
0616デフォルトの名無しさん
2010/02/24(水) 16:47:24一応防ぐ方法として
http://d.hatena.ne.jp/NyaRuRu/20040819#p1
PSGPの無効化 については読んでおいて損は無い
でもこれをやると、DLLの遅延読み込みなどができなくなるなど副作用もある
(しかしこの話のどこが脱線しているのやら…。自分に関係ない話題でも、知識は得ておいて損無いと思うぞ)
0617デフォルトの名無しさん
2010/02/24(水) 16:51:51バーカバーカバーカバーカバーカバーカ
0618デフォルトの名無しさん
2010/02/24(水) 16:56:09・D3DXの欠陥(互換性という意味ではね)の話
・その代替品を作るべき場合とは
・代替品を作る場合の注意
って感じでいいじゃないか
0619デフォルトの名無しさん
2010/02/24(水) 17:31:130620デフォルトの名無しさん
2010/02/24(水) 17:36:10の時、環境によって0.99999f になったり 1.00000fになったりしたら、ゲームにならないだろ
差の大きさは問題じゃないさ
0621デフォルトの名無しさん
2010/02/24(水) 17:37:28ああ精度の問題かぁ。ありがと
0622デフォルトの名無しさん
2010/02/24(水) 20:52:22箱を描画しようとしたんだがCreateVertexBufferはエラーでないのに、CreateIndexBufferがうまくいかないっぽい。だれかおせーて。
↓宣言一部
#define TEST_FVF (D3DFVF_XYZ | D3DFVF_TEX1)
LPDIRECT3DVERTEXBUFFER9 m_pMyVB= NULL;
LPDIRECT3DINDEXBUFFER9 m_pMyIB=NULL;
struct TEST{
D3DXVECTOR3 p;
FLOAT u,v;
};
↓練習として箱を作ろうとした
MyCreateBox(){
if(FAILED(pDevice->CreateVertexBuffer(sizeof(TEST)*8,D3DUSAGE_WRITEONLY,TEST_FVF,D3DPOOL_MANAGED,&m_pMyVB,NULL))){
return E_FAIL;
}
TEST* v;
m_pMyVB->Lock(0,0,(void**)&v,0);
v[0].p=D3DXVECTOR3(-0.5f,0.5f,0.5f);
(中略、UV値も設定)
m_pMyVB->Unlock();
// 36のインデックスからなるIndexBufferを作る
pDevice->CreateIndexBuffer( 36* sizeof(WORD), D3DUSAGE_WRITEONLY, D3DFMT_INDEX16, D3DPOOL_MANAGED, &m_pMyIB, NULL );
(以下略)
}
0623デフォルトの名無しさん
2010/02/24(水) 21:23:310624デフォルトの名無しさん
2010/02/24(水) 22:19:22C++で書いてるなら、全てのDirectXのAPIの呼び出して戻り値をチェックして、失敗してたら例外を吐くように書いておこう。
0626デフォルトの名無しさん
2010/02/24(水) 23:23:58動くけど実行動作がおかしいのか
そもそもコンパイルエラーが出るのかどっちなんだよ
0627622
2010/02/24(水) 23:34:23>動くけど実行動作がおかしいのか
>そもそもコンパイルエラーが出るのかどっちなんだよ
ゴメンちゃんと書かなかった・・・
「動くけど実行動作がおかしい」状態。インデックスバッファのとこ
コメントアウトとしても結果はかわらず。
if(FAILED(pDevice->CreateIndexBuffer(略){
(略)
} else MessageBox(NULL,"エラー","エラー",MB_OK);
でメッセージボックスが出てくる。こんな感じ。
他にも説明で足りないとこあったら言って。
0628デフォルトの名無しさん
2010/02/24(水) 23:36:51当然、分かってるとは思うけど、APIのエラーコードとそれによる文字列化されたエラーメッセージを
デバッグ出力なりに書き出させる例外を吐かせるんだぞ?
いや、それくらい分かってたよな。スマン。
0629デフォルトの名無しさん
2010/02/24(水) 23:37:16他にいくらでもあるから何なの?
お前さあ、回答する資格ないよ
0630デフォルトの名無しさん
2010/02/25(木) 00:02:01CreateIndexBufferの戻り値を調べろ
話はそれからだ
0631622
2010/02/25(木) 00:35:17>話はそれからだ
やり方が。。。
わ か り ま せ ん(泣
どなたか教えていただけませんか?
一応、載せますと VisualC++2008 ExpressEditionで開発しております。
↓自分にいろいろ見ながらエラー原因を表示しようとしたもの()
if(FAILED(pDevice->CreateIndexBuffer(略){
(略)
} else {
HRESULT k=pDevice->CreateIndexBuffer(
MessageBox(NULL,"エラーあり以下原因","Tool",MB_OK);
if(k==D3DERR_INVALIDCALL ) MessageBox(NULL,"メソッドの呼び出しが無効である","Tool",MB_OK);
if(k== D3DERR_OUTOFVIDEOMEMORY ) MessageBox(NULL,"十分なディスプレイメモリが存在しない ","Tool",MB_OK);
if(k== D3DXERR_INVALIDDATA ) MessageBox(NULL,"データが無効である ","Tool",MB_OK);
if(k== E_OUTOFMEMORY ) MessageBox(NULL,"十分なメモリを割り当てることができない ","Tool",MB_OK);
}
0632デフォルトの名無しさん
2010/02/25(木) 00:36:340633デフォルトの名無しさん
2010/02/25(木) 00:40:270634デフォルトの名無しさん
2010/02/25(木) 01:10:08VSで開発してるならデバッカの使い方を多少は知っといた方が後々の役に立つんじゃないか?
開発中なら直後にブレイクポイント置いて値の中身みるだけで済むじゃないか
0635デフォルトの名無しさん
2010/02/25(木) 01:54:52IntelのFPUは内部で80bitで計算してるのよ。
だから32bitで計算するSSEとかと比べると、微妙に結果が変わってくる。
最下位ビットが1ビット変わる程度の差だから一回の計算では全く問題ないが、
リプレイなんかだと誤差が蓄積されるので影響が出てくる。
0636デフォルトの名無しさん
2010/02/25(木) 02:21:19>>if(FAILED(pDevice->CreateIndexBuffer(略){
>>(略)
>>} else MessageBox(NULL,"エラー","エラー",MB_OK);
>>メッセージボックスが出てくる。こんな感じ。
とりあえず素数でも数えておちつけ
これじゃ「CreateIndexBufferが失敗しなかったらメッセージボックス」だ
0637デフォルトの名無しさん
2010/02/25(木) 08:45:45Intelのっつーかx87系はすべて、だな。
INTELで作ったリプレイデータもAMDのCPUでもちゃんと全く同じ結果になる。
SSEみたいに演算機自体が違う場合は当然別だけど。
0638622
2010/02/25(木) 11:30:58pDevice->SetIndices( m_pMyIB);を書き忘れてただけだった!
夜だし睡眠薬飲んだ後だったから少しぼーっとしてて、見落としたみたい。
でも、ここのおかげで自分が基本的なこともわかってないことが分かった。
本当に夜遅くに騒がせてすいませんでした。
0639デフォルトの名無しさん
2010/02/25(木) 11:55:520640デフォルトの名無しさん
2010/02/25(木) 13:33:15規格に準じた浮動小数は計算速度が遅かったような・・・
0641デフォルトの名無しさん
2010/02/25(木) 14:09:44精度落とすだけならx86アーキテクチャでも速度は変わらなかったような記憶があるが……
0642デフォルトの名無しさん
2010/02/25(木) 14:47:47幾つかの3D作品で、離れたキャラクターが軽量の別モデルになるのではなく
何やら穴ボコの、描画されない面の多いモデルになるのを見かけるのですが、
あれは何という名前の機能・技術なのでしょうか?
0643デフォルトの名無しさん
2010/02/25(木) 15:02:030644デフォルトの名無しさん
2010/02/25(木) 16:16:330645デフォルトの名無しさん
2010/02/25(木) 17:11:00一体どんな現象なのかさっぱりわからん
0646デフォルトの名無しさん
2010/02/25(木) 19:38:270647デフォルトの名無しさん
2010/02/25(木) 19:43:260648デフォルトの名無しさん
2010/02/25(木) 20:43:23CPUによって、x87やSSEを切り替えるのが問題なのか?
つーか、これ狂ってると言われても仕方ないレベルww
0649デフォルトの名無しさん
2010/02/25(木) 20:47:29ならんしなぁ 何だろ?
0650デフォルトの名無しさん
2010/02/25(木) 20:55:190651デフォルトの名無しさん
2010/02/25(木) 21:10:040652デフォルトの名無しさん
2010/02/25(木) 21:27:460653デフォルトの名無しさん
2010/02/26(金) 03:05:18カメラからの距離を毎フレームもとめてメッシュを切り替えるの?
0654デフォルトの名無しさん
2010/02/26(金) 03:58:40そんなのゲーム次第だろ
モデルの切り替え(ポッピング)をいかに目立たなくするかは
ゲームごとにチューニングしていくしかない
LODはカメラ距離にしたがってモデルの精度を変更する技術の総称で
別モデルに切り替えるのはLODの一つであって全てじゃない
プログレッシブメッシュもそうだし
ディスプレースメントマッピングとか
DirectX11で注目されるシェーダーによる無段階のテッセレーションも全部LOD
0655デフォルトの名無しさん
2010/02/26(金) 09:52:020656デフォルトの名無しさん
2010/02/26(金) 10:20:41切り替えは大して効果がないという。
0657デフォルトの名無しさん
2010/02/26(金) 11:17:310658デフォルトの名無しさん
2010/02/26(金) 11:25:56いや、前者で役立てば十分すぎるんだけど
0659デフォルトの名無しさん
2010/02/26(金) 17:58:14PIXって最新のSDKインストールしなきゃいけないんですか?
0660659
2010/02/26(金) 18:17:200661デフォルトの名無しさん
2010/02/27(土) 04:33:320662デフォルトの名無しさん
2010/02/27(土) 05:20:52結構変更されてるんだね。。。知らなかった
PIX使えました
0663デフォルトの名無しさん
2010/02/27(土) 09:43:440664デフォルトの名無しさん
2010/02/27(土) 10:12:20異論は認めない
0665デフォルトの名無しさん
2010/02/27(土) 10:17:560666デフォルトの名無しさん
2010/02/27(土) 10:33:460667デフォルトの名無しさん
2010/02/27(土) 10:35:47対応自体は簡単に出来るんだから両対応しないのはありえないだろ。
0668デフォルトの名無しさん
2010/02/27(土) 11:01:38X軸右傾きと、X軸左傾きが別にとれるようになったとかなの?
(DirectInputだと、両方押されてると差引0として認識)
0669デフォルトの名無しさん
2010/02/27(土) 12:25:37それについてはSDKだったかMSのサイトに説明があるけど
過去のゲームとの互換性のためにそうしたとのこと。
ドライバ側でボタンや軸の入れ替えができるのは俺は反対。
それはアプリケーション側で解決すべき問題。
0670デフォルトの名無しさん
2010/02/27(土) 14:24:03>それはアプリケーション側で解決すべき問題。
2つ以上の軸をDirectInputで読み取れないところが問題だったわけだが?
0671デフォルトの名無しさん
2010/02/27(土) 14:34:390672デフォルトの名無しさん
2010/02/27(土) 15:19:340673デフォルトの名無しさん
2010/02/27(土) 15:35:41パッドがXInput対応の物が問題であって
例えばPS2のコントローラをUSBに変換して繋いでいるようなものは問題なかったり。
0674デフォルトの名無しさん
2010/02/27(土) 19:57:57新規プロジェクトでいまだに対応しようとしない方が悪いだろう。
0675デフォルトの名無しさん
2010/02/27(土) 20:41:420676デフォルトの名無しさん
2010/02/27(土) 22:55:32そうじゃなけりゃDirectInputで取るようにすればいいだけ。
排他的にどちらか片方だけ使わないといけないわけではないから悩むこと自体おかしい。
0677デフォルトの名無しさん
2010/02/27(土) 23:51:05DirectInputからこれに置き換えていくべきなのかな?
0678デフォルトの名無しさん
2010/02/28(日) 01:37:20つまり効果だけでいえば、車輪の再発明に等しい。
0679デフォルトの名無しさん
2010/02/28(日) 01:48:22入力関係に関してはOSの想定を超えた解像度の入力が欲しい場合もあるから、
敢えて車の再発明もやらないといけない場合がある。
特にマウス関係がそうらしい。
0680デフォルトの名無しさん
2010/02/28(日) 19:13:37カメラの平行移動はどうすればいいんでしょうか?
例えばマウスを左に動かしたら、カメラとターゲットをビューに対して右に平行移動させたいです。
0681デフォルトの名無しさん
2010/02/28(日) 19:22:04「自分が前に前に歩いているのではなく、世界が後ろに動いている」みたいなことを実装したいの?
現実世界だとカメラの位置と注視点が50センチ前に移動する・・・みたいな考えだから、問題なければそれでいいんだけどね。
0682680
2010/02/28(日) 19:31:390683デフォルトの名無しさん
2010/02/28(日) 19:33:270684デフォルトの名無しさん
2010/02/28(日) 20:03:10>右でも左でもいいんですが
カメラが動くか、カメラ以外が動くかの違いだよ。
地動説と天動説に置き換えたほうが分かりやすいかな。
0685デフォルトの名無しさん
2010/02/28(日) 20:09:05>Direct3Dでマウスを使用した極座標でのカメラの回転までは出来たんですが
俺にはここからナニをいってるのか理解できないけどな
極座標だからなんだっていうのかさっぱりわからない
0686デフォルトの名無しさん
2010/02/28(日) 21:23:010687デフォルトの名無しさん
2010/02/28(日) 22:50:41背景が動くだけでターゲットはスクリーン座標的には動かないだろw
0688デフォルトの名無しさん
2010/02/28(日) 23:05:06ttp://marupeke296.com/DXG_No56_CameraBaseTrans.html
ここを見れば
行列の
_11、_12、_13 が右方向ベクトル
_21、_22、_23 が上方向ベクトル
_31、_32、_33 が前方向ベクトル
だということがわかるよ!
カメラ行列(ビュー行列の逆行列)の右方向ベクトルを使えば
0689デフォルトの名無しさん
2010/02/28(日) 23:34:17描画するときはオブジェクトをカメラ空間に移すっていう概念を知っているの?
回転って表現があやしいなぁ・・・って感じるんだけど?
俺はそこから問い詰めたい
0690デフォルトの名無しさん
2010/02/28(日) 23:40:22なんで行列をかけるという回答が出ないんだろ
別に間違いじゃないからどうでもいいことではあるけど、
カメラに関しては回転もするんだからまとめて行列でしちゃえばいいのに
0691642
2010/03/01(月) 00:12:39>>643-646 ありがとうございます。
>>652 Master of Epicでクマを遠くに見るとよくなります。
>>653-658 参考になりました。
沢山の情報、ありがとうございました。
0693デフォルトの名無しさん
2010/03/01(月) 01:31:15意味不明すぎてレスできません
入門書でも買ったらどうですか?
0694デフォルトの名無しさん
2010/03/01(月) 01:42:350695デフォルトの名無しさん
2010/03/01(月) 09:34:32リソース登録して、画像やキーフレーム、姿勢を指定できるようなやつ。
3Dツールみたいにスタンダードフォーマットがあれば対応したいんだけど・・・
0696デフォルトの名無しさん
2010/03/01(月) 09:49:30Flash
0697デフォルトの名無しさん
2010/03/01(月) 10:40:43XInputはおろか、Win32APIのパッド関数で十分なもんで^^;
0698デフォルトの名無しさん
2010/03/01(月) 12:01:11例えば8bitPC時代は、手作業で命令のクロック数えて最適化してたらしいし…
式に展開?したほうが速い場面もあったのかもしれない
その頃の癖でうっかり考えちゃうというのはありそう
0699デフォルトの名無しさん
2010/03/01(月) 12:07:12スタンダードフォーマットなんて無いよ
とりあえず受け皿となる独自フォーマットを作っといて
それから適当なアニメーショ作成ツールを探してきて
(できれば単なるテクスチャーシフトじゃなくてフォームが組めるやつ)
そのソフトが吐き出すフョームデータやシーケンスデータを
最初の独自フォーマットのコンバートするツールを作る練習をしとくといい
会社どころかチーム単位で使ってるソフトが違ってることがあるので
そのたんびにプログラムをいじるのは非常に面倒
ソフトに合わせてコンバートツールを作るのが普通
0700デフォルトの名無しさん
2010/03/01(月) 12:40:23君のレスから「2Dスプライトベースのアニメーション作成ツール」だけ抽出してググると最初に引っかかるんだが
そのまんま"2Dスプライトアニメーションデータ作成ツール「SpriteStudio」"ってのがある
どうにも宣伝乙だな
使ってるところもあるんだろうけどスタンダードとは言いがたい
0701デフォルトの名無しさん
2010/03/01(月) 20:02:03サンクスだぽ(`・ω・´)
0702デフォルトの名無しさん
2010/03/02(火) 20:56:32なまじ2D専用の言語を作って記述するよりも汎用性や拡張性が出るんじゃなかろうか。
0703デフォルトの名無しさん
2010/03/02(火) 21:05:59うちの社内ツールとできること変わらん感じ。ちなみにPS2時代から生き残ってる奴で、
プログラムはカオスで触りたくもないクソツール。
0704デフォルトの名無しさん
2010/03/02(火) 21:11:58ScaleformGFxみたいなミドルウェアもあるけど、SpriteStudioにしても商用限定だからなあ。
3Dにしてもスタンダードと言えるようなフォーマットは無いような気がするし・・・
スプライトエディタをフリーソフトとして公開すれば結構需要あるんじゃないだろうか。
0705デフォルトの名無しさん
2010/03/02(火) 23:04:14レスありがとうございました。
結局普通に計算して出しました。
行列演算はワールド座標変換で少し使った程度なので、これから詳しく調べてみます。
0706デフォルトの名無しさん
2010/03/03(水) 00:15:170707デフォルトの名無しさん
2010/03/03(水) 00:21:36XAudio2でフェードインをやりたいんですが、
SourceVoiceにSetVolumeを細かく刻んで与えると音がぶつ切りに聞こえます。
フェードアウトだとなぜか問題ないんですが。
どうやったら回避できますか?
0708デフォルトの名無しさん
2010/03/03(水) 01:43:500709デフォルトの名無しさん
2010/03/03(水) 08:58:05あれ、XActの方だったか?
質問の答えは知らん
0710デフォルトの名無しさん
2010/03/03(水) 11:54:04メモリの破損を疑うようなガタついた画面になるんだけど
原因分かる人います?
ちなみにD3DPOOL_DEFAULT + StretctRectは問題なしでした
memtest86でシステムメモリは問題なし
グラボはGeForce6600GTでデュアルビュー環境です
D3DデバイスはHALでD3DCREATE_HARDWARE_VERTEXPROCESSINGです
0711デフォルトの名無しさん
2010/03/03(水) 13:02:51UpdateSurface後に1 Presentしたあとバックバッファにコピーするとか。テクスチャでレンダリングするとか。色々工夫してみよう。
フルスクリーンとウィンドウで待機動作が違うこともあるし、こういった挙動は環境依存。
システムメモリとVRAM間との転送でこういった現象はよくある。
0712デフォルトの名無しさん
2010/03/03(水) 13:10:35メタセコイアLEを使って、自分で作ったXファイルをプログラムで読み込んで描画させると、
モデルはしっかり反映されるのですが、面に指定した材質が反映されません(色がメタセコイアのデフォルトカラーになってしまいます)。
テクスチャは使用していません。
素材サイトなどでとってきたモデルは色がちゃんとつくのですが、何がいけないのでしょうか。
プログラムではライティングモード、メタセコイアLEでXファイル保存する時はUVマッピングに法線を指定しています。
何がいけないか見当がつく方、教えてください。よろしくお願いします。
0713デフォルトの名無しさん
2010/03/03(水) 13:11:06ご冗談を。
0714デフォルトの名無しさん
2010/03/03(水) 14:20:08そのXファイルをうp
0715デフォルトの名無しさん
2010/03/03(水) 14:50:330716デフォルトの名無しさん
2010/03/03(水) 15:27:13ファイル作成かプログラムになんか不備があるんじゃねぇの?
0717デフォルトの名無しさん
2010/03/03(水) 16:00:29SetRenderStateでD3DRS_AMBIENTを設定してる?
あとDXViewerでそのXファイルを見たら、きちんと見えている?
0718デフォルトの名無しさん
2010/03/03(水) 22:27:17>>714
うpしたことないのでやり方等教えていただけますでしょうか。面倒で申し訳ないです。
>>715
Material 3 {
"body-color" col(0.000 0.000 0.549 1.000) dif(0.600) amb(0.550) emi(0.000) spc(0.700) power(45.00)
これは設定されてるってことなんでしょうか?
>>717
設定しても変化がないです。
見れないですね。Failed to load default material at mesh: material:2 って出ます。
これはやっぱりXファイルがだめなんですかね?
0719デフォルトの名無しさん
2010/03/03(水) 22:34:26>>714
http://uploadr.net/file/79738fe4e5
0720710
2010/03/03(水) 23:11:13ありがとー
DEFAULTにします
0721デフォルトの名無しさん
2010/03/03(水) 23:45:34Xファイルに問題はないよ
描画部分の設定の問題だと思われ
0722デフォルトの名無しさん
2010/03/04(木) 01:07:19あれだろ
テクスチャないのにテクスチャカラーを参照してるから白に飛んでるだけじゃね?
メタセコで吐き出す時にUVマッピングのチェックをはずすか
プログラム側でテクスチャの有無を確認しろ
0723デフォルトの名無しさん
2010/03/04(木) 01:18:13頂点カラー(MeshVertexColors)情報が吐き出されているね
頂点カラーを描画している(バッファにD3DFVF_DIFFUSE)なら、
この場合白系で表示されているはず
まぁ、これを意図的にやっているなら気づくわけで、何かビューワで確認しているだけなら、
MeshVertexColorsのデータを削ってみるといい。或いはモデラ側で出力しないとかね。
0724デフォルトの名無しさん
2010/03/04(木) 01:36:37D3DMATERIAL9 mMaterial;
D3DXMATERIAL* mD3DXMaterials = (D3DXMATERIAL*)m_pD3DXMtrlBuffer->GetBufferPointer();
for( DWORD i =0; i<m_numMesh; i++){
mMaterial = mD3DXMaterials[i].MatD3D;
pD3DDevice->SetMaterial( &mMaterial);
m_pMesh->DrawSubset( i ); }
コード中ではテクスチャには全く触れず、頂点カラーもコード中では使っていないです。
他の部分はライト、カメラ、座標変換の設定のみです。
一応、確認させていただきたいのですがXファイルで、面に指定した材質はマテリアルとして属性データに入れられるんで合ってますか?
DirectXをはじめて日が浅いので、訳のわからないことを言ってるかもしれませんが、間違っていたら指摘お願いします。
0725デフォルトの名無しさん
2010/03/04(木) 02:47:17こんな感じでやればたぶん大丈夫だと思うけどどうだろう?ミスってたらすまん
D3DMATERIAL9* mMaterial;
D3DXMATERIAL* mD3DXMaterials = (D3DXMATERIAL*)m_pD3DXMtrlBuffer->GetBufferPointer();
int num = D3DXLoadMeshFromXの七番目の奴
mMaterial = new D3DMATERIAL9[ num ];
for( int i = 0; i < num; i ++ ){
mMaterial[ i ] = mD3DXMaterials [ i ];
mMaterial[ i ].Ambient = mMaterial[ i ].Diffuse;
}
for( DWORD i =0; i<m_numMesh; i++){
pD3DDevice->SetMaterial( &mMaterial);
m_pMesh->DrawSubset( i );
}
0726デフォルトの名無しさん
2010/03/04(木) 07:49:24これで書き直してみましたがだめでした。
D3DMATERIAL9* mMaterial;
D3DXMATERIAL* mD3DXMaterials = (D3DXMATERIAL*)m_pD3DXMtrlBuffer->GetBufferPointer();
DWORD num = m_numMesh;
mMaterial = new D3DMATERIAL9[ num ];
for( DWORD i = 0; i < num; i++ ){
mMaterial[ i ] = mD3DXMaterials[ i ].MatD3D;
mMaterial[ i ].Ambient = mMaterial[ i ].Diffuse; }
for( DWORD i = 0; i < m_numMesh; i++ ){
D3DMATERIAL9 mMat = mMaterial[i];
pD3DDevice->SetMaterial( &mMat );
m_pMesh->DrawSubset( i ); }
http://uploadr.net/file/624bba1f83
↑勉強している本のサンプルなんですが、これは色もちゃんと描画できます。
0727デフォルトの名無しさん
2010/03/04(木) 08:01:090728デフォルトの名無しさん
2010/03/04(木) 11:25:22俺は普通に表示出来たが?
0729デフォルトの名無しさん
2010/03/04(木) 11:39:320730デフォルトの名無しさん
2010/03/04(木) 11:50:59サンプルのチュートリアルのMeshにライトの設定を書き加えた奴では見れなかったよ
試しにメタセコで適当なオブジェクトを>>712の設定で書き出したらやっぱりだめぽ
>>722にあるようにUVのチェックはずしたら正常描画された
もう固定機能なんて触らなくなって久しいから理由は分からんけど
0731デフォルトの名無しさん
2010/03/04(木) 12:14:05固定触らないと忘れるな
0732デフォルトの名無しさん
2010/03/04(木) 12:17:540733デフォルトの名無しさん
2010/03/04(木) 12:21:28もはやDirect3D9を忘れかけてるな
0734デフォルトの名無しさん
2010/03/04(木) 12:25:19当分はXPのサポートが捨てられない商用ゲーム書きからすると、羨ましい限りだな。
そいや、VistaでもDx11が使えるようになってるんだったっけ?
0735デフォルトの名無しさん
2010/03/04(木) 13:32:37UVマッピングをはずしたら描画されました!ありがとうございます。
ただ、色がメタセコのときよりだいぶ暗いんですが、これはコードの方でライトの設定をいじればいいんでしょうか。
今、ライトはディレクショナルでDiffuseが全て1.0f、ベクトルがYのみ1.0fで、他はいじってません。
0736デフォルトの名無しさん
2010/03/04(木) 16:08:300737デフォルトの名無しさん
2010/03/04(木) 19:36:42この行列は平行移動も含んでいますが、法線は正しく変換され、ライティングもうまくいっています。
平行移動が反映されていないということは、w成分が0ということだと思いますが、
これは、float3型に行列をかける際に、ベクトル側のw成分を0として計算しているという解釈でよいのでしょうか?
ホストプログラム側では、こういった変換はwをどう扱うかで異なるAPIが用意されていますが、
HLSLでは単にmul関数だけなので、注意が必要だと感じたので、質問させていただきました。
よろしくお願いしますm(_ _)m
0738デフォルトの名無しさん
2010/03/04(木) 20:27:42うまくいかないのが普通なの?
ベクトルをローカル座標に移したりワールド座標に移したりすることを考えたら
何が疑問なのかさっぱりわかんねーけどどうよ?
拡大縮小入るとおかしくなるかもしれないけど
0739737
2010/03/04(木) 21:21:213次元ベクトルV(x,y,z)に4x4の平行移動行列をかけるとします。
V(x,y,z)を頂点のような「位置ベクトル」と見なした場合は、
平行移動分だけ移動すればよいです。
しかし、同じV(x,y,z)でも、これを法線のような「向きを表すベクトル」と見なした場合、
平行移動してもV(x,y,z)は変わらないようにしないといけません。
DirectXAPIでは、これらを区別するため、同じ3次元ベクトル×行列でも
平行移動が反映される変換
・D3DXVec3Transform
・D3DXVec3TransformCoord
平行移動が反映されない変換
・D3DXVec3TransformNormal(w=0として計算)
が用意されています。
HLSLでは、何気なしに頂点と法線に変換行列をmulで同じようにかけていましたが、
よく考えると、上記のように異なった掛け方をしないといけないのではと気付きました。
これがうまくいく理屈として、法線がfloat3型であるということは、4x4行列との掛け合わせの際、
w成分を0として計算してくるということが考えられると思うのですが、その確認をしたかったんです。
もちろん、拡大縮小などが入ってきた場合は、逆転置行列が必要になってくるので、話は違ってきますが・・・
0740デフォルトの名無しさん
2010/03/04(木) 21:32:37float3にfloat4x4を掛けると言ってるが、本当か?
float3x3にキャストした行列を掛けているんじゃないの?
これならスジが通るだろ
0741737
2010/03/04(木) 21:46:12SkinnedMeshでは変換行列がfloat4x3、自作のシェーダでもfloat4x4で、
いずれも法線はfloat3で、明示的なキャスト記述等なく、mulでかけています。
もしかすると、暗黙的に、おっしゃるようなキャストが行われていると解釈することもできそうですね・・・
0742デフォルトの名無しさん
2010/03/04(木) 22:02:14確かにコンパイル通るねえ
静的型付け言語って、こういうのをはじく為に
あると思うんだがねえ
ザルだねー
0743デフォルトの名無しさん
2010/03/04(木) 22:06:470744デフォルトの名無しさん
2010/03/04(木) 22:13:32自分の環境ではフェードインでのノイズは発生しなかったよ
フェードインのコードは、
for(double i=0; i<=1; i+=0.001){
source_voice->SetVolume(i);
Sleep(1);
}
環境は、
VC++ 2008 DXSDK Feb,2010
XAudio2関係は、CreateSourceVoiceにDEFAULT_FREQ_RATIOを指定したぐらい
0745デフォルトの名無しさん
2010/03/04(木) 22:18:10おっ! 情報サンクス。
早速明日調べてみます。
ところで、SourceVoiceに突っ込んでいる音声バッファは1ブロック何ミリ秒、それを何個与えていますか?
0746デフォルトの名無しさん
2010/03/04(木) 22:30:37あ〜、バッファは全データをメモリに格納して1つとして、分割はしてないよ
ちょっとマルチバッファリングのときでやってみる
0747デフォルトの名無しさん
2010/03/04(木) 22:43:33さすがに、法線ベクトルと位置ベクトルの違いも知らない人が
737に噛み付くのはどうかと思う。
>>737
コンパイル結果を見ると、法線の方はm3x3になっていた。
ドキュメントのmulのとこにはdimensionは等しくないといけないように書いてあるけど、
行列が大きい分には余分な部分が無視されるだけっぽいね。
0748デフォルトの名無しさん
2010/03/04(木) 22:51:440749737
2010/03/04(木) 22:52:14>>747
わざわざ確認までしていただいて恐縮です。
ありがとうございます。
>コンパイル結果を見ると、法線の方はm3x3になっていた。
おお、確認できるんですね。
>行列が大きい分には余分な部分が無視されるだけっぽいね。
これが結論ですね。
すっきりしました。
ありがとうございましたm(_ _)m
0750735
2010/03/04(木) 23:22:09すいません、1.0fではなく-1.0fでした。
そろそろお世話になりすぎなので、後は自分で試行錯誤してみます。ありがとうございました。
0751デフォルトの名無しさん
2010/03/04(木) 23:52:560752744
2010/03/05(金) 00:06:41自分もXAudio2でGetStateがうまくいかないから調べついでに作ってみたw
http://testhp.ddo.jp/fadeinout.cpp
このプログラムで、正弦波のバッファ0.1秒 3分割がノイズ無しでいけたよ
簡単に言えば、フェードインの動作を別スレッドでさせたら成功したって事
0753デフォルトの名無しさん
2010/03/05(金) 00:15:01……なんかこのコードの書き方変なような気がするんだけど、気のせい?
XAudio2ってイベントハンドラを定義したインターフェイスを継承したオブジェクトを作って
そいつでストリームの継続処理をやらせるのが常道だと思ってたんだけど。
このコードの書き方だとDirectSoundの書き方と大差なくてXAudio2の恩恵があまりないんじゃない?
0755デフォルトの名無しさん
2010/03/05(金) 00:20:49そうですか〜、C++のクラスについて本格的に触れたのも最近で
waveOutからXAudio2に急に切り替えたもので何分使い方がよく分かっていません・・。
もっと勉強してきます!
0756デフォルトの名無しさん
2010/03/05(金) 00:22:258ビットサウンドなんて今時使わないし、
比較的低周波の単音ではノイズのテストにならないような気もするけど、
自分の書いてるコードが間違ってるかもしれないから
明日このコードと比較してみることにします。
0757デフォルトの名無しさん
2010/03/05(金) 00:28:22横槍だけども。何かひらめいたときの効果音みたくて面白かった。
0758デフォルトの名無しさん
2010/03/05(金) 00:38:45>3次元ベクトルV(x,y,z)に4x4の平行移動行列をかけるとします。
>V(x,y,z)を頂点のような「位置ベクトル」と見なした場合は、
>平行移動分だけ移動すればよいです。
なにいってるのかわからない
位置ベクトルだって回転すれば変わると思うんだけど・・・
平行移動分だけってどういう意味?
0759デフォルトの名無しさん
2010/03/05(金) 00:48:43単純にモデル座標系上のベクトルAにワールド変換行列をかけても
ベクトルAがワールド座標上でのベクトルAになるだけでかわんねーと思うんだけどマジで
やってみそ
0760デフォルトの名無しさん
2010/03/05(金) 01:05:51説明をしている。
3次元ベクトルは、向きと大きさを表すものと
位置を表すもの、2つの量を表現出来る。
後者の位置を表すベクトルは、
〜第一部完〜
0761デフォルトの名無しさん
2010/03/05(金) 01:28:47っていっても俺のそんな変換してねぇな
ライトベクトルのほうをローカルにもってきてるシェーダが多いわ
0762737
2010/03/05(金) 06:58:13例では、着目してほしい平行移動だけを含んだ行列をかけていたので、
「平行移動分だけ」という書き方をしました。
もちろん、回転が入っていたら回転もします。
回転の成分は、位置ベクトル、法線ベクトルの両方に普通に作用させればよいだけですけどね。
>>759
いえ、そのベクトルAというのをどう見なすかで、ワールド変換行列をかけた結果と
望む結果とが異なることがあります。(>>739)
このベクトル×行列も、行列の内容やそれぞれの次元をどう揃えてかけるかで違ってくるので、
ややこしいことになっていると思います。
HLSLはこのあたりを曖昧にした記述ができ、概念的な記述ができて高度かな、とも思いますが、
>>742さんも漏らしているように、厳密でないといえば厳密でないですね・・・
>>761
ライトベクトルをローカルや接空間に持ってこれば計算量を減らせるので、そうしていますが、
アニメーションを含んだ行列(ボーン合成行列っていうのかな?)はそのテクニックとは関係なく
法線に適用しないといけないです。
0763デフォルトの名無しさん
2010/03/05(金) 08:46:45なってる
ついでに知ってると思うがDirect3D9レベルのハードでもDirect3D11で書ける
XPさえ切り捨てられれば移行できるぞ
使いやすすぎてもう9には戻れんわ
0764デフォルトの名無しさん
2010/03/05(金) 08:58:26実は使っていないのがよく分かる。
0765デフォルトの名無しさん
2010/03/05(金) 09:57:54どう使いやすくなったんですか?
0766デフォルトの名無しさん
2010/03/05(金) 14:33:41だがXPを切り捨てられるほどなぁ・・・
0767デフォルトの名無しさん
2010/03/05(金) 17:04:080768デフォルトの名無しさん
2010/03/05(金) 17:22:280769デフォルトの名無しさん
2010/03/05(金) 18:45:420770デフォルトの名無しさん
2010/03/05(金) 18:47:330771デフォルトの名無しさん
2010/03/05(金) 20:25:150772デフォルトの名無しさん
2010/03/05(金) 22:01:50どこまでの処理を頂点シェーダーでやれば良いのでしょうか?
0773デフォルトの名無しさん
2010/03/05(金) 22:15:362つのシェーダーはHLSL中でよく似た書き方をするから最初は戸惑うが、
動く粒度が全く違うので同じ処理が出来ないことが実際に書けば分かるよ。
とりあえずシェーダー処理関数のin/outに注目してご覧。
0774デフォルトの名無しさん
2010/03/05(金) 22:42:57ありがとうございます。
Phoneシェーダー書くとしてハーフベクトルを求めるのにも結果は違くなるんですか?
0775デフォルトの名無しさん
2010/03/06(土) 00:12:10頂点シェーダからピクセルシェーダにデータが渡される時に
ラスタライザで頂点間の線形補完がされるのがポイント
フォンシェーダの場合
高ポリゴン時なら頂点間のハーフベクトルの差が少ないのでそれほど気にならないが
低ポリゴン時に想定外の補完がされてしまってボッコボコになってしまうはず
そういうときに頂点単位ではなくピクセル単位でハーフベクトルを計算することになるのだが
当然塗りの面積が大きくなればなるほど負荷が高くなる
その辺のバランス取りは状況に応じてチューニングしていくしかない
0776デフォルトの名無しさん
2010/03/06(土) 00:31:36ありがとうございます。なるほど、、、すっきりしました
0777デフォルトの名無しさん
2010/03/06(土) 00:35:18VSとPSでは差は無いと考えて
VSで計算するようにしているが。
他にシャドウマップ用のZ値なんかもそうだな。
0778デフォルトの名無しさん
2010/03/06(土) 02:33:24いくら、ピクセル単位でハーフベクトルを計算したところで
ハーフベクトルを算出するのに必要な、法線、視線、ライトベクトルの内
法線は頂点間の線形補間されたものしかないわけじゃんw
なら頂点でハーフベクトルを求めて、それをピクセルに渡しても変わりない
大方、ピクセル側でベクトルの正規化をしてないのを
頂点側で計算したベクトルは駄目だ、とか思ってるんじゃないの?
線形補間されるって事は、ベクトルの大きさが1じゃなくなるって理解出来る?
0779デフォルトの名無しさん
2010/03/06(土) 02:47:220780デフォルトの名無しさん
2010/03/06(土) 02:50:0958頂点くらいの球と1000頂点くらいの球で
頂点でハーフベクトルを計算したフォンシェーディングしてみれば分かる
0781デフォルトの名無しさん
2010/03/06(土) 02:52:38普通に考えて
こっちを向いてる頂点と反対側を向いてる頂点が隣り合ってる時に
ハーフベクトルを補完したら
角だけが光っちゃうのは自明ジャン
お前こそ頭使え
0782デフォルトの名無しさん
2010/03/06(土) 02:54:58必要に応じてピクセルシェーダでベクトルを正規化しなおすのは当然だろ。
どの段階でラスタライザの線形補間を挟むかによって誤差の出方は変わってくるんだから、
「変わりない」なんていう乱暴な議論は感心できないな。
0783デフォルトの名無しさん
2010/03/06(土) 03:14:35>>781
お前等って馬鹿だなw
>58頂点くらいの球と1000頂点くらいの球で
>頂点でハーフベクトルを計算したフォンシェーディングしてみれば分かる
で、それらを
ピクセルでフォンシェーディングした時に
58頂点のピクセル計算のと1000頂点のピクセル計算した奴を比べたら変わるか?
そもそも球なら、頂点間でハーフベクトルを補間しても変わらんだろw
>こっちを向いてる頂点と反対側を向いてる頂点が隣り合ってる時に
>ハーフベクトルを補完したら
おいおい、この場合は
どうやってピクセルに法線と視線とライトのベクトルを渡すんだ?
ピクセル単位で処理する場合でも破綻する例まで出して必死だなw
>>782
>必要に応じてピクセルシェーダでベクトルを正規化しなおすのは当然だろ。
当然なんだけど、それやってないような発言ばっかりだったから
>どの段階でラスタライザの線形補間を挟むかによって誤差の出方は変わってくるんだから、
>「変わりない」なんていう乱暴な議論は感心できないな。
フォンシェーディングのハーフベクトルについて、と限定されていると思っていたが?
0784デフォルトの名無しさん
2010/03/06(土) 03:21:28ココをよく読んだほうがいい
http://msdn.microsoft.com/ja-jp/library/dd148687.aspx
0785デフォルトの名無しさん
2010/03/06(土) 03:22:20頂点間でハーフベクトルが補間された値
頂点間で法線、視線、ライトベクトルが補間された値で、ハーフベクトルを算出
後者の方が精度が高いとか言っちゃう奴ってw
0786デフォルトの名無しさん
2010/03/06(土) 03:22:23>>783が実際に試したことがないことが丸分かりだw
0787デフォルトの名無しさん
2010/03/06(土) 03:25:42出た出たwww
やっぱり勘違いしてるじゃんw
ピクセル単位の法線を、法線マップから拾ってる前提じゃん
フォンシェーディングの話をする時に、法線マップ使うなんて前提する奴はイねーw
0788デフォルトの名無しさん
2010/03/06(土) 03:28:11お前が勘違いしてるんだよ
頂点数が少ない事による差と、頂点計算とピクセル計算の差をごっちゃにしてるだけwww
試して動かしても、大本を勘違いしてるんじゃ話になんねーw
0789デフォルトの名無しさん
2010/03/06(土) 03:30:21どっちが精度が高いか低いかという話は置いておいて、
前者と後者はまったく同じ結果にはならないだろ?
0790デフォルトの名無しさん
2010/03/06(土) 03:31:58> 58頂点のピクセル計算のと1000頂点のピクセル計算した奴を比べたら変わるか?
明らかに変わる
0791デフォルトの名無しさん
2010/03/06(土) 03:32:16頂点でのハーフベクトルでフォンシェーディングするのと
同じ58頂点くらいの球で
ピクセルでハーフベクトルを求めてフォンシェーディングするのと
変わらねーだろってこった
なんで1000頂点と比べて綺麗とか言い出すんだ?w
0792デフォルトの名無しさん
2010/03/06(土) 03:36:01>変わらねーだろってこった
少し変わるよ
0793デフォルトの名無しさん
2010/03/06(土) 03:36:34あんただけだな、まともなのは
確かに同値にはならない
しかし、数学的な理解と、シェーダーの原理と、処理負荷を考えれば
フォンモデルのハーフベクトルを頂点で求めるのも、ピクセルで求めるのも大して変わらない
なんで、ピクセルで求めると良いなんて言い出す奴がいるのか?w
って事だ
0794デフォルトの名無しさん
2010/03/06(土) 03:40:05ここに来て「大して」という修飾語が入って安心した。
まあそう熱くなるなよ。
0795デフォルトの名無しさん
2010/03/06(土) 03:42:320796デフォルトの名無しさん
2010/03/06(土) 03:46:25>>793の言うとおり「大して変わらない」と思うよ。
0797デフォルトの名無しさん
2010/03/06(土) 04:09:39なんか別の要素を拾って勘違いしてると思う
0798デフォルトの名無しさん
2010/03/06(土) 04:12:090799デフォルトの名無しさん
2010/03/06(土) 04:15:22>>775に間違いを吹き込まれた>>772が不憫だ
0800デフォルトの名無しさん
2010/03/06(土) 04:25:110801デフォルトの名無しさん
2010/03/06(土) 04:53:43画像まだですか?
0802デフォルトの名無しさん
2010/03/06(土) 05:02:11プログラマだと思ってたんだが…
これだけ説明して、勘違いも突っ込んでやってるのに
(口と態度が悪いのは認めるw)
画像を求める時点で、企画レベル認定(デザイナより劣る)
例えるなら、バグの原因を説明して、バグじゃないと勘違いしてる所も説明してやってるのに
デバッガでステップ実行をして実際の挙動と数値を見せろ、
と言いだす、プログラマに等しい(俺的にはプログラマじゃないと思うがw)
0803デフォルトの名無しさん
2010/03/06(土) 06:14:27座標変換済みの頂点でいいのでしょうか?
行列計算をして3Dで作ればいいのですか?
0804デフォルトの名無しさん
2010/03/06(土) 06:33:09http://www5b.biglobe.ne.jp/~mya_a/directx/phong.wmv
法線マップなど使わないシェーダー計算のみです
殆ど変わらないとは言いがたいな
まぁ、どっち使えってことじゃなくて状況や不可を考えて最適な方法を使えって話だけど
0805デフォルトの名無しさん
2010/03/06(土) 07:05:45802は口が悪いだけじゃなくて口だけってことが証明されちゃったってことでいいですか?
0806デフォルトの名無しさん
2010/03/06(土) 07:25:38>>805
完全に間違ってるだろw
フォンシェーディングする為に使用するハーフベクトルを、
頂点で作成してピクセルに渡して使用するのと
ピクセルで作成して使用するかの違いの話なのに
804は、完全にフォンとランバートを比べてるってーのw
もうね、全然シェーダー理解してないのが分った
0807デフォルトの名無しさん
2010/03/06(土) 07:33:16804は、間違ってると言え、試しているし口調も断定的では無いし、攻撃する気は起きない
806を読めば、自分の間違いを理解出来るんじゃないかな?
ただ805なんかは、理解すらしてないのが丸分りw
あの映像の最初の絵を見た瞬間に、ランバートだろ
って分らないレベルなのに、口を挟んでるじてんで頓珍漢を通り越して、滑稽すぎるw
よかったな2chの出来事で、って感じ
リアルな会社とかなら恥ずかしすぎるw
0808804
2010/03/06(土) 07:35:12じゃあ、シェーダの一部抜粋
さっき適当にざっとやったやつだから汚いけど
VS計算の方の頂点シェーダ
float amb = 0.2f ; // 環境光の強さ
float3 N = normalize(mul(input.Normal, World));
float3 L = normalize(Light);
float3 eye = normalize(Camera - input.Pos.xyz);
float3 H = normalize(L+eye); // ハーフベクトル
output.Diff = Diffuse * max(amb, dot(N, L)) // 通常ライト
+ pow(max(0,dot(N, H)), 20); // フォン
/***********************************************************/
PS計算の頂点シェーダ
float amb = 0.2f ; // 環境光の強さ
float3 N = normalize(mul(input.Normal, World));
float3 L = normalize(Light);
output.Diff = Diffuse * max(amb, dot(N, L)) ;// 通常ライト
output.N = N.xyz ;
output.Eye = Camera - input.Pos.xyz ;
PS計算のピクセルシェーダ
float3 L = normalize(Light); // ローカル座標系でのライト
float3 H = normalize(L+normalize(inEye)); // ハーフベクトル
float3 N = normalize(inN) ;
outDiff = inDiff + pow(max(0,dot(N, H)), 20) ;
どこがランバート?
0809デフォルトの名無しさん
2010/03/06(土) 07:48:11>>808
ん〜デバッグは自分でしてくれw
結果が、明らかにランバート、俺の環境だとハーフベクトルを変えるだけじゃ
違いなんて分らないレベル
こっちもシェーダ貼ってあげるよ、GLのだけど簡単に書いた奴だから分り易いハズ
varying vec3 viewVec;
varying vec3 lightVec;
varying vec3 normalVec;
varying vec3 halfVec;
void main(void)
{
/* フォン用の各情報 */
viewVec = -normalize( vec3(gl_ModelViewMatrix * gl_Vertex) );
lightVec = normalize( gl_LightSource[0].position.xyz );
normalVec = normalize( gl_NormalMatrix * gl_Normal );
/* ハーフベクトル */
halfVec = normalize( lightVec - viewVec );
gl_Position = ftransform();
}
0810デフォルトの名無しさん
2010/03/06(土) 07:49:22varying vec3 lightVec;
varying vec3 normalVec;
varying vec3 halfVec;
void main (void)
{
/* 法線とライトの正規化 */
vec3 fnormal = normalize( normalVec );
vec3 flight = normalize( lightVec );
/* デフィーズ用の内積 */
float lightPow = max( dot(flight, fnormal), 0.0 );
/* デフィーズ */
vec4 color = lightPow * gl_FrontLightProduct[0].diffuse;
/* アンビエント */
color += gl_FrontLightProduct[0].ambient;
/* ハーフベクトル(スペキュラ用) */
/* ピクセルで求めるか、頂点からの値を使用するか */
#if 1
vec3 fview = normalize( viewVec );
vec3 halfVec = normalize( flight - fview );
#else
vec3 halfVec = normalize(halfVec);
#endif
float specular = pow( max( dot(fnormal, halfVec), 0.0 ), gl_FrontMaterial.shininess );
/* スペキュラ */
color += gl_FrontLightProduct[0].specular * specular;
gl_FragColor = color;
}
0811デフォルトの名無しさん
2010/03/06(土) 08:00:20疑うわけじゃないが、一番最初の”VS計算100ポリ”は、明らかにおかしい
理由は、ハイライト部分が、他の場合は回ってないのに
球と一緒に回ってる挙句、点滅してるじゃんw
作為的とまでは言わないがw
明らかに間違ってる
0812デフォルトの名無しさん
2010/03/06(土) 08:05:44ハイライト部分が回ってるんじゃなくて
視線側を向いてる頂点付近だけ急激に光ってるから回ってるように見えるだけ
0813デフォルトの名無しさん
2010/03/06(土) 08:07:11>>808のVSは版はカラーまで計算しちゃってるから。
今比較したいのはVSでハーフベクトルまでを計算してPSに渡すのと、PSで計算するかなのかと
VSで色まで計算するのとはまた話が違う
0814デフォルトの名無しさん
2010/03/06(土) 08:12:010815デフォルトの名無しさん
2010/03/06(土) 08:13:10>低ポリ時の弊害
>視線側を向いてる頂点付近だけ急激に光ってる
全然、理屈が分ってないじゃんw
だから俺の環境だと、もう球じゃなくて8角形にしか見えない低ポリにしても
ポリゴン内のシェーディングは、綺麗なままっだつーのw
しかも、ハイライト部分は動きもしねーしwww
0816デフォルトの名無しさん
2010/03/06(土) 08:16:59だからさ
発言した瞬間に分ってないのがバレるレベルの奴は黙ってればw
>フォンじゃない臭くみえる
いわえるフォンとは、ピクセル側でdot3ライティングをする事
違うと言うなら、ちゃんと理由を言って見ろよwww
0817デフォルトの名無しさん
2010/03/06(土) 08:20:270818デフォルトの名無しさん
2010/03/06(土) 08:22:130819デフォルトの名無しさん
2010/03/06(土) 10:17:520820デフォルトの名無しさん
2010/03/06(土) 10:18:260821デフォルトの名無しさん
2010/03/06(土) 10:46:220822デフォルトの名無しさん
2010/03/06(土) 10:47:370823デフォルトの名無しさん
2010/03/06(土) 11:40:04つうか初心者スレの話題じゃねーだろ。
余所にいけよ、臭いから。
0824デフォルトの名無しさん
2010/03/06(土) 13:04:43これじゃ議論に負けそうな方が、感情論に走っているだけに見えるぞ
0825デフォルトの名無しさん
2010/03/06(土) 13:06:17モデル制作ソフト上で、地形を作る時、
ポリゴンを1枚ずつ複製〜反転で繋げると綺麗に歩けるのですが、
ポリゴンを一括して生成(グリッド生成)すると平面ですら異常な事になったり、何もないのに高さが急に飛んだりします。
○×の ttp://marupeke296.com/COL_Basic_No2_ShortTec.html の「斜面に立つには?」を元にコードを書いたのですが、
それだけでは上手く行かず、「y軸の一番低い頂点を基準に計算する」としたら上手く行きました。
これは私が計算方法に、何か勘違いをしているのでしょうか?
もしくは地形モデルの頂点の並び方が問題なのでしょうか?
推測で構いませんのでご指摘頂けると幸いです。
0826デフォルトの名無しさん
2010/03/06(土) 13:14:10ググったりWikiを読んだ限り「ピクセル単位で計算する」のがセオリーっぽい印象を受けたが
とりあえずそういう理解でいいのかな
0827デフォルトの名無しさん
2010/03/06(土) 13:56:362ch技術系スレの膿が出ましたね
アンタらがここをクソスレに下げてるんだよ
自覚はあるか?
0828デフォルトの名無しさん
2010/03/06(土) 13:57:480829デフォルトの名無しさん
2010/03/06(土) 14:42:032Dポリゴンでやるかスプライトでやればいいよ
0830デフォルトの名無しさん
2010/03/06(土) 14:47:06ペイントで切り貼りして大変だった
http://a-draw.com/contents/uploader2/src/up18148.bmp
まあ結果変わんないね
# VSの場合
h = normalize( (l0+v0) + a * ( (l1+v1) - (l0+v0) ) )
# PSの場合
l = l0 + a * ( l1 - l0 )
v = v0 + a * ( v1 - v0 )
h = normalize( l + v )
※l ライトベクトル、v 視線ベクトル、h ハーフベクトル
これはどちらも同じ式になるので、結果が同じであることに同意出来る
h = normalize( l0 + v0 + a * ( l1 + v1 - l0 - v0 ) )
違いが出るとすれば、PSでlとvを正規化した場合だが・・
これはどっちに転ぶのかねえ
0831デフォルトの名無しさん
2010/03/06(土) 15:02:58>2Dポリゴンでやるかスプライトでやればいいよ
ポリゴンには2Dもへったくれもないし、
スプライトにポリゴンを利用するのなら両者に違いがないということになる。
出直してこい。
0832デフォルトの名無しさん
2010/03/06(土) 15:06:03断片的な情報が収集できただけで困ってたら、
SDKのサンプルソースが一番わかりやすかったよ……orz
ビルドしただけですぐ動いたし。
0833デフォルトの名無しさん
2010/03/06(土) 16:15:580834デフォルトの名無しさん
2010/03/06(土) 16:17:570835デフォルトの名無しさん
2010/03/06(土) 16:57:23>>831
結局、どうすればいいのでしょうか
今このサイトの第12章 ポリゴンを行列で管理するを元に
http://rina.jpn.ph/~rance/directx8/
座標変換済みの頂点を使うスプライトを自作しているのですがそれだと効率が悪いですか?
0836デフォルトの名無しさん
2010/03/06(土) 17:19:05「座標変換済みの頂点にして使っている」のか「座標変換済みの頂点を使っている」のどっち?
0837デフォルトの名無しさん
2010/03/06(土) 17:25:13「座標変換済みの頂点を使っている」のですが
3Dで行列計算をした「座標変換済みの頂点にして使っている」の方が楽に作れる(回転・拡縮)かもしれないと思って聞きました
0838デフォルトの名無しさん
2010/03/06(土) 17:26:17どうせ計算量なんてたかがしれているんだから、好きな方法でかまわない。
0839デフォルトの名無しさん
2010/03/06(土) 17:33:48回転と拡縮は基本的にどちらも同じような処理が必要。
トランスフォーム済み頂点であればビュー行列を意識する必要が無いので
コードが若干少なくなるしデバッグもやりやすいよ。
0840デフォルトの名無しさん
2010/03/06(土) 17:35:51そもそも変換済みだろうとなかろうと、行列で計算は出来るし、
結局はきちんと計算そのものを理解しているかどうか。
変換済みでも中心を切り替える成分を混ぜておけば、好きなように再変換できる。
ぶっちゃけ計算そのものを理解していない奴は、
やり方が分かっていないんだから何をやろうと不便なのは当たり前。
0841デフォルトの名無しさん
2010/03/06(土) 17:44:380842デフォルトの名無しさん
2010/03/06(土) 18:08:56根本的に自分で調べるのが面倒で、
現在のやり方に乗り換えなくていい理由を探すために質問する。
大した手間じゃないんだから両方やってみればいいだけなのに、
言い訳を探して永遠に成長しない人間なんだよね。
0843デフォルトの名無しさん
2010/03/06(土) 18:15:58>大した手間じゃない
そんなに簡単に出来たら質問しませんよ
0844デフォルトの名無しさん
2010/03/06(土) 18:19:42いや、こんなもんもできないんじゃゲームなんて作るの面倒臭くて面倒臭くてたまんないだろ
0845デフォルトの名無しさん
2010/03/06(土) 18:24:26チュートリアルすらやってないのか?
どれだけ怠け者なんだよ。
0846デフォルトの名無しさん
2010/03/06(土) 18:25:400847デフォルトの名無しさん
2010/03/06(土) 18:50:17チュートリアルはやりましたよ
でないと座標変換済み頂点と未変換かなんて思いつかないでしょ?
でも特性を理解して使いこなすにはあれだけでは不十分だと思いますよ
0848デフォルトの名無しさん
2010/03/06(土) 18:53:02>>825をスルーするしたのは見事だと思ってた矢先にこれだよ!
>>825
異常値が出るときの、面法線VとP0、cxcyは書けるかい?
0849デフォルトの名無しさん
2010/03/06(土) 19:21:24試せ。差は確かにある。
0850デフォルトの名無しさん
2010/03/06(土) 19:26:13初心者でもこの程度の処理を書くのが簡単ではないのであればプログラミングをしなければいいのに。
0851チラ裏
2010/03/06(土) 19:40:15座標変換難しいようようょぅ
あたり判定とかレイとかデバッグしにくいようようょぅ
0852デフォルトの名無しさん
2010/03/06(土) 20:36:54それはわかるw
ヘルプが何言ってんだかさっぱりだったなww
イルカとかなw
0853デフォルトの名無しさん
2010/03/06(土) 20:38:24上から目線でしか喋らない奴はもうこのスレから消えればいいんじゃない?
そうやって初心者排除して何したいのだろうね。
0854デフォルトの名無しさん
2010/03/06(土) 20:42:16だが、どこで彼等を修正するんだ?
俺はいまぐらいで調度いいと思うんだが?
0855デフォルトの名無しさん
2010/03/06(土) 20:44:02同僚は問答無用で潰しにくる
ゲーPGに限らず、上司は自分では気軽に聞くくせに部下や他の人間にはそれを許さない
0856デフォルトの名無しさん
2010/03/06(土) 20:45:520857825
2010/03/06(土) 20:50:31ご助言ありがとうございます、
面法線V [x]0.000000 [y]-625.0000 [z]0.000000
P0 [x]-174.9999 [y]0.000000 [z]-99.99999
[cx]111.756142 [cy(モデルのz座標)]102.775612
これがあるべき高さの10倍を超える高さになってしまった時の値なのですが、
正常に高さを計算できるデコボコのメッシュでも、面法線VとP0の座標がどのポリゴンに乗っても同じに・・・
何かもっと別のミスをやらかしてるのかも・・・何故・・orz
0858デフォルトの名無しさん
2010/03/06(土) 21:40:271ドットの狂いも無く一緒になるわけないがな
0859デフォルトの名無しさん
2010/03/06(土) 21:57:330860デフォルトの名無しさん
2010/03/06(土) 22:05:12「なぜ」その計算を行うのか、その計算が「なに」を意味しているか、を理解するには物理の素養が必要だろうね。
0861デフォルトの名無しさん
2010/03/06(土) 22:08:520862デフォルトの名無しさん
2010/03/06(土) 22:09:54言わない俺が悪い時代かも知れんが、答えも書きんさいw
エスパーすると、yとz取り違えているんじゃね?下の式見て、コードの変数全て確認してみそ
高さ = P0[y] + (-Vx * ( cx - P0[x] ) - Vz * ( cz - P0[z] ) ) / Vy
0863デフォルトの名無しさん
2010/03/06(土) 23:17:16いやちゃんと式も書いてるでしょ
同じになるんだよ
16bitカラーなんで、細かい違いが吸収されてるかもしれんが
0864デフォルトの名無しさん
2010/03/06(土) 23:50:310865デフォルトの名無しさん
2010/03/07(日) 00:29:44ソースごとうp
0866デフォルトの名無しさん
2010/03/07(日) 00:32:28Bio100%とかBBXがちゃんと機能してたからなぁ・・・。
0867デフォルトの名無しさん
2010/03/07(日) 00:51:58前者のVS版(頂点シェーダ側でハーフベクトルを計算するケース)では、
H = L + V を正規化せずにそのままラスタライザの線形補間処理に渡してるんだね。
これなら確かにPS版と数式的に完全に一致する。
もしVS版で H = normalize(L + V) としてからラスタライザに渡したり、
あるいは>>830で言及しているようにPS版で H = normzlize(normalize(L) + normalize(V))
というようにLとVを個別に正規化してからハーフベクトルを計算したりすれば、
両者の数式が一致しなくなるから、ローポリなら目に見える程度のわずかな違いは出てくると思う。
0868デフォルトの名無しさん
2010/03/07(日) 01:18:52ゲーム的に
0869デフォルトの名無しさん
2010/03/07(日) 02:53:37両方使うのが推奨じゃないかと思うけど、どうなんだろうね
0870825
2010/03/07(日) 10:44:36ご助言ありがとうございます。式を確認させて頂いたのですが大丈夫なようで、
手前にご指摘頂いた面法線が下を向いている事から
どうやらエディタのバグで、背面非表示モードで作り安心していたものの
特定の操作をしたポリゴンは、出力時に法線方向が反転して書き出されている様でした orz
開発環境で背面カリングを有効にしてなかった自分も自分・・orz
お騒がせして申し訳ありません、解決に至らせて頂きありがとうございましたっ;
0871デフォルトの名無しさん
2010/03/07(日) 12:04:22いや最近はそうでもない。
各メーカーがXInput対応のパッドを順次リリースしてる。
0872デフォルトの名無しさん
2010/03/07(日) 12:42:51現在DirectX10を勉強中で、文字表示をしたいと考えています。
環境はWin7 x64・VisualStudio2008Pro・SDK February 2010です。
msdnの基本チュートリアルを一通り作ってみた状態で、文字を表示したいと思いID3DX10Fontを使ってみたのですが上手くいきません。
チュートリアル5(中心に大きい箱があり、その周りを小さい箱が回っている)は正しく描画できているのですが、そこに文字表示をしようとすると箱の前後関係が崩れ、小さい箱が常に前面に表示されてしまいます。
その際、文字自体は正しく表示されています。
付け加えたコードは
・初期化時
D3DX10CreateFont(g_pd3dDevice, 24, 0, FW_NORMAL, 1, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Aria", &g_pFont);
・描画時(箱を描画する記述の前)
UINT stride = sizeof( SimpleVertex );
UINT offset = 0;
g_pd3dDevice->IASetInputLayout( g_pVertexLayout );
g_pd3dDevice->IASetVertexBuffers( 0, 1, &g_pVertexBuffer, &stride, &offset );
g_pd3dDevice->IASetIndexBuffer( g_pIndexBuffer, DXGI_FORMAT_R32_UINT, 0 );
g_pd3dDevice->IASetPrimitiveTopology( D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST );
・描画時(箱を描画する記述の後)
RECT rc = {10, 10, 0, 0};
g_pFont->DrawText(NULL, L"Hello World!", -1, &rc, DT_LEFT | DT_NOCLIP, D3DXCOLOR(1.0f, 1.0f, 0.0f, 1.0f));
です。
また、スプライトを自分で作成しDrawTextに渡した場合、DXUTでCDXUTTextHelper使った場合も同様の結果でした。
前後関係が崩れるのはDrawText()やPreloadText()が実行された後なので、文字生成したときにデプス関係の設定が変わってしまうのかと予測を立てていますが、解決策が分かりません。
すべき設定や間違っていそうなところ、サンプルコード等ありましたら教えて下さい。よろしくお願いします。
0873デフォルトの名無しさん
2010/03/07(日) 13:56:47PIXで追ってみるっと分かるが
内部で勝手にOMSetDepthStencilState、OMSetDepthStencilStateが呼ばれてる
箱を書いてるシェーダーでステートをきちんと指定してやるか
うろ覚えだがSpriteのBegin辺りでEndでステートを復元するフラグがあったような気がする
0874デフォルトの名無しさん
2010/03/07(日) 16:07:07このタイミングで、お前見たいな知ったかが一番性質が悪い
今問題にしてるのは、スペキュラ計算はピクセル毎にするが、その為の係数を
頂点毎に求めてピクセルに渡すか、ピクセル毎に求めるかって話しなんだよ
ポリゴンが荒くとも結果は、ほとんど同じなんだよ
お前の話は、頂点でスペキュラ値を求めて、それをピクセル側で使う場合の話なの
この問題、始めか理解出来てない奴ばっかりだなw
0875デフォルトの名無しさん
2010/03/07(日) 16:11:35DepthStencilStateを設定することで表示することができるようになりました。
復元フラグは試していたのですが、どちらにせよ1回はステートをセットしてやらないと意味がなかったですね。
実はPIXがどういったものか知らず、デバッグの仕方がよく分からないという状況だったのですごく助かりました。
ありがとうございました。
0876デフォルトの名無しさん
2010/03/07(日) 17:10:58トライアングルに変換してくれるメソッドってないのでしょうか?
0877デフォルトの名無しさん
2010/03/07(日) 17:20:28リンカの設定もFebに変えてあります。
他に何が原因でしょうか?
ちなみにコンパイルしようとしたプログラムはDrawTextでHello worldを表示するだけのもの(一般的なサンプルと同じく余計なコードはありません)です。
0878デフォルトの名無しさん
2010/03/07(日) 17:22:470879デフォルトの名無しさん
2010/03/07(日) 18:05:22いや、それくらいはわかるよ
0880デフォルトの名無しさん
2010/03/07(日) 19:44:490881デフォルトの名無しさん
2010/03/07(日) 19:58:48リビルドしてないとか
0882デフォルトの名無しさん
2010/03/07(日) 22:35:25ある
0883デフォルトの名無しさん
2010/03/07(日) 23:41:16ない
0884デフォルトの名無しさん
2010/03/07(日) 23:47:35ちなみにメッシュクラスは頂点バッファとマテリアル情報を持っています。
0885デフォルトの名無しさん
2010/03/08(月) 00:02:060886デフォルトの名無しさん
2010/03/08(月) 00:04:35同じものを同時に10個表示しようとした時に
10個メッシュクラスを作らないといけないような作りになってなければいいんじゃない?
特にそれぞれが違うアニメーションしてたり
違うシェーダーでレンダリングしたりする場合に特に問題がないかどうか
0887デフォルトの名無しさん
2010/03/08(月) 00:49:320888デフォルトの名無しさん
2010/03/08(月) 01:12:43DrawSubset程度の基礎機能しか持たないほうがいいよ。マテリアルをどう解釈するかは外部に出した。
0889デフォルトの名無しさん
2010/03/08(月) 01:54:31で、必要に応じて描画クラスを使い分けるようにすると、一つ一つの描画クラスは単純な実装にできる。
0890デフォルトの名無しさん
2010/03/08(月) 06:32:15モデル(メッシュ)とシェーダは分けて、それぞれを他と共有、組み合わせられるようにして、
おおよそよい感じになってるんだけど、
シェーダが必要とするシェーダ変数を持ってるのが、シェーダ自身、モデル、モデルに位置や向きを
あたえるキャラクタ等に分散していて、しかもそれらをSetするタイミングが違う
(例えば、アニメーションモデルなら、ボーン毎にDrawSubsetするタイミングで合成行列を
シェーダ変数にセットする)ので、どこか一つのクラスで一元的にシェーダ変数を管理できない・・・
あまり結合度を上げたくないが、現状ではうまく組み合わせたときに正しく動くことを期待した組み方
(例えば、モデル側で勝手にシェーダ変数をpEff->SetXXXでセットしようとするが、
それがシェーダにあるか保障されていない)になってしまっている。
何とか動いてるけど、もっとキレイな設計ないかな・・・
0891デフォルトの名無しさん
2010/03/08(月) 12:15:40もっとも単純な描画はメンバー変数の Material.render() に丸投げだが、
Mesh.animate()がもの凄いぐちゃぐちゃと書き換えるのが普通に死ねる。
0892デフォルトの名無しさん
2010/03/08(月) 12:30:15ありがとうございます。
メッシュにありそうな過去ログがあったので、そのあたり調べてました。
0893デフォルトの名無しさん
2010/03/08(月) 17:37:49べつに3DCGソフト作るわけじゃないし
0894890
2010/03/08(月) 19:00:25>>893
なるほど・・・。
やはりどこかで落とし所が必要だよね。
ちょっと拡張性にこだわりすぎてた気がするよ。
参考になった。
ありがとう。
0895デフォルトの名無しさん
2010/03/08(月) 19:00:43Meshのインスタンスを描画クラスのメソッドに引数にぶち込むと描画されるようにしてる
0896デフォルトの名無しさん
2010/03/09(火) 04:57:09D3DXLoadMeshHierarchyFromXでのメッシュの頂点色についてなのですが、
・メッシュのファイル内には、ちゃんと頂点色のデータが存在している。
・描画時にHLSLへ頂点色を後付で送れば、その色が足されて描画される。
・何もしないとファイルに設定した頂点色が反映されず、モノクロテクスチャのまま。
こういう状態です。
読み込み部分であるはずの仮想関数のCreateMeshContainerを見ると
どうも頂点色(Diffuse)を読み込む記述が無いように見えるのですが、
やはり具体的に頂点色(Diffuse)を取得する記述が無いという事は
取得がされていないという事なのでしょうか?
何かご指摘を頂けると助かります。 よろしくお願いします。。
0897デフォルトの名無しさん
2010/03/09(火) 06:58:52良くあるサンプルで見かけるのはマテリアルカラーを
Diffuseとしてシェーダーとして送ってるけど
とりあえず読み込んだメッシュの頂点フォーマットを調べて
頂点カラーがあるかどうか確認する
あれば頂点シェーダーに入力されるCOLOR0で拾えるはずだけど
0898デフォルトの名無しさん
2010/03/09(火) 15:32:16進研模試の偏差値でいうと2ちゃんねるのニュース速報がおよそ45、民放地上波の報道ステーションが約40、
ニュース速報+は35程度の読者を想定しています。
0899デフォルトの名無しさん
2010/03/09(火) 18:25:17稼働環境:XPSP3、DirectX 9.0c ランタイム
今ならDirectXのSDKはどれを落とせばいいんでしょうか。
0900デフォルトの名無しさん
2010/03/09(火) 18:29:230901デフォルトの名無しさん
2010/03/09(火) 19:55:06ありがとうございます、最新ので良いのですね
0902896
2010/03/09(火) 21:15:46>マテリアルカラーと頂点カラーをごっちゃにしてないか?
その通りでした、orz
VertexColorはそもそも頂点の数(300弱)定義されているのにマテリアルは1個ですよね;
>とりあえず読み込んだメッシュの頂点フォーマットを調べて
LockVertexBufferして中を見たのですが、FVFのフラグ数値の意味が解らず、とりあえず中を見ると
1頂点36バイトで 頂点座標xyz 法線xyz 謎の4バイト U座標V座標 順に並んでおり、
謎の4バイトがRGBAかと思ってVertexColorの数値をいじってみたものの変化がありませんでした。
しかしCloneFVFというのが気になり、一部にしか設定してなかった頂点カラーを全ポリゴンに設定した所、
ポリゴン単位での頂点カラーが、正しく適応されて描画されるようになりました;
しかし、同じ仮想関数を通して生成した別のモデル(階層構造が無いモデル)は相変わらず頂点カラーは描画されず・・。
これは一体、何が起きているのでしょうか?;
また、処理中に頂点カラーを書き換える為にも所在を知りたいのですが、何か手はないでしょうか・・orz
0903デフォルトの名無しさん
2010/03/09(火) 21:36:14固定機能ならある程度自動でやってくれたけど
シェーダーは自分で書いたようにしか動かないんだから
何が起きてるもなにもそうなるように書いてるんだろう
ソースを全部うpするか頂点シェーダ部分だけでも書いてみ?
0904902
2010/03/09(火) 23:01:54ttp://www1.axfc.net/uploader/Sc/so/90811
マテリアルのDiffuseを送る為に変数(?)CCC_DIFを作って送ってる以外、
ほぼSDKサンプルのままです; 使いたい機能が有るものの理解がまだぜんぜんで orz
頂点カラーがちゃんと描画されるモデルが有るという事は
VertexBuffer内にデータは有るハズなんですよね・・何か勘違いしてるはず・・orz
0905デフォルトの名無しさん
2010/03/09(火) 23:41:55頂点シェーダー入力情報に色情報を追加して
シェーダー内でブレンドするなりなんなりと
struct VS_INPUT
{
float4 Pos : POSITION;
float4 BlendWeights : BLENDWEIGHT;
float4 BlendIndices : BLENDINDICES;
float3 Normal : NORMAL;
float3 Tex0 : TEXCOORD0;
float4 Color : COLOR0;// これ
};
0906デフォルトの名無しさん
2010/03/10(水) 00:37:09http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter05.html
0907904
2010/03/10(水) 19:10:31ありがとうございます。色々とテストし続けた結果、頂点カラーの確認ができ、
RGB値が0か255以外の値は全て255になって読み込まれている事が解りました。
変に微調整した色を使うとなぜか全て255,255,255へ。。
何か読み込む段階で問題が有りそうな事に・・色々ご助言ありがとうございました。
英文・・苦手ですが、いつか目を通せればと思います。HLSLも勉強しなければ。。
ありがとうございました。
0908デフォルトの名無しさん
2010/03/11(木) 14:14:570909デフォルトの名無しさん
2010/03/11(木) 15:18:590910デフォルトの名無しさん
2010/03/11(木) 19:00:570911デフォルトの名無しさん
2010/03/11(木) 19:31:43レスありがとうございます
0912デフォルトの名無しさん
2010/03/12(金) 10:34:082Dゲームを作ろうと思うのですが、3D関係を習得して2Dを作ったほうが良いのでしょうか
0913デフォルトの名無しさん
2010/03/12(金) 10:38:21消えるも何もそんなモノはない
0914デフォルトの名無しさん
2010/03/12(金) 10:49:37当分消えないと思うけど、バージョンアップの見込みが低いと思う
両方覚えた方がいい
0915デフォルトの名無しさん
2010/03/12(金) 11:50:43Direct3Dに慣れといた方がいいと思うの
0916デフォルトの名無しさん
2010/03/12(金) 12:01:120917デフォルトの名無しさん
2010/03/12(金) 12:03:39スワップしないように意識した方がいいのはもちろんだけど確保失敗しないところがいい
0918デフォルトの名無しさん
2010/03/12(金) 12:11:28リアルでも会話の流れを無理矢理自分の進めたい話に持って行こうとして、
空気の読めない奴だと周りから思われているんだろうね。
0919デフォルトの名無しさん
2010/03/12(金) 12:29:320920デフォルトの名無しさん
2010/03/12(金) 17:54:210921デフォルトの名無しさん
2010/03/12(金) 18:23:330922デフォルトの名無しさん
2010/03/12(金) 18:32:43ということでよろしいのですね?
0923デフォルトの名無しさん
2010/03/12(金) 19:10:10今の英語サイトがAugust 2009だからそろそろ来てもいい気がするが…
Direct2DやらDirectWriteやら項目が増えてるからまだ放置されるかもな
0924デフォルトの名無しさん
2010/03/12(金) 21:31:55--------------------------------------------------------------------------------------------------------------------------------
if(keyState['F']&0x80) myangle.y-=D3DX_PI/72;
if(keyState['G']&0x80) myangle.y+=D3DX_PI/72;
if(keyState['T']&0x80) myvec.z=+0.15f;
if(keyState['V']&0x80) myvec.z=-0.15f;
--------------------------------------------------------------------------------------------------------------------------------
D3DXMATRIXA16 matWorld1,matWorld2,matWorld3;
D3DXMatrixRotationYawPitchRoll(&matWorld2,myangle.y,myangle.x,myangle.z);
D3DXVECTOR3 myvec2;
D3DXVec3TransformCoord(&myvec2,&myvec,&matWorld2);
mypos+=myvec2;
D3DXMatrixTranslation(&matWorld1,mypos.x,mypos.y,mypos.z);
matWorld3=matWorld2*matWorld1;
pDevice->SetTransform(D3DTS_WORLD,&matWorld3);//―*
D3DXVECTOR3 viewvecE(1.0f,8.0f,-0.5f),viewvecL(1.0f,8.0f,0.0f);
D3DXVECTOR3 viewvec;
D3DXVec3TransformCoord(&viewvec,&viewvecE,&matWorld2);
D3DXVECTOR3 vEyePt(mypos.x+viewvec.x,mypos.y+viewvec.y,mypos.z+viewvec.z);
D3DXVec3TransformCoord(&viewvec ,&viewvecL,&matWorld2);
D3DXVECTOR3 vLookatPt(mypos.x+viewvec.x,mypos.y+viewvec.y , mypos.z+viewvec.z);
D3DXVECTOR3 vUpVec(0.0f,1.0f,0.0f);
D3DXMATRIXA16 matView;
D3DXMatrixLookAtLH(&matView,&vEyePt,&vLookatPt,&vUpVec);
pDevice->SetTransform(D3DTS_VIEW,&matView);
C++でVS2008EEを使用しています。上のようにするとキーボードで回転角を変化させても三角の面を描画した画面上には変化が起こりません。試しに*のコメントがある行のmatWorld3を
matWorld1、matWorld2に変えてみるとmatWorld1のときはカメラが前後移動・円移動をし、matWorld2では回転が出来ていました。どなたかご教授願います。
0925デフォルトの名無しさん
2010/03/12(金) 21:34:32デバイスロスト復帰後は透明じゃなくなりました。
D3DPOOL_MANAGEDは復元で元のフォーマットを考慮してくれないんでしょうか?
DirectX9です
0926925
2010/03/12(金) 21:38:05レンダリングステートの関係でした。
0927デフォルトの名無しさん
2010/03/12(金) 21:44:53何がやりたいのか良く分からんが
三角の面とカメラが同時に回ってるから
いくら回しても同じ面しか映らないぞ
0928924
2010/03/12(金) 22:12:29一人称視点・三人称視点が切り替え可能なガンシューティングを作ろうと思っていました。
自キャラを表示した後
D3DXMatrixTranslation(&matWorldm,0,0,0);
pDevice->SetTransform(D3DTS_WORLD,&matWorldm);
とさっきのコードの下に書き加え三角形を表示したところうまくいきました。
キャラ表示用の設定のまま三角形を描画していたのですね。
非常にお早い返答ありがとうございました。また、説明不足で申し訳ありませんでした。
0929デフォルトの名無しさん
2010/03/12(金) 22:44:200930デフォルトの名無しさん
2010/03/12(金) 22:48:11http://hardware-navi.com/gpu.php
0931デフォルトの名無しさん
2010/03/12(金) 22:58:27え!?DX11はデバイスロスト対策いらないの!?
これはでかい・・・!
0932デフォルトの名無しさん
2010/03/12(金) 23:16:140933デフォルトの名無しさん
2010/03/12(金) 23:28:56オンラインゲームや一般のゲーム(DirectXで開発をしているもの)で
ゲーム内ウィンドウをどうやって実装しているのか分かりません。
WIN32APIなどの関数が使えるわけでもないので、どうすればいいでしょうか?
0934デフォルトの名無しさん
2010/03/12(金) 23:40:25手間かがかかるのは、APIでインプットを取ってきて自前実装すること。
当たり判定とかは得意でしょ?
0935デフォルトの名無しさん
2010/03/12(金) 23:44:13実際に作ってみれば分かるが、ゲームで使うウインドウシステムなんて
自分で作ってもそんなに難しくない。
0936デフォルトの名無しさん
2010/03/12(金) 23:44:30マウスで「つまむ」、「ドラッグする」という動作を実装するだけ。
あとはマウスの状態によって「ウィンドウ」の描画状態を変更するだけだからそれほど難しいことではない。
0937デフォルトの名無しさん
2010/03/12(金) 23:48:28とりあえず、こう書きゃ動くくらいに考えたら簡単だよ。
0938デフォルトの名無しさん
2010/03/12(金) 23:53:140939933
2010/03/13(土) 00:12:25作り始めているんですけど、なかなか私の能力だけじゃ難しくて…
各イベントのメッセージなど、どうすればいいのか全く検討がつかないです。
0940デフォルトの名無しさん
2010/03/13(土) 13:03:55複数走らせられるようなシステムにしとけばいい気がするけどな
変にマルチに動かれると複数のウィンドウから同時に同一の情報にアクセスしたときに起こる、
みたいな再現性の無い変なバグ引き起こすことあるし
0941デフォルトの名無しさん
2010/03/13(土) 13:53:52DX7の最新のsdk(ver7.1?)ってもう手に入らないのですかね?
せめてヘッダやライブラリがあればいいのですが、最新のDirectX SDKには含まれていませんでした
0942デフォルトの名無しさん
2010/03/13(土) 14:15:48付属のCD-ROMから入れるしかないんじゃないか?
もう公式はもちろんアングラな場所からも消えてから大分経つよ
0943デフォルトの名無しさん
2010/03/13(土) 14:49:018以前とかmusicとかの過去のコンポーネントが削除されたのはNovember2007だから
サンプルとか抜きにして作りたいだけならAugust2007でいける
August2007が今DL出来るかどうかは知らんが
0944デフォルトの名無しさん
2010/03/13(土) 14:52:31ヘッダは最新のSDKにも入ってるだろ。
消えたのはDX8関係。これは2007 August辺りが最後だと思う。
0945デフォルトの名無しさん
2010/03/13(土) 14:56:39拡張したマテリアル情報を含んだXファイルを保存しようとしているのですが
D3DXSaveMeshHierarchyToFile()関数に
ID3DXSaveUserDataに実装したものを渡して処理しているのですが
デフォルトのMaterialのテンプレートと同名のGUIDを持つカスタムテンプレートを
登録して保存してみても、デフォルトテンプレートのMaterialと
カスタムテンプレートのMaterial情報が保存されてしまい思った用に処理できません
デフォルトテンプレートでの処理を上書き処理についてご教授おねがいします
0946デフォルトの名無しさん
2010/03/13(土) 17:49:31>>943
ありがとうございます
August2007探してみます
>>944
ddraw.hはあるのですが、d3d.hやd3dx〜.hが無いんです
同様にライブラリもddraw.libはあってもd3d関連のが…
0947デフォルトの名無しさん
2010/03/13(土) 18:05:480948デフォルトの名無しさん
2010/03/13(土) 18:16:51dx7のHwTnLもどういう扱いになるのか気になります
0949デフォルトの名無しさん
2010/03/13(土) 18:24:260950デフォルトの名無しさん
2010/03/13(土) 18:55:10テンプレートの登録はちゃんとカスタムのMaterialにしてるの?
RegisterTemplatesあたりだと思うが
>デフォルトのMaterialのテンプレートと同名のGUIDを持つカスタムテンプレートを
デフォルトMaterialのGUIDは、デフォルトMaterialだけのものだから
こういうことはやっちゃいけない気がするが・・
0951デフォルトの名無しさん
2010/03/13(土) 20:13:030952デフォルトの名無しさん
2010/03/13(土) 20:15:270953デフォルトの名無しさん
2010/03/13(土) 20:22:43無変換だとワールド座標の原点(メッシュのローカル座標?)を中心としたメッシュの空間にヒットします。
レイの座標やベクトルにワールド(逆)変換をかけても原点を中心とした空間にしかヒットしません。
0954デフォルトの名無しさん
2010/03/13(土) 20:29:100955デフォルトの名無しさん
2010/03/13(土) 21:32:162000年頃のRadeonです
0956デフォルトの名無しさん
2010/03/13(土) 21:51:08うむ、報告ごくろう
0957953
2010/03/13(土) 22:03:29レスありがとうございます。
距離情報等が欲しいのですが、
http://www.toymaker.info/Games/html/picking.html
のRay - Mesh Intersection testのようにレイを動かしての取得は出来ませんか?
0958デフォルトの名無しさん
2010/03/13(土) 22:38:24rayをmeshのローカル空間にもってくる
交差判定、交点を求める
交点にmeshに適用してる行列を掛ける
0959デフォルトの名無しさん
2010/03/13(土) 22:48:52はい、ID3DXFile::RegisterTemplatesを使ってテンプレートを登録しています
マテリアル保存の処理を置き換えた処理をしたくて
カスタムマテリアルテンプレートをオリジナルのGUIDで登録
↓
デフォルトのマテリアル情報とカスタムのマテリアル情報が保存される
カスタムのマテリアルテンプレートをデフォルトのGUIDで登録
↓
デフォルトのマテリアル情報とカスタムのマテリアル情報が保存される
といった動作になってしまうので悩んでいます
ID3DXSaveUserDataは新たな要素を保存するメソッドを追加するだけで
既存の処理を置き換えるってことは出来ないんでしょうか?
0960デフォルトの名無しさん
2010/03/14(日) 02:08:200961デフォルトの名無しさん
2010/03/14(日) 03:07:15それグラボ関係無いじゃん
0963デフォルトの名無しさん
2010/03/15(月) 14:15:07August 2008に更新される前は、April 2006のまま超長期放置されていた事を忘れていないか?
0964デフォルトの名無しさん
2010/03/15(月) 14:16:380965デフォルトの名無しさん
2010/03/15(月) 15:23:040966デフォルトの名無しさん
2010/03/15(月) 15:35:08前提条件が違う
0967デフォルトの名無しさん
2010/03/15(月) 15:41:440968デフォルトの名無しさん
2010/03/15(月) 16:06:240969デフォルトの名無しさん
2010/03/15(月) 16:13:48使わない人はoct2004使っとけばいい
何も問題ないな
0970デフォルトの名無しさん
2010/03/15(月) 17:10:51日本の開発力はガタガタに落ちたというか英語圏に引き離される一方
0971デフォルトの名無しさん
2010/03/15(月) 17:18:470972デフォルトの名無しさん
2010/03/15(月) 17:19:490973デフォルトの名無しさん
2010/03/15(月) 17:40:250974デフォルトの名無しさん
2010/03/15(月) 17:57:460975デフォルトの名無しさん
2010/03/15(月) 18:02:36ゲーム会社の英語力はそんなにズバ抜けてヤバいのか?
0976デフォルトの名無しさん
2010/03/15(月) 18:25:10だから、英語力なんかつくわけない。
0977デフォルトの名無しさん
2010/03/15(月) 18:34:150978デフォルトの名無しさん
2010/03/15(月) 18:56:13中学生レベルの一般常識+高卒レベルの数学と物理、
入社してから英語を学ぶ機会があるのはリーダー以上や社外の人と会うプランナーぐらい。
PS3なんかツールやライブラリがSCEE頼みで、SCEJは何もしてくれないから困る。
それに比べればMSはかなり親切なほうだと思う。
0979デフォルトの名無しさん
2010/03/15(月) 19:17:290980デフォルトの名無しさん
2010/03/15(月) 19:47:45横に伸びてしまう?
0981デフォルトの名無しさん
2010/03/15(月) 20:12:45・ドットバイドット
・アス比保ったまま引き伸ばす
・保たず引き伸ばす
・モニターに任せる
0982デフォルトの名無しさん
2010/03/15(月) 20:22:090983デフォルトの名無しさん
2010/03/15(月) 20:47:17ビデオカードのスケーリング機能は、NVIDIAのドライバがポンコツなせいで
動かないことが多いので、気にする余裕があるならした方がいい。
とりあえず、ウインドウモードでウインドウサイズを変えれるようにしてあれば
苦情は来ないと思う。
ポインティングデバイスを使うソフトだと面倒だけどね。
0984デフォルトの名無しさん
2010/03/15(月) 21:31:47ありがたや
0985デフォルトの名無しさん
2010/03/15(月) 21:37:240986デフォルトの名無しさん
2010/03/16(火) 03:06:53アクセス規制に巻き込まれて返事遅れましたが、その通りでした。ありがとうございます。
0987デフォルトの名無しさん
2010/03/16(火) 17:09:40これをフリーで提供しますのでPS系の標準にしてくれませんか、
という提案をすべき。
0988デフォルトの名無しさん
2010/03/16(火) 17:16:240989デフォルトの名無しさん
2010/03/16(火) 17:17:010990デフォルトの名無しさん
2010/03/16(火) 18:17:170991デフォルトの名無しさん
2010/03/16(火) 20:30:20ツールやライブラリ以前に開発機材の管理からSCEE頼みだから提案するにも根本的にだな・・
>>989
むしろ全て頭に入っているプログラマがいたら教えてくれ、歩く辞書と名づけるわw
0992デフォルトの名無しさん
2010/03/16(火) 20:53:13【C++】 DirectX初心者質問スレ Part28 【C】
http://pc12.2ch.net/test/read.cgi/tech/1268666208/
レス数が950を超えています。1000を超えると書き込みができなくなります。