鬱だ氏のう DirectX (Part 5)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものですた。
02/07/23 00:32ID:DsnWt/i.初心者用相談室では扱わないような少し高度な話題も受け持つ。
■旧スレ(プログラム板)
http://piza.2ch.net/tech/kako/966/966655286.html (Part 1)
http://pc.2ch.net/test/read.cgi/tech/997101556/ (Part 2)
http://game.2ch.net/test/read.cgi/gamedev/1005119775/ (Part 3)
http://game.2ch.net/test/read.cgi/gamedev/1016276254/ (Part 4)
コピペスマソ
0595名前は開発中のものです。
02/09/06 20:36ID:???DMusicとDSoundを共存させられる気も。
0596名前は開発中のものです。
02/09/06 22:43ID:/3OZCZxaこれって自前でTGA解釈するしか方法ないのかな?
(バイナリとして読み込んでヘッダフッタ削ってDIBにするとかみたいな)
・・・今更DirectDrawとかいうな
0597名前は開発中のものです。
02/09/06 23:19ID:???海外のその手のサイトに行けば腐るほどそういうライブラリが
転がってるんでないの
0598名前は開発中のものです。
02/09/06 23:27ID:/3OZCZxaDirectX8.0SDKからDirectDraw弄る際のリファレンスってどこにありますか?
手持ちの日本語ヘルプファイルには無かった・・・
0599531
02/09/06 23:27ID:???DSUtilを読んでたら、publicメンバのGet関数を発見した。
>>595
DirectMusicは規模がでかいのであんまり関わりあいたくないかも。
waveしか使わなかったらDSoundのみもありですな。
0600名前は開発中のものです。
02/09/06 23:31ID:???ない。DX7のヘルプはMicrosoftのサイトに置いてあるからそれをDLしる
0601名前は開発中のものです。
02/09/06 23:42ID:???すいません
ddutil.h読んでたら謎が解けました
ごきげんよう
0602名前は開発中のものです。
02/09/07 00:24ID:iRBKvDithttp://opennap.scenecritique.com
0603名前は開発中のものです。
02/09/07 07:36ID:???0604名前は開発中のものです。
02/09/07 08:16ID:???0605名前は開発中のものです。
02/09/09 03:59ID:oCHjDl9e■【9/6】DirectX 9のスーパーセットとなるNV30
http://www.watch.impress.co.jp/pc/docs/2002/0906/kaigai01.htm
■【9/5】DirectX 9世代のGPU戦略〜0.13μmに賭けるNVIDIA
http://www.watch.impress.co.jp/pc/docs/2002/0905/kaigai01.htm
0606名前は開発中のものです。
02/09/09 11:58ID:LhGt96LR再生できないのかなぁ??(ov_readを全データ分,前処理でするって事)
それとも手作業で別スレッド作って読み込みつつ再生しないといけないの?
MCIみたいに自動的に別スレッドで読み込みつつ再生してくれる方法ってないの?
どなたか知ってたら教えてくださいm(__)m
0607名前は開発中のものです。
02/09/09 12:23ID:???すれ違い。
それにストリーミング再生くらい自分で作れないと駄目。
しかもOggVorbisに限った話じゃないし。
0608名前は開発中のものです。
02/09/09 22:13ID:???DirectSound + OggVorbisで64bpsの曲を流したら、
数秒に1回、一瞬ラグ入るんですが、みんなもそう?
やはり重いのかな。
CPUはP4 1.7G です。
0609名前は開発中のものです。
02/09/09 22:26ID:???BGM切ると正常になるならOggVorbisのせいかもしれないが、
OggVorbisのデコードの仕方に問題がある可能性も否定できない。
うちでもOggVorbis使ってるが固まることがないから。
0610名前は開発中のものです。
02/09/10 07:41ID:???バッファがでか過ぎたようでした。500kありました。
十分小さくしたら問題なくなりました(16kでも行けた)
0611名前は開発中のものです。
02/09/11 01:56ID:???DirectX8.0SDK+BCC5.5.1+ttp://www.geocities.com/foetschのBorland用Libファイルで
自作のD3Dラッパーが動かない・・・(コンパイルは通る)
ちなみにチュートリアルはコンパイルできて、期待通りの振る舞いをします
ランタイムのバージョンは8.1です
チュートリアルとほとんど変わらない事をやってるはずなのに
ログ見たところCreateDeviceでInvalidCallが返ってくるです
以下にソースを晒しますので、お暇な方はちょっと見てやってください
http://naha.cool.ne.jp/lichterlo/myd3d.h.txt
http://naha.cool.ne.jp/lichterlo/myd3d.cpp.txt
0612611
02/09/11 02:23ID:6aqmQWZz0613名前は開発中のものです。
02/09/11 03:33ID:???コンパネ→DirectX→Direct3D で Use Debug Version にして
デバッガで走らせると、アドバイス的なメッセージもガンガンでてくるぞ
0614名前は開発中のものです。
02/09/11 03:36ID:???0615名前は開発中のものです。
02/09/11 04:03ID:???0616名前は開発中のものです。
02/09/11 05:13ID:QUS9ooCgハードウェアアクセラレータ最大 になってる?
0617611
02/09/11 06:07ID:???デバッグバージョンのランタイム持ってなかったのでDL中です
アドバイスthx
>616
環境はPenIV1.8GHz512MB
GeForce4Ti4200DDR128MBと申し分ない雰囲気です
0618611
02/09/11 06:59ID:???「指定されたウィンドウはフォーカスを受け取れない」
・・・
えぇ、ウィンドウもラッパークラス作ってたんですが
メンバじゃなくて関数ローカルのHWNDでCreateしてました・・・
はずかしー
0619名前は開発中のものです。
02/09/11 12:16ID:???0620名前は開発中のものです。
02/09/11 22:17ID:RNHebZSvD3DPRESENT_PARAMETERSのFullScreen_RefreshRateInHzに
D3DPRESENT_RATE_DEFAULTとか
D3DPRESENT_RATE_UNLIMITEDを設定してデバイスを作成した時
設定されたリフレッシュレートを知りたい場合はどうすればいいんですか?
0621名前は開発中のものです。
02/09/11 23:02ID:???http://www.microsoft.com/japan/developer/library/jpdx8_c/_dx_idirect3d8_getadapterdisplaymode_graphics.htm
これ使っちゃダメ?
でもデフォルトだと0が取得できちゃったりする罠。
0622名前は開発中のものです。
02/09/11 23:09ID:???http://www.microsoft.com/japan/developer/library/jpdx8_c/_dx_idirect3ddevice8_getdisplaymode_graphics.htm
あ、こういうメンバ関数もあるんだ…。
でもデフォルトの0はD3DDISPLAYMODE型の仕様で定められてるっぽいので
それを確実に回避してリフレッシュモードを調べようと思ったら、
単位時間内のフリップ回数を数えるのがベストかなぁ…。
0623名前は開発中のものです。
02/09/11 23:52ID:???DirectPlayのReceiveでDirectPlay4のQueryInterfaceに失敗しました。
というエラーメッセージが出ます。
エラーメッセージの意味がわかりません。
解決方法とかってあるんでしょうか。
0624名前は開発中のものです。
02/09/12 00:03ID:???~~~~~~~~~~ ~~~~~~~~~~~~~
1行目の時点で何か失敗しそうな予感がするのは私だけなのでしょうか…?
0625名前は開発中のものです。
02/09/12 00:09ID:???Visual C#でDirect Xを使おうとすると
DXVBLib(Direct X7.0 for Visual Basic)ぐらいしか見当たらなかったので
今はDXVBLibを使っています。
DXVBLibはComコンポーネントなので、
どの言語でも利用可能かと、、、
それと今のところは上以外不具合はありません。
よろしくお願いします。
0626名前は開発中のものです。
02/09/12 00:22ID:xMICRC4qうーんやっぱりデフォルトのときに0が戻ってくるのが困りますね
マイ黒ソフトの考えることはよーわかりません
可変FPSはあきらめて60固定でするしかないのかな?
どうもありがとうございました
0627名前は開発中のものです。
02/09/12 00:24ID:???可変FPSについて誤解してないか?
普通はフレーム処理にかかった時間を記憶して調整するだろ
0628名前は開発中のものです。
02/09/12 00:45ID:???0629名前は開発中のものです。
02/09/12 01:53ID:???0630名前は開発中のものです。
02/09/14 10:16ID:???0631名前は開発中のものです。
02/09/14 12:34ID:???0632名前は開発中のものです。
02/09/14 14:53ID:???0633名前は開発中のものです。
02/09/14 18:32ID:???IDirect3D8::CreateDeviceで対応したデバイスを作り直すって事でいいのかな・・・
0634名前は開発中のものです。
02/09/14 19:21ID:???renda- sute-to de risetto
0635名前は開発中のものです。
02/09/14 19:22ID:???プレゼントパラメータ設定してリセット
あーはずかし・・
0636633
02/09/14 23:21ID:???テクスチャとか全部破棄してIDirect3DDevice8::Resetするんですね
ありがとう
0637名前は開発中のものです。
02/09/15 00:27ID:???0638名前は開発中のものです。
02/09/15 01:30ID:???うん。
でもD3DXSPRITEとかあのへんのは破棄するしかないので諦めてやるしかない。
0639名前は開発中のものです。
02/09/15 10:12ID:???使う必要性が見あたらないので、使わなければ良いだけでは?
0640名前は開発中のものです。
02/09/15 10:40ID:???mciSendCommand , mciSendString の代わりにDIRECTSOUND で
音を出す必要が出てきました。
(NT4で動いたプログラムが動かんとは…)
そこで mciSendString("play hogehoge notify", NULL, 0, hWnd);
のように実行が終わったら特定のウィンドウにメッセージを
送るための仕組みはあるのでしょうか?
なかったら別スレッドを立ててそういうルーチンを組まないといけないのでしょうか?
0641名前は開発中のものです。
02/09/15 10:45ID:???DirectX7のヘルプだとチュートリアルの中に「再生の通知の処理」という項目があるけど。
0642640
02/09/15 18:00ID:???0643名前は開発中のものです。
02/09/17 08:49ID:???うちでは、mciで普通に動いているけれど・・
0644名前は開発中のものです。
02/09/17 09:43ID:???実際のところTRIANGLELISTなんかよりもよかったりするんですか?
例えばハイトフィールドをDrawIndexedPrimitiveで描画するとして、
TRIANGLELISTなら一発で描画できるけど、
TRIANGLESTRIPでは帯を何度か描画しなきゃならないっすよね。
COM呼び出し回数を減らすのも十分な高速化だと思うんですが…
0645名前は開発中のものです。
02/09/17 12:08ID:???ただしご指摘の通りDrwPrimitiveのオーバーヘッドが大きいのでDirectXでは効果が薄い
(OpenGLなんかは早いよ)
市販ゲーなら必須かもしれんが、趣味プロなら要らないかも
まぁそーいったチューンを楽しむのも趣味プロの一環だろうけど
0646644
02/09/17 16:13ID:???オーバーヘッド考慮しなければ高速なんですね。
Strip化とDrawPrimitiveの回数減らすのって全く逆になりそうだし、
実際どちらがいいのか不思議で仕方なかったんですがスッキリしました。
ありがとうございます〜
0647名前は開発中のものです。
02/09/17 16:23ID:???100個の三角形書くのに listなら 300頂点、stripなら99+3頂点。役1/3
後オーバーヘッドだけじゃなくて、最近のビデオカードは頂点キャッシュがあるので、キャッシュヒットすれば
演算が省かれるので差がつきにくいつーのもありかと
0648名前は開発中のものです。
02/09/17 21:35ID:???変える前のステータスはGetで保存しておいて、終わったら全部復元みたいな感じなんですかねぇ
書き換えたステータスが他のところで影響したりしてしまって結構面倒。。
Direct3Dにレンダーステートのスタック機構が整ってるとうれしいとか思う今日この頃
0649名前は開発中のものです。
02/09/17 21:48ID:???コストは普通の仮想関数呼び出しと変わらない。
DCOMはプロセス超えるからオーバーヘッドあるけど。
0650名前は開発中のものです。
02/09/17 21:49ID:???0651名前は開発中のものです。
02/09/17 21:50ID:???スタックだとOOPと相性が良くない罠。
ステートマシンだからD3D8の様な形に出来たと思う。
0652640
02/09/18 01:34ID:???うちではmp3の読み込みと再生を全部mciでやってたけど、
codecが腐ってたからどえりゃあ不安定で再生できたりできなかったりしたんですよ。
とりあえずwavに交換してその場はしのぎましたが、
ファイルサイズを小さくするのが至上命令なんで
mp3の再生をDIRECTSOUNDで行おうかと考えたんですよ。
0653名前は開発中のものです。
02/09/18 02:56ID:???ストリップになりません・・・
って俺だけかな。工夫が足らない?
0654名前は開発中のものです。
02/09/18 03:58ID:???世の中にはOggVorbisという便利なものがありますよん。
圧縮率・音質ともに良好なので念のため考えてみるべし。
0655名前は開発中のものです。
02/09/18 06:12ID:???意表をついてMODという手もある
ttp://www.mars.dti.ne.jp/~odaki/mod/index.html
CからMOD再生DLL↓
ttp://www.un4seen.com/music/
ちなみに
Unreal TournamentがMODで
UT2003がOggVorbis
0656名前は開発中のものです。
02/09/18 21:48ID:???インデックス使えばストリップ使う必要性が全くないと思うんだけど・・・
0657名前は開発中のものです。
02/09/18 23:41ID:???SD-RAMからRIMM1066なって転送スピード10倍とかになったので
リファレンスラスタライザーもちっとは動くかと思ったら、やぱし全然駄目ですた
ソフトレンダのVirtualONはどうかと思ったら MMXに対応していません とかエラー出やがります
ショボーン
地面にテクスチャをタイルのように並べてマップを表現しています。
一気に書けるように、256*256pixelのテクスチャを64*64単位のパーツを分けて
地面にペタペタ張っているのですが、
継ぎ目に隣のテクスチャが微妙に見えてしまいます。
頂点がpixelの中央になるようにuvを、例えば
(0.0 , 0.0)-(0.25 , 0.25)から
(0.0+0.5/256 , 0.0+0.5/256)-(0.25-0.5/256 , 0.25-0.5/256)
のように変更してもダメでした。(遠ざかるにつれ継ぎ目が見える)
ミップマップが効いているため、遠くのポリゴンでは
+0.5/256 でなく +0.5/128 等に変更しないとダメのようです。
どのようにすればこの問題を解消できるのか
教えていただきたいです。よろしくお願いします。
0659名前は開発中のものです。
02/09/19 02:25ID:???0660名前は開発中のものです。
02/09/19 17:36ID:???どんな数値入れればいいのでしょうか?
ms単位だと変な位置でリピートするのですが、教えてくださいお願いします。
0661名前は開発中のものです。
02/09/19 19:45ID:???0662名前は開発中のものです。
02/09/19 20:03ID:???DirectMusicってms単位じゃなくてMIDIみたいなTick単位じゃなかった?
使ったことないから自信ないけどそうだった気がする
0663名前は開発中のものです。
02/09/19 23:29ID:???IDirectXFileEnumObject::GetNextDataObject()が
DXFILEERR_PARSEERRORを返してwhileループから抜けてしまいます
↑はヘルプを見る限り返さないはずですが・・・
あとIDirectXFileData::GetType()でGUID拾ってくるのですが
これはCOMオブジェクトを作れと言ってるのですか?
ヘルプの
DirectXGraphics->高度なトピック->Xファイル->使い方->ロード
だけだと情報が少なすぎます
どうかご教授お願いします
プログラム版の方にも書いたんですが進行遅そうなので
こっちに書かせていただきましたごめんなさい
0664名前は開発中のものです。
02/09/20 00:04ID:???何かキーが押されたらIDirectMusicPerformance8::GetTime()で
その時点のMUSIC_TIME拾ってそれをメモっといて
IDirectMusicSegment8::SetLoopPoints()
に渡せばいいんじゃないかな
8始めたばっかでAudioはやってないけど7の時はそれでできますた
漏れはXFileの解析で苦しんでるんですよ誰か教えて
0665664
02/09/20 00:08ID:???曲の位置=nowtime-starttimeだったっけ7は
0666名前は開発中のものです。
02/09/20 00:08ID:???直接読んだ方がイイよ。
0668名前は開発中のものです。
02/09/20 00:17ID:???ヘルプ読めよ・・・
0669663
02/09/20 00:22ID:???ヘルプに書いてあるのは知ってましたが
たくさんあるテンプレートやトークン全て考慮して自力でやる方が
MSのルーチン使うよりも簡単なんですか?
0670ヴァニラあいす ◆Af963Yl.
02/09/20 00:27ID:???.Xファイルは実は自前のルーチンも持っているんだけど、
今回はあえてD3DXライブラリを使って試してるとこ。
漏れも今いろいろ試してるので、何か分かったら書きます。
期待せずにまってて頂戴。
途中で投げ出しちゃったらごめんなさい。w
0671名前は開発中のものです。
02/09/20 00:28ID:???不要な情報は読み捨てる。
0672名前は開発中のものです。
02/09/20 00:28ID:???ここはゲ製だから、666はゲームが内部に持つローダーと仮定しているのだとおもう。
それならば対応すべきテンプレートなどたかが知れてる。それともツールでも作るのかね?
0674671
02/09/20 00:36ID:???テンプレートなんてほとんど無視できると思うんだけど。
どーですかね?
0675名前は開発中のものです。
02/09/20 00:38ID:???0676663
02/09/20 00:39ID:???>>674
テンプレートとかよく分かってないんで勉強が必要です
0678名前は開発中のものです。
02/09/20 00:41ID:???スキンメッシュの分割自前でやっとるん?
0681名前は開発中のものです。
02/09/20 00:46ID:???んで、何を質問してたんだっけ?
0682663
02/09/20 00:50ID:???Xファイルから独自フォーマットのコンバート
欲しいサブセットデータは頂点、法線、テクスチャuv、
ストリップインデックス、マテリアル、テクスチャファイル名
と多分こんなもんです
0683名前は開発中のものです。
02/09/20 00:53ID:???それならばSDKの例のサンプルで読めるな。
読み込んだら好きなように吐き出せばOK。
0685663
02/09/20 00:56ID:???0686名前は開発中のものです。
02/09/20 01:01ID:???0687名前は開発中のものです。
02/09/20 02:52ID:???の資料なんてまだないよねえ・・・
0688名前は開発中のものです。
02/09/20 17:41ID:4/XpyZrjXファイルからコンバート中なのですが
ID3DXMeshの個々のサブセットのストリップインデックススタート値と
個々のサブセットの面の数はどうやって調べればよいのでしょうか?
コンバートした後にIDirect3DDevice8::DrawIndexedPrimitiveを
呼び出すときに使うので・・・
あとD3DPRIMITIVETYPEを調べるのは不可能ですか?
よろしくお願いします
0689688
02/09/20 17:45ID:???サンプルのPick Polyを参考にしながらやってます
0690688
02/09/20 18:33ID:???使えそうな気がしてきますた
これでやってみます
これで合っていたらお騒がせして申し訳ありませんでした
0691名前は開発中のものです。
02/09/20 19:31ID:???別の場所でkernel32.dllのエラーが起きるとかいう不可解な状況なのですが…
(それもプログラム始まって数行目の凄い簡単なコードの場所で)
まさかこんな状況になった人ってほかにはいませんよねぇ(汗
ちなみに環境はWin2k/VS.NET/DX8.1/MultiThread/Unicodeでコンパイル、
実行環境は他人のマシンでWin98上書きMe/DX8.1らしいです(かなり古いらしい)
当然ながら自分のマシン上では問題なく動きます。それだけにデバッグしにくい…
0692名前は開発中のものです。
02/09/20 19:39ID:???リンカとかコンパイラとかのバグかと疑いたいです(w
0693688
02/09/20 20:01ID:???漏れにはお手上げです
動作環境のテストは個人では難しいのでは?
ID3DXBaseMesh::GetAttributeTable()はID3DXMesh::Optimize()しないと
駄目らしい・・・んでOptimize()の呼び方が間違ってるのか失敗しる
それで最初の質問
ID3DXMeshの個々のサブセットのストリップインデックススタート値と
個々のサブセットの面の数はどうやって調べればよいのでしょうか?
あとD3DPRIMITIVETYPEを調べるのは不可能ですか?
どうかこのウツケな漏れにお教えください
スレ汚しごめんなさい
■ このスレッドは過去ログ倉庫に格納されています