[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/11 09:12 / Filesize : 247 KB / Number-of Response : 959
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【C++】 DirectX初心者質問スレ Part17 【C】



1 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:55:56 ]
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。

【C++】 DirectX初心者質問スレ Part16 【C】
pc11.2ch.net/test/read.cgi/tech/1202634347/

463 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:24:29 ]
固定シェーダの恐怖だな
nVidiaとその他一部のボードでは動くんだけど
それ以外ではうんともすんとも言わないとかいう状況がありえる恐怖
(納期まで一週間とかいう状況ではじめてRADEONで動かして画面真っ黒になったときは血の気が引いたw)
HLSL使うようになってからそういう苦労は一応消えた

固定シェーダ止めるとこの辺はグッと楽になる

464 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:27:22 ]
>(納期まで一週間とかいう状況ではじめてRADEONで動かして画面真っ黒になったときは血の気が引いたw) >
いやあああああああ

465 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:05:12 ]
>>461
なるほど、とりあえずRADEONの購入は検討してみます

>>463
それは血の気が引きそうですね
私も公開するゲームを作っているので、なるべくRADEONにも対応したいところです
全てHLSLで書くのも検討していますが、「・テクスチャーの表示がおかしい」の件は、HLSLを使った描画の部分でも発症しているので困ったものです…

466 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:47:12 ]
DirectXの勉強をはじめたいのですがもう固定機能パイプライン?は無視してHLSLとかプログラマブルな
シェーダーの勉強を始めたほうがいいのでしょうか?

467 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:55:47 ]
自分の開発環境がプログラマブルシェーダに対応しているなら、そっちのみでいいと思われる。
VertexShaderは最低でもソフトウェアエミュレートができるし、
PixelShaderにしてももう対応していないグラボなんて存在しないと思っていい。




でもオンボは対応してねーんだよなぁ('A`)

468 名前:466 mailto:sage [2008/05/16(金) 21:58:34 ]
MSのカンファレンスでもらったVS2008スタンダードにGe7900gs、OSはXPです。
固定機能はさすがにいいですかね。

469 名前:466 mailto:sage [2008/05/16(金) 21:59:39 ]
ありがとうございました。

470 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:03:59 ]
皆さんノートPCのことも考えてあげてください
もしくはこの世から全てのオンボードPCを破壊してくださいマジでもう

471 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:15:54 ]
>>452
vc++2008ではまんまではコンパイルとおらなかったので、DInput.cppの

63行目 ret = DirectInput8Create(hinst,DIRECTINPUT_VERSION,IID_IDirectInput8,(void**)&lpDInput,NULL);
115行目 ret=lpDInput->EnumDevices(DI8DEVCLASS_GAMECTRL,InitJoystickInput,lpDInput,DIEDFL_ATTACHEDONLY);

に修正してコンパイルとおしたんだけど、126行目がfalseを返してくるの。




472 名前:453 mailto:sage [2008/05/16(金) 22:29:39 ]
色々アドバイスありがとうございました。

>・固定シェーダの挙動がおかしい
この件ですが、RADEON上だけでなく、GF上でもREFモードだとうまく表示できませんでした。
>>459さんのアドバイスがクリーンヒットだったようで、気をつけながら直したところ、REFでも綺麗に表示されるようになりました。
RADEON上でpTexture1が乗算されるようになったようです。
(ただし、pTexuter1自体がバグっているため、乗算はされたものの、おかしなテクスチャが乗算されています)

今後はREFモードでちょくちょくチェックしながらやっていきます。


現在は、RADEON使いと連絡がとれなくなってしまったため、
「・テクスチャーの表示がおかしい」については後日また調査して、報告します。
どうしても治らない場合はまた相談させていただくかと思いますが、その時はよろしくお願いします。

473 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:36:29 ]
お疲れさん
ちゃんと報告してくれる質問者は歓迎だぜ

474 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:08:47 ]
ウホッここを覗いててよかった
ラデオン買ってくる

475 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 07:41:55 ]
>>471
DIrectX 7以下じゃないと動かないよ
8にするなら全部書き換えろ

476 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 07:49:36 ]
>>448
Dinput.hに
#define DIRECTINPUT_VERSION 0x0700
を追加


477 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:09:42 ]
関係ないけど、DirectInputってウイルスバスターが不正変更で〜って怒るとない?
お兄さんたちはどうしてるのかな?

478 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:12:54 ]
あ、あれってDirectInputのせいなんだ。。。

僕の作ったソフトも怒られるから気になってたけど。。。

479 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:32:53 ]
ウイルスバスターはDirectInput使うと怒るのね
友人にテストしてもらったら
「不正な変更とか出る ウイルスだろこれ?」
とか言われたお

ネットワーク対応ゲームでも作ろうかと思うんだが、
DirectPlay使うのとWinSock使うのとどっちがいいんだろ
DirectPlyaはWinSockに比べるとダメだという話をよく聞くけど
どこがどうだめだかよくわかんね
手軽に実装するならDirectPlayのほうが楽そうにも感じる
そこら辺詳しい人いませんか?

480 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 17:25:02 ]
あんま詳しくないが、TCP使えないらしいお。
そういった制限があるから、やっぱ「お手軽通信」なイメージはある。
Winsockは、アプリケーションが使うTCP/IPの基本かつ全てだから
DirectPlayに出来てWinsockに出来ないことはない。
そういう意味だとオモ<Winsockに比べるとダメ

本当にTCPが使えないのなら、オンラインRPGには無理なだ。

481 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:00:21 ]
今右ドラッグで3Dオブジェクトを回転させるのをやっていて、とりあえず
D3DXQuaternionRotationYawPitchRoll(&q,マウスのX変移,マウスのY変移,0);
とやってそれっぽい動きにはなってるんですが、どうもメタセコとかと操作感が違うんですよね。
ドラッグ開始時にXYの回転軸を作って、それに対する回転てやりたいんですが
何使ったらいいですか?



482 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:11:10 ]
>>481
RotationYawPitchRollは角度が非常に小さければ任意軸周りの回転に
近い動きをするが、本来は全く違うもの。
マウスの移動量とZ軸で外積を取って、その軸周りの回転を使う。

483 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:20:19 ]
>>482
親切にありがとうございます。意味はなんとなく分かるんですが、頭がついて来れなくて・・・
で、それはZ回転が起こらない場合にのみ使えるんですよね?多分(今回はそれでもいいですが)

484 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 19:57:07 ]
>>479
色んな通信に対応しすぎてて、初期化が遅いのが一番の不満かな<Play
といってもPlay使ってたのはDirectX7の頃だから、改善されてるかもしれんが。

WinSockなら全ての通信を自分で把握できるのが強み。

485 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 20:27:13 ]
>>484
DirectPlayは廃止されて久しい。
WinSockを叩くのが一番無難で楽しい。

486 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 20:32:54 ]
WinSockだとセッションとかのゲーム的な概念がないから
そこらへんも全部自分で実装しなきゃならないんだよね?
WinSockのネットゲームで使えそうなお手ごろサンプルがあるといいんだけど

487 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 03:08:12 ]
質問です。
DirectXを使って2Dゲームを作ってみようと思ってMSDNのリファレンスを見ていたところ、
CreateVertexBuffer()で頂点バッファを作ってLockとUnLockの中で頂点を処理していました。
ですが、別のホームページにはこれらを使わずに描画してるページもありました。

2Dの場合はCreateVertexBufferを使わずに描画したほうがいいのでしょうか?
それともCreateVertexBufferを使わなくても描画出来るという解釈でいいのでしょうか?

488 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 03:22:35 ]
別にどういうやり方しても構わないよ。
ただ、
・頂点バッファをビデオメモリ上、AGPメモリ上に作ると描画が速い
・が、そういう場所に作った頂点バッファをLockするのは重い(ビデオカードの処理を止めるから)
・システムメモリ上に作った頂点バッファのロックなら遅くない(多分。)が、
 それは頂点バッファ作らない方法と同じこと。ビデオカードから遠いので描画は遅い

毎フレーム書き換えるような頂点配列なら、システムメモリに置くか
頂点バッファ使わずにやるのがのがいいんじゃないかと。
検証とかしたことないので間違ってたら指摘ヨロ

489 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 03:26:37 ]
チラシの裏にでも書いてろ

490 名前:487 mailto:sage [2008/05/19(月) 03:43:14 ]
>>488
なるほど、どっちの処理が重いかで使い分けるといいみたいですね。
ありがとうございます。

491 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 10:26:00 ]
>>488
追加⇒DYNAMICとDISCARDフラグを組み合わせると描画もLockも速いがメモリを食う。



492 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 13:56:52 ]
>>489
なるほど、チラシの裏ですね
よくわかりました

493 名前:472 mailto:sage [2008/05/19(月) 19:22:45 ]
色々アドバイスいただいた>>453です。
>>459さんのアドバイスによる修正のおかげか、RADEON上でも綺麗に表示されたそうです。
ありがとうございました。

D3DTSS_COLORARG1 にTEXTURE
D3DTSS_COLORARG2 にCURRENT
なるべくこうするのが吉。というわけですね。
大抵の初心者サイトがこうしている一方、時々は逆も見かけるようです。
他の人が同じ失敗しませんように…。

494 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 19:35:23 ]
チェックしたら見事に失敗してたわ
SDKをもう一回全部読み直したほうがいいかもなー・・・

495 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:06:53 ]
演出について質問
キャラが地面に着地した際、演出として着地点のまわりに衝撃波を立てたいと思っています
例えるなら、牛乳の入ったコップに牛乳を一滴おとした時にできる、王冠のようなものです

こういう演出はどのようにして実装するのが良いでしょうか?
今まではボーンアニメまでしかやったことがないのですが、モーフィングという技術のほうがより良さそうな気がしています

496 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 23:56:15 ]
>>495
スケーリングで十分

497 名前:487 mailto:sage [2008/05/20(火) 00:09:01 ]
>>492
調べてみたら動的に確保したメモリを静的に確保したように見せるとのことだったんですが、
これはVRAMとAGPメモリに確保して同期させるという解釈でいいのでしょうか?

498 名前:487 mailto:sage [2008/05/20(火) 00:09:52 ]
すいません>>492ではなく>>491でした

499 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 01:53:49 ]
>>497
昔はそうなんだが、現在のVGAだと諸々の理由でシステムメモリを介したコピーを
行っているものが多いので、動的な頂点バッファはほとんど意味を成さなくなっている。
経験で言うならシステムメモリよりも頂点バッファを使う方がパフォーマンスが高くなる
傾向があるのは確かだが、大半は大した性能差があるわけでもないし、
そもそも適切に扱うためのフラグ設定が頂点バッファはわかりにくいので、
個人的にはシステムメモリ(DrawIndexPrimitiveUP等)で実装することをお勧めする。

2Dスプライトの実装なんぞDrawPrimitiveのバッチ処理さえしておけば
それ以上は深く考えんでも良いと思うぞ。

500 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 08:28:59 ]
AGPメモリを使うか否かで動的なデータは速度に大差が出るぞ

501 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:44:39 ]
非同期で処理させるかの違い



502 名前:デフォルトの名無しさん [2008/05/20(火) 19:02:00 ]
まあ、自分のゲームでやってみるのが一番
つーのは想定している状況によりけりって感じだから
なんでも使える汎用ルーチンなんて作ろうと考えないで状況に応じて対処したほ


503 名前:487 mailto:sage [2008/05/20(火) 20:53:38 ]
>>499-502
2Dの処理にそこまで考える必要はないけど、
詳しく知りたい場合は自分のゲームで実装して調べたほうが早い、とのことなので、
時間に余裕があるときに調べてみたいと思います。
色々ありがとうございます!

504 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:17:01 ]
環境にもよるんじゃないか

505 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:49:34 ]
WinSockだとポート空けるのをユーザー側に頼まなければならないので
UPnP対応してるDirectPlayつかうことにしたぽ

506 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:42:13 ]
UPnPの対応はDirectPlayに頼らなくても簡単に出来るぞ

507 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:55:18 ]
>>506
www.bosuke.mine.nu/neta/upnp.shtml
これためしてみたけどルータがふるくてだめだった
しかしDirectPlayだとポート開放しなくても通信できる

もっといい方法があるならおしえてくださいませ

508 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:56:06 ]
Direct3D9.0のデバイスロストからの復帰で
・D3DPOOL_DEFAULTのテクスチャ解放
・D3DXFONTのOnLostDevice()呼び出し     この2つは順番適当
・D3DXSpriteのOnLostDevice()呼び出し

   pDevice -> Reset(&Param);

・D3DXSpriteのOnResetDevice()呼び出し
・D3DPOOL_DEFAULTのテクスチャ確保
・D3DXFONTのOnResetDevice()呼び出し     この2つは順番適当
・レンダーステートの回復

てやってるんだけど、画面真っ暗です。これ以外に何やるんでしょう?
あと順番に決まりはあるんでしょうか?

509 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:03:40 ]
>>508
確保したリソースの解放をちゃんとしましょう。
Debug Runtimeでエラーメッセージの確認をしましょう。

510 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:30:26 ]
>>506
ひょっとして upnp.h とか使うの?
ネット探しても具体的なやりかたが乗ってるところがないのが困る

511 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:15:17 ]
>>510
ttp://www.bosuke.mine.nu/neta/upnp.shtml
おもくそ有名なサイトがあるわけで
ぐぐろうよ



512 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:12:19 ]
お前は空気読め

513 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 02:01:13 ]
「頂点ベースの描画」という言葉の意味がよく分かりません
対になるものは何でしょうか?

514 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:48:56 ]
ポリゴンで描画(3つの頂点)で描画と思ったらいいんじゃね?
ポリゴン2個で四角形になるお

515 名前:513 mailto:sage [2008/05/22(木) 16:53:09 ]
>>514
知識不足ですみませんが、そうでない描画の方法があるのでしょうか?

516 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:56:14 ]
つーか、「ポリゴンで描画で描画」ってなんだよ。

517 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:25:02 ]
そもそも
「頂点ベースの描画」なんて聞いたことがない

518 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:28:55 ]
>"ポリゴンで描画で描画"との一致はありません。
>"頂点ベースの描画"の検索結果 1 件中 1 - 1 件目 (0.14 秒)
>"頂点ベース" の検索結果 約 148 件中 1 - 10 件目 (0.24 秒)

519 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:59:10 ]
頂点シェーダーでライト当てるかピクセルシェーダーでライト当てるかって事でないん?
そのくらいしかない気がするんだが。

520 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:50:11 ]
>>513
どこで頂点ベースって聞いたんだよ?

>そうでない
DirectDrawのスプライト描画のことじゃね?

さいきんのゆとりはDirectX7以前を知らんのか

521 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:50:44 ]
ポリゴンで描画の間違い



522 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:30:57 ]
そもそもDirectXにスプライトなど存在しない

523 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:39:14 ]
ジオメトリベースド
イメージベースド

524 名前:508 mailto:sage [2008/05/22(木) 23:22:56 ]
バックバッファの解放と確保
ステンシルの解放と確保も付けたんですが、まだPresent(0,0,0,0)がD3DERR_DEVICELOSTを
出してきます。何が足りないんでしょうかT-T

525 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:27:27 ]
それは作った本人にしかワカリマセン。

526 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:29:53 ]
POOL以外で作ったテクスチャとか頂点とか全部削除する

527 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:32:30 ]
>>526
StateBlockとかもだな。

EffecとかFontとかSpriteも中でStateBlock作ってるからロスト対策が要るけどなー

528 名前:508 mailto:sage [2008/05/22(木) 23:45:28 ]
フロントバッファは何もしなくていいんでしょうか?StateBlockは作ってるつもり
はないんですが・・・何か他に暗黙的なものがあったら教えていただけないでしょうか?

529 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:52:57 ]
スレ住人が超能力に目覚めるよりはソースを出す方が解決は早い思います。

530 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:53:04 ]
D3DX〜系のLostDevice()は全部やってる?

531 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:16:03 ]
DX10で作ればおk



532 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:17:15 ]
Resetしてないんだろwww

533 名前:508 mailto:sage [2008/05/23(金) 00:43:08 ]
>>528ソースのみですか?関係ないクラスを除いた抜粋でいいですか?
>>530フォントとスプライトなら呼んでます。
>>532Resetからの返り値も出力してるので多分大丈夫だと思います・・・

534 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:53:32 ]
ResetはPresenがD3DERR_DEVICELOST以外を返した後の話だから関係なくね?

535 名前:508 mailto:sage [2008/05/23(金) 00:58:54 ]
ttp://ccfa.info/cgi-bin/up/src/up19318.zip
なんかいろいろ言われそうで怖い・・・よろしくお願いします。

536 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 12:09:02 ]
現在、大学3年でシェーダーの勉強をしています。
それで、データの可視化の研究をしてみたいと思うようになったのですが、シェーダーの出番ってありますか?
無駄になるのもなあと思っているのですが。
OpenGLも少し勉強したことはあったのですが、可視化の分野はどちらを使ったほうがいいでしょうか?
また、仮にシェーダーを使う場合、どのような研究のネタがあるでしょうか?

537 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:04:30 ]
どう可視化したいのかも書かずに質問とな?

538 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:10:17 ]
と言うか、綺麗に見せたきゃ使うような物だからあんまり意味なくね?

539 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:29:49 ]
>>535
common.h無いいわれるお
できればプロジェクトもあげてほすぃ
デバッグしやすい

540 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:47:51 ]
関係ないが Graphics::drawSprite のBegin End の対応がおかしい

541 名前:508 mailto:sage [2008/05/23(金) 19:03:13 ]
>>539
ttp://ccfa.info/cgi-bin/up/src/up19342.zip
プロジェクトはBCCのしかなかったので、ついてません。申し訳ないです。
>>540
多分治ってると思います(?
C++と窓とDirectX同時に勉強してたんで、拙いところがたくさんありますが



542 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:08:12 ]
現在ブロック崩しを製作中なのですが、もし「20個あるブロックがなくなったら」という状況を表現するために下記のように打ったら、「error C2106: '=' : 左のオペランドが、左辺値になっていません」とエラーが出ました。
どうすればいいのでしょうか。

if(block1==0&&block2==0&&block3==0&&block4==0&&block5==0&&block6==0&&block7==0&&block8==0&&
block9==0&&block10==0&&block11=0&&block12==0&&block13==0&&block14==0&&block15==0&&
block16==0&&block17==0&&block18==0&&block19==0&&block20==0)

543 名前:デフォルトの名無しさん [2008/05/23(金) 23:12:19 ]
すいません、正式に言うと「ブロックがなくなったら」ではなく、「ブロック変数がゼロになったら」でしたね

544 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:25:17 ]
block11=0

545 名前:508 mailto:sage [2008/05/23(金) 23:26:17 ]
よくこの釣り間違い探しをやるな

546 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:26:42 ]
>>544
intした名前が「block11」だったのがまずかったってことですか?

547 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:40:00 ]
>>546
マジで言っているならプログラミングなんてやめて旅にでも出ることをお勧めしておく。

548 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:42:28 ]
>>547
今気がつきました=が一つしかありませんでしたね
初歩的なミスでした

549 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:43:40 ]
もっと根本的に変数使いすぎ
配列など、別のアプローチを考えれ

550 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:46:02 ]
いやあ、恥ずかしいです…

551 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:48:11 ]
配列はおろか、ブロックの数をカウントするカウンター作ったほうがいいだろ…。あとここDirectXスレ…



552 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:51:29 ]
おっとここはDirectXスレだったな
釣られちまったぜ

553 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:25:59 ]
>>545
誰もやってない悪寒。
少なくとも俺はソースがあまりにひどかったので1度動かして消した。

554 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 11:40:55 ]
この前RADEONだと色々厳密という話しがでたので、RADEON買って来て試してみた
今まで遊びで作ってたほとんどのゲーム、まともにうごかねえw
色々見直そう

555 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 12:02:08 ]
Radeon、Geforce両方をDebugRuntimeでチェックするのがベスト。
nVidiaのドライバーは空気を読見すぎるのが困る。
しいていうならタグが変でも一応見れちゃうIEと手厳しいネスケの違いみたいなもんか。

556 名前:508 mailto:sage [2008/05/24(土) 12:18:10 ]
>>553
545のは直上の人に言った言葉です
ていうか、特に何がやばそうでしたか?

557 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:05:57 ]
>>556
まずアプリの終了時にバックバッファ解放してないだろ。
Getしたものは全部Releaseしろ。

あとSDKいれてるならDebugRuntimeで試せ。
それなら終了時に解放してなかったりD3Dエラーが出たときにデバッガで落ちるようになる。

558 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:31:53 ]
CComPtrマンセー

559 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:51:30 ]
俺はこんな感じでやってるわ

class ICallbackDeviceReset
{
public:
ICallbackDeviceReset();// std::setでつくられたグローバルリストに登録
virtual ~ICallbackDeviceReset();// std::setでつくられたグローバルリストから解除

virtual OnLostDevice()=0;
virtual OnResetDevice()=0;
};

デバイスのロスト>リセット時に呼び出されたいクラスは、このクラスを継承するようにすれば
自動的に呼び出されるようになる。

560 名前:508 mailto:sage [2008/05/24(土) 16:59:16 ]
>>557
バックバッファの解放とはGraphicsオブジェクトにセットしたポインタをリリースしろということでしょうか?
それならばGraphicsオブジェクト終了時に自動解放されています。
ところが、デバッグモードで見たらMemory still allocated! Alloc count = 94の文字がorz
しかもAllocIDが出ないので、何がまずいのか分かりませんでした・・・
CreateDeviceの際にパラメータに書いてあるバックバッファやステンシルバッファといった物は
明示的な解放はいらないですよね?

>>559std::setがstd::listなだけでまったく同じことしてます。

561 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:06:50 ]
>>560
listに入ってないリソースを疑うか
listの処理そのものを疑え。



562 名前:508 mailto:sage [2008/05/24(土) 17:27:19 ]
リリース忘れはどうやらスプライトのようでした・・・
これで先のエラーは出なくなったんですが、Ctrl+Del+Altを押した時に
Direct3D9: (ERROR) :Device is in an invalid state. Only Reset, TestCooperativeLevel or Release could be called
がひたすら出てしまいました。デバイスロストからの復帰に失敗してるんでしょうが、なにぶんメッセージの意味が分かりません

>>561どうやらlistが怪しいようです・・・。ここをもうちょい詰めてみます。

563 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:54:12 ]
>>562
listだと、アドレスを登録する時に
・重複が怖い(コンストラクタでのみ自動登録されるなら心配ないが)
・解放時の検索速度が、setのほうが圧倒的に速い
って利点があるぜ。

ソース見ようとしたけど404だったんで突っ込んだアドバイスしてあげられないな。
もう一回UPする気ない?(スプライト修正版を)

564 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:54:58 ]
なんか日本語があからさまにおかしいが、脳内補完してくれ。
setのほうがいいよってことで(;´Д`)

565 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:58:53 ]
メッセージの意味は、

デバイスが不正な状態になってます。
この場合、Reset、TestCooperativeLevel、Releaseのどれかのメソッドしか呼び出せません。

つまり、まぁデバイスがロストしてるよと。復帰させるか、あきらめろと。

566 名前:508 mailto:sage [2008/05/24(土) 18:01:32 ]
>>563
リストどうやら間違ってませんでした。
ttp://ccfa.info/cgi-bin/up/src/up19435.zip
よろしくお願いします。

567 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:16:31 ]
oggがどこで生成されるのか謎だからあくまで予測なんだが

デバイスを作成したスレッドと、デバイスをリセットしようとするスレッド。
違うスレッドになってね?
全部リソース解放してても、スレッドが違うと失敗するんだが。

568 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:26:22 ]
すまん、oggの作成場所発見したわ。
同じスレッド上だな。

しかし綺麗なソースだな。
うちの部下どもに爪の垢を煎じて飲ませてやりたいわ

パッと見問題はなさそうな分、とりあえずD3D関連の生成物を全部カットしてリセットして、問題なければ一部だけ生成するようにしてリセットしてみて…
ってやっていくしかないなぁ

569 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:47:42 ]

Graphics& GameWindow::getGraphics(){
if(device != NULL && g.target->target == NULL){
device->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&(g.target->target));
}
return g;
}

ここのバックバッファをReleaseしてないのが原因じゃねーか?

570 名前:508 mailto:sage [2008/05/24(土) 19:03:26 ]
>>569できたお
ありがとうございました。

ところでテクスチャからサーフェイスをGetしていた場合Releaseの順番てどちらからでも問題ないですか?

571 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:07:54 ]
作ったのと逆の順で解放するのが良い。
そうしなかった場合不具合が起きるかは未検証だが、プログラムでは逆順解放が基本。

サーフェイスは描画前に取得して、描画終わったらさっさとReleaseしちゃいな。
取得にほとんど時間かからないから。



572 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:42:45 ]
CComPtrとか使えって言ってんだろ。初歩的なミスが綺麗さっぱりなくなるぜ?

573 名前:508 mailto:sage [2008/05/24(土) 19:50:08 ]
>>572
CComPtrってデバイスロストでもリリースとかしてくれるんですか?
なんか話のポイントが違う気が・・・

574 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:50:52 ]
>>572
確保しっぱなしだったから、結局はデバイスリセットの時に正しく解放できなかったと思うぜw

そういや508よ。
「ベース メンバ初期化リストで使用されました」
のワーニング出てたぞ。直しておけよ。

575 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:04:05 ]
warningをちゃんと潰す、DebugRuntimeでエラーがない事を確認する、
nVidiaのドライバはATiに比べるとかなりエラーに甘いのでちゃんと
nVidiaとATiの両方で動作確認をしっかり行なう。

576 名前:508 mailto:sage [2008/05/24(土) 20:39:35 ]
>>574マジすか・・・BCCでは出なかったのに、工夫してみます。
本当に親切にありがとうございました。ノシ


577 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:13:16 ]
デバッグの警告レベルを最大にしたら
(WARN) :Ignoring redundant SetTextureStageState
が出まくるんだけど・・・
かといって、デフォルト値使われるのかと思ってコメントアウトしたら全然違う動作しやがる

578 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:42:26 ]
同じのを何度も設定してるんでないの?
最大レベルだとどうでもいいwarningが大量にでるから1レベル下がいいよ。

579 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:50:56 ]
あるねー>どうでもいいwarning
なんか最近のVCで昔ながらのstr〜関数を使うだけで
警告出しやがるようになりやがったし
VC作った奴の感性がちょっとわからなくなった
リソースわけられないとかそっちの方をどうにかしてほしいのに
余計なもんばっかり増えていくな

580 名前:577 mailto:sage [2008/05/24(土) 21:52:09 ]
何度も設定はしていないけど、
一番最初に描画される時にも出てるから、そこで警告出るんならデフォルト値使われてるのかな、と思ったんだけど、
ちゃんと設定しないときちんと描画されない。
余計な警告は無視する方が吉みたいですね

581 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:59:51 ]
警告でウザイのは、例外を使ったときのだな。
わかって使ってるのに



582 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 22:25:58 ]
>>580
それはデフォルト値が使われているという警告じゃなくて、
Aという値を前回セットしたにも関わらず、同じ値をセットしたときに起きる。
フレームをまたいでもチェックされる。

583 名前:577 mailto:sage [2008/05/24(土) 22:36:24 ]
いやだから、一番初めにセットした時に出るってことは、デフォルト値とかぶってるんじゃないのか、
と思ってたってこと

584 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:22:38 ]
DirectXで両面ポリゴンは、描画可能なのでしょうか?

585 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:26:38 ]
可能です!

586 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:41:07 ]
ありがと。
エクスポートがうまくいかなかったのかな…。

もしかして、なにか設定が必要ですか?

587 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:47:21 ]
自己レスです。
LW使ってたのですが、付属プラグインは片面になってしまうそうで・・・。
LWからのエクスポートで、何か方法を知っていたら教えてください。

588 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:13:55 ]
実行時のD3DのSetRenderState()の設定次第なんだが・・・

589 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:23:46 ]
LWでダブルサイド指定じゃなく、
ちゃんと倍の頂点使って裏のポリゴンを作っておく

エクスポート時に、ダブルサイド指定のポリゴンを
裏ポリ用頂点を作ってくれるエクスポーターなんて知らんね…

UVやらマテリアルやら関係なく、ただ両面描画しれてば良いだけなら
>588の言う通り

590 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:45:51 ]
とりあえずD3DRS_CULLMODE(ですよね?)を指定しておき、
あとで裏にポリゴンを作ろうと思います。
ありがとうございました。

591 名前:デフォルトの名無しさん [2008/05/25(日) 06:32:23 ]
Xファイルを出力、編集するソフトって何がありますか?



592 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 09:44:08 ]
メタセコイア
有料版でもインポート・エクスポート以外は使える。
その.mqoをLEで読み込めば・・・・

593 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:23:25 ]
現状、メタセコでモデル作成。POSERでBVH作成。LWで合成してXファイルで出力
ってやってるわ

594 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 11:26:51 ]
DLL_APIってなんですか?DLLを作る命令?

595 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:04:04 ]
>>594
マルチすなや。

596 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:40:33 ]
デバイスロスト時ってもしかしてSetTextureStageStateで設定した情報も失われてる!?

597 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:53:43 ]
Presentしたらステート必ずセットし直すか、ステートブロックでも使え。


598 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:57:10 ]
Xファイルに出力したカメラのアニメーションを利用したいのですが、どうすればいいのでしょうか?

599 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 19:06:22 ]
>>597
ステートブロックはデバイスロストしたら一緒にロストすんぞ。

>>598
どうもこうもアニメーション情報を読んで再生する。

600 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 03:43:28 ]
フルスクリーンのときにスクリーンサイズを600×400にするとCreateDeviceに失敗し、
640×480などのサイズにすると成功するんですが、どういった理由でこうなるのですか?

LPDIRECT3D9 p_d3d;
D3DPRESENT_PARAMETERS d3dpp;
D3DDISPLAYMODE d3ddm;

p_d3d = Direct3DCreate9(D3D_SDK_VERSION);
m_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);

ZeroMemory(&m_D3Dpp, sizeof(D3DPRESENT_PARAMETERS));
d3dpp.BackBufferCount = 1;
m_D3Dpp.Windowed = TRUE;
m_D3Dpp.BackBufferFormat = d3ddm.Format;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
// ここまで同じ設定

d3dpp.BackBufferWidth = 600;
d3dpp.BackBufferHeight = 400;
// これをCreateDeviceに指定すると失敗する

d3dpp.BackBufferWidth = 640;
d3dpp.BackBufferHeight = 480;
// これをCreateDeviceに指定すると成功する

601 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 05:26:43 ]
600x400のモードをデバイスがサポートしてないだけじゃないの?
関数の戻り値とか調べてください



602 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 08:55:42 ]
600x400なんて画面モード、存在するのか?

603 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 12:36:49 ]
>>600
グラフィックボードで使える解像度じゃないからだよ
EnumAdapterModes( )でそのデバイスで使える解像度を列挙できるからその中から選べ

604 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:09:35 ]
>>602
PC-98時代の遺産だな。仕事で出会う確立はもはやレアだろ。

605 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:31:36 ]
PC-98でも横は640だし・・・

606 名前:604 mailto:sage [2008/05/28(水) 17:54:34 ]
をや??・・・640×400と見間違えた。

607 名前:600 mailto:sage [2008/05/28(水) 20:59:35 ]
>>601-606
なるほど、使用出来る解像度の問題だったんですね。
ありがとうございます。

ついでに質問なんですが、解像度は現在のディスプレイの解像度を使ったほうがいいのでしょうか?
それとも各ディスプレイごとに使用出来る解像度を調べて、自分のプログラムにあった解像度を選んだほうがいいのでしょうか?


608 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:09:54 ]
>>607
他のゲームを参考に汁
どっちのタイプもあるよ
自分の合う方法を探せ

609 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:18:53 ]
320×240,640×480,800×600,1024×768のどれかなら、
必要な解像度を動作環境に明記しとけば大丈夫。
一般的な解像度はこの辺だからな。

610 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:21:45 ]
そういや、2Dゲーは解像度固定が、3Dゲーは解像度可変が多いよな。

611 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:30:33 ]
ポリゴンは解像度に依存しにくいからな



612 名前:600 mailto:sage [2008/05/29(木) 01:10:37 ]
>>608-611
他のゲームの解像度と一般的な解像度と開発環境などと相談して決めるのがよさそうなので、
そこらへんを考慮しつつ可変か固定か決めてみたいと思います。
ありがとうございました。

613 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:25:43 ]
>>609
320×240
↑はWindowsではぜんぜん一般的じゃないっぽ

614 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:37:57 ]
320x240でスクリーンショット撮ってみた
neko-loader.net/pict/src/neko22282.jpg


615 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:55:35 ]
出来ないとはいってないってw
オンボードとかだとこけるやつが結構あるって話
無理に使う必要もないしね

616 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:56:04 ]
>>614
快適にWindowsライフが過ごせそうですね

617 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 13:37:54 ]
せっかくだからVisualStudioとかでやってほしかったぜ

618 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 14:14:49 ]
320x240は画面プロパティからは選べなくても、内部的にサポートしてる場合が多いよ。
というか、サポートしてないのみたことないな…。
同人ゲームで恐縮だが、EFZという格闘ゲームがフルスク320x240固定なんだが、動作しないって人聞いた事ない

619 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:31:40 ]
256色を使えないXPが無いのと同じだよな

620 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:43:50 ]
>>618
ゲーム画面が320x240でも、
640x480で画面作って拡大して描画してる場合もあると思う。

グラフィックボードがしょぼくてソフトウェアレンダリングな同人が流行ってた頃、
このサポートはどこでもやってたような気がする。


621 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 17:32:40 ]
www.tasofro.net/cgi-bin/cbbs00/cf.cgi?mode=all&mo=1834&namber=1832&rev=0&page=0

[1832] 【技術サポート】 起動できません-

■親トピック/記事引用■

□投稿者/ ミステイク -(2007/01/03(Wed) 21:22:48)

はじめまして、本日EFZを買ったのですが、インストールした後、起動できませんでした。
起動させると、画面が真っ暗になって「320※240の解像度の設定に失敗しました」と表示されます。
どうすれば起動できるのでしょうか?
もしかすると、解像度に問題があるのかもしれませんが・・・。

OSはXp、解像度は最低でも800×600です。


EFZワロス



622 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 17:33:40 ]
と思ってたが、640x480もサポートしないディスプレイとかあるのか。
引き延ばしできないノートとかでありそうだな。
レアすぎるから、
これは無視してもいいか。

623 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 17:43:20 ]
>>609
明記が必須かも試練。w

624 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:11:11 ]
>>622
EeePCがダメだった希ガス>640*480
あと、Pivot使っていると480*640は選択できるが640*480は選択できなくなる。

625 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:14:37 ]
まぁ、最近のビデオチップはハードウェア的にはどんな解像度でもいけるが、
ドライバで制限してるだけなんだけどね。

626 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:41:46 ]
サポートするのは、最近だけじゃねえよ

627 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 20:17:09 ]
>>621
そうそうそうそう
解像度の最低ラインが800x600になったおかげで
昔のフルスクリーンのゲームが起動できなくなったのな
後、256色のゲームも起動不可

628 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 20:56:57 ]
つかWindowsXPは640x480を正式サポート対象外にしてた憶えがあるぞ
あやふやだけど

629 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 10:24:06 ]
うっそ、640x480+16色 はハードが絶対サポートしてるんじゃねーのかよw
ドライバいれてない時や、セーフモード時はどうなってんだそれ

630 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 10:26:33 ]
winならMSの標準ドライバがインストールされてるしょ

631 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 11:20:48 ]
XP以降は画面のプロパティで選択できないように制限かけてるだけで
640*480が使えないわけじゃないよ。8bitカラーだって使える。



632 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:18:09 ]
>>627
間違っています。
以上。
はい次の方。

633 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:48:58 ]
uzeeeeeeeeeee
結局、普通に640x480使えねーのがあるってことでいいじゃないか


634 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:55:07 ]
あるの?

635 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:10:35 ]
>>633
いや、ほんとに640x480が動かないPCなんてあるの?って話なんだが。
確たるソースある?

636 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:23:53 ]
>>621

637 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:28:23 ]
640x480の解像度にできない -OKWave
okwave.jp/qa2299134.html

638 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:33:46 ]
>>637
思いっきり9x系からXPに移ったPC初心者の書き込みじゃねーかw

639 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:35:56 ]
DirectXで640x480に設定できないのかという話じゃないのかね

640 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:50:10 ]
blog-imgs-40.fc2.com/n/e/t/netamichelin/2008052810.jpg

641 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 16:33:11 ]
>>635
動く、動かない、という話じゃなくXPで640x480はサポートできないだろって話
WinXPの通常使用のシステム要件に、「800x600以上対応のVGAが必要」というのがある以上、
640x480でWinXPが動かなくても、XPで800x600未満が選択できないPCがあったとしても
「それは残念でした。640x480を使うので、Win2000とかで動かしてみてください」と
返すのが正常、という話。



642 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:36:35 ]
>>641
意味わからん

「XPの動作には800x600以上対応のVGAが必要」であることと、
XPで640x480でフルスクリーンモードのデバイスが作れないこと。
これらはイコールではないでしょ。

「XP用のドライバでは640x480をサポートしなくても構いません」と規定されているのかという話をしてるの。

643 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:56:37 ]
おまえらもういいだろうw

644 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:02:55 ]
ところで本当は何について話していたの?

645 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:16:22 ]
2Dゲーの解像度のサポートを何処までやるか?だったっけ?

646 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:04:30 ]
古いエロゲーがどこまで動くかですよあやよさん

647 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:30:02 ]
>>641
OS的に選べないようにしてるだけで、グラボのプロパティからなら
余裕で320x240とか選べるようになってる。

つまりDirectX利用可能。

648 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:44:09 ]
ちょっとまて、俺、今普通に640x480解像度のDirectXつかったゲームしてるんだが、XP64bitで。

649 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:45:56 ]
もういいよお前ら
自重しろ

650 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:53:47 ]
>>635
インクレティブマシーンが動かなくなってる
まず256色に変更できない
ディスプレイはサポートしてる

いま、こんな状況

651 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 22:29:32 ]
256はわかったから、640はどうなんだよ



652 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 23:49:00 ]
>>650
だから、変更できないってなんだよ…
画面プロパティからは変更できないだろ、XPとか使ってれば。

ここはDirectXスレだっての

653 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 04:02:15 ]
DirectXのスレで画面プロパティとかアホですか

654 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 04:37:37 ]
>>652
だから、アプリの方でエラーがでちまって起動できないっての

655 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:30:42 ]
256はわかったから、640はどうなんだよ!

656 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:36:12 ]
>>651,655
うるせー

657 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 07:03:44 ]
どうなんだと聞いている
答えろ

658 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 07:31:58 ]
今日はここに沸いてるのか

659 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 10:06:09 ]
640×480は256色しかサポートしてないってメーカーPCも昔あったな

まぁ結局の所解像度決め打ちにしてるなら動く解像度を動作環境内に書いておけってことだ。
Windowsなんてタダででもいろんな環境がありすぎるんだから全部テストなんて出来ん。
解像度くらいはプロパティから数値が見えるんだから環境限定でいいだろ。
グラボのDXサポート状況に比べればどうと言うことはない

660 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 10:08:28 ]
フルスクリーンじゃなくて窓を開いて640×480の256色モードとかなら
XPもサポートしてるよ

Delphi Graphic Secretsという本を持っているんだがここでいろいろな
画面モードを実験している

661 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:20:22 ]
LPD3DXSPRITE::DrawとLPDIRECT3DDEVICE9::DrawPrimitiveを両方使ってるのですが
前者より手前に後者を描画するにはどうすればいいですか?
描画の順番変えても必ずスプライトが前になってしまいます



662 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:23:07 ]
Z

663 名前:661 mailto:sage [2008/05/31(土) 22:59:42 ]
解決しました
位置のZ座標指定してもうまく処理されないと思ったらClearするときにZバッファ指定してなかっただけでした。
スプライトのZ座標は描画順だけらしいので交錯させる等複雑な描画をしたい時は完全にDrawPrimitiveの方に統一するしかないですか?

664 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:22:51 ]
SetRenderState( D3DRS_ZENABLE , FALSE );
3DやらないならZバッファ使わんだろ
使ってもいいけど
使わん方が早いだろ
ついでにステンシルバッファも作らなくていいし
クリア時もZ消さなくていいし

665 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:16:47 ]
>>664
Zテストの前から描画って2Dだとそんな効果ねぇっけ?

666 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:18:21 ]
>>665
半透明や加算合成を一切使わず、抜き色で使うアルファ値も
エッジにAA効果を持たせない二値限定のスプライトが前面に多く
描画されると仮定できる状況なら、大幅にフィルレートを稼げるかもね

でなけりゃただの逆効果

667 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 01:02:57 ]
>>666
α値が0%(不透過)のところだけZバッファだけ書き込んでなんとかならんかったっけ?

668 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 02:25:36 ]
>>667
だからカラーキー目的で二値しかアルファ値使ってなけりゃ、アルファテストでいけるよ

でもエッジにアンチェリ(段階的なアルファ値の適用)使った時点で駄目だし、
当然アルファブレンドも使えないしで、2Dスプライトの描画において深度バッファで
速度が稼げるってのは結構レアケースだと思うよ

669 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 03:29:40 ]
>>668
α値が1のときだけ〜って処理いけんかったっけ?
まあ、いけたとしてもそんなに早くないか・・・

670 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 09:54:29 ]
かなり重いピクセルシェーダーを使わない限り深度バッファでの高速化って恩恵ないだろ

671 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:21:37 ]
もしくは、点を打つのが激重なグラボ



672 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:07:07 ]
俺のディスプレイ
最低解像度800x600だった
でも、640x480できたお

673 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 20:03:27 ]
>>671
なんだその存在価値のなさげなグラボは

674 名前:デフォルトの名無しさん [2008/06/04(水) 00:19:51 ]
自分で定義した頂点情報をDrawPrimitiveで表示するときや、
読み込んだXファイルをDrawSubSet()で表示するときなどにmaterialを設定しても描画に反映されません

D3DXCreateSphere()等で取得したメッシュをDrawSubSet()する場合は反映されます
materialを有効にするにはSetMaterial()以外に何か設定が必要なのでしょうか?

675 名前:674 mailto:sage [2008/06/04(水) 01:53:23 ]
すいません、自己解決しました
D3DRS_DIFFUSEMATERIALSOURCEでマテリアルを参照するよう設定するのを忘れていました

676 名前:デフォルトの名無しさん [2008/06/04(水) 19:25:36 ]
ビルドは上手くいくのに実行するとすぐに終了されてしまいます
DirectX 9.0 SDK Update (Summer 2003)
に変えてからこうなりました
以前はSummer 2004を使っていたのですが不具合が色々あったので変えました

もしかしたらDirectXの設定がおかしいのかもしれませんわかる方いたら教えていただきたく思います

677 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:36:42 ]
ブレークポイントしかけて、ステップ実行してみれば?

678 名前:676 mailto:sage [2008/06/04(水) 19:58:37 ]
すみません
BCC Developerを使っているのですがブレークポイントの設定の仕方がわかりません…

679 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:01:10 ]
>>678
VC(正規OSならタダでダウンロード可能)にしてやってみるか
printfをおきまくれ

680 名前:676 mailto:sage [2008/06/04(水) 20:10:01 ]
VCは以前インストールしようとしたのですが
「サーバとの接続を再度確立します」と表示されてインストールできなかったのでやめました

自分で組んだプログラムではなく、サンプルをダウンロードして実行しようとしただけなのでコードに問題は無いと思います
Summer 2004で実行したときは大丈夫でしたが
Summer 2003に変えてからおかしくなりました

おそらくDirectXの設定を間違えていると思うのですが…


681 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:14:09 ]
なんだバージョンダウンかよ
DX関数に必要なDLLがないんじゃね?



682 名前:676 mailto:sage [2008/06/04(水) 20:29:59 ]
診断ツールではsystem.dlがないとありましたが
調べてみるとそこまで必要なものではないようでした

サンプルがSummer 2003を対称にしているのでDLLが足りないわけでもないと思います

683 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:34:51 ]
>>680
IE7か割れOSだろ?

684 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:35:37 ]
BCCはVCといろいろ違いがあるんで
BCC対応のライブラリを作るなり取ってくるなり手間が必要だったような気がするが

685 名前:676 mailto:sage [2008/06/04(水) 20:38:01 ]
firefoxですがIE6が入ってます
OSはノートの正規品です

もともと古いPCなのでグラボの性能が低いのが原因かもしれませんが
Summer 2004で実行できたので…

686 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:57:38 ]
>>685
いくつか関数の仕様が変わったもんがあったような気がするけどそこは直した?
ビルド通らないと思うけど

687 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:01:17 ]
2004のサンプルを2003で動かそうとしてんだろ?
足りないもんとかあるんじゃね?
変なコントロールまわりなんかやけに9.0初版のときより豪勢になってるし
バージョンダウンで動かそうとするのなんて時間の無駄じゃね?

688 名前:676 mailto:sage [2008/06/04(水) 21:06:24 ]
ビルドは通ります
エラーもありません

サンプルは2003用のです
2004からコンパネでDirectXが設定できなくなっていたので
2003にしました

689 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:21:30 ]
最終奥義「クリーンインストール」

690 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:07:03 ]
実行してすぐに落ちてるんなら普通に戻り値調べたらなんか出てそうだけどな
ちゃんとエラーチェックしてる?w

691 名前:デフォルトの名無しさん [2008/06/05(木) 01:33:17 ]
CとC++ってどう違うの?



692 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:33:50 ]
CのインクリメントがC++

693 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 02:47:21 ]
サンプルは環境によって落ちるものは落ちる、市販のゲームとは違うよ
サンプルの実行に拘る理由がよく分からない

694 名前:デフォルトの名無しさん [2008/06/05(木) 03:34:04 ]
質問です.
MPEG-2を取り扱うアプリケーションを作成したいんですが.
Directshow()で可能だとは思うんですが.
マニュアルはありますか?


695 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 03:38:32 ]
>>693
言ってることも割れ臭いし
目的もなく2003だしで正直胡散臭いよねw

696 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 04:39:25 ]
>>694
英語で良いならWindows SDKのドキュメントにある
日本語ならDirectX9 SDKの古いドキュメントがまだMSからダウンロードできたはず
場所の検索は自分でやってネ

697 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:21:39 ]
DirecctX SDK(Mar 2008)とVS2005を使っています。
使っている参考書は
www.amazon.co.jp/dp/4839912475/
です。
この本ではDirectXのアプリケーションウイザードがVSに追加されているのですが、私の環境では追加されませんでした。
VS→SDKの順にインストールしました。
最近のバージョンだとDiretctXのアプリケーションウイザードは削除されたのでしょうか?

698 名前:676 mailto:sage [2008/06/05(木) 19:38:46 ]
2004 Summerにしたら実行できました
2003にしようと思ったのもコンパネから設定変えたかっただけなのでこのまま2004でいこうと思います

DirectX勉強してるサイトのサンプルだったんで何とか実行したかったんです
原因はわかりませんでしたが色々とありがとうございました

699 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:47:21 ]
>>697
結構前に廃止された
たぶん2004年のどっか

>>698
最近のは確かにコンパネに設定が追加されなくなったが
DirectX UtilitiesのなかにDirectX Control Panelってものがあってだな
昔コンパネから設定できたことと同じことができるんだぜ?

700 名前:676 mailto:sage [2008/06/05(木) 19:55:53 ]
>>699
教えていただきありがとうございます
ただ、2004にはないようです
最新のはPCの性能的に難しそうなのでこのまま我慢することにします

ちなみに5年くらい前のpentiumVです

701 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:15:42 ]
シェーダーを使ってトゥーンシェード(逆引き500に載ってる方法)をやろうとしているのですが、
一部を除き真っ黒になってしまいます。
どういう時にこうなるのでしょうか?



702 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:35:18 ]
ごめんオレエスパーじゃないし

703 名前:デフォルトの名無しさん [2008/06/05(木) 23:45:32 ]
DirectPlayがサポート打ち切られたとかマジですか

704 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:56:33 ]
DirectX SDKドキュメントのなんと1ページ目にDirectPlay is deprecatedの一文がッ!

705 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:00:11 ]
2007年6月あたりのSDKがサポートラスト。
ランタイムは当分のこるだろうけど。

706 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:18:28 ]
9cはもう終わりか?

10の時代なのか?

707 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:55:02 ]
9cの時代のままです

708 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 03:23:42 ]
10はVISTA限定という暴挙にMSが出たからね
おかげで10の普及は相当に遅れるだろうね

709 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:22:26 ]
XPみたいに皆にブーブー文句言われながら8年後位には普及してるよ

710 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:28:15 ]
そう思っていた時期がMeにもありました

711 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:30:34 ]
細かいバージョンを見れば、MSは失敗作をけっこう出してるよ
そしてすぐに無かったことにしている
SEとかCEとか3.0とかMMCとか、NTとか
Vistaもそんな感じ



712 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:34:44 ]
そりゃXPよりブーブーいうだろ
基本的に全てのアプリはDirectXで組んでくださいっていうスタンスなんだから

713 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:38:04 ]
              __
           ,...-‐:"´:.:.::.:.::.:.``:‐,,、
      ,.-..,、/:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:`、  _
     /:.:.:./:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:';;´::.:.l
    l:.:.:.:.:.l:.:.:.:.:.:.:.:.:.:/|:.:.:.:.:.:.:.:.::l、:.:.:.:.::.:.:.:.:l:.:.:.::|
.    |:.:.:.:.:l:.:.:.:.:.:.:.::.::/ |:.;:.:.:.:.:.:.;l:l l:.::l;:.:.:.:.:.:l:.:.:.:;l,
    |:.:.:.:.:.|:.:.:.:.:.::l:.:/ |:|.l:.:.:::.:.:l|l  |:.:ll:.:.:::.::.ll:.:.:.::|i
.   |:.:.:.:.:l|:.:.:.::.::l.|/` 、|l l:.:::./l _,,.-l:j´l:.:.:.:.:| l:.:.:.:lii
   l:.:.:.::.:l i/l:.:.:l |l‐ェ-ュ,` l:://´ェ--,-,.l:.:.:lヽ l:.:.::.l.ii
.   l:.:.:.:.:;l l (l:.:.:.lヽゝ_ノ  '"  ゝ_ノノ.l:.::l,l l .|;:.:.:.l.ij 
   l:.:.:.::.lij `ゞ::.:l ,、,       ∧/l:.:.l/ j|:.:.:.:l.ii
.  |:.:.:.:.:|.ii   ';:.:l、     '   .  ,l::/   l.l:.:.:.l.i|
.  |:.:.::;.;| ii   ヾl >、.   0   , イl:/、   | |:.:.:.l li
.  |:.:.:.|i| ji,.-ィ'´l `l ` ‐-‐ '´  l  l``l‐-l、|:.:.:.l ij
  |:.:.:.:|i|'´/ l  ヽ `、      /  /  l  .l |:.:.:.| i|
 すとーっぷ。>>712は素早く変な空気を作るねぇ…
 >>709より不安な子を見つけたよ。

714 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:02:40 ]
DX9、C++でのテクスチャに関する質問です。
テクスチャのクラス(CTexture)を作り、コンストラクタに画像ファイルのパスを渡してクラス内でテクスチャ(Texture)を生成しています。
CTextureのデストラクタでTextureを削除するようにし(delete Texture)、メモリの解放を試みているのですが
その状態でCTexture* で作ったオブジェクトを削除すると、ヒープが壊れているというエラーが出ます。
多重deleteでエラーが出ることは調べてわかったのですが、
if(Texture) delete Texture;
としているにも関わらずエラーが出るので困っています。
どのようにしてテクスチャが占有したメモリを解放すればよいのでしょうか?

715 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:18:42 ]
>>714
見事にスレ違いだ。
そして君のやりたいことは多分こうだ。

if (Texture) { delete Texture; Texture = NULL; }

716 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:40:27 ]
>>715
できました、ありがとうございます!!そしてごめんなさいでしたァ!!

717 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 05:40:52 ]
delete Texture;
Texture = NULL;

これでおk
delete NULL;は合法
ま、どのみちスレチ

718 名前:デフォルトの名無しさん [2008/06/07(土) 12:22:05 ]
www.h2.dion.ne.jp/~takusoft/directx8/d3d/chapter1/sec07/d3d_07.html
のサンプルプログラムを参考にお勉強しているのですが
画面の頂点情報を動的に変えるために
頂点バッファを確保する箇所

VOID* pVertices;
if( FAILED( g_pVB->Lock( 0, sizeof(g_Vertices), (BYTE**)&pVertices, 0 ) ) )
return E_FAIL;
memcpy( pVertices, g_Vertices, sizeof(g_Vertices) );
g_pVB->Unlock();

を処理で何回も経由させる場合
以前に確保したメモリはどのように解放してあげれば良いのでしょうか?
よろしくお願い致します。

719 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:33:41 ]
確保も何もそれはロックしてるだけだと思うが・・・。
あと頻繁にロックするならDYNAMICで作ってDISCARDでロックしろ

720 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:53:13 ]
なるほど、メモリのロックという概念をよく分かってませんでした
動的に確保してるわけでは無いんですね
同じところに何度も上書きしてる感じなのかな?
DYNAMIC と DISCARD は調べてみます
ありがとうございました

721 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:07:06 ]
Direct3DのX-ファイルとテクスチャに関しての質問なんですが。
Xファイルのモデルを作って、それにプログラムでテクスチャ座標を設定して一つのアイテムを作成するのではなく。
モデリングソフトでモデルを作ってる段階で、視覚的にテクスチャを設定して、その情報が入ったXファイルとテクスチャを読みこませて
テクスチャ座標をいちいち設定しなくてもアイテムを表示させたりって出来ないんですかね?

なんだか大体の本はモデルの読み込みと表示は説明してても、モデルの作成からテクスチャの設定部分が余り説明されてないので分かり辛い…
DirectXで使うことを前提とした3Dの本とかってないですかね?

長々と読み辛い文章スマソ。



722 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:58:36 ]
メタセコイアとかで普通にやればそうなると思うんだけど

723 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:02:06 ]
>>721
キミが求めている情報を知りたいのならプログラムの本ではなくデザインの本を買うべきだよ。
DirectXだのOpenGLだと自前レンダラーだの関係なくそれはグラフィックデータの話だ。

724 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:28:31 ]
>>721
普通にモデリングソフト触ればわかるだろが

ちなみにXファイルの中にマテリアルってもんがあって
そのなかにたくさんテクスチャ設定できるようになってるじゃん

構造でいうと

Xファイルx1
  メッシュxN
   マテリアルx1
     テクスチャx1
   モデルのUVx1

な感じになってるのか?(バンプ(マルチテクスチャ2枚以上考慮外)とか考えないと)
Xファイル1つにメッシュがたくさんあって
メッシュ1つにつきマテリアルとUVが1つずつあって
マテリアル1つにつきテクスチャが1つあると・・・

だから、Xファイル1つにテクスチャは複数ある構造がいまのXファイルなわけよ

725 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:38:42 ]
メッシュに対するマテリアルの数に制限はないぞ

726 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:45:35 ]
>>725
そうだっけ?
あーでもそうなってる気もするな

でも実用性なくね?
どの頂点がどのマテリアルか決定しなきゃいけないから
読み込むときにマテリアル単位でメッシュわけなきゃいけないな
この辺はモデリングソフト次第って感じ?

727 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:12:08 ]
モデリングの段階でテクスチャやマテリアル毎に
わざわざメッシュを分けて作る方が現実的じゃないだろ。

実際D3DXMeshでも属性テーブルって形式でマテリアル毎に分割して描画するようになってる。


728 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:25:37 ]
XFileに組み込んだマテリアルやテクスチャって1回XFileから読み込んで
デバイスにセットする方法しかないの?

729 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 18:27:13 ]
デバイスにセットしないでどうやってレンダリングするのかと

730 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 18:50:41 ]
>>727
メッシュ1つのマテリアル毎にテクスチャが違うって状況か?
あんまり違いがないならメッシュ1つに付きテクスチャ1枚な
俺の経験だとそんなモデルは重過ぎて動かねぇ

まあ、いまソースみたら俺もできるように組んであるけどなw
スキンメッシュでかなり苦労してた記述がみられるw

スキンメッシュのデータはマテリアルごと描画できるデータになってねぇのなw
抜けてんだな>Xファイルの担当者

731 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:00:24 ]
>>730
何を言ってるかわからねえがスキンメッシュだろうなかろうが同じように描画できるが・・・。
顔の表情とかをテクスチャ差し替えでやろうと思ったら顔だけテクスチャ別にするだろjk



732 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:31:24 ]
>>731
ボーンと頂点を結びつけるインデックスがそうはなってないと思ったが

>>731
メッシュで分けちゃってるな俺んとこのデザイナさん
もちろんプログラムではなんでもできるようにしてあるが

733 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:42:08 ]
>>731
インデックスとマテリアルは関係ないじゃろ。
最終的にはポリゴン1つ1つにマテリアルのインデックスが振られているんだから
それを使ってマテリアル毎に分解して再構成するだけ。
っていうかD3DXで読み込めば全部やってくれるけんど。

734 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:42:37 ]
>>733
>>731じゃねえ>>732だ。

735 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:14:17 ]
>>733
>それを使ってマテリアル毎に分解して再構成するだけ
この作業が面倒臭いって話だな
インデックスがメッシュごとだから、自前で読み込むときは
1回マテリアルごとに直す必要があるな

736 名前:デフォルトの名無しさん [2008/06/07(土) 22:22:43 ]
DirectX End-User Runtime Web Installer
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&DisplayLang=en
DirectX End-User Runtimes (June 2008)
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=822640ab-0983-4c41-9c70-632f6f42c557&DisplayLang=en
DirectX Software Development Kit
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=519aae99-b701-4ca1-8495-39ddde9d7030&DisplayLang=en


737 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:52:14 ]
>>736
そんなの貼っても割れ厨にはどうせ見れないぞw

738 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:54:40 ]


739 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:59:26 ]
ああ、そういう事か。
犯罪者の都合は考慮しないよ。

740 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:07:03 ]
>>738
ランタイムのウェブインストーラーや開発キット、ヘルプなんかは
ウィンドウズの正規OSでないと落とせなくなった
なのでたまにこのスレで「落とせません」とか「見れません」とか
「わかりません」とかいう奴はほぼすべて割れ厨

741 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:11:28 ]
PC買えばOS付いてくるのに割れ厨って意外と多いのな



742 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 04:24:44 ]
オンラインゲームをやってるんですが
directxを前のverに戻したらパフォーマンスって下がりますか?

743 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 04:51:37 ]


744 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 15:05:13 ]
安全に Release メソッドを呼ぶマクロとして
SAFE_RELEASE のようなものを見かけますが、

// safe release
#define RELEASE(p) ( (p) ? ( (p)->Release(), (p)=NULL ) : (0) )

このマクロで何か問題ありますか?
参照を使った関数だと BCC に注意されたので

745 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 16:17:37 ]
>>744
翻訳しないで原文ママのエラーメッセージを。

746 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:35:36 ]
DirectShowを使ってGUIのメディアプレイヤーを作っているのですが、
IMediaSeeking::GetDurationで再生時間を取得すると、
3分33秒より長いファイルはオーバーフローして負の値になってしまいます。
IMediaPosition::get_Durationで取得しようとすると、E_NOTIMPL(実装されていない)が帰ってきます。
3分33秒より長いファイルの再生時間を取得するにはどうすればいいのでしょうか?

開発環境はVisual Studio 2005 Pro、言語はCです。

747 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:37:54 ]
最小のコードくらい出せカス

748 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:38:00 ]
CComPtr使いなさい

749 名前:746 mailto:sage [2008/06/08(日) 17:49:53 ]
>>747
IGraphBuilder *pGraph;
IMediaControl *pMediaControl;
IMediaSeeking *pSeek;
IMediaPosition *pMediaPosition;
REFTIME length;
REFERENCE_TIME TotalTime;

CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC,
   IID_IGraphBuilder, (void **)&pGraph);
pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
pGraph->QueryInterface(IID_IMediaSeeking, (void **)&pSeek);
pGraph->QueryInterface(IID_IMediaPosition, (void **)&pMediaPosition);

pGraph->RenderFile(FileName, NULL);

pMediaPosition->get_Duration(&length);
pSeek->GetDuration(&TotalTime);

こんな感じです。

750 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:43:53 ]
REFERENCE_TIME は普通に使ってる分にはオーバーフローしないが
どこかで int にキャストされてるんじゃね
SetTimeFormat 指定しておいたほうがいいんじゃねえ

751 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:34:30 ]
DirectMusicを最近扱っているのですが、
GetGlobalParam(GUID_PerfMasterVolume, reinterpret_cast<void*>(&V), sizeof(V))で
何故かE_INVALIDARGが返ってきて音量の取得ができません。
不正な引数とありますが、どれが不正な引数なのでしょうか?(Vはlong型です)

ちなみに、この処理を行う前にパフォーマンスの作成、パフォーマンスとシンセサイザーの初期化、
ローダーの作成を行っています。



752 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:41:48 ]
>>751
msdnによると以下のようにあるけど、SetGlobalParamは使用済み?

>SetGlobalParam が rguidType について一度も呼び出されたことがない場合、このパフォーマンスが現在処理している
>グローバル データ リストの中に、rguidType がない可能性がある。その場合、このメソッドは E_INVALIDARG を返す。
>つまり、どのパラメータにも、GetGlobalParam を使って取得できるデフォルト値があると想定しないこと。



753 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:47:46 ]
質問です
ttp://richa850.hp.infoseek.co.jp/programming/dx9_01.html
ここを参考に、後述のプログラムを書いたのですが、少なくともRADEON9600SEで画面がおかしくなります。
正しい方法はどうやればいいのでしょうか?
・APIリファレンスを読んだところ、MultiSampleTypeなどは以前のものと一緒でなければならないとあったので、上記ページでは決め撃ちになっているのを修正しました
・画面がおかしくなるを具体的に言うと、テクスチャが壊れていたり(正しいテクスチャの一部が緑や白のペンキでラクガキでもされたように塗りつぶされてる)、まったく描画されなかったりです
・old.Widthが中途半端な値(672とか)だったりすると、OSごと巻き込んで落ちます。(PC再起動がかかります)


D3DSURFACE_DESC old;
CComPtr< IDirect3DSurface9 > pCurrentDepthStencil;
pDev->GetDepthStencilSurface(&pCurrentDepthStencil);
pCurrentDepthStencil->GetDesc(&old);

//  新しく作ったテクスチャーの大きさと、現在の深度ステンシルの大きさを比較.
if ((old.Width < descNewTexture.Width) || (old.Height < descNewTexture.Height))
{
  // 深度ステンシルを作り直す。
  CComPtr< IDirect3DSurface9 > pNewDepthStencil;
  pDev->CreateDepthStencilSurface
  (
    __max(descNewTexture.Width, old.Width),
    __max(descNewTexture.Height, old.Height),
    old.Format, old.MultiSampleType, old.MultiSampleQuality, TRUE, &pNewDepthStencil, NULL
  );
  pDev->SetDepthStencilSurface(pNewDepthStencil);
}
// 上記を行なっただけではまだ問題はおこらず、下記を行なうと発症します。
// 上記だけ、もしくは下記だけだと問題はおきません。
pDev->GetSwapChain(0, &pSwapChain)
pSwapChain->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &pRenderTarget);
pDev->SetRenderTarget(0, pRenderTarget);

754 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:56:19 ]
>>752
ありがとうございます、使用しておりませんでしたorz
デフォルト値がないのですね、なぜこんな仕様になっているのやら…orz

755 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 08:10:40 ]
変数でも何でもとりあえず初期化しやがれとしか言い様が無い

756 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:45:36 ]
Ver9あたりからボタンとかテキストボックスのような
コントロールのようなものが使えるようになってるみたいなんだが
あれってなんて名前でしょうか?

使い方書いてあるHP検索したいわけだが
なんて検索したらいいかわからんのです


757 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 01:16:45 ]
DXUT

758 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:35:52 ]
dxutに未来はあるのでしょうか?

759 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:50:35 ]
モデルの、パーツだけ別のモデルに差し替えることって
なんという言葉でしたっけ

760 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:36:07 ]
void PartsDakeSashikae_to_OtherModel(void) { return; }

761 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:24:56 ]
#define PDtoOM PartsDakeSashikae_to_OtherModel
PDtoOM();



762 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:05:08 ]
>>760-761
面白いと思ってやってるのか?

763 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:35:41 ]
自前の画像を使ってボタンを作るとき、レスポンス(押しっぱなし)
の頻度をループ数とタイマーのどちらで制御すべきだと思いますか?

764 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:48:27 ]
タイマー
ループにして何か良いこと有るの?

765 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:38:24 ]
ループだとFPSに依存するから怖いよ

766 名前:763 mailto:sage [2008/06/14(土) 03:46:37 ]
thx
やっぱりそうなんだ。
処理落ちすることって前提なのね。

767 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 04:33:41 ]
メッセージで処理しろよ。つーかwinプログラミング覚えろよ。

768 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:52:37 ]
軽いゲームならfps依存でかまわんと思うよ。
ただ、その処理をカウンタで実装したところで
タイマーと比べて簡単になるとは思わんが。

769 名前:767 mailto:sage [2008/06/14(土) 20:46:38 ]
>>767
プロシージャのタイマーより
クラス内でtimeGetTime()使ったほうがいいだろ?

770 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 20:56:25 ]
変な人がおる・・・

771 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:19:24 ]
IDirect3DBaseTexture9から画像サイズって取れますか?
IDirect3DTexture9じゃないです



772 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:41:00 ]
取れないよ。
取れないけど・・・どういう状況でその要求が出てくるんだ?
まともな設計してりゃありえないと思うんだが。

773 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:01:16 ]
シェーダークラスで
GetTextureで0のテクスチャの幅と高さを
シェーダーに渡したかったのです。

Textureは、普通のテクスチャだったり、RENDER_TARGETだったりするし、
サイズを別に持たせたくなかった(メモリけちった)のです
無理っぽいので、別個に渡すようにします。


774 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:24:40 ]
あぁ、GetTextureからという話ならIDirect3DResource9::GetTypeで判別して
各継承クラスにキャストすりゃいいだけだよ。


775 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:44:20 ]
普通のテクスチャもRENDER_TARGETも同じIDirect3DTexture9だとおもうけんど

776 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:35:37 ]
ボ、ボリュームテクスチャも作るつもりだもん

777 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:44:20 ]
お前かわいいな
ちょっとこっち来いよ

778 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:26:38 ]
LPDIRECT3DDEVICE9から
ライトのポジションは、GetLightから取れるのですが、
カメラのポジション取得は、できるのでしょうか?
無理ですか?



779 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:23:47 ]
カメラのポジションも当然取得できる。
つか出来ないわけねーだろ。

780 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:08:03 ]
カメラの「位置じゃなくビュー行列が取れるだけだから
そっからカメラの位置は計算しないといかんけどな

781 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:16:51 ]




782 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 03:55:17 ]
やっぱ、シェーダでカメラの位置が必要になるので
カメラ行列生成情報は、グローバルで持っておくべき?
あと、ビルボード行列も

783 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 04:27:29 ]
>>782
同じことで悩んでる人発見
カメラのクラスってどこに配置すればいいんでしょうね


784 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 10:01:29 ]
カメラを管理するクラスをワールドを管理するクラスが持つだろJK

785 名前:デフォルトの名無しさん [2008/06/19(木) 13:49:00 ]
カメラはワールドに複数配置できて、
アクティブな奴を切り替え出来るように作っておくとデバッグにも便利

786 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 15:43:47 ]
その発想は無かった

787 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 18:54:51 ]
>>786
素人乙

788 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 00:22:34 ]
いろいろ3Dツールを使って試しているのですが
分からないことがあるので質問です。

例えばメタセコイアでpng形式のアルファ付きテクスチャをポリゴンに張ると
レンダリング結果はテクスチャの透明部分はポリゴンも透明になりますが
xファイルに出力してビューワで見ると透明部分は白色表示になってしまいます
これはxファイルにはテクスチャのアルファは無視(白と認識)されるという事なのでしょうか?

789 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 00:32:36 ]
1) メタセコにおいて、テクスチャマップとアルファマップの両方を指定している場合、
xファイルはマルチテクスチャをサポートしていないので、xファイルに保存した段階で
アルファマップの情報は失われる。

2) そのビューワ(何のビューワか知らんが)がテクスチャのアルファ値を無視しているだけ。

790 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:07:04 ]
>>789
1に関してはテクスチャは1枚しか使用していません。
メタセコイアの材質設定で「模様」のテクスチャにアルファ付きのpng画像を指定した場合と
材質設定の「透明」に白黒のbmp画像を指定した場合の両方を試しましたが
どちらもメタセコイア上で透明に見えていた部分はxファイルで白になっていました。

2に関してはSDK付属のMeshViewerを使って見ていました。
一応自作のプログラム上でも表示を試しましたが
ビューワと同様でアルファの影響は見られませんでした
(DirectX初心者な自分が作ったプログラムなので
それ自体にアルファに関する抜けがある可能性もありますが)

透過効果を使ったxファイルのサンプルでもあればいいのですが
現状では表示するプログラム側に誤りがあるのか
3Dツール側の設定が足りてないのか分からずなんとも・・・

791 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:22:24 ]
PNGのアルファってかなり怪しかった気がするんだけど。
素直にDDSを使う方がいいと思われ。



792 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:29:36 ]
失敗しているとしたら、テクスチャの読み込み段階でアルファ値をわざわざ削ってしまっているか、
レンダーステートおよびテクスチャステージステートの設定が適切でないか、だ。

後者の方が圧倒的に多いパターンなんだけど、
このへん実はピクセルシェーダ使った方が余程わかりやすかったりするんだよねぇ。

793 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:02:14 ]
>>785
おまえ頭いいな

794 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:09:58 ]
なんだかんだで
DirectGraphicsのほとんどの要素をラッピングしたクラスが必要なんですね。
たいへんですね

795 名前:790 mailto:sage [2008/06/20(金) 08:34:24 ]
>>791
DDS形式使っても無理でした(つД`)

>>792
レンダーステートとテクスチャステージステートは
特に設定していなかったので、レンダーステートに
D3DRS_ALPHABLENDENABLE設定してみたのですが
結果は変わらず。
テクスチャステージステートはデフォルトでイイと思うのですが
この辺の設定も自信無いので違ってたらご指摘お願いします orz

ちなみに使用してるSDKのバージョンは2004/Oct

796 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:31:11 ]
>>795
半透明描画はSRCBLENDとDSTBLENDの設定とCOLOR_OPの設定もちゃんとやらないと話が始まらないぞ。

797 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:40:18 ]
>>795
まずはテクスチャのα値をちゃんと参照する方法を覚えろ。

しかしコンパイル済みMeshViewはテクスチャのα値無視するのは確かに不適切だよな
ソース入ってるから自分でリコンパイルすりゃいいんだけど、メニューでON/OFFくらいつけといてほしかったわw

798 名前:790 mailto:sage [2008/06/20(金) 10:18:37 ]
>>796,797
d、やっと出来ました!ヽ(`Д´)ノ

pD3DDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
pD3DDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );

この二行が抜けてました、ってか
D3DRS_SRCBLENDALPHAとD3DRS_DESTBLENDALPHAの定数と勘違いして使って混乱してました(つД`)ゴメンナサイ
テクスチャステージステートはとりあえずデフォルトでも大丈夫でした。
それにしてもMeshViewerはα反映しないんですね
お陰でデータの方に問題があるのかと勘違いして無駄な時間を・・・orz

799 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:04:01 ]
今さっき、テクスチャのαを適用するようにしたMeshViewを作ったわ
2008だとそのままじゃコンパイル通らなくて、いろいろめんどかった

てか、存在しないヘッダファイルをincludeするなよサンプルなのにって思った

800 名前:790 mailto:sage [2008/06/20(金) 20:58:27 ]
昼に解決したと思って放置してたものを弄ってて
背景透けたと思ってたら、バックグラウンド(クリア色)は
透明ポリゴン越しに透けて見えたけどすぐ後ろに別ポリゴン置いたら
そのポリゴン無視してバックグラウンドの色が表示されてることに気づいた・・・orz

801 名前:790 mailto:sage [2008/06/20(金) 22:44:21 ]
ぁぁ・・・Zバッファ有効にしてたら透過が上手くいかず
Zバッファ無効にすると前後関係を自動処理してくれないから
自前で描画順序を制御しなけりゃいけないって事かな(;´-`)



802 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:45:39 ]
半透明 Zバッファ
でぐぐりまくりんぐ

803 名前:790 mailto:sage [2008/06/20(金) 22:52:38 ]
つい先ほどからぐぐりまくりんぐです。
初歩の初歩みたいな疑問をグダグダ書き連ねて申し訳なさ爆発です。

804 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:55:09 ]
昨今の事情を鑑みるからには、半透明でモデルを書くな。
使うなら見た目は諦めるか深度ピーリングでもしろ。

頂点処理なんてアホほど浮いてるんだしアルファで抜くより全部
ポリゴンのほうが圧倒的に最近の主流だったりはする。

805 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:01:57 ]
あおりじゃなく、深度ピーリングってなんのことだ?
あと、「半」透明じゃなくて、アルファ値を使った「透過」がやりたいだけなら、アルファテスト使えばよくね?

806 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:04:45 ]
>>804
頂点処理が浮いてるっていうのは、
大抵の場合ピクセルシェーダが忙しくて、頂点シェーダが遊んでるってことですか?
どうやったらコアの稼働率?を調べることが出来るんでしょうか?

807 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:09:24 ]
>>806
まだそんなことを気にするレベルに至って無い
順番にやっていけ

半透明とZバッファの相性の悪さは昔からの命題
一般的には半透明の描画だけリストに登録しておいて、完全不透明の描画が全て終わった後、カメラから遠い順に描画していく
std::multimap<float, IAlphaDraw*> でリストつくると楽だよ
floatがカメラからの距離
IAlphaDrawは半透明描画の描画インターフェースを提供するインターフェースクラス


808 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:16:35 ]
>>806
NV PerfHUD

809 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:41:46 ]
なんか2度書きってなかったっけ?

810 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:43:03 ]
不透過の物体を描画するときはZバッファをONにしてカメラに近いほうから描いていくと速いぞ

811 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:53:12 ]
エフェクトやパーティクルなんかは別として、
モデル自体の半透明処理はかなりの例外扱いだからなぁ。

被写界深度やモーションブラーなんかもやれないし
特殊な条件以外で使うようなものじゃない。



812 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 07:11:37 ]
2Dゲーでかなりの枚数を重ねようとしてるなら
正直、PCのグラボではフィルレートがまったく足りてないと思う

813 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 09:28:27 ]
3Dでもハイレゾで普通にバンプ、スペキュラ、シャドウとかやってると
普通にピクセルシェーダーカツカツになるよ。

逆に頂点は数百万クラスになってきてるけど、今は統合型アーキテクチャが主流だしどうなることやら。

814 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 09:56:02 ]
うんうん頂点シェーダはなにやっても落ちないわ
でもピクセルシェーダはα物をちょっと拡大して表示するだけでもう処理落ちはじめやがんの

これってなんで?
PS2とかだとそんなことなかった気がすんだけっちょ

815 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 10:02:18 ]
PS2はフィルレートバカじゃん。
使うテクスチャも16色や256色のパレットが殆どだし。
そもそも解像度も640x480より小さいしなー。

816 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 10:14:13 ]
頂点毎に呼ばれるVSと違ってPSはピクセル毎に呼んでるはずだから
解像度あげたらエライ負担になるだろ

817 名前:デフォルトの名無しさん [2008/06/21(土) 11:29:23 ]
DirectXについて料金のことですが
これって無料でダウンロードできるんですか?

818 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 11:48:48 ]
いいえ。MicrosoftとNDA契約を結んだあと
利用目的に応じたライセンス料を支払う必要がありますん。

819 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 11:55:28 ]
初心者質問スレなんだから意地悪しないでググレカスでいいじゃないか・・・

820 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 12:13:01 ]
ダウンロードセンター行けば無料か有料化は一瞬で分かるだろ

821 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 13:48:25 ]
やべ、俺NDAのサインしてねぇ。

あれ、誰かきた。



822 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 13:51:09 ]
DrawPrimitiveを使った描画で消失点を画面中央以外にするにはどうすればいいですか?

823 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 13:54:02 ]
>>822
Projection 行列をいじる

824 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:28:40 ]
>>823
即レスありがとうございます。
色々調べてみたのですがよくわかりません。
D3DXMatrixPerspectiveFovLHの他に座標変換するのですか?

825 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:31:09 ]
>>824
D3DXMatrixPerspectiveOffCenterLHとか使うといい。

826 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 15:19:14 ]
>>825
できました。ありがとうございました。

827 名前:デフォルトの名無しさん [2008/06/21(土) 18:38:44 ]
boost::intrusive_ptr<IDirect3DVertexBuffer9> spVB;
とVBを確保したのですが、
pd3dDevice->CreateVertexBuffer(sizeof(D3DTLVERTEX)*4, 0, D3DFVF_2DVERTEX, D3DPOOL_DEFAULT, m_pVB.get(), NULL );
と、作るときにダブルポインタに出来ません・・・
IDirect3DVertexBuffer9* buf=spVB.get();
pd3dDevice->CreateVertexBuffer(sizeof(D3DTLVERTEX)*4, 0, D3DFVF_2DVERTEX, D3DPOOL_DEFAULT, &buf, NULL );
と渡す以外の方法で良い方法ありませんか?
intrusive_ptrを使うのが悪いのだろうか・・・

828 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:44:15 ]
CComPtr使えよ

829 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:50:29 ]
>>828
ありがとうございます。
DXUTを使ってるので、
atlbase.hをインクルードするときに
Need to include strsafe.h after tchar.h
って言われるのでIntrusiveに逃げようかと思ったんですが、
やはりDXUT.hの中に入れ込んででもCComPtrのほうが良いのでしょうか。。

830 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:12:50 ]
その程度のリソースは余計な事せずにそのまま管理すりゃいいだろ・・・

831 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:19:23 ]
>>827
&(spVB.get())じゃダメなのか?



832 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:38:10 ]
>>829
何を嫌がってるのか理解できんが、だったらintrusive_ptrをそのまんまぱくって

T** ptr_ptr() { return &px_; }

みたいなのを付け足したのを自前でこしらえたらいいじゃん。

>>831
こらこらw


833 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:44:39 ]
>>830-832
ありがとうございます。
やはり普通にCComPtrを使うことにしました。
>>832
の意見は大変参考になりました。
ありがとうございました。

834 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:52:30 ]
>>827
CreateVertexBufferに渡すのは素のIDirect3DVertexBuffer9*で、
それを使ってintrusive_ptrを初期化すればいいかと。

835 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 20:51:57 ]
>>829
その警告だったら、DXUT.hの中でATLのヘッダ読み込めば出ないけどね。
ATL使うのがデフォなら、DXUT.hに追加してプリコンパイル済みヘッダと
使用するのもありだと思うけど。

836 名前:835 mailto:sage [2008/06/21(土) 21:00:56 ]
ああ、すまん。上のレス読んでなかった。
DXUT.hの中で読み込めばいいのは知ってたのか。
typoしたんだが直すまでもないな。


837 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:21:45 ]
>>833
CComPtrはかなり独立したテンプレートクラスだから、コピペでパクるのもいいぜ?
ってか俺はそうしてる。
なぜならVS2008にはatlbase.hが入ってないからだ;;

838 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:05:48 ]
スマートポインタって不必要になったら自動で削除っていうけど
不必要になったときっていつなんだ?
スタティックで参照されると一生消えないんだろうか?もしかして

839 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:08:19 ]
俺はデータを管理するクラス経由でアクセスするようにしてるから
vector、list、set、map、stringくらいしか使ってないな・・・。

840 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:09:51 ]
>>839
setとmapってどういうときに使うの?

841 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:26:04 ]
>>838
参照がなくなった時だろ。



842 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:57:07 ]
>>838
普通はプログラムの終了時だと思うぞ

843 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 02:27:49 ]
>>840
mapは外部ファイルから読み込みするリソース(シェーダー、テクスチャ、モデル)なんかを
二重に読まないようにファイル名をキーにインターフェイス突っ込んどいて参照カウンタで管理に。

multimapとかmultisetなんかはパーティクルとかの挿入ソート代わりに。

844 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 07:02:25 ]
>>837
入ってないのExpress Editionだけだろ

845 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 10:15:19 ]
しかも2008に限らず無料版でATLが入っていたことなどないはず・・・・あ、2003(コンパイラのみ提供)はATLありだったっけ?

846 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:05:11 ]
>>842
じゃあ、うっかりスタティックで参照しやがった馬鹿が開発チームにいたら
デフォでリークし続けるってこと?
参照あってもこっちが削除したいっていったら強制的に削除してほしいときは
どうしたらいいだろうか?

847 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:14:10 ]
参照があるのに削除したらスマートポインタの意味がないじゃん。

848 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:18:44 ]
プライオリティ設定できないの?
優先度高の奴が残ってるときだけ参照あったら削除しないで
優先度低の奴は残ってても強制執行・・・みたいな

849 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:44:55 ]
weak_ptrみたいなの?

850 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:17:08 ]
>>846
言ってることがよく分からんが
その「スタティックな参照」を行ってるスコープから出れば解放されるんじゃないの
一番大きいスコープ=プログラム(プロセス)
スコープから出る=プログラムの終了

851 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:52:04 ]
>>850
スコープから出る時にデストラクタが呼ばれるならそれはLocal変数であってStatic変数ではない罠。



852 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 14:54:23 ]
>>851
スコープは例えただけで、関数内スタティック変数が関数抜けると
解放されるとかそういう意味で言ったんじゃないんだ
分かりづらい例えですまんかった

「プログラム終了時に消えると思う」に対して「スタティック参照したらリークするんじゃ」
って話だったから終了時に消えるって事を押したんだが
関数内スタティックが関数抜けても消えないっていうのを問題にしているのかね>>846

853 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 16:32:05 ]
>>846
参照カウンタの概念は理解してるか?
それとグローバルスコープ(プログラム終了)を抜ける時に
グローバル変数やスタティック変数のデストラクタが呼び出されて
解放されることも。


854 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 17:30:45 ]
その辺りは実際に書いて試してみたほうが早いよね

855 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 18:06:10 ]
要はバッサリ削除したいのに
使いもしないスタティック参照がインスタンスを消させなくしているから
どーでもいいような優先度の参照に関してはつかんでても無視して強制的に削除したいということだよ

856 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 18:57:20 ]
普通に管理クラスつくって自分でマネージメントした方がいいと思うけど。
DirectX関係のインターフェイスは余計な事しないでシンプルに扱ったほうがいい。

857 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:19:39 ]
>>855
weak_ptr

858 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:01:47 ]
そもそも使いもしないスタティック参照がいて
かつ参照がいるのに強制削除って状況がおかしいよ。


859 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:03:08 ]
確かに・・・リソースの強制削除なんて特異な状況聞いたことないな。
単にまともな管理が出来ていないだけにしか聞こえないな。

860 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:48:29 ]
>>858
シーンを何回も呼ぶ(ロードアンロードを繰り返す)んだけど
そのうちの1シーンがスタティックでポインタを保持してるところが多いのよ
いらなくなったらそのシーンは破棄するんだけどプログラム自体はスタティック参照だから
残るのよこれが
範囲が広すぎて修正不可能だからどうすんべーって感じなわけ

861 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 04:37:39 ]
staticにした時点で間違ってると言うことだNE



862 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 09:51:22 ]
シーンが破棄されるときに、デストラクタから開放するべきなんじゃ?
てか破棄されうるシーンがスタティックなポインタを持ってるっておかしくね?

863 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 11:17:03 ]
>>846のレスからすると何か変な勘違いを前提にして、
強制削除とやらをしなければならないと思っているような気がするが。
>>838からの流れなんだろうけど、その後の他の人のレスと
話が噛み合っていない。

そもそも、リソースの管理に問題ありというのには同意。

864 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:04:07 ]
スタティック参照って言葉でややこしくなってる気が

865 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 16:01:33 ]
オンボードビデオカードだと
CreateDeviceでD3DCREATE_HARDWARE_VERTEXPROCESSINGが失敗すると思ってよいのでしょうか?

また、ビデオカードを使ってる環境でオンボードでも動作するように開発するには
D3DCREATE_SOFTWARE_VERTEXPROCESSINGで初期化を行えばあとはCPU速度次第ということになるのでしょうか?

866 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 16:21:38 ]
>>865
少なくともここ1年以内のIntel製オンボードは
D3DCREATE_HARDWARE_VERTEXPROCESSINGでも通るぞ

恐らくだが3年前の物でも通ると思う


867 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 16:53:54 ]
>>866
ありがとうございます
自分の環境が945Gなのですが駄目でした
この環境で動作させるには、頂点数やライティングに気をつければよいのでしょうか?

868 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 17:59:50 ]
>>867
頂点数とライティング、あとはVRAMを食いすぎないようにすれば十分な速度は保てると思う。
オンボードグラボは基本的にメインメモリからVRAMを取るから十分にメモリを積んでない
システムでVRAM食いすぎると酷いことになる。
でかいテクスチャを何枚も使ったりしないで簡単な3Dエフェクト程度の利用だったら
特に問題なく動くんじゃないかな。

869 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:10:48 ]
intelGMAは未だにピクセルシェーダはサポートするけど
頂点シェーダはサポートしない(HW頂点処理ができない)んじゃなかったっけ

870 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:21:24 ]
ピクセルシェーダー/バーテックスシェーダー2.0に対応していない
グラフィックボードって何年前ぐらいの物ですか?

871 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:28:07 ]
GeForce3とかRadeon8500とかだな



872 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 12:26:00 ]
>>869
X3000以降は使えるみたい
en.wikipedia.org/wiki/Intel_GMA#Table_of_GMA_graphics_cores_and_chipsets

873 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 15:23:12 ]
この前GF5200FXで動かしたら、ピクセルシェーダ2.0に対応してるのはいいけど物凄い遅さでびっくりした
(PS処理省いたらめちゃくちゃ軽くなった)

874 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:02:31 ]
D3D10でD3D9のD3DPERF_BeginEventに相当するものってありますか?

875 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 17:12:50 ]
bmp形式の画像ファイルを背景色の代わりに表示させることってできますか?


876 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 17:15:34 ]
>>875
スプライトなり何なり使って画像を描画

Zバッファだけクリア

後はお好きなようにどうぞ

877 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 17:26:45 ]
>>876
できました!
ありがとうございました。



878 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 01:10:00 ]
えええ

879 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 07:25:15 ]
D3DXLoadMeshFromXInMemory のオプションで指定するD3DXMESH列挙型にはどんな意味があるのでしょうか?
色々と試してみたのですが、パフォーマンスに影響があるようには思えないのですが

880 名前:デフォルトの名無しさん mailto:age [2008/06/28(土) 08:02:10 ]
HLSLの組み込み関数「ddx(x)」ついての質問です。
SDKのヘルプには、
スクリーン空間の x 座標について、x の勾配を返します。
とありますが、具体的にどんな計算をしているのですか?
教えていただけないでしょうか?


881 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 14:04:28 ]
英語では、Returns the partial derivative of x
xの偏微分を返すって書いてるね。



882 名前:デフォルトの名無しさん mailto:age [2008/06/28(土) 15:43:46 ]
>>881
レスありがとうございます。

x方向の傾きを返してくれるみたいですね。
その傾きを求めるための具体的な値が、どのようなものなのか、
わからなくて困っています。

傾き == 高さ / 距離 の「高さ」と「距離」は、
どんな値が使われるのか知りたいです。

どなたか、よろしくおねがいします。

883 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 16:29:24 ]
プログラムと一緒にd3dx9_?.dllとかをダウンロードさせたいのですが、どのような形式なら
配布してよいんでしょうか?cabですか?

884 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:00:26 ]
>>883
添付して配布は、ライセンス的に面倒なことになるんじゃなかったかな。
ウェブインストーラへのリンクを出せばいいと思う。

885 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:23:59 ]
>>882
HLSLのddx()/ddy()は、PSのdsx/dsyに対応する。
dsxのマニュアルには、レンダリングターゲットのx 方向の変化割合とあるので
↓か、それに近い形になるんじゃないかなあ

float2 delta = 1.0f / rendertarget.size;
float1 dsx = ( pixelcolor( x+delta.x, y ) - pixelcolor( x, y ) ) / delta.x;
float1 dsy = ( pixelcolor( x, y+delta.y ) - pixelcolor( x, y ) ) / delta.y;

886 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:58:22 ]
>>883
msdn.microsoft.com/en-us/library/bb174600(VS.85).aspx
msdn.microsoft.com/en-us/library/bb219742(VS.85).aspx
ファイル単体ならライセンス違反だが、最小構成なら2MB程度の添付で済む。

ファイル単体で添付できるにこしたことはないんだが、MSは自分らのランタイムを
プライベート配布されるのを嫌う傾向があるからなぁ。


887 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:55:22 ]
まあ、なんかトラブルあったら、クレームは全部MSに来るわけだしな。
動かない、なんとかしろ、しか言わないキチガイにつきあうよりは、
自分トコから一括ダウソにしておいたほうがまだしもマシってことだろう。

888 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 14:32:56 ]
firefoxみたいなブラウザの画面をテクスチャにするにはどうしたらいいでしょうか?

win32APIを使うべきなのかDirectXを使うべきなのかもよくわからないです

889 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 19:38:35 ]
両方使え

890 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 20:46:44 ]
これからDirectXの勉強をしようと思ってるんですけど、
SDKはどのバージョンを使えばいいのでしょうか?
9.0c以降多すぎてよく分からないです
開発環境や実行環境のサポート状況で適当に選んじゃっていいのかな

891 名前:882 mailto:sage [2008/06/30(月) 00:53:27 ]
>>885
レスありがとうございます。

実際に値を入れて、いろいろと調べてみます。



892 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:13:30 ]
コンパイルすると以下のようなエラーが出ます
サンプルプログラムなのでソースにエラーはないと思います
調べましたが原因が分かりません
よろしければどなたか御教授いただけないでしょうか?

エラー E2238 c:\Borland\Bcc55\include\d3dtypes.h 113: '_D3DCOLORVALUE' の宣言が複数見つかった
エラー E2344 C:\Program Files\mdsdk\Include\d3d9types.h 60: 一つ前の '_D3DCOLORVALUE' の定義位置
エラー E2146 c:\Borland\Bcc55\include\d3dtypes.h 130: 宣言には識別子が必要
エラー E2238 c:\Borland\Bcc55\include\d3dtypes.h 132: '_D3DRECT' の宣言が複数見つかった
エラー E2344 C:\Program Files\mdsdk\Include\d3d9types.h 70: 一つ前の '_D3DRECT' の定義位置
エラー E2146 c:\Borland\Bcc55\include\d3dtypes.h 149: 宣言には識別子が必要
エラー E2238 c:\Borland\Bcc55\include\d3dtypes.h 151: '_D3DVECTOR' の宣言が複数見つかった
エラー E2344 C:\Program Files\mdsdk\Include\d3d9types.h 51: 一つ前の '_D3DVECTOR' の定義位置

以下略


893 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:18:22 ]
>>890
日本語マニュアル必須なら2004OCT
不要なら最新版使っとけ

894 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:38:23 ]
まだBCC使ってるやつ居るのか…

895 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:44:44 ]
BCCはDirectXに対応してないハズ
どうしてもBCCがいいなら昔のバージョンを使うしかない
VC使えばいいと思うよ

896 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:49:53 ]
BCCからVCへの移行は難しい物なのでしょうか?

897 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 00:08:51 ]
やってから言え
どうしてお前が難しいと思うか予想しなければいけないんだ?

898 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 00:09:35 ]
VCはISO準拠度が高いので
もし、移植できないコードがあれば、それはコードが間違ってるってことだから
安心して修正していいよ

899 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 00:10:25 ]
分かりましたVCを導入してみます

900 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 01:18:06 ]
どうせ趣味グラマだろ?
正規版OSならタダなんだから導入も糞もないだろ

901 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 10:53:32 ]
恐ろしいことに2005年以降でもExpressEdition+PlatformSDKを無視して
BCCを使う入門書(笑)や入門サイト(爆)は実在するんだ…



902 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 12:02:15 ]
古いサイトが更新されてないだけではなく?

903 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 12:26:00 ]
HDVファイルの任意のタイムコードの場所を表示する(orビットマップファイルで吐き出す)
コマンドラインのプログラムを作らないといけなくなったのですが、DirectShowベースで
実現可能でしょうか?

C:\> showHDV.exe /pid 10 /timecode 00:00:00:25 test.m2t ← こんな感じ

904 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 16:36:09 ]
スレ違い。
とりあえずSDK読んで考えろ。

905 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 19:54:26 ]
www.greenwood.co.jp/~k-aki/article/sslib2_dsound/source/sslib2/dsound/StreamSoundBuffer.cpp
上記のソースコードですが、CStreamSoundBuffer::Create内でCComPtrを二箇所使用しています。
CComPtrはググってみたところ、スマートポインタの一種と出ました。間違いないでしょうか?
また、bufferはサウンドバッファでm_pStreamBufferに受け渡されているので解放されないのに対し、
notifyは何にも受け渡されないので解放(Release)されてしまうように思われます。
IDirectSoundNotifyはIDirectSoundBufferと異なり解放されても問題ないのでしょうか?

906 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 20:07:00 ]
言葉が足りなかったので
IDirectSoundBufferはサウンドの再生時に必要になるので必要な間にReleaseすると問題になります。
であれば、IDirectSoundNotifyは通知位置を設定するのに使ったので解放すると設定無効にならないのでしょうか?

907 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 21:48:18 ]
自己解決しました。
msdn.microsoft.com/ja-jp/library/cc370470.aspx
上記を見るかぎり、解放しても問題なさそうですね。

908 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 23:32:35 ]
>>904
あんまり有益じゃないアドバイスですね。
一応スレにはルールがありますので、ルールに則った回答をお願いします。

909 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 23:57:59 ]
このスレは初心者と優しい人とギスギスした人で成り立ってます
プログラマーって極端だな

910 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 00:14:16 ]
最近のSDKではDirectX9の更新が無いようですが、
最後に更新されたのはどのバージョンですか?

911 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 00:25:20 ]
d3dx9_xx.dllのバージョンが上がっている以上、
今でも更新されているとお考えください



912 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 02:14:10 ]
マスターアップ前のPGは生理痛の時の女と一緒
つまり、女のPGは大変てこった

913 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 14:48:39 ]
ロックできる指定サイズのサーフェィスってどうやってつくんの

914 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 19:57:19 ]
質問です。

DirectSoundでプライマリバッファのボリュームをいじると、Windowsアプリケーションの「ボリュームコントロール」でコントロールできるWavのところに反映されてしまうようでいまいちよろしくありません。
ゲーム終了時に元に戻すことも考えましたが、ゲーム中にユーザーが「ボリュームコントロール」からいじってたら〜と考えるとこれでも不適当かと。

なので、いったん
「ゲームのBGMや効果音のセカンダリバッファ」 > 「セカンダリバッファ」 > プライマリバッファ
と、1つセカンダリバッファをかませたいのです。

DirectXのヘルプを読むと「ほとんどのバッファの場合、出力先はプライマリ バッファと呼ばれるミキシング エンジンである」
とあったため、工夫すればセカンダリをかませることはできそうなのですが、良い手法はありますでしょうか?


915 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 20:21:20 ]
マスターボリュームをいじるプログラムにするな
以上!

916 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 20:48:58 ]
AOE2はゲーム終了時とかフォーカス喪失時にボリューム元に戻すような仕様だったな
大企業でさえそれなんだから別に気にしないってのも一つの手だとは思うが
どうしても嫌ならManagedDirectXのセカンダリバッファがヒントになるかもしれん

917 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:12:01 ]
丁度DirectSoundで盛り上がってるみたいで便乗を
現状、効果音を多重に鳴らす際にDuplicateSoundBufferを使ってます
でもこれ、鳴り終わるまではReleaseしちゃいけないので面倒です

今はここのイベント通知処理を利用し
ttp://msdn.microsoft.com/ja-jp/library/cc370470.aspx
play時にDuplicateSoundBufferで複製。ついでにstaticなリストにCComPtrでくるんで追加。
再生が終わったらリストからはずす(よって開放される)
という感じに実装しています

でもこれが異常に面倒。とてもほかの方々がそうやってるとは思えません
そもそもDuplicateSoundBufferについてぐぐるにひっかからなさすぎ(26件)

みなさん多重に再生する必要がある効果音などは、どのようにしているのでしょうか?

918 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:13:30 ]
>>917補足です
再生が終わったらイベントが通知され(登録したコールバック関数が呼ばれ)、そこでリストからはずすようにしています。
リストが壊れないようにクリティカルセクションでかこってやったり、かなり面倒なんですよね
一度作ってしまえばあとは使うだけとは言え・・・

919 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:25:27 ]
効果音を鳴らすたびに作って解放するのかと逆に問いたい

920 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:58:09 ]
Managedの話で悪いが俺は最大同時再生数と同じ数だけセカンダリバッファ作っちゃってるわ
再生終了はコールバックじゃなくて毎フレームのポーリングで対処してる
少なくとも俺のPCでは遅延とかメモリ食いすぎとかは起こってない

921 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 23:02:08 ]
>>920
私もそんな感じの作りにしてます
他で使うメモリに比べればサウンドで持っていく割合とか微々たるもんだしって感じに思えたので



922 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 23:05:54 ]
>>920
デュプリケートって内部的にカーソルとかその辺のインターフェイスがコピーされるだけで、
実体のサウンドファイルは1つのままだと思うだけどまさか全メモリコピーなのか?

923 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 23:10:06 ]
>>922
なん・・・だと・・・?
今まで全メモリコピーだったわけだが
SDKのリファレンス見たらそんなような事書いてあるな
どう考えてもDuplicateSoundBuffer使ったほうが効率的じゃねえか・・・

924 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 07:05:25 ]
>>923
お前w
昔のDirectX7本とかじゃこの手のは当たり前にのってるのに、最近はおざなりだよなー

925 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 19:46:01 ]
directxのapiで音声入出力のメモリに直接アクセスする手段ってありますか?


926 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 23:35:32 ]
DuplicateSoundBufferに対応していないサウンドボードがまだありそうな気がする・・・

927 名前:925 mailto:sage [2008/07/07(月) 23:35:36 ]
自己解決

928 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 23:50:55 ]
自己解決したときにその情報を出さないやつが、なんで質問して情報を出させようとするんだろうな

929 名前:925 mailto:sage [2008/07/08(火) 00:08:35 ]
>>927は自分じゃありません

930 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:10:42 ]
「DuplicateSoundBuffer」がサウンドカードの機能だと思っている人が居たことに衝撃。


931 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:48:58 ]
マルチポストに答えてやったら、別スレで「自己解決しました」って
報告してるのを見たときは吹いた



932 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 07:05:59 ]
>>930
ちげーの?
「ドライバだよ!」とかいう言葉遊びは簡便な

933 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:01:37 ]
>>932
いやDirectXが処理してる。
音を出すのはサウンドカードだが音のデータをサウンドカードに流してるのはCPUだぞ。
デュプリケートは1つのバッファに対してどこ部分をプライマリにコピーするかって
情報をもったインターフェイスが増えているだけの話だからぶっちゃけ全部CPU処理だぜ。

不安ならセカンダリをLOCALで作成してDirectSound自体をCPU処理固定にすると
環境依存のバグが発生しなくなるのでお勧め。

元々サウンドカード上の専用メモリとかISA時代の転送が遅かった時代のカードにしかないし。

934 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:29:22 ]
>>933
おいおい、そりゃ「DirectXでソフトウェアエミュレート」すればDirectXの仕事だけどさw
普通に使ってればDuplicateSoundBufferの命令をうけて(ハード上なり、PCのメインメモリー上なりに)バッファを確保するのはサウンドカード・ひいてはそのドライバの仕事だぜ?
だからこそ、DuplicateSoundBufferは必ず成功するとは限らないんじゃないか。


935 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 12:46:43 ]
実際に動作しないサウンドカードの製品名を挙げてくれ。
そもそもいったいいつの時代の話をしているんだ?

936 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 12:48:19 ]
動かないハードがあるとして、その場合はソフトウェアで勝手にやってくれないもんなの?

937 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 14:33:49 ]
具体的名称までは聞いたことないが、
「PCゲー作ってる会社でのよくあるサウンド関係のトラブルはそれだから注意しな」
と付き合いのある会社から言われたな

ちなみにSDKサンプルでも、きちんとDupできないならCreateでごまかすように組んである
自動ではやってくれない


938 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 19:12:39 ]
>>937
>DupできないならCreateでごまかす

それこそまさにISAの時代の話じゃなくて?

オンボードReadtek、USB外付け音源、サウンドブラスター、
MonsterSound あたりはテストしたが、そんな大きな不具合に遭遇したこと無いな。

それより、ASIO にした方が良いのかぁ、と思ったことは何度かある。

939 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 20:24:02 ]
そういうわけで完全ソフトウェア処理のXAudio使えや愚民共、と相成りました

940 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 22:11:27 ]
XACTがないと早送りや巻き戻しすらできないあれか

941 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:04:51 ]
今時クエリーインタフェイスとか
愚民杉



942 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:53:19 ]
今も昔もそもそもDirectSoundにハードウェアのまともな対応を期待する方が愚。
かなり初期の頃からDirectSoundだけはソフト処理でやるのが鉄板になってたはずだぞ。

943 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:57:24 ]
DirectSoundをソフト処理って、どういう意味合いで言ってるんだみんな?
IDirectSoundBufferの確保時に、フラグでDSBCAPS_LOCSOFTWAREをいれるってこと?

944 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:57:25 ]
選べるようにしておけばいいだけの話だろ

945 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:08:35 ]
たしか、DirectSound ってサウンドカードのメーカーのあまりものグダグダさに、
マイクロソフトが嫌気がさして、ソフトウェア処理でこれからは行く、とかっていう
記事を見た気がする。

Vista DirectSound HAL で検索をかけるといろいろ出てくる。

Windows は DTM 系のソフトが弱いってのはこの辺りが原因なのかねぇ?
ローランドあたりが先陣切ってやってくれないとね。

946 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:17:57 ]
VistaのMIDIへの冷遇は忘れねえ

947 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:25:19 ]
>>943

そういうこと。
たとえば最初の3つはサウンドカードのメモリに確保されていて、
その後はメモリが足りなくてシステムメモリに確保された場合に、
ミキシングが絶望的な状況になる。

いまどきのCPUならSSEとかMMXあたりでミキシングできるし、
10個20個程度ミキシングしてもCPUの負荷なんざ1%も食わないのでサウンドカードは
ただの音声出力装置以外の機能は期待しない方がいいと思われ。

そもそもサウンドカードに専用メモリ乗ってたのってCPUからの転送が遅かったISA時代だしな・・・。

948 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 01:24:23 ]
soundblasterの割と最近のサウンドカードがスタティックバッファ持ってるけど、あれが使える状況ってあるのかな

949 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 09:59:42 ]
DSBCAPS_LOCSOFTWAREフラグたてておけば、DuplicateSoundBufferは必ず成功するのかな?
みんなわりと音楽系はそんなに気をつかってないんだね

950 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:49:22 ]
SOFTWARE でもサイズが大きいと失敗する。
正確には、Duplicate の時は成功するが Play の瞬間に失敗するようになる。


951 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:52:48 ]
>>947
今のCPUをもってしても遅延が絶望的に大きいのが欠点。
外部入力への反応での遅延は致命的。
ASIO であってもまだ不満。





952 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:19:59 ]
DirectSoundでDuplicateして鳴らすなんて普通はゲームのSEだろう。
その程度なら1,2フレ遅れたところでたいした問題ないよ。

953 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 01:45:29 ]
>>951
ASIO がだめってどんなんだよ・・・。

ゲームの場合は少し前からSEを鳴らし始めればいいわけで。


954 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 15:47:38 ]
音ゲ厨と60fps厨が組み合わさった怪物だろう

955 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 18:54:55 ]
> 外部入力への反応

って書いてあるから、サウンドエフェクタとかボイスチャットみたいに
リアルタイムにキャプチャーした音を加工するやつじゃね?


956 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 21:49:55 ]
ゲームとマジDTMとはまた違うからなぁ

957 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:10:26 ]
ボイスチャットなんざネットワーク介して時点で遅れてるんだから関係ないだろ

958 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:38:21 ]
出力だけ同期してりゃいいんだよ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<247KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef