>>1 スレたて乙。
前スレ999のせいで1000とる気なくした。
4 :
名前は開発中のものです。 :05/01/10 14:47:58 ID:yeM46BAU
ACライブラリー
http://www.aclibrary.org APIのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を削減。
出来が悪いリファレンスに意外とアクセス多いみたいです。
サイトリニュアールも視やにいれ変更していってます。
6 :
名前は開発中のものです。 :05/01/10 16:51:34 ID:V5kITbcC
DirectSoundで、waveをDirectSoundのバッファにする部分が上手くいきません。
このサイト(
ttp://f53.aaa.livedoor.jp/~akai/lecture/3.html )を参考に組んでいたのですが、
lpDSB->QueryInterface(IID_IDirectSoundBuffer8, (LPVOID*)&lpDSBuffer);
のところで強制終了します。
コンパイルは通るのですが、実行するとこの部分でエラー表示も何も出ずに終了するので困っています。
環境:BCC、DXSDK9.0(Update Oct 2004)
よろしくお願いします。
7 :
名前は開発中のものです。 :05/01/10 17:06:11 ID:c4TToaCF
>>6 ブレークポイント貼ってみたんかい!ワレェ!
8 :
6 :05/01/10 17:41:59 ID:V5kITbcC
>>7 MessageBoxで一行ずつ確認したら、
その部分で終了していることが分かりました。
その一行前の部分では終了しません。
lpDSBが腐ってんじゃねえのかよ
10 :
6 :05/01/10 19:07:29 ID:V5kITbcC
>>9 ありがとうございます。
lpDSBが腐ってました。
マトモなデバッガが使えないなら、もしくはデバッガがまともに働かないなら 変数チェックは丁寧にするべきだろな
13 :
名前は開発中のものです。 :05/01/13 00:19:05 ID:oEC+gQA2
フリーから市販ソフトまで結構使われてるよ。
OggVorbisって簡単に扱えると思うんだがなあ。
フリーで簡単に使えるDLLも結構あるし。 自分で組むのがメンドウでも手軽に利用できるしな。
ひょっとして自力でデコードルーチンでもかこうとしているのかな… 単にoggのライブラリ使うだけなら簡単だからそっちにしとくのが吉かと。 まあoggのライブラリ使うのが嫌だったらmp3でもいいのでは。 mp3ならacmStreamConvertあたりにデコード丸投げすれば DirectSoundで再生するのも楽ですし。 でもライセンス関係でoggの方がよいのでしたっけ。
18 :
名前は開発中のものです。 :05/01/13 20:48:23 ID:8kGdELfP
作ったゲームを実行して終了させると、 そのゲームの実行ファイルのあるフォルダウィンドウがいつの間にか閉じていることがあります。 普通の(俺が作ったのではない)ゲームでは一切こういうことが起こらないので、 俺が何かミスをしているのではないかと思います。 何を失敗するとこうなりますか? OSはWindowsXPです。
DirectX9で、ウィザードを使用しないで作成された、 フルスクリーンモードで初期化するという ごく単純なサンプルファイルってありませんか? 自分で作ってみたところ、マウスカーソルを左上や右上に移動させて、 クリックしたら、ウィンドウが切り替わってしまうし、Alt + Tabで他のアプリに 一度切り替えた後、戻すとうまく表示できないんでみっともないっす。 どこら辺りに間違いがあるのか、わからないので困ってます。
>>20 ぐぐればいっぱい出てくると思うぞ。
「Dx3Dの初期化が云々」ってページにいけば、
それっぽいサンプルコードも落ちてるだろう。
>>20 > マウスカーソルを左上や右上に移動させて、 クリックしたら、
WS_POPUP
> Alt + Tabで他のアプリに一度切り替えた後、戻すと
デバイスリセットや作り直し
>>21 ウィンドウモードのサンプルはたくさんあるけど
フルスクリーンのサンプルはまだ見つからないです。
実行ファイルをUPしてみたんで、
もし、マウスカーソルを上隅に持っていってクリックすると
ウィンドウが切り替わってしまう症状の起きる理由を
知っている人がいたら教えてくだせぇОrz
http://gamdev.org/up/img/2235.zip この現象って、ウィンドウの角が丸くなっている、
WindowsXPだけで発生すんのかな……?
24 :
20 :05/01/14 12:01:14 ID:nznGNlLk
>>22 あーなるほど! 今からチェックしてみますだ。
ちゃんとウィンドウスタイルで枠なしのウィンドウ設定してるんだろうな。
26 :
20 :05/01/14 16:03:22 ID:nznGNlLk
>>25 WS_VISIBLE | WS_POPUP | WS_SYSMENU | WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX こんな風にしちょりまする。 フルスクリーンモードとウィンドウモードを、Alt+Tabで切り替えるプログラムを、 1から作るのって素人には難しいのかな?なんかサンプル等も見つからないし。 フリーソフトでもあんま見かけないし。 3つほどフルスクリーンのチュートリアルを発見するも、全部23と同じ現象になるな ひょっとして俺のPC環境が腐ってんのかな? あー時間だけが過ぎてゆく・・・むなしい
まだ、終わってなかったのか
WS全部消して
WS_POPUP | WS_VISIBLE
だけに汁
これで切り替えを封じれたけど
>>22 をヒントにしたまでで、おれも根本的にわかってないがw
後はDirectX9実践プログラミングの最初の方に
所望するサンプルがあるぞ
追記 WS_POPUP | WS_VISIBLE にしてるから Alt+Enterの切り替え処理時は ウィンドウ用のWS、フルスクリーン用のWSを SetWindowLongで切り替える必要があるってか 本買いなさいw \2500+税だし それとも、板的には答えを明示した方がいいのん?
>WS_VISIBLE | WS_POPUP | WS_SYSMENU | WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX フルスクリーンでタイトルバーやら最小化ボタンやらを入れてどーする。 あと、画面モードの切り替えはVRAM上のリソースを解放してから 作り直す必要があるから真面目に対応するならテクスチャ・頂点バッファなんかは ちゃんと復帰できるようなシステムにしておかないと死ぬ。 Lunaは確か対応してたはずだからソース落として見てみたら?
30 :
20 :05/01/14 19:40:01 ID:nznGNlLk
今夜やって駄目なら、あした買ってくるかな? とりあえず、Lunaのソースを落としてみた。 Lunaのcppファイル、結構、数が多いっす。 DX9ウィザードで追加されたファイル読んでいくのと、 どっちが楽かという話になりそう・・・パトラッシュ、ぼくはもう疲れたよ
>>30 いや・・・・・・・・・・検索できるわけだし・・・・・・・・・一発でしょ。
ソースの長さも数も関係ない。
32 :
13 :05/01/14 20:18:31 ID:OA5eNbMR
別にそれを使ってもいいし、 公式サイトからSDK落としてきてドライバーを自分で書くのでもいいでしょ。 VoxはDirectSoundじゃなくてWaveOutを使ってるからDirectSoundも 併用する場合はちと美しくないかもしれんが。
34 :
13 :05/01/14 20:41:26 ID:OA5eNbMR
>>33 ありがとうございます。
なるほど、ちょっと難しいですね。
35 :
名前は開発中のものです。 :05/01/14 20:47:18 ID:kyveHXnm
XファイルとXファイルの衝突判定ってどうやるんですか? MAPとMAP上に配置されてる物とキャラクタなんですけど
ポリゴン総当たり、バウンディングボックス・スフィア等 用途に応じて手法は沢山あるので、好きなものを使うべし。
ゲムデブが開かん、メンテ中ですか?
MAPとの判定なら
ハイトフィールドか
D3DXIntersectだろうかな?
対象とのだったら
円(スフィア)と円との距離ぐらいかな、簡単なのは
3次元的ボックスでやりたいなら"3Dグラフィックス数学"買いなさい
全部ひっくるめてやるなら、総当たり
>>36 さんの書きこみのように、お好きに・・・
38 :
名前は開発中のものです。 :05/01/14 23:36:47 ID:oepzpoOK
ボードの描画能力は製造メーカで知るのが一番早道です。 ポリゴン最大表示能力を確認してください。 秒速何ポリゴンというか 記載されているのはそれ以下でも以上でもないです。
アクション物のネット対戦ってどういう実装するんでしょうか? 格闘ゲームとか。 ラグが前提なんだろうが、キーデータ送る以外に思いつかない・・・。
Gems高いよGems 金惜しむなってのは分かるんだけど、さすがに辛い値段だよなぁ
あ、41 != 39ね
43 :
名前は開発中のものです。 :05/01/16 16:14:58 ID:X7A6XVKq
それでいてここで一部だけでも引用すれば十分だったりする内容なのよね
Gemsって内容薄いよね
例えばどのあたり? 買おうかと思ってるので詳しくキボン。
Cマガジンのゲーム製作特集でも立ち読みするくらいでもヒントは得られるからなぁ>通信
Gems流し読みしてきましたが、 これ、フレーム単位の動きのゲームでも適用できます? その辺は諦めるしかないのかな。
48 :
名前は開発中のものです。 :05/01/16 19:25:05 ID:X7A6XVKq
gemsが内容が薄いというより、 ゲーム製作のtipsをまとめたら、テーマが散漫で適用範囲が狭くて、具体的すぎたり、 言っていることが極めて単純だったりするのは当たり前で それに不釣り合いな装丁と構成と値段にするからあーいうことになってるだけだと思う。 お金に余裕があるなら買ったらいいと思うよ。そしたら39に教えてあげなよ。
49 :
名前は開発中のものです。 :05/01/16 19:35:27 ID:X7A6XVKq
>>47 どんな内容を立ち読みしてきたのか教えてよ
むしろ、ここの板でゲームプログラミングモナズを作ろうぜ
>>47 ゲーム内の単位がフレームだろうがミリ秒だろうがどうでもいいことだけど
ゲーセンやローカル通信みたいな
"秒間60回相互通信を前提としたつくり"にはどっちみち出来ないから
結局数フレームまとめてキーデータ送るなりするんじゃないの?
あとそもそもゲームデザインの時点で通信を盛り込む気があるなら
多少もっさりしててもかまわないつくりにしておくべきかとも思う
が、DirectXスレだったなここ。
SDKに入っているtinyみたいなファイルを作りたいんですけど、 無料のソフトでblenderというのがあると聞いたのですが、 これでtiny君は作れますでしょうか。 できるのならマジ勉強します。定期試験が終わったら。
>>52 そのうちできるようなるとは書いてあったけど今は無理っぽいな>Blender
>>53 マジですか。ショック!
やはり無料ではないのでしょうか。
>>54 無料じゃ、メタセコイアとミコトの組み合わせぐらいしか知らんな。
>>27 昨日「DirectX9実践プログラミング」を買ってきた。
ずばり、ウィンドウモード、フルスクリーンモード切り替えして、Xファイルを
表示するサンプルがあったので、大助かり。
ウィンドウモードでAltを押したとき、メニューを表示しないよう修正するだけで
あとはそのまま骨組みとして使えそうだ。
俺が以前買ったこの手の本で、なんかMSのヘルプとサンプル画像まんま
コピーだったと後で気づいて、買ったことを後悔したことのある本の著者名が、
この本の執筆者に、含まれていたので、買うの敬遠してたけど、こんなことなら、
さっさと買っとけばよかった。
58 :
27 :05/01/17 22:55:52 ID:lr2d2iKS
おお、勉強ガンガレ
>>58 飼料となるウェブページなどでも結構ですので教えていただけると助かります。
家畜のエサの様なサイトか。
Gems3の3ページの「最高の高級言語は大学院生だよ」というジョークの意味が分かりません だれか教えて orz
test
64 :
:05/01/18 22:26:18 ID:CF5Xzwvd
1秒間に60回の描画を行いたいのですが、60回行ってくれません。 FPS計ってないのですが、描画回数の多いときと描画回数の少ないときでは 描画の速度が全然違います。 描画速度を最速にするにはどのようなプログラムを組めばいいのでしょうか? 今はこんな感じです。 //メッセージ処理部分 while( GetMessage ( &msg , NULL , 0 , 0 ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); //DirectX関連 FrameAter=timeGetTime(); if ( FrameAfter - FrameBefore >= 16 ) { GetJoystick(); //ジョイスティックの入力を取得 Draw(); //描画関数 FrameBefore = FrameAfter; } } 今は0.016秒ごとに描画していますが0.016よりかなり遅いみたいです。
>62 教授なんかは自分についてる院生に「あーやっとけ、こーやっとけ」程度言って 作らせたプログラムやら研究やらを自分の成果だと発表したりするのを皮肉ってるんだろ
68 :
64 :05/01/19 02:26:48 ID:57yBRGc0
>>67 ああ、そういう事かw 院生が働かされる状態を皮肉ってたのね。
>>68 ビデオカードの能力と転送量がわからんから、なんも言えん。
PCの性能かプログラムミスどっちかだな。 バイオハザードが動くぐらいなら後者だろう。
>>68 もしかして全部後ろから描画してねぇ?
ちゃんとZバッファ使って手前から描画(α物は駄目だけど)していかないと
最近のグラボ使ったってたったそれだけで処理落ちはじまるぞマジで。
ちなみにこれは描画領域の話ね。
ピクセルをどんだけ描いてるかって話。
速度はポリ数だけじゃねぇんだよ。
>>72 いや、もしかしたらDirectDrawかもしれんぞ。
なぜ質問者は自分の手のうちを見せないんだろう 解像度すらわからない 背景とか地面が画面のどの程度を埋めるのかもわからない キャラクターが2Dなのか3Dなのかもわからない DirectDrawなのかDirect3Dなのかもわからない 動作確認したビデオカードもCPUもわからない 何もわからない
とりあえずFPS管理のコードから順番に疑うってのが筋だろ。 Excelが動かないって言われたらチップセットを聞く前にOSのバージョンを聞かないか? 描画回数の差が目に見えるっつってもどういう風に減ったり増えたりするのかが一番重要だな
まずは目を疑う。
昨日、近くの本屋で気になってた、DirectXの参考書買ったんですよ。 で、サンプルを実行してみたんですが動かないんです。 エラーが出て一向に進みません。 色々試したのですが、どうすることも出来ませんでした。 エラーの原因はいったい何なのでしょうか? 教えてください。 か?w新しい技を取得した!!
参考書を買うのも教えて君としては失格。
最強はヤハリコレ 「おまえのサイト見てやってんだけどコンパイルできないんだよ、どういう事だよ」 と、いきなりメールもらうこと(w
>>77 ぜひともテンプレに入れておきたいものだね。
>>74 マジレスすると自分の状況が適確に答えられる人間は
こんなところで質問なんかしない。
長いことプログラマっててそんなこともわからねぇほどアホなのかお前。
そもそも俺等が教える必要がある人間なんてそんな奴ぐらいだろ?
ある程度自分であるけるようになったらわざわざ質問なんてしねぇよ。
結局、こういうところをROMってはいるものの自分じゃ質問なんてしないし、
人に聞かれたらキレるだけなんだからこんなところこなけりゃいいじゃん。
質問スレなんてわかる方が必要な情報を聞きだすぐらいでちょうどいいんだよ。
つーか、それができないから質問するんだし。
馬鹿じゃねぇの?お前。
どこを縦読みすりゃいいんだ?って言いたくなる文だな 言ってる事自体はそれほどおかしいわけでもないが
まぁ、もちつけ。 自分の仕事を他人に継がせる時は 自分がやってきた詳細を書け と先輩に怒られたもんだ。 配慮の問題じゃろ テンプレに、質問するときは状況を詳細に とか入れておけば? 今回はそういった点を知らなかった為、 配慮に欠けた。ってな具合っしょ。 次回に期待。
初心者でもちゃんと質問できる奴はいるよ。そういう奴はすぐ初心者でなくなるから 結果的に数が少ないというだけ。
>>87 出来る奴はいるっていうからソース出せっていってんだよ!うましか!
>>88 おれはそういう人を知ってるってだけだ。
類は友を呼ぶというから君のまわりにはロクなやつがいないんだろうね。
質問するやつが要領を得ていないなら回答者もおかしいな。
>>89 俺としゃべってるオマエモナー
とかいえばいいのか?
悪魔の証明かw
知った風な口を聞く人とそれに突っかかる人
>>93 アホか。
過去ログから初心者がまともに質問してるログ見つけて
リンク貼れば終わりだろ?
97 :
64 :05/01/20 02:00:55 ID:MFeaFyLv
>>70-96 すいません。
>>72 全部後ろから描画しています。
Zバッファについて調べてみます。
>>74 OS:WindowsXP、
DirectXSDK:9.0c October 2004(debugモードで練習中)、
解像度:640*480、
Direct3Dを使用、
ビデオカード:ATI RAGE MOBILITY AGP (Japanese)、
CPU:不明、
背景:640*480全部を3回で描画、
地面:680*128を6回で描画、
キャラクターも含め全て2Dで、背景からキャラクターまで全て一つのスプライト上に描画しています。
>>75 背景と地面をスクロールさせたときの速度が変わってくるんです。
上記のように約10回の描画をしたときと、
実験として2回の描画をしたときではスクロールの速度が違います。
スクロールの速度は10回の描画のときの倍近くになります。
ジョイスティックの入力で動かしているのですが、毎フレームジョイスティックの入力を取得しているので
ジョイスティックをずっと押し続けていれば毎フレーム同じドットずつ動いているはずです。
背景:640*480ってのはテクスチャのサイズ? だとしたら、2^N乗にしないといけないから 256*256か 512*512にしないと こんだけで早くなるんかね? 規格外のサイズで描画したことないからわからんなぁ と、まぁ違ってたらごめんなさい。 ちなみにノート(4MBって書いてあったな)の 最大テクスチャサイズってどんくらいだべ?
背景からキャラクターまで全て一つのスプライト上に描画しています。
>>97 もし1枚絵なら640*480は1024*512、680*128は1024*128になってるだろ。
この場合ビデオチップのフィルテートを超えてるかシステムメモリから転送されてるから遅くなってる。
32*32などのマップチップで埋めつくしてるなら、テクスチャ切り替え多すぎかDrawPrimitive呼びすぎで遅くなってる。
多分フィルレートを超えてるのが原因かと。
とりあえず速度を測るならデバッグモードでは参考にならないと思うが。
>>72 >ちゃんとZバッファ使って手前から描画(α物は駄目だけど)していかないと
>最近のグラボ使ったってたったそれだけで処理落ちはじまるぞマジで。
αが付いたポリゴンは後ろからというのは知ってたのですが
普通のポリゴンは手前から描画しないといけないのですか?
>>102 >普通のポリゴンは手前から描画しないといけないのですか?
最適化の話をしている。
手前から奥まで並ぶ10枚のポリゴンがある。
その全てのポリゴンがあるピクセルに点を打つとする。
奥からレンダリングしていくと同じピクセルが10回更新される。
手前からレンダリングしていくと1回で済む。
>>103 レスありがとうございます!勉強になりました!
ID:i90VvSS3カコイイヨ!トリップ付けてコテハンとして常駐してよ!
どういう意味で言ってるのかは知らんがとりあえずウザイ
107 :
名前は開発中のものです。 :05/01/20 21:57:14 ID:9C9ildyv
MicrosoftのDirectXのページで スペースが足りないので、新しい頂点バッファを作成します。DMA 操作が進行中かもしれないの で、同じ頂点バッファは使うべきではありません。このことを、同じ頂点バッファを D3DLOCK_DISCARD フラグを使ってロックすることで、Direct3D とドライバに対して通知します。これは、「古いポインタ は使い終わり、古い内容についてはもう気にしないので、新しいポインタを渡してくれ」という意味です。 という記述を見かけたのですが、頂点バッファを使用したDrawPrimitiveでDrawPrimitiveをコールして (複数回)で、最後にPresent命令を呼び出しフリップさせると思います。 このときにPresent関数は描画コマンドがすべて終了するまで待つと思います( そうでないと、描画 したはずのモデルが表示されないので)。 そうなると、毎フレーム、同じ頂点バッファを同じフレーム内で使用しないのであれば、Microsoft の言うことは当てはまらないですよね? 間違っている点などアドバイスをよろしくお願いします。
YES
109 :
シギュン :05/01/21 00:22:30 ID:Fy6b37sZ
おひさしぶりっす!!シギュンでしゅ! 今日は、皆様とダイレクトエックスゲームをやりたくて書き込みました! どこかダイクレトエックスゲームで仲間を集めているサイトありましたら、 ぜひ僕もダイクレトエックスゲームに加わりたいです!宜しくお願い致します!!
メール欄に必死さが滲み出てる気がした。
>110 ただの釣りだから、キニスンナ
112 :
名前は開発中のものです。 :05/01/21 01:19:16 ID:GGY95fk9
ID3DXMeshの投影変換後の外接矩形って どうやったら得られますか? マウスでクリックしたいの……
マウスで物体を指定したいっていうならPickサンプル見ればいい
114 :
名前は開発中のものです。 :05/01/21 10:52:17 ID:OIgUHDml
>>57 すいません。その本のサンプルを使って
ウィンドウモードでメニューを表示させないようにする
修正方法を教えていだだけませんでしょうか?
CreateWindow関数のdwStyleの設定を変えて、
メニューバーは表示しなくすることはできたのですが、
Altを押すと、下の画像のように、左上にメニューが表示されてしまいます。
http://gamdev.org/up/img/2250.jpg もう一度Altを押すまで、画面の更新が止まってしまうので悩んでます。
DirectX以前の問題のような気もしますが、よろしくお願いします。
WS_SYSMENUを外すんじゃなかったっけ?
>>115 WS_SYSMENUを外して、WS_CAPTION | WS_MINIMIZEBOX
と設定すると、画面は下のようになり、
http://gamdev.org/up/img/2251.jpg Altキーを押しても、メニューはでなくなりました。ありがとうございました。
でも、右上の最小化ボタンと左上のアイコンが、表示されなくなって
しまったようです。
WS_CAPTION | WS_MINIMIZEBOXの他に、何かしらのWS_を
設定しないとダメなのかな・・・
CreateWindowExをぐぐるかMSDN嫁ばオプションの詳細が書いてあるだろう。 あとは試しながら自分で考えれ。
調べた結果、アイコンや最小化ボタンを出すにはWS_SYSMENUも指定しないと 駄目なんだそうで、ウィンドウモードでメニューを無効にするのと、ボタン表示を 両立させるのは、無理みたいです。なんか釈然としませんが。 とりあえずAltキーをゲームに使用するキーに割り当てないようにしますw
俺もちょっと気になって調べてみた Altで停止するのはWM_SYSCOMMANDのSC_KEYMENUで FALSEを返せば回避できるっぽい
120 :
118 :05/01/22 17:20:04 ID:fIZCX+D7
>>119 その方法で、Altでの停止を回避できました。
ついでにwParam の値が、VK_RETURNか調べて
Alt + Enterでスクリーンモードの切り替えもできるようになり、
普通のWindowsゲームっぽく振舞えるようになりました。ありがとうございます!
121 :
シギュン :05/01/22 19:28:29 ID:zN4dGH8F
どーもです! ダイレクトエックスの敵である、OPENGLを見つけました! こいつってば、何の能力も無いし、おまけに道程で毎日オナニーばっかしてて、 山奥の青空保育センターの最低バカな人間でした! この人間なんて、ダイレクトエエクスの敵ではありませんね! ピピピ戦闘力0かふゴミめ!
>>121 オレの知ってるOpenGLはお前の言ってるOPENGLより良いヤツだと思う
ダイレクトエックスと同じくらいな
双方一長一短で良い感じ
123 :
名前は開発中のものです。 :05/01/22 23:19:04 ID:vnVkBPFw
ゲーム作ってるんですがDirectXではテクスチャとかXファイルを格納するための箱が必要になりますよね。 例えばタイトル画面でJPGを5枚使ってプレイ画面では10枚使ってる状態がなんですが 格納するための箱は15個?10個?。 画面が変わったときにテクスチャとかXファイルをその画面毎に読み込んだほうが現実的ですかね? 現在は15個使ってるんですがどうでしょう?
箱ってなんですか〜?
日本語もプログラミング言語も使えないってことか どうしようもないな
箱の中の人など居ない! [゚д゚]
VC6.0とDirectX9.0b(summer2003)で
タイピングゲームを作れるようになりたい初心者ですが、
テキストの表示をサンプルのtext3dや
いろんなサイトを見ながら同じようにやったつもりですが、
文字の部分が四角で塗りつぶされた様な状態でうまく表示されません。(OSはMEです)
ちなみにtext3dはちゃんと表示されます。
下に自分のソースをあげたので
時間のある方がいらっしゃいましたら、いろいろ指摘してもらえないでしょうか。
お願いします。m(_ _)m
ttp://www.geocities.jp/japanese00001/typing.zip
別に問題なく表示されてるが? XP SP2 TNT2 M64 Pro 66.93
じゃUNICODE関係じゃない? とソースを見ずに指図してみるテスト
>132 グラボは何? あとm_pFont->DrawTextの戻り値を調べてみたら?
134 :
133 :05/01/23 02:00:48 ID:ennXzyv5
すまんグラボは忘れてくれ サンプルが表示されてるならグラボは関係ないっぽいし
>>132 それぞれの文字の大きさにあわせた四角になってるところが斬新だな。
すげぇ
>132 なんか前に俺もそんな風になったよ 確かピクセルシェーダ書き直したら直った希ガス
テクスチャがちゃんと張り込まれてないって感じの症状だな
フォントがないとか…
ふぉんとですか?
∧_∧ _ _ .' , .. . ∧_∧
( ´_ゝ`) _ .- ― .= ̄  ̄`:, .∴ ' ( )
/ '' ̄ __――=', ・,‘ r⌒> _/ /
/ /\ / ̄\-―  ̄ ̄  ̄"'" . ’ | y'⌒ ⌒i
>>139 _| ̄ ̄ \ / ヽ \_ | / ノ |
\ ̄ ̄ ̄ ̄ ̄ ̄ \__) , ー' /´ヾ_ノ
||\ \ / , ノ
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ / / /
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| / / ,'
|| || || / /| |
!、_/ / 〉
141 :
64 :05/01/23 14:17:56 ID:lrHtiB+d
>>98 ,
>>100 背景には512*512のテクスチャを使ってます。
512*512のテクスチャから512*480だけ描画しています。
ウィンドウの幅640pxに描画しているので、
左から順に Xpx、512px、640-(512+X)px 描画しています。
(スクロールさせているので場合によっては3番目の描画はしていません)
背景用のテクスチャは今のところ2枚読み込んでいます。
あと、zバッファが分かりません。自分で調べた結果、
D3DPRESENT_PARAMETERS構造体のメンバ、
EnableAutoDepthStencil に TRUE、
AutoDepthStencilFormat に D3DFMT_D16
を設定して、
lpD3DDevice->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);
をデバイスの作成直後に実行、
バックバッファをクリアする際に、
第三引数に D3DCLEAR_TARGET
第五引数に 1.0
を設定するところまではなんとかできたのですが、ここから先に進めません。
テクスチャを描画するときのD3DXVECTOR3構造体で、
第三引数に0〜1.0fの間で値を設定すればよいのかとも思いましたが
これでは描画した順にしか表示してくれませんでした。
検索してもzバッファを使った描画についてはなかなか出てこないので分かりません。
ヒントでもいただけると幸いです。
IDirect3DDevice::Clear()のときにZバッファもクリアしないとあかんよ。
>>141 喪前の場合、分からない原因が常に
『ヘルプを読まないから』であることにお気付きでしょうか。
まずは
プログラミングガイド→基礎知識→Direct3Dのレンダリング→深度バッファ
に目ぇ通せヴォケ。よろしくお願いします。
テクスチャ内の、ある1ピクセルのARGBカラーを取得したいのですが、どのすれば良ろしいでしょうか? Lockは使ったことが無いのですが、これを用いるのが最も簡単な方法でしょうか? よろしくおねがいします。
>144 何を目的にするかによると思う PixelShaderで済んでしまうのもあるだろうし
146 :
64 :05/01/23 15:43:53 ID:lrHtiB+d
>>142 D3DCLEAR_ZBUFFERが抜けてました。
>>143 いや、それは5回くらい読みました。
それでも分からないからぐぐって、それでも分からないからここで質問しているのです。
つか俺の同僚に
>>139 みたいなのがおって討論できない。
>>146 > いや、それは5回くらい読みました。
つまり注意力散漫。「読んだつもり」であって実際は読んでいないに等しい。
何故ならZクリアに関して丸々1ページ割いて乗っているからだ。
マニュアルとGoogleさえあればなんでもできるのなら質問スレなんていらないんだけどな。
>>146 一から組もうとしないでサンプルいじるところから始めたほうがいいと思われ
こんな調子じゃちっとも進まないだろ
>>149 > マニュアルとGoogleさえあればなんでもできるのなら
誰もそんな話してないっしょ。「なんでもできる」なんて
極端な仮定を持ち出すのは詭弁だよね。
サンプルいじったほうがいいってのは同意だ。
ものの例え
>>145 アルファ成分を透過色とした背景スプライトで
マウス位置にあるピクセルのアルファ値が一定以上かを検出したいのです。
特に高速化が必要なわけではありませんが、なるべく軽い処理方法が知りたいです。
よろしくおねがいします。
事象Aと相似の関係にある事象Bを持ち出すことを「たとえる」といい 事象Bは正しいものと一般に認められるものとする。 ここで、149の一行目が「例え」であると仮定する場合 事象Bは 『マニュアルとGoogleさえあればなんでもできるのなら質問スレなんていらない』 となるが、では事象Aは何か。 ここ最近の会話の中に存在しないのであれば、149の一行目は誤謬となる。
154 :
シギュン :05/01/23 18:02:23 ID:hYRL9ZJD
事象よりも、麒麟のが好きです! だって、鼻が長くっても首が長いほうがいいからです! となるが、では麒麟Bは何か。これは髭爺である。
どうでもいいことに細かく突っ込むひとっているよね。
157 :
シギュン :05/01/23 18:45:18 ID:hYRL9ZJD
シカトだべ
>>152 テクスチャの値がしりたいだけならシステムメモリに
テクスチャを読み込んでロックするよろし。
160 :
127 :05/01/25 22:17:46 ID:6bzs5fw6
ちょっと前に質問した者ですけれども、 試行錯誤して一応文字の表示が出来るようになったので、 それの報告をしにきました。3種類の方法を見つけました。 (1)色を32ビットにする。 自分今まで16ビットでやってました。 でも32ビットにすると、うちのPCじゃかなり重くなるので この方法は却下しました。 (2)異なる種類の文字を17文字以上表示する。(半角でも全角でも同じ数) 何で17文字か分からん。同じ文字だとダメだった。 (3)もうひとつフォントを作る。 これだったら最低2文字で表示できた。 だから背景色と同じ色にして表示したらうまくいった! この方法で乗り切ります!
162 :
名前は開発中のものです。 :05/01/27 22:19:20 ID:wxg/8EgI
DirectXの初期化についてなんですがちゃんと設定していくと100行は軽く越すとききました。 全部の設定について情報が載っている本・サイトなどありますでしょうか?
>>162 100行って実際大した事なくね?
言語にもよるけど100行は逝かないような気が
>>163 の公式のチュートリアルが一番わかりやすくて正しい情報だと思う
旧Direct3Dで100行いったっけ?それともウィンドウの初期化含めての話か
使用できるZバッファ、テクスチャ、フレームバッファの列挙から、 CAPS調べてデバイスの作成までを考えるのなら結構長いコードになるかな。 elとかLunaとか結構初期化コード長いべさ。
>>162 が知りたいのはDirectSoundかもしれんぞ
サンプルフレームワークでいいよもう。
初期化のスワップエフェックトなんですがヘルプをみたんですがイマイチ わかりません。ウィンドウモードで動くアプリケーションを作ってるんですが ウィンドウで動くのはフリップで動きますか?+動作的に何か不安定になるところ ありますか?
あとPCの画面色が32bitと16bitで起動しているときのFPSが違いますよね。 これをなくして16bit状態の時のFPSにしたいのですが。 ディスプレイモードを調べてバックバッファformatに現在の画面設定を行なって いるんですがこれをD3DFMT_R5G6B5で指定した場合、何か問題がありますか? 説明が下手+知識不足ですいませんが分かる方おりましたらよろしく終えん害します。
質問するのはいいんだけど、 >説明が下手+知識不足ですいませんが って書くと、 説明が下手って分かってるんなら分かりやすく書いてよ。 知識不足って分かってるんならちゃんと勉強してから書いてよ。 って言われちゃうので書かないほうがいいよ。
>169 ウィンドウモードのフリップはコピー処理によって実装されるとヘルプに書いていたが? >170 フルスクリーンなら問題ないが、ウィンドウモードだと色変換がかかるから遅くなる場合もあるんじゃね? 試してみれば早いのにわざわざ聞くようなことかな。 動作が不安定になるか、問題が起きるかどうかなんて一概にはいえないから動かしてみないと分からん。 質問なんて、問題が起きて対処出来なくなってからすればいいだろ?
手遅れになったりして・・・
174 :
名前は開発中のものです。 :05/01/29 22:24:22 ID:5jkBJeyj
VC++でゲーム作りたいのですが、 独習C、C++を読んだ後に勉強すべきことはDirectXですよね? Cやり終えたくらいの人間が読むのに適してる 本またはサイトありませんか?
177 :
名前は開発中のものです。 :05/01/29 23:44:55 ID:5jkBJeyj
>>176 Windows SDK編ですか?
いろいろな事が一緒に出てきてごちゃごちゃになるのですが、
もっと小さい事から順番に書いてある
初心者にやさしいサイトないですか?
>独習C、C++を読んだ後に勉強すべきことはDirectXですよね? >Cやり終えたくらいの人間が読むのに適してる 読んだだけでやり終えたとは、あなたは天才ですね。 もう教えることなど何もありません。
179 :
名前は開発中のものです。 :05/01/30 00:49:11 ID:4DEWyKlP
うんこでもわかるぐらいで作らないともう駄目なんだよ最近は
>>177 君は小学一年生からやり直すべきじゃないか?
うんこぐらいになるともう努力しなくなるしなぁ。
っていうかさ、
>>174 の内容って最近すでに2回ぐらい見てるんだけど。
その度に誰かが答えてあげてるのに、完全にスルー。どういうこと?
何だこの叩きかたw
専門が集って優越感でも感じてるのか?w
>>177 ゲーム製作は時間がかかるから専門が多いからこんな感じだ。
もし君が高校生以下ならゲーム製作やめて勉強したほうがいい。
マジレスすると、 >いろいろな事が一緒に出てきてごちゃごちゃになるのですが そりゃそのサイトが分かりにくいってより 君のCの知識か脳みそのどっちかが足りてない。 ゆっくり読むかCを復習しとけ
>>185 もてないおたくばっかりだもん。しかないよ。
DirectXでゲーム中の時間表示とかそういったカメラ位置に関係なく 固定で画面のどこかに表示したいのってどうやって表示してます? struct AAA{ float x,y,z; float rhw; float tu,tv; } の頂点フォーマットでも表示できると思いますがrhwを使ってるのと使ってない のとどっちが有効なのかな?
rhwが入ってないと大抵座標変換されると思うが。
>>188 それでイイよ。変換済み頂点クリップのサポートが気になるなら
ビューポート変換の逆行列をシェーダに渡すってのもあるけど。
ドキュメントの[テクセルとピクセル間の直接マッピング]も参照されたしー。
ロングホーンになってDirectX9が画面への描画の基本APIになるって聞いたが、ってこたぁ ウィンドウとか4頂点のポリゴンとかになるんかな? DirectX9=Windows Graphic Foundation となるのだろうか。同じもものに対して別名がつけられるのはわかりにくいから、 別のバージョンにしてほしいが。
そのいい加減な情報のソースを明示してから語れ。
明確な情報元があるわけでもないのに、 なぜそれが確定したことを前提にして話し出すのかわからん。
>DirectX9=Windows Graphic Foundation ビデオカードによってウィンドウが欠けたりするんですか?
Longhornの最低要求環境 GPU DirectX7クラス ビデオメモリ 32MB ビデオバス AGP 8X/PCI Express x16 UMA DDRベースUMA この条件でそんなダメダメなグラフィックカードあったか?
DirectInputについての質問なんですが 排他モード・非排他モード フォアグラウンド・バックグラウンド の設定の組あわせなんですがどれが一番早いですか?
>>196 現在のDirectXをそのまま使ったら十分起こりえると思うんだが。
DirectInputについての質問なんですが バッファリングデータで受け取る場合と直接受け取る場合がありますが バッファリングデータで受け取っている場合どんな使い方ができますか? データが溜まってもどんな使い方があるのか助言よろしくお願いします
>>200 助言を求める前にてめぇの脳みそで考えたか?
考えたということならまずそれを書いてみな。
話はそれからだ。
私が思うに、バッファリングデータというのは バッファロー的な強い何かが僕らの銀河系を脅かしていて、 直接受け取る場合は逃げ惑うテリー伊藤的な何かだと思います。
アホ質問くらい軽くスルーしとけ
>>200 わからないなら好きなほう使えばいい
なんでいちいち全部知ろうとするのさ
人に聞かなきゃ行動できないのかい
バッファリングデータなんて使う価値なさそう といってみる
3Dの物体と物体の交点(交線)に線を引きたいのですが、 どういった方法が考えられますか? たとえば、球を平面でぶった切ったときの切断面の円周とか。 交わった部分の計算法が分からないというより、 その結果得られたところにどうやって線を引くかが良くわからんのです。
>>205 キー入力のバッファリング処理はタイピングゲームでは必須じゃないか?
処理落ちでキーを取りこぼすようなタイピングゲームはまずいだろ。
>206 DrawPrimitive
209 :
名前は開発中のものです。 :05/02/01 18:13:29 ID:9fSvPXnq
DirectPlay9で大量の構造体をDPNSEND_GUARANTEEDで送信している のですが、全部届いてくれません。どうすれば良いでしょうか? 教えてください。お願いします。
210 :
209 :05/02/01 18:17:25 ID:9fSvPXnq
書き損じましたが、大量の構造体というのは 1個づつの構造体をfor文でまわして多数送るということです。
211 :
名前は開発中のものです。 :05/02/01 18:34:07 ID:8FovXLa2
>>209 全部届かないってのはパケロスが生じてるって意味なのか
それとも一つも届かないって意味なのかどっちかはっきりしる
213 :
209 :05/02/01 20:12:23 ID:9fSvPXnq
214 :
209 :05/02/01 20:22:41 ID:9fSvPXnq
215 :
209 :05/02/01 20:24:10 ID:9fSvPXnq
216 :
209 :05/02/01 20:25:16 ID:9fSvPXnq
217 :
209 :05/02/01 20:32:10 ID:9fSvPXnq
送信エラーチェックはしたのか?
219 :
209 :05/02/01 21:08:16 ID:9fSvPXnq
SendToの戻り値はFAILED(hr)に引っかかりません。 またクライアント側のDPN_MSGID_RECEIVEで、 if( pReceiveMsg->dwReceiveDataSize < sizeof(GAMEMSG_DATA_HOGE) ) break; をコメントアウトしても変化ありませんでした。
220 :
209 :05/02/01 21:18:11 ID:9fSvPXnq
因みに、サーバを起動してクライアントを接続してWavetoOther〜という ボタンを押すと受信キューチェック(1パスのみ)します。 受信キューに順不同に構造体が格納されると数パスでチェック完了 するという仕様なんですが、全然出来てません。 ティーチミープリーズ。
まぁマイクロソフトのサンプルみたいだし 間違ってることはないと思うけどな 改変したところがおかしくなってるんだろ?
Norton先生ジャマー
ゲームを作っているんですがゲームのキー情報についての質問なんですが 現在はアクション・マッピングでジョイスティック・キーボードの両方の情報 を取ってきてゲームを行なってるんですが。いろいろ思考錯誤してアクション・マッピング に行き着いた割りにそんなに速さがでないイメージなんですがジョイスティック をDirectInputでデータを取得してキーボードをGetKeyboardState(〜)でとるみたいなのも ありだとは思うのですがコンフィグとかいろいろと考えなければいけないのがゲームだとは 思いますが皆さんはどういった方法でキー情報を扱ってますか?
>>223 日本語を先に勉強したほうがよろしいようで・・
アクションマッピングはバッファリングデータしか扱えないし、 設定の保存方法がカスタマイズできないしでかなり嫌。 というわけで自前のコンフィグ作った。 デバイスとオブジェクトを列挙してGUIで選択、 設定に合わせてDIDATAFORMATを生成・セットして入力を変換する手間を省いてる。
226 :
名前は開発中のものです。 :05/02/02 22:29:14 ID:9u7uNJZp
DirectX 8.1に関して質問させてください。 やりたい事は、256x256のテクスチャ領域に、Surfaceとして確保した512x512のテクスチャの一部をコピーする事です。 下記は、問題のある点を簡略化したルーチンです。 { LPDIRECT3DDEVICE8 device = CDirect3D::GetDevice(); LPDIRECT3DTEXTURE8 pTexture; LPDIRECT3DSURFACE8 pSrcSurface; LPDIRECT3DSURFACE8 pDstSurface; /* ↓ ここが問題の箇所らしい ↓ */ device->CreateTexture(256, 256, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &pTexture); device->CreateImageSurface(256, 256, Format, &m_pSrcSurface); D3DXLoadSurfaceFromFile(pSrcSurface, NULL, NULL, "512x512.png", NULL, D3DX_DEFAULT, 0, NULL); RECT SrcRect = {0,0,256,256}; m_lpTexture->GetSurfaceLevel(0,&pDstSurface); device->CopyRects( pSrcSurface, &SrcRect, 1, pDstSurface, NULL); pDstSurface->Release(); } >device->CreateTexture(256, 256, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &pTexture); で行うと、上手くいかず、これを >D3DXCreateTextureFromFileExA( device, "真っ黒の256x256.png", D3DX_DEFAULT, D3DX_DEFAULT, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, 0, NULL, NULL, &pTexture ); というような感じで書き込み先テクスチャを作成すると、想定どおりの動作となります。 両者の初期化方法に、何らかの違いが存在するためこのような状態になっていると推察されます。 ご存知の方いらっしゃいましたら、回答又は、該当情報への誘導をお願い致します。
D3DPOOL_MANAGED
228 :
名前は開発中のものです。 :05/02/02 22:58:26 ID:9u7uNJZp
>>227 ヒントありがとうございました。
いまMSDN見つめなおしてたら、少しだけ糸口が見えました。
(ずっと、D3DUSAGEがまずいのかと思ってた……)
今、UpdateTextureを掘り下げてます。
ちなみに、サンプルに間違いがありました。
× device->CreateImageSurface(256, 256, Format, &m_pSrcSurface);
○ device->CreateImageSurface(512, 512, Format, &m_pSrcSurface);
が正しいです。(が、問題箇所ではありません)
引き続き、ヒントやご指摘等ありましたら、よろしくお願い致します。
なんか失敗したら、 戻り値チェックしてみたり、アウトプットウィンドウ見てみるなり。
DirectInputでアクションマップとフォースフィードバックの併用ってできますか? いろいろためしてるんですができません。共にどちらかだけならできてるんですが。 どなたか教えて
よくわからんが デバイスを二個作ればいいんじゃね?
230です。 現在アクションマップでキーボードとジョイスティックの2つを認識するゲームを作ってます。 ジョイスティックが刺さってなければキーボード、ジョイスティックが刺さってればジョイスティック +キーボードって感じにはできてるんだけどジョイスティックが刺さってる場合にはフォースフィードバック で振動とかもつけれるようにしたいです。デバイスはもうすでに何個かつくってやってます。
【サンプルではUV正常だろ】厨房王国BBX【お前のプログラムが変なんだよバカ】
個人でいろいろ試して遊ぶ分じゃなくって、売り出す物にシェーダ使ってる? ラデ系のグラボは知らんが、ゲフォ系はTi4200ユーザーが多いと思うんで、シェーダは1.1と1.3までしか 対応できん気がする。 ってか、俺がそうだった。2.0使ったんだが、とりあえず遊べるようになったゲーム友人にやってもらったら、誰一人として 遊べねぇでやんの。お前等ボード買い換えてくれよ・・・。・゚・(ノД`)・゚・。 (「ゲフォ3でもHL2遊べるからこれでいいんだよ」って言われた(´・ω・`) )
フリーのソフトでやるのは自殺行為。 同人もやめといた方がいいと思う。よっぽど超美麗なグラフィックを売りにするなら別 市販なら別にいいと思うが、それに見合うだけのグラフィックで売上減らすだけ と思う
×見合うだけのグラフィックで ○見合うだけのグラフィックでないと
起動時にCAPS調べて使うシェーダーをバージョンごとに 自動選択するようにすればいいだけでしょ。 性能のいいカード積んでればきれいな画面で、 貧相なカードならそれなりの画面になる程度に調整すれば問題なし。
>>234 自分はCaps調べてそれぞれ別に全部対応してる。(2.0さわった後だと1.3,1.4のPSは泣きたい事いっぱいあるけど)
つかそうしないともったいないし。
日本のソフトメーカとかって何処まで対応するのが標準的なんだろうね?
洋ゲだと非対応GPUの時一部エフェクトが真っ白になるとか そもそも起動しないとかいうのも結構多いな。
>>234 2.0ってかなりの性能じゃね?
この時点でラデオンオンリーだし。
nVidia切捨てってかなりスゴイヨ。
1.4ぐらいがいいとこだろ。
何言ってんのこのバカ?
誰かに洗脳されてんだろ。ご愁傷様
ゲフォ5200って2.0だっけ? こいつがゲフォ2MXぐらい普及してくれると楽なのかな?
ラデオンは9200から2.0対応やで?ラデ系で9200以下を使ってる人はさすがにいないだろ?
言い訳が必死すぎ
IntelGMA900ってPS対応らしいけど……。 メーカー製PCのシェーダ対応状況は良くなっていけばいいね。 ちゅーかラデはいつになったら3.0対応チップ出すんだろ。
ちょうど次の奴じゃない?
>>243 なんだ?ゲフォって?
俺は「GeForce」は「ジーフォース」と読むぞ。
あの「Ge」は「ジオメトリ」の「ジ」だと思うんだよね。
初心者発見
240 = 248
そろそろCOLLADAを使ってみたいんだけどもう使ってる人いる? どのパーサーで構文解析するか迷ってるんだけど。 DirectXで表示させるまで大変そう。
>>251 じゃあGeForceをゲフォって呼んだとして「ゲ」ってなんだよ「ゲ」ってよ。
説明してみろや。
>>253 君は普段あまりネット見ない人かな?
本来はジーフォースで正しいんだけど、自作PCやらネットゲーやらのコミュニティでは
「げふぉ」の呼び方が定着しているんだよー。
人が何て予防といいじゃなーい。
まぁまぁ。彼はガイシュツにも香具師にもイチイチ突っ込む暇人なんだよ
>>254 >「げふぉ」の呼び方が定着しているんだよー。
でっちあげをさも事実かのようにいうからにはソースはあるんだろうな?
今日の燃料 ID:D7FLPIKA
初心者スレと鬱だ氏のうスレが中途半端に混じって 何の意味も無くなってるのがこのスレ
>>257 はぁ?
つか「ジーフォース」って呼ぶ奴はわざわざカタカナで
打たないってだけだろ?
アホか。
ID変わったのね。教えてくれてありがとう。
>>262 俺はお前みたいなクズと違って逃げも隠れもしない!
かかってこいや!チンカスが!
はいはい、つまんないよ
たぶんゲフォとか書く奴はローマ字入力してるからだろう。 かな入力してる奴でもそれぐらい気づく。
おたくクズですよね?
名前なんかどう読んでも良いから熱なんとかしてくれ>>nVidia
統一規格のはずのDirectXでなぜビデオカードによって テクスチャが剥げたりポリゴンが欠けたりするのか素人の俺に教えてくれまいか
>>269 >統一規格のはずの
そもそもこんなものを信じてるお前が糞。
DirectXだからこそ各ビデオカードごとに性能差がでるのにな。
とりあえず、DirectX Graphicsは D3DXはまだ良いからDirect3Dの部分だけでも何かしらの標準にはなってほしいな。 とりあえずWGF期待あげ
ビデオカードごとの性能差はどうしようもない問題だからな。 それをどこまで自動的に処理出来るかがライブラリ部分の作成者の腕の見せ所でもあるな。 GeForce5200では動くけどGeForce2MXじゃ動きませんはまだわかってもらえても、 RADEON9200では動くけどGeForce5200じゃぁ動きませんなんて言い訳は通らないからな。
フォースフィードバックでのdwTriggerButtonの設定でジョイスティックの ボタンを設定したいんですがバッファリングデータではDIJOFS_BUTTON0で いけるんですが直接データでしてるので違うみたいなんです。 誰か助言よろろ
>>273 それじゃシェーダ2.0を使った時点で死亡だな。
そうでなければだいたいRadeonで動けばGeForceでも動くね。
ドライバに関してはnVidiaの方が数段上な希ガス。
>>275 いやそうでなくって動く動かないっていうレベルでの話よ。
たとえば頂点の配置位置の問題だとVRAMにおくかSYSYTEMに置くかどうかは
使用する予定のシェーダーのバージョンとハードウェアの対応次第では変わるわけだし。
4096x4096のテクスチャを読む時にハードで2048x2048までしか
対応してない時に変な風に出てしまうとかじゃ困るわけでしょ。
ライブラリ側で元のテクスチャサイズと実際のサイズを比較して入力された
UVを補正して画像は荒くなっても一応ちゃんと表示されるとかさ。
シェーダーに関しては頂点シェーダーはCPUでもまぁ重くなるけどまだマシってレベルだけど。
ピクセルシェーダーに関しては流石にソフトの開発者側が対応バージョンに合わせて
各種用意しつつコンフィグでも選べるようにするのがベストだとは思うけど。
そういうの考えるとコンシューマーのライブラリ作ってる時はある意味楽だなぁと思うよ。
ドライバに関してはnVidiaのが上なのは同意。
ラデは昔半透明が出なかったりで痛い目みたなぁ しかしドライバが良くてもハードがなぁ…>nvidia 6xxxからはまともになってくれたが
あれ、BBXぶっ飛んだ…? 同じレスが大量に見えるんだが。
もうすぐエロゲーでシェーダ2.0必須ってのが出るから地味に買い換え進むんでないかな。
タイトル名は?
エロゲも一般ゲーもやらんやつには関係無い。 てかエロゲやるやつは大抵PCヲタでゲーヲタ
そもそもシェーダ2.0なんて規格はない。
283 :
名前は開発中のものです。 :05/02/06 18:46:46 ID:HnvWg6+f
BBXに何が起こったんだ???? 嵐?バグ?
ゲームやらない奴にはDirectX
必要ないしな
BBX 何か起こってるね。 利用してないからどうでもいいが。
甘ったれんなよバカ => 鳩@XXX
ゲーム中の音で効果音・BMGとか種類があるけどDirectSoundとDirectMusicどっちがどっちにむいてるん? 皆さんはどういう区切りで使ってるかききたい。ちなみにMusicはSoundに比べて動作が遅いという情報がありますが ほんま?
>>288 MusicはめんどくさそうなのでSoundを使ってる。
dmってwmpとか使ってそうだ。 イコライザとかついてるプレイヤに向いてるんですかね。 まあゲームの中にイコライザ入れるならdm使うといいと思ってるけどどうなんでしょ。
Musicは効果音には向いていない。 発音を指示してから実際に音が鳴るまでかなりラグがあって、 画面と音がずれているのがはっきりと分かってしまう。
じゃあDirectMusicって何のために存在してるの?
ogg形式のやつをDirectSoundでどうにかならしたいんだがDirectMusicでoggを 鳴らすようにしてあるのはあるがSoundは見当たりません。どなたかヘルプ!!
>>293 ミュージックってんだから効果音じゃねぇだろ?チンカス。
>>294 BGMはoggでdmつかって、
効果音は無圧縮でds使うってのはダメですか?
うちもoggはdmつかってるけどdsなら簡単に移行できるかもしれない。
WildCat vp990proを使って立体視するプログラムをDirectXでできますか? 頂点シェーダ使うのにDirectXかOpenGLで迷い中です。 立体視できるならDirectXにする予定です。
DirectSoundで3D・SOUNDをしたいのですがうまくいかん。 うまく言ってる人いる?
>299 んなもんGDIでも出来る
質問です。DirectX9.0C SDKの日本語ヘルプがありましたら、 場所を教えて頂けませんでしょうか。 9.0cに変えた途端、DrawとBeginでエラーが出て色々と調べてみたのですが どう仕様変更されたのかハッキリとわかりませんでして....orz
>>303 まずマイクロソフトのサイトへ行って来い。
無いなら無いのだろうよ。
>>303 それは日本語訳されていない。
ネットで探せば親切な人が翻訳したサイトが見つかる。
すでに日本語訳されてるぞ
>>299 まず立体視の原理を知ろう。
そんなのテキストでもできるよ。
↓平衡法で見ると◇が浮き出て見えるはず。
○ ○
D i r e c t X D i r e c t X D i r e c t X
D i r e c t X D i re c t X D i re c t X
D i r e c t X D ir e c t X D ir e c t X
D i r e c t X Di r e c t X Di r e c t X
D i r e c t X D ir e c t X D ir e c t X
D i r e c t X D i re c t X D i re c t X
D i r e c t X D i r e c t X D i r e c t X
309 :
299 :05/02/09 00:10:10 ID:d9BRwlxT
>302 wildcatにはstereo OpenGLというモードがあるんだけど DirectXに関してはstereoに関するモードがない ってことはDirectX自体には立体視する機能はないってこと?
>307 おおー
http://studiokingyo.fc2web.com/dxlib/kowaza/k3.html#k14のサイトで紹介されてる偽造化を真似てJPEGデータ (1.jpg)のデータを
メモリに展開してNOTしていったデータを1.QQQに変えることはできたんだがDirectXでのデータ読み込みがよくわからなくなってしまった。
LPDIRECT3DDEVICE9m_pD3DDEV = NULL;
LPDIRECT3DTEXTURE9m_pTexture[5];
//〜
if( FAILED(D3DXCreateTextureFromFileEx(m_pD3DDEV,"1.jpg",D3DX_DEFAULT,D3DX_DEFAULT,D3DX_DEFAULT,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_FILTER_LINEAR,D3DX_FILTER_LINEAR,D3DCOLOR_XRGB(0,0,0),NULL,NULL,m_pTexture[0])))
で読み込んでたんだが1.QQQをNOT演算かけてもとのJPEGデータに変換して外部にファイルを出さずに読み込みたいんだが誰か教えてください
312 :
名前は開発中のものです。 :05/02/09 16:38:12 ID:78Hs5sDq
eff.dwTriggerButton = ???; で???に直接データのジョイスティックの場合のボタン0をトリガーに設定 したいのだが誰かおせえて!!ヘルプ見てそれっぽいのいれてもそのあとの エフェクト作成でエラーが返ってくる。
>>311 そこまでしてファイルの偽装って必要?
最終的に1つのファイルに固めてしまえば普通の人には見えないし
ファイル読み込みも余計な手間が要らないし、データ更新も簡単だし。
とりあえずそういう場合はCreateFile()なんかでメモリに展開して
偽装解除してからD3DXCreateTextureFromFileInMemoryEx()で読み込め。
314 :
名前は開発中のものです。 :05/02/09 22:01:32 ID:qBTsXz9+
すいません、質問なんですが、 DirectXのダウンロードのページの、 「再頒布パッケージ」、「シンボルファイル」という物の意味が分かりません。 これらは開発のために必須ではないみたいなんですが、 どうやって使う物なんでしょうか。
>>314 そのページの説明に書いてあるとおり。
普通の開発では使わない。
316 :
名前は開発中のものです。 :05/02/09 22:21:27 ID:u5Uwl/Yn
どうも311です。 >313 たしかにその通りですね。1つのファイルにすれば必然的に見えなくなりますね。 1つのファイルにする場合の質問なんですが1.jpg,2.jpgをタイトル画面で 3.jpg,4.jpgをコンフィグ画面で使ってると仮定して1.2.3.4全てのjpgをまとめたとして 各画面に入る前にそれぞれのデータを読み込むとします。 そういった場合各画面での読み込み時に一旦全てのデータを読み込むので時間が掛かりませんか? 画面ごとのデータに分ければ解決しますが他に方法ありませんかね?
>316 Cの初心者本をおさらい汁
うんDirectX関係ないぞ Cのテキストだけ見りゃできる範囲だ
月刊DirectX
もういやだーーー!
D3DXがDLL化してくれたおかげで自作ライブラリのBCB版の配布に いちいちlibからdll作らなくて良くなったのがいいけど、 Windows2000のサポートがきられるってどういうこっちゃ・・・。 sprintfとかstrcpyとかの標準関数も使えなくなってるし・・・。
なんで9だけ、こんなに激しいんだ 足きり狙いとしか思えん…
326 :
名前は開発中のものです。 :05/02/11 03:18:29 ID:vaQ7pNA0
Feb2005って、SDKだけのバージョンアップですよね? それでD3DXがDLLになったってことは、 D3DX使ってビルドしたアプリは、D3DXのDLLも一緒に配布しなきゃいけなくなるんですか?
Redist\DirectX9以下のファイルをセットで配布する必要があるんじゃまいか。 DLLの単体配布は許可されてないとおもふ。
>>327 まじでー?
ランタイムは相変わらず9.0cのままなの? は?
ちょっとDLL化のタイミング悪くね?
>SDK >Windows 2000 is no longer a supported platform for the SDK. (´Д⊂
つかSD落とせねぇ。どうやって落とすんだ・・・
なんかアクティべーション(?)みたいなことさせられた 拒否してもダウンロードできたけど
DX9.0(cではない)でしばらくいくからどうでもいいや
もうちょっと落ち着くまで様子見したほうがよさそうだ・・・
いまだにDX5使ってる俺は勝ち組
Direct3DDevice を二個以上作るときってありますか?
2004Summerで苦しめられた俺には、必要ない。
とりあえず早速導入。 今まではUpdate - Octorber 2004)を使ってたのでソコからの差分の話。 1.Windows2000が開発環境からサポート外に。 2.当然VisualC++6.0も開発環境からサポート外に。 3.関数や機能の変更はなし。そのままのソースでコンパイルが通る。 4.DirectShow関係のヘッダとライブラリがExtrasに移動なのでこちらも入れないとDirectShowはダメぽ。 5.strcpy、strcat、sprintfなどの文字列操作系の標準関数自体がサポート外に。 VisualC++.NETならワーニングで済むがBCCではコンパイルエラーになって使えない。 StringCbCopy、StringCbPrintfなどのAPIへの変更が必要。 引数が標準関数と違うので面倒このうえなし。 6.D3DXがDLL化したのでBCCで使う場合はlibからDLLを作って添付する必要がなくなった。 起動時にDLLをロードしてGetProcAddressで使う関数全部読み込みでOK。 でも普通はこんなことしない気がする。 まぁこんな感じ。
次回で完全にManaged専用になったらものすごいクレームだろうなw まあ近いうちにそうなるだろうけど
今にCやC++がMS社員の特権になりそうだな
>ワーニング いや、なんとなく。
Visual studio 2005betaでDirectX9のサンプルをコンパイルでている方いますか?
343 :
名前は開発中のものです。 :05/02/12 16:41:31 ID:w8YMrNFi
アルファブレンディングです。 DirextX7 で、 D3DRENDERSTATE_SRCBLEND D3DRENDERSTATE_DESTBLEND を使って、一応、 D3DRENDERSTATE_COLORVERTEX を FALSEにして、 頂点フォーマットは、未ライティングで、 ライティングをTRUEにして、 マテリアルのディフューズのアルファ値を、アルファ値として、 半透明できてたのですが、ビデオカードを、GeForce2MXにしたら、 これができなくなった(そのまんま描画される)。 ヘルプみると、アルファ値はデフォルトでは、テクセルにあるアルファ値を使うらしいので、 これかとも思うが、ライティングを有効にすると、自動的にマテリアルのディフューズのアルファ値を、 アルファ値にするハズなので問題無いと思うのですが、 どこがおかしいんでしょう?
>343 お前の日本語がおかしい
345 :
名前は開発中のものです。 :05/02/12 16:51:02 ID:w8YMrNFi
>>345 理解して初めて「おかしい」って言えるんじゃないかな?
理解してないとおかしいともいえない
ちなみに、質問の答えはわからぬスマヌ orz
D3DXCreateFont呼ぶとD3DXERR_INVALIDDATAとかいうのが帰って フォント作れないんだけどなんで?
348 :
名前は開発中のものです。 :05/02/12 17:06:34 ID:w8YMrNFi
文章を自動的に補正して解釈できる = 理解する 文章を自動的に補正できず「?」になる = 理解できない
>>343 >ライティングを有効にすると、自動的に
自動的ってなに?DirectXは自動的にはやらんよ。ドライバがやってるだけ。
DirectXで作ってるなら自動的とか既定値とかないものと考える。
350 :
名前は開発中のものです。 :05/02/12 17:12:26 ID:w8YMrNFi
>349 そんじゃ、アルファ値を、テクセルのアルファ成分ではなく、 マテリアルにあるアルファ成分を利用するように、設定するには どうすればいいの?
351 :
名前は開発中のものです。 :05/02/12 17:15:07 ID:w8YMrNFi
>自動的ってなに? DX5 では、ライティングを有効にすると、 アルファ値は、自動的にマテリアルのなんとかが利用されるようになる。 って、どっかの出版社が作ったDXの本に書いてあった。
>>350 D3DTSS_ALPHAOPと関連するステートを。
353 :
名前は開発中のものです。 :05/02/12 17:35:58 ID:w8YMrNFi
>352 GJ
文章を補正してもらことを期待せずに、補正しなくてもよい日本語を語れ しかし、DX5の本を参考にしているなんて、いつの時代の人ですか?(プ
>>354 DX5 の本で DX9 を勉強しようとしているのならともかく、
別におかしいことじゃないと思うが
態度のデカイ質問者にマトモに答えが返ってくるのは珍しい
>>339 てか、Managedって何?
いまだに何か知らないんだけど。
深度バッファをD3DFMT_D16からD3DFMT_D32に 変えると見た目等はあんまり変わらないのにFPSが かなり下がるのですが、D3DFMT_D32ってどんな 時に使うものなんですか?
>>358 深度バッファには精度というものがあってだな。
ニアクリップからファークリップまでの距離のはじめの10%で90%の精度を使い切る仕組みだ。
残りの90%が10%の精度で表現される。まあ、ここは線形にはなってないと理解していればいい。
で、D16で動かしたとき、ある地点で1メモリの精度が約100mだったとしよう。
つまり100mの間にいるものを前か後か判断できないんだ。
つまり、D16の精度では俺とお前が100m以内にいたらどっちが前なんだか後ろなんだか判断できん。
判断するためには100m以上はなれる必要がある。
じゃあ、D32にしたらどうなるかっつーとD16で100m刻みでしか判断できなかったものが
より細かい刻みで判断できるということだ。10mとか5mだとか。
つまりD16で満足した出力が得られるならD32にせんでもよい。
>>359 非線形なので、カメラから遠くなればなるほど
精度が悪くなって、Z値の差が小さいと前か後ろか
分からなくなってしまったときにD32を使って精度を
あげる、ということでか?
とても分かりやすくて感動しました。ありがとうございました。
>>359 通りすがりだが、分かりやすいレスに感動した、GJ
FPSがかなり下がるってD32に対応してないからだったりして。 GeForce6800 や RADEON9800 でもD32は対応してないよ。
>362 358じゃないが俺がそうだ D16でうまく表示されないからD32にしたらうまくいった FPSを表示できるようにしたら60を切ってたD16にしたら60になる いくらなんでも遅すぎだろとか思ってたらリファレンススタビライザで動作してた
スタビライザじゃなくてラスタライザだぞ
スタビライザっていうと、ミニ四駆のバンパーの端っこにつけてた丸いボールみたいなやつを思い出す。 俺ミニ四駆やってなかったからよく知らんけど。
スタビライザはフロントが浮き上がらないように 後ろのリアバンパーの下につける奴だろ
お前ら、懐かしすぎだ
サーキットの狼の話してるのか?
> リファレンススタビライザ 俺が牛乳飲んでるときにこんなまったりしたボケをかますな。
70万個の頂点を描画するとき、 カメラが物体から遠ざかると表示されるのに、カメラが物体に近づくと 頂点が半分以下しか描画されないのは何故だか解る人いませんか? DrawPrimitiveよりも32ビットDrawIndexedPrimitiveの方がまともに描画されたのですが、 それでもカメラが近づくと頂点がごっそり消えてまともに描画されないです。 クリッピングプレーンの問題ではないみたいです。
>>370 どんな風になっちゃうの?
クリッピングプレーンの問題じゃねぇっつーけど
nearclipとfarclipの値はいくつなの?
>371 近づくと頂点だけが消えて遠ざかると正常に描画されます。 ラインと面は問題ないです。 あとnearが0.1〜1.0でfarが100000.0でやってます。
http://gamdev.org/up/img/2346.png 消えるというのは↑こんな感じです。
DrawPrimitiveだと近づいても消えることは無いのですが、数十万頂点を超えると↑のような症状が出ます。
DrawIndexdPrimitiveだと頂点数が数百万超えても問題ないのですが、逆に近づくと8頂点でも消えてしまいます。
>>372 ああ、70マンコか。
無理無理、パーテックスインデックス数の最大数余裕でこえてんじゃん。
できるできないも偶然なんじゃない? よくわからないけど。
8頂点でも消えるの? すまん、嘘いったかも。
どうもDirectGraphicsの仕様に沿ってない書き方するとバグが起こるみたいですので、 1オブジェクトが10万ポリゴンの場合2回に分けてDrawPrimitiveで描画するようにしたら解決しました。 >376 DrawIndexdPrimitive使うと8頂点でも頂点が消えるというのは意味不明ですが、 頂点描画にインデックスバッファ使うこと自体間違ってますので忘れることにします。
仕様に沿ってない書き方で動かないのは当たり前だろ・・・。 つーかCPASで最大描画可能数くらいちゃんと調べろよ。 65536以上の頂点でインデックス使うなら32Bitのインデックスじゃないとダメだし。 とりあえずリファレンスを抱いて眠れ。
CPAS>>>CAPSな・・・ 俺がリファレンス抱いて寝るよ・・・
>373 ワイヤーフレームがあるからなぁ、違うかもしれんが一応 ポイント表示している点は距離に関係なく同じサイズで描かれるわけだ だから遠くの時のモデルと点の大きさの割合と近いときのモデルと点の大きさの割合は違う だから実はでているが、比率の問題で近くのときは目立たなくなってるんじゃないかと予想 でもワイヤーフレームも同じ原理のはずなんだよな… とりあえず気になるならワイヤーフレームは消して、ポイント表示だけにして 本当にポイントが消失しているか見てみてはどうだろう? 実は出ていたら目立たなくなってただけ 他にもRenderState関係を見直してみるのもいいかも
DirectXの本買おうとしたけど3Dばっか なるべく新しいやつで2D専門のないの?
>>381 3Dで4頂点のモデル描画して2Dとして使えば
2Dゲームは補えちゃうじゃん。
プログラミングにおいては2D⊂3Dなので、いちいち2Dについて説明する必要がない。 3Dの本買っとけ。
>380
面と頂点だけだと
http://gamdev.org/up/img/2349.png ↑こんな感じに消えます。DrawIndexedPrimitive使うときだけの症状ですが・・・
DrawPrimitiveだと問題ないです。65536頂点超えると同じような症状がでますが、
これは2回以上に分けて描画することで一応解決しました。
385 :
名前は開発中のものです。 :05/02/14 00:32:10 ID:TwMoKjjD
鏡張りの部屋にいすが置いてあって、いすがしっかり部屋の床・天井・壁4面に映し出すように したいんですがヒントや取り扱ってるサイトなどありましたら教えていただきたいです。
>>385 ヒントも何も鏡の数だけシーンを描画するしか方法はねぇだろ。
床と天井に鏡があると無限反射を繰り返すわけだがその辺もやるのか?w
サンプルは全部見ようぜ
合わせ鏡のサンプルが見たい
レイトレでもやってろ
391 :
mino :05/02/14 18:46:30 ID:s9Cj3tZ9
うーむ、マイクロソフト恐るべし
>>384 それ頂点の描画っていってるけどポリゴンで書いてるだろう。
本当にPOINTでレンダリングしたら1ドットのサイズしかないぞ。
頂点の描画ってPOINTLISTじゃないの? 頂点のサイズはFVF構造体のPOINTSIZEじゃないの?
>>357 DirectXを.NET Framework向け(Java風)に仕立てたもの。
これから主流になっていくバージョンだから今から覚えるなら当然こちらだな。
次のOSで
Win32API → .NET Framework
DirectX → ManagedDirectX
になるから。
ポイントってサイズかえられるんか、、、しらなんだ。 FVFのPOINTSIZEってポイントスプライトの設定なのかと思ってたよ。
>>395 普通に考えていままでのアプリケーションどうなんの?
って多分動くんだろ?
じゃなきゃ誰も新しいOSなんて絶対買わん。
そうすると連鎖でVC6.0あたりもやっぱり動くんだろ?
それで作ってあるDirectXとそのドライバも当然動く。
とか、考えるとうーん・うーん・うーん・非常にいいにくいんだが・・・うーん。
>>398 もちろん動くことは動くだろうが最大の違いは
機能追加はManaged向けに行われるって事だ
>>399 無いな。
いままでの傾向からいって。
一度も無い。
Managed DirectX 使った市販ソフトって有るの? 個人が趣味で使ってる話しか聞いたこと無い…
>>402 Tom Millerのブログによると開発中のゲームソフトはあるらしい。
他に思いつくのはQuake2.NETだけど売り物じゃなかったかな。
大抵は結果をみてからでも十分間に合う場合が多いから 流行るか流行らないかわからないものに飛びつく必要はないよ。 しかも、この作業ってラグーンになってから速攻で対応が必要になるものの類じゃないし。 やりたい奴にだけやらせておけばいい。
月刊DirectXをダウンロードしようとしたら、ValidationでHTMLアプリケーションなんてのが出てきた。 ゴルァ、マイクロソフト!こんな危ないものができるような環境作るな!
ぶりぶり、このValidationって、なんじゃ?人のコンピュータの情報を盗むための悪ふざけか?
可哀相な人だ
見ちゃいけません
Longhornで採用されんのは Win32API → WinFX DirectX → WGF な。
410 :
名前は開発中のものです。 :05/02/15 12:39:41 ID:anAUL5VR
でも中核は,netでしょ?
ほんと流行ってから覚えたほうが良いって。 現状だとわざわざ Managed DirectX を使うなんてデメリットしかないでしょ。
流行る流行らないも、次のOSのAPIであるWinFXは.NET Frameworkがベースなんだって。 Win32APIはサブシステムとして残るだけw DirectXもManaged DirectXが今後生き残る。
WinFXは事実上、.NET Framework2.x WGFはDirectXと並行して存在することになるが、おそらくManagedDirectX2.xであることは間違いない
だからOpenGLでいいんだ
Managedへの移行なんてそんな手間かからんだろ
マイクロソフトのMLで、Feb 2005がバグってるって話が流れてて、その回答がマイクロソフトからあって、 AprilのバージョンでFixするだと! ふざけんな、マイクロソフト!喪まいらなあ、本当に月刊DirectXにするつもりか!
Microsoftのジサクジエンですよそれ aprilの口実作り
下僕だ
>>414 ちっげーよ。
ラグーンが流行らなかったらドットネットごとあの世逝きだっつの。>Managed DirectX
まずは売れ行きをみてからじっくりはいってもなんも遅くねぇだろ。
最後の最後まで様子見で全然問題ないって。
ドットネットそのものが、あの世に行きそうに感じるのは気のせいですか
Feb2005ってWin2000がサポート打ち切られたって話だな。 だとするとDX9で作ってもWinXPユーザーにしか遊んでもらえんのかね。 Longhornも5月Beata予定らしいしWGFに乗り換えるかOpenGLに乗り換えるか どっちがいいかなぁ。その前にみんながLonghornに乗り換えるのだろうか。
開発プラットフォームとして2000が切られただけであって、 実行環境としてはWindows98〜いけるだろ。
>>423 >その前にみんながLonghornに乗り換えるのだろうか。
問題はここなんだからじっくりまてばいいと思うよ。
少なくとも俺は現状のPCの状態からOSを替えるとすれば
PCを買い換えるときぐらいしかないと思ってる。
XP入れてからこれだけ長い年月が経ってしまうと
もう再インストールなんて死んでもやりたくない。
ま、今後はフリーで商用利用可能なものが主流になってくるよ わざわざ高い金払って糞みたいなもん使うのは間違ってることに気付け
427 :
sage :05/02/16 03:03:49 ID:jBjGIxsC
フルスクリーンにするとIMEの変換候補がチラチラするのなんとかしたいんだが 変換候補は非表示にできないの?
429 :
427 :05/02/16 03:37:00 ID:jBjGIxsC
>>428 sage書くところ間違いた漏れに優しくしてくれてありがとうorz
>>427 画面外のアホみたいな座標に変換候補表示ウィンドウを移動しちゃうってのは?
MSも、定期的にOS出して搾取しつづけないと会社が成り立たないから大変だろうな。
432 :
名前は開発中のものです。 :05/02/16 14:13:39 ID:PPELUf2Y
Direct3D使ってXファイルの表示をすると 表示されたポリゴンがウィンドウのサイズに合わせて拡縮されてしまいます これはどうしたら解決できますか? 640*480で表示したいのですが これでは立方体を表示しようとしても直方体が表示されてしまいます。 DirectXのSDKバージョンは 9.0 October 2004です。
ビューポートとプロジェクションマトリックス
434 :
432 :05/02/16 14:54:05 ID:PPELUf2Y
>>433 ありがとうございます!
それをヒントにやってみます。
DX9SDK Summerを用いて、directmusicでwav形式の音を鳴らしています。 この鳴らしている一つの音だけの音量を動的に変更したいのですが可能でしょうか? 私の調べた感じでは、directsoundでなら出来そうなのですが directmusic ⊂ directsoundらしいので、どうにかdirectmusicで出来ないでしょうか?教えてください。
つ IDirectMusicAudioPath8::SetVolume
437 :
名前は開発中のものです。 :05/02/16 22:54:03 ID:5CHewkKw
GetD3DDevice()->CreateVertexBuffer( 26*sizeof(LVERTEX1),0, LVERTEX1_FVF, D3DPOOL_MANAGED, GetVerTexBufferPointer(), NULL); float m=0.5,n=0.0; LVERTEX1* v1; GetVerTexBuffer()->Lock( 0, 0, (void**)&v1, 0 ); v1[0].p=D3DXVECTOR3(-m, n, m);v1[1].p =D3DXVECTOR3( m, n, m); v1[2].p =D3DXVECTOR3( m, n,-m);v1[3].p =D3DXVECTOR3(-m, n,-m); v1[i].t1 =D3DXVECTOR2(0.0f,0.1f); v1[i+1].t1=D3DXVECTOR2(0.1f,0.1f); v1[i+2].t1=D3DXVECTOR2(0.1f,0.0f); v1[i+3].t1=D3DXVECTOR2(0.2f,0.0f); GetVerTexBuffer()->Unlock(); こんな感じで頂点情報を作ったんですけどこのt1のテクスチャの座標を途中で書き換えたいとおもったらどうすればいいですかね? 上の文はアプリケーション起動時に通って頂点情報を用意して 描画なんかをしててテクスチャの座標を変えたいと思ったんだがわかんね。 誰かおしえて
またLockして書き換えればいいだけじゃん それとどうでもいいことだがVerTexじゃなくてVertexで一つの単語だからな
>>436 なるほと、オーディオパスというものがあるのですね。
このオーディオパスを自ら作成してPlaySegmentExにそのオーディオパスを使うよう指定してあげればいいのかな。
ありがとうございます。試してみます。
ウィンドウズキーを押した後、「U」を連続で押すと気分も爽やかになれるぞ
ウインドウモードでFPSを60くらいで固定したいのですが、 なぜか45くらいしか出ません。これはどうすれば直るでしょうか? PresentationInterval を D3DPRESENT_INTERVAL_IMMEDIATE にすると110FPSくらい出ます。 フルスクリーンにすると60FPSで固定されます。
442 :
436 :05/02/17 00:22:41 ID:lBAHxknb
>>439 基本的にはそう。
鳴らす音が複数個あってそれらを個別にコントロールしたい場合、同時に発音する
音の数だけ AudioPathを用意する必要があるので注意ね。
それと、AudioPathは音量コントロールはできても、定位やピッチなどは制御できない。
細かい制御がやりたいのなら DirectSoundに移行するのが早いよ。
IDirectSoundBuffer8 インターフェイスを参照のこと。
俺もDMusicで頑張ろうと思った時期があったけど 結局めんどくさくてDSoundのほうが楽だったなぁ
>441 フレームレートにこだわるなよ
リフレッシュレートが45Hzとか?
>>441 仮に固定したところで遅い環境では60を下回るわけだが。
448 :
441 :05/02/17 10:26:38 ID:j2FJyIAE
>>446 ありがとうございます。
システムタイマの精度を上げて解決しました。
これでやっと気分良くゲーム作りを続けれそうな気がします。
Direct3D9でXYZ_RHW(FVFはD3DFVF_TLVERTEX)を使い、2D描画を行っています。 テクスチャーの作成にはD3DXCreateTextureFromFileとD3DXCreateTextureFromFileInMemoryを使用し、 主にPNG形式(α値は様々)を利用しています。 ここで問題が起きたのですが、アルファブレンディングなどは正常に機能しているようなのですが、 Y軸が0の位置で透明度が100%の画像の場合、その部分にスジみたいなモノが表示される場合があるのです。 D3DSAMP_ADDRESをCLAMPに等変更はしてみたのですが改善は見られませんでした。 このような現象が起きるとすれば(起きてますが)どのような箇所が問題でしょうか。 以下が長くなりますが各種設定値です // 初期化時 m_Direct3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); m_Direct3DDevice->SetRenderState(D3DRS_ZENABLE, TRUE); m_Direct3DDevice->SetRenderState( D3DRS_DITHERENABLE, TRUE); m_Direct3DDevice->SetRenderState( D3DRS_LIGHTING, FALSE );
//-------------------------------------- // ブレンディングモードの設定(DrawPrimitive直前) //-------------------------------------- // アルファブレンディングを行なう m_Direct3DDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE); // アルファブレンディングステートを設定 m_Direct3DDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); m_Direct3DDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); m_Direct3DDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); m_Direct3DDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); // テクスチャステージの:アルファ要素の設定 //m_Direct3DDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1); m_Direct3DDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); m_Direct3DDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE ); m_Direct3DDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_CURRENT ); // テクスチャフィルターの設定 m_Direct3DDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT ); m_Direct3DDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT ); // サンプラーステート m_Direct3DDevice->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP); m_Direct3DDevice->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); m_Direct3DDevice->SetSamplerState( 0, D3DSAMP_ADDRESSW, D3DTADDRESS_CLAMP); よろしくお願いします
452 :
449 :05/02/17 23:12:32 ID:0Bzn29lf
それだと100%透明でもZバッファに書き込まれることになるけど、 そのせいで上書きできないとかいう落ちでは?
たんにフィルタリングの設定が可笑しいだけじゃねーか。 リファレンスのフィルタリング関係の所を熟読すべし。 描画位置を-0.5Fしてないとかその程度の初歩的なミスだろうな。
>>454 それはCLAMPをやっているからやる必要ないと思うんだけど
その変な線が アルファが問題なのか 色が問題なのか Z値が問題なのか 特定しなきゃあかんと思うのよ そのために画像の色をいじったりアルファを抜いてみたり努力してみる 必要があると思うわけよ俺は。 もちろん解決策を知ってりゃそれにこしたこと無いがよくわからん以上 やってみるしか道はねぇよな。 意外と元の画像のアルファが腐ってる可能性も否定できないぞ。
457 :
449 :05/02/18 00:34:49 ID:H/hmcgXW
>>454 描画位置に-0.5fというのは意識してませんでした。
描画位置が何を指すのかが判らなかったのでVertexのsx,syを-0.5fしてみたり
tu,tvにしたりしてみましたが(こちらは問題外でした)正しく表示されませんでした。
>>456 各画像においてY軸0のピクセル以外は問題がないのでαに問題はありませんでした。
また、画像処理系ソフトで読んだ際のその画像データも問題ありませんでした
Z値についてはXYZ_RHWを使用しているので0未満であればOKと思っていたのですが・・
ちなみに現在はどの画像を表示するときもVertexのszは-0.1f固定にしています。
ただ、対象の画像において一番下のピクセルがすべて透明度100%の場合は発生しないことが判ったので
CLAMPが正しく動いていない・・・?とも考えたのですが。
α値設定を画像ファイルからと更に描画時のVertexのcolorでも上から設定してます(100%で画像のα表示であることは確認しています)
color = 0x00ffffff | (byAlpha << 24); //byAlphaは0〜0xff
一応これをcolor=0xffffffffなど、固定で試しましたがダメでした
使用しているPNGファイルを見ていただいてもよろしいでしょうか?
見ていただけるのであればファイルをUPしますのでお願いします。
>>454 UV値を
0.0f → 0.01f
1.0f → 0.99f
にしてみては?
反対側の色が出てきているのかも。
領域外を画像のふちの色にする設定あったよな? それ試してみたら?
あっ、勘違いかも。 聞き逃してくださいorz
てかアンカーミスってるorz
462 :
449 :05/02/18 01:18:16 ID:H/hmcgXW
>>459 D3DTADDRESS_BORDERのことでしょうか?
U, Vに試してみましたが改善は見られませんでした
その後境界色として0xffffffffを設定してもみましたが変化はありませんでした
元画像のアルファが腐ってるに1票。
464 :
449 :05/02/18 01:52:22 ID:H/hmcgXW
テクスチャ読み込み時に拡大が発生して、 トラブル発生しているヨカン。 テクスチャは 2^n が基本やで。
>>458 だからそれはCLAMP使ってあれば関係ないんだって。
>>464 アルファが問題なのか
色が問題なのか
Z値が問題なのか
特定しろよ。
レンダリングステータス替えて確かめてみろ。
アルファ抜きで描画してみたり色々できるだろ。
まあ、その前にテクスチャのサイズを2のn乗にしてみるといいかも。
駄目なら上記のどれなのか特定しろ。
テクスチャの100%透明な部分がZバッファに書き込まれないようにするには どうすれば良いですか?
テストすればいい。
x形式から3ds形式に変換するソフトありませんか? conv3dsってのは見つかったんだけど、これは3dsから xへのコンバータみたいで使えないし…
それくらい自分で作れ。探せばソース転がってんだろ
>>469 たぶん
m_pd3dDevice->SetRenderState( D3DRS_ALPHAREF,0x00 );
m_pd3dDevice->SetRenderState( D3DRS_ALPHAFUNC,D3DCMP_GREATER );
>>468 >アルファ抜きで描画してみたり色々できるだろ。
α画像であることが前提なんだからα抜きにしたらいみねぇんじゃねぇのか?
まぁ俺は意見することないけどな
>>449 こんな半端なサイズのテクスチャ使ってる時点で論外ではあるんだが。
とりあえずフィルタリングの影響で下のピクセルを参照してる可能性が高いと思う。
だいたいCLAMP使ってるといってもちゃんとハードで対応しているのかをチェックしてるのか?
テクスチャサイズ、テクスチャフォーマット、フィルタ、サンプリングはちゃんと
デバイスで使えるのかどうかチェックしとかないとまずいかと。
テクスチャも読み込んだ段階で1024x256あたりのサイズに伸張されてるだろうし
そのくらいのことは調べてからでないとアドバイスもしようがない。
>>449 テクスチャ画像の上か下かを2、3ドット透明な領域にしてやればいいんじゃないか?
とりあえずの問題を解消できればいいだけなら
>>469 あ、SetRenderState( D3DRS_ALPHATESTENABLE, TRUE ); も要る。
>>474 それはちょっと想像力なさすぎじゃない?
消火仕事が来たら、バグ一件も退治できなさそう。
まあ、仮に同じルーチンを通ると考えて
アルファ有りと無しとで2つの場合をテストしたとしよう、
すると有りの方では線が出てしまったが、無しの方では線は見られなかった
という結果が出たとしたらそこから何か想像できない?また、
有りの方でも無しの方でも線が出たもしくは出ないとしたら、この現象にアルファは関係無いということになる。
テストの結果がどうであれ得られるものはあるんだよ。
って感じで色々考えられる原因を消去していくしか方法はないよね?
掲示板で「やってみたのか?」っていう人は大抵考えうるすべてのことをやった上で
ききにきたんだろうな?っていってる厳しい人達だよ。
479 :
449 :05/02/18 23:20:32 ID:H/hmcgXW
お騒がせしました449です。 結局テクスチャサイズに問題がありました。 サイズ求める->それが収まる有効な(ビデオ能力として)テクスチャサイズ取得-> D3DXCrateTexture->GetSurfaceLevel->D3DXLoadSurfaceFromFile(InMemory)とすることで解決できました。 そのほかの点に問題はありませんでした。 ありがとうございました
480 :
名前は開発中のものです。 :05/02/19 01:33:11 ID:i4Z9Yb6m
Direct3Dでマニュアルを参考にしながら正方形のプリミティブを表示したのですが、
テクスチャが正常に表示できません。プリミティブは正常に表示されています。
テクスチャが右の方だけ斜めに重なったように表示されてしまいます。
言葉では表しにくいのでキャプチャしました。→
ttp://49uper.com:8080/html/img-s/41257.jpg プリミティブの表示は、構造体に4つの頂点を入れて
DrawPrimitiveの第一引数にD3DPT_TRIANGLESTRIPを指定するやり方でやりました。
4つの頂点とテクスチャのuv座標は構造体に以下の順で納められています。
( -4.0f , -1.0f , -4.0f )、( 0.0f , 1.0f )
( -4.0f , -1.0f , 4.0f )、( 0.0f , 0.0f )
( 4.0f , -1.0f , -4.0f )、( 1.0f , 1.0f )
( 4.0f , -1.0f , 4.0f )、( 1.0f , 0.0f )
表示する際の記述です。
g_lpD3DDevice -> SetTexture( 0 , lpTexture ); //テクスチャのセット
g_lpD3DDevice -> SetTextureStageState( 0 , D3DTSS_COLOROP , D3DTOP_MODULATE );
g_lpD3DDevice -> SetTextureStageState( 0 , D3DTSS_COLORARG1 , D3DTA_TEXTURE );
g_lpD3DDevice -> SetTextureStageState( 0 , D3DTSS_COLORARG2 , D3DTA_DIFFUSE );
g_lpD3DDevice -> SetTextureStageState( 0 , D3DTSS_ALPHAOP,D3DTOP_DISABLE );
g_lpD3DDevice -> DrawPrimitive( D3DPT_TRIANGLESTRIP , 0 , 4 );
テクスチャのサイズは256*256で、プリミティブも正方形なのでピッタリ合うはずなんです。
頂点の順番やuv座標の値を色々変えてみましたが余計におかしくなるだけでした。
どうすれば解決できますでしょうか。
最後は4じゃなくて2じゃないの?
四角形は4つの頂点で表示できない 三角形を2つ組み合わせてを作らないと つまり6つの頂点をD3DPT_TRIANGLESTRIP Draw
それは TRIANGLELIST だろ
g_lpD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2); にしてみたら? それか4つの頂点のx,z,u,vの値をD3DPT_TRIANGLESTRIPの描画順番に応じた数値にするか
485 :
480 :05/02/19 10:00:55 ID:CqhQ13fy
D3DXFrameCalculateBoundingBox のような関数ってないんですか? D3DXFrameCalculateBoundingSphere ならあるんですけど…
>>486 自分で求めたほうが早いような気がします。
>>482 一度に描画する四角形が一つなら、頂点4つでストリップでいいと思うが。
BoundingBoxは計算するの楽だからな。 BoundingSphereはアルゴリズムが結構めんどくさい
>>490 逆の場合というと、オブジェクトと境界球の中心を同じにした場合かな?
こちらから中心を与えることが出来るなら境界球のほうが楽だよな。
オブジェクトと最小境界球の中心が同じ位置とは限らない。
理論的には最小境界球は一意に定まるけれど、
これを求めるアルゴリズムは簡単に思いつくかいな?
492 :
名前は開発中のものです。 :05/02/20 06:35:05 ID:X3aVs8Oc
>>491 つか、何を求めたいの?
多分、よくわかってねぇよ。俺。
箱にしても球にしても当たってるかどうかを求めるだけなら別に苦労はないじゃん。
どっちかっていうと球の方が楽だ。
【球の判定】
球と球同士なら距離を求めるだけで判定ができる。
球のどこにあたっているかを求めるのも少し誤魔化せばそれっぽくはできるだろう。
【箱の判定】
箱と箱同士は回転を加えていないとしたら、縦横高がそれぞれ範囲に入っているかどうかで判定はできる。
箱の回転が有りだとしたら一筋縄ではいかない。つーかゲームには不要。
回転無しの箱と箱同士がどこにあたっているかを求めるのは少し面倒だができない話じゃない。
【箱と球の判定】
箱のローカルに球をもってくれば、少し面倒だが楽。
ゲームでよく使う。
という認識なんだけど
>>491 はどのパターンのことをいってるのかな?
質問は
・オブジェクトってなんのこといってるの?
・境界球は俺のいう球のことでいいの?
・オブジェクトと境界球ってどういう関係なの?
ってところだ。
>492 なんか適当な物体のポリゴンで構築されたモデルが与えられているとして、 そのモデルの外接円と外接直方体を求めるのはどっちが楽か、という話だろ。 だれも当たり判定の話はしてないと思う。
BoundingBoxでもOBBなら結構面倒だと思うけど。 それで話が食い違ってるのかと思ったら違うのね(w
>>493 ああ、描画の範囲を決定するボックスを作るってことね。
それなら確かに円の中心を求める方が面倒だな。
俺がやったときはデザイナにアニメーションにくっつけてもらったけどね。
これなら変な形の物体も球と箱の組み合わせで細かく設定できるからね。
DrawHitBoxとDrawHitSphereって名前の物体作ってもらってタイムランごと
とってくるだけだから自分で計算したことないや。すまん。
ただの二次元でもDirectXつかうメリットはありますか? GDIより描画が速い?
二次元しか使わないならGDIの方がいいよ
回転とαブレンド入るなら微妙だけど。 拡縮ぐらいしか使わないならGDIの方が楽だと思う。
499 :
496 :05/02/20 09:31:54 ID:G/00UlE/
了解しました。ありがとう。
>>497 たしかに楽だし低スペックPCでも速いんだけど
VSYNCの待ち方が分からんのでちらつきまくりorz
だれか教えれ(つд∩)
vsyncとちらつきって関係あるの?動きがカクカクするならわかるけど。
>>502 それはvsyncにあわせた場合じゃね?
vsyncに合わせるから動きがカクカクになるんだろ?
vsyncを無視して描画すれば今度はちらつくだろ?
リフレッシュレートが思い通りにならなきゃやっぱり同じことだろうな。
ダブルバッファリングしてもちらつくの?
>>504 お前、よくわかってないだろ?
だからvsyncにあわせるってのは
フロントバッファとバックバッファの切り替えタイミングをvsyncにあわせるってことだろ。
切り替えタイミングをvsyncにあわせない場合どうなるのよ?
っていっても最近のディスプレイじゃとくに問題にはならないんだけどね。
while( TRUE ){ if ( PeekMessage( &msg , NULL , 0 , 0 , PM_NOREMOVE ) ){ if ( !GetMessage( &msg , NULL , 0 , 0 ) ) break; TranslateMessage( &msg ); DispatchMessage( &msg ); } else { DrawGraphics(); } } BOOL DrawGraphics(){ if ( g_DrawOrPresent == DRAW_BACKBUFFER ){ DrawBackBuffer(); g_DrawOrPresent = PRESNT_BACKBUFFER; } else if ( g_DrawOrPresent == PRESENT_BACKBUFFER ) { g_TimeAfter = timeGetTime(); if ( g_TimeAfter - g_TimeBefore >=16 ){ PresentBackBuffer(); g_DrawOrPresent = DRAW_BACKBUFFER; g_TimeBefore = g_TimeAfter; } } return TRUE; }
CPU使用率100%になるアホなプログラムを、 恥ずかしげもなく書き込める厚顔無恥さが羨ましい。
CPU使用率100%?? なんだそれ?
というかGDIでダブルバッファリングしつつちらつかせるってどうやるの?
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
→ CPU使用率100%になるアホなプログラムを、
→ 恥ずかしげもなく書き込める厚顔無恥さが羨ましい。 ←
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
無知を棚に上げてソース見ただけで自分に都合のいいように妄想できる
>>507 の短絡的で軽快すぎる神経が羨ましい。
>>508 多分ここのこと
>if ( PeekMessage( &msg , NULL , 0 , 0 , PM_NOREMOVE ) ){
だけどこれは俺の予想だけどCPU使用率が100%で熱暴走するってのはデマだと考える。
なぜならこの使用率ってのはアプリケーションがタスクのどのくらいの処理を使ってるかって意味で
あってCPU自体はいつも全力でまわっているはずだから。
(例えばある処理をC言語で記述したとしてその処理を実行中は50%だった。
いっそ100%で実行してくれれば2倍の時間で終わるのか?そんなことは無い。
CPUはいつも全力で処理するしかないし50%も100%も糞も無い。)
偶然止まったとしてもその原因が熱暴走かどうかをPCは語らない。
CPU使用率は100%で誰も困らない。
これは覚えておいた方がいい。
もうなんというか、この羨ましさはアレだな。 仕事のことで頭の中がいっぱいになってるときに 橋の下で穏やかな面下げて生活してる香具師を見たときの羨ましさ。
>>513 全然ダイジョブ。
知り合いやなんかでもそんな症状が出た香具師はいねぇ。
>>507 のPCが低性能過ぎるだけ。
PCが低性能でないなら
>>507 の脳が低性n(ry
516 :
名前は開発中のものです。 :05/02/20 20:40:50 ID:CJMVLT7i
>>517 それは本当にCPUの処理があがったことが原因なの?
ただCPUの熱があがっただけじゃ何が原因かわからないよ。
これはちゃんとハードにモニタでも直結してみないと原因はつかめないけど。
たいしたアプリでもないのにCPU使用メーター満タンにされると不気味だ
521 :
名前は開発中のものです。 :05/02/20 20:49:42 ID:UQES3pvI
>>518 『かれこれこういう処理を行ったら CPU が途端に熱くなりました』ってんだとこの処理以外に原因無いかと
>>520 同感。それ相応のアプリが 100% 使うのは別に良いかと
ごめんたいしたレスじゃないのにあげちまったぜい
>>520 タスクマネージャーでみられるのはあくまでもアプリケーション側の使用率。
つまり0%のときは
OS100% アプリ0%
と思っていい。
100%のときは
OS0% アプリ100%
って感じだろうけど実際にOS0%なんてなるわけないので
かなりいいかげんな値と見て間違いない。
>>524 「CPU自体はいつも全力でまわっている」というのがそもそも誤りだから
それは成り立たない。
余力は全部SystemIdleProcessに回ってるのでわ?
>>507 みたいな書き込みをするキチガイが社会と接点を持ってるって怖いねぇ
100%だめには、みんな仲良くやろうよ、ぐらいの意味しかないよね。
CJMVLT7iはなんでそんなに必死になっているんだろう?
532 :
古代人 :05/02/20 21:30:52 ID:AidvPkwI
>>526 昔のポケコンなんかだと、やることないときはHALT使えば
次のハードウェア割り込みまでCPUが停止して消費電力を
大幅に節約できたけど、今のPCでもそうなんじゃないの?
技術的には一変しただろうけど。
俺のノートもCPU使用率70%以上が長期間続かない限り
冷却ファンは回らないし本体も熱を持たない。
とりあえずPeekMessageだけにした場合とどう違うのかを教えて欲しかったりする。 もちろんPM_NOREMOVEはPM_REMOVEに変えて。
CPU使用率100%だとAlt+Tabとか使うと切り替えに時間がかかるからイヤだ
>>531 それは本当にCPUが原因なの?
他の部品が動いて結果的に消費電力があがってるんじゃない?
俺は
>>507 に釣られたのかもしれんな。
あれでマジレスだったら
>>507 は相当ヤバイ。
>>507 他所でプログラミングの話なんかするなよ(藁
みんなおまえの知識量と想像力に嫉妬するから(藁
よっぽど悔しかったんだろうな。
うちは0%。たまに2%。 ちなみにCPUはPen4 2.8GHz、グラボはRADEON9200ね。
HT でも関係してるんかね?
うちでは10〜15% CPUはセレ1.1G、グラボはオンボード。
思いっきり100%。
最近のCPUは使用しない回路の電流を切ってるんだっけか?
Present()とメッセージループで2重にウェイトがかかるから 100%になる人は60FPS近くで、ならない人は30FPSぐらいになるんじゃないかと 思うんだけどどう?
>>536 またアホなソースを晒してしまっているが、
デバイス作成時にD3DPRESENT_INTERVAL_IMMEDIATEが使われていないので、
>lpD3DDevice->Present(NULL,NULL,NULL,NULL);
でウエイトが発生し、このタイミングでCPUが空く。
リフレッシュレートが高い値に設定されている場合は使用率が高くなるので、
人によって使用率が異なるのはその為。
PresentをコメントアウトすればCPU使用率は100%となる。
547 :
545 :05/02/20 22:46:17 ID:Arj8dZA1
>>545 は勘違い。Presentでウェイトがかかるというのは本当。
反論キター
>>510 モニタは上の方の走査線から順に表示を書き換えている訳だけど、
ダブルバッファリングで表示している領域のちょうど真中あたりの走査線を
モニタが書き換えている時にバッファの切り替えが発生した場合、
一瞬だけ上半分と下半分で違う画像が表示されるはず(v真紅を見ない場合)。
…と思うんだがどうなんだろうね。
windowsだとドライバがどうとかで変わりそうだし尿。
そこらへんのvsyncの管理ってGDIがやってくれんじゃないの? DirectXならいざ知らず、Windowsプログラミングでvsyncのこととか考えながらプログラミングするのってかなり嫌なんだが。
つーか、GDIは速度的にかなり不利って事を先に言うべきじゃないだろうか。
551 :
名前は開発中のものです。 :05/02/21 01:36:18 ID:WEit4sjT
511 名前:名前は開発中のものです。 投稿日:05/02/20 20:34:40 CJMVLT7i
無知を棚に上げてソース見ただけで自分に都合のいいように妄想できる
>>507 の短絡的で軽快すぎる神経が羨ましい。
515 名前:名前は開発中のものです。 投稿日:05/02/20 20:39:34 CJMVLT7i
>>507 のPCが低性能過ぎるだけ。
PCが低性能でないなら
>>507 の脳が低性n(ry
516 名前:名前は開発中のものです。 投稿日:05/02/20 20:40:50 CJMVLT7i
>>507 晒しage
527 名前:名前は開発中のものです。 投稿日:05/02/20 21:04:29 CJMVLT7i
>>507 みたいな書き込みをするキチガイが社会と接点を持ってるって怖いねぇ
528 名前:名前は開発中のものです。 投稿日:05/02/20 21:05:57 CJMVLT7i
>>507 =恥晒しプログラマ(自覚なし)
536 名前:名前は開発中のものです。 投稿日:05/02/20 21:48:24 CJMVLT7i
知ったか厨の
>>507 がワケのワカランレスをくれやがったからだ。
あの異常者にWindowsSDKは1000年早い=死ぬまで無理。
537 名前:名前は開発中のものです。 投稿日:05/02/20 21:54:17 CJMVLT7i
俺は
>>507 に釣られたのかもしれんな。
あれでマジレスだったら
>>507 は相当ヤバイ。
>>507 他所でプログラミングの話なんかするなよ(藁
みんなおまえの知識量と想像力に嫉妬するから(藁
ID:1hRkWd0W にも驚きなんだけど >だけどこれは俺の予想だけどCPU使用率が100%で熱暴走するってのはデマだと考える。 >なぜならこの使用率ってのはアプリケーションがタスクのどのくらいの処理を使ってるかって意味で >あってCPU自体はいつも全力でまわっているはずだから。 >(例えばある処理をC言語で記述したとしてその処理を実行中は50%だった。 >いっそ100%で実行してくれれば2倍の時間で終わるのか?そんなことは無い。 >CPUはいつも全力で処理するしかないし50%も100%も糞も無い。) >偶然止まったとしてもその原因が熱暴走かどうかをPCは語らない。 >CPU使用率は100%で誰も困らない。 >これは覚えておいた方がいい。
>>552 >CPU使用率は100%で誰も困らない。
>これは覚えておいた方がいい。
大爆笑した
読み返してみたんだけどID:CJMVLT7iの必死っぷりが楽しい。
あと
>>532 、HALT命令は今のCPUにも存在するよ。勿論省電力目的。
誰も彼も知ったか全開で面白いスレですなあ
ちと気になったんだけど、Presentってホントにウェイトかかるの?
ヘルプにはシステムタイマ使うって書いてあるからPresentのVSYNCは
てっきりポーリングだと思ってたんだけど。
俺の環境では
>>536 のサンプルは
>>546 にしても変化ねーし。
VSYNCみたいなシビアな処理にウェイトなんてするのかしら?
それともキッチリしたハードウェア割り込みみたいなのがあるのかしら?
Present中にガベコレするのが俺の夢。
>>555 よっぽど古いボードでも無い限り大丈夫でしょ。
たしかにポーリングになってるクソドライバも実在するけど。
とりあえずXPなら付属のピンボールを起動して CPU使用率見ればクソドライバかどうかすぐ分かる。
どうせヒートランテストぐらいやってあるだろうから一ヶ月ぐらいはCPU使用率100%でも動き続けるだろ。
559 :
名前は開発中のものです。 :05/02/21 07:14:34 ID:4AS8EhFZ
RO厨が騒いでて読む気が失せた・・ 要約するか、レス番を示すかしないと誰も読まない気がする
一番売れてるアリスソフトのゲームが100%な時点でエロゲーはもう100%でいいだろ。
もういちご100%でいいよ
何でわざわざややこしいプログラム組んでんだこいつは 普通はSetTimer使うだろ
CJMVLT7iといい、
>>563 といいホントゲ製クオリティってのは素晴らしいな
っ [ SetTimer 精度 ]
っ[PerformanceCounter + SleepEx + timeBeginPeriod]
SetTimerは精度が低すぎる。 というのは置いておくとしても根本的な問題は、vsyncがとれない場合のちらつき対策で、 CPUを無駄に食うだけの単純なウエイトを提示している点。 何の解決にもなっていない。 しかもGDIの話をしているのに出したサンプルはDirect3Dで、 Presentがウエイトをとっているのを知らずに二重にカウントしている。 ちなみにウインドウモードではvsyncはとれないので、ちらつきに対する解決方法はない。 Presentのウエイトはフルスクリーンモードとウインドウモードで内容が違い、 ウインドウモードの場合はvsyncぶんの時間をtimeGetTimeで周期だけ合わせているだけなので ちらつき対策にはならない。
ちらつきがないということはパンチらもないということか!
>>567 > ウインドウモードではvsyncはとれないので
> ウインドウモードの場合はvsyncぶんの時間をtimeGetTimeで周期だけ合わせているだけなので
> ちらつき対策にはならない。
そんなことはない。
>1 フレーム 1 プレゼンテーションで実行され、ビームとの不一致によるテアリングを防ぐことができます。 とヘルプには書かれていますが、これは垂直同期一回分で一回更新するだけで、 更新期間中にリフレッシュが発生しないことを保証するものではありません。 そのため発生確率は低くなりますが、ティアリングを完全に抑えることは出来ません。
この流れを眺めててサンプルをチマチマと書いてたんだけど、 timeBeginPeriodってSleepの精度にも影響あるんだね。初めて知ったー。
>>567 >ウインドウモードではvsyncはとれないので
なんで?
なんかとれそうな気がするんだけど。
ライブラリ無しでやってる奴ってすごいな 気力が持たん
directxってライブラリじゃないの?
あ そうでした
576 :
名前は開発中のものです。 :05/02/21 22:51:36 ID:jlunUyfb
>>572 MSかNVかATIにでも聞けよ。
DirectXも8まではWindowedモードでの同期待ちサポートは一切なかった。
9になってもWindowedではエミュレーションに過ぎないが、
FullScreenとWindowedで同じフラグ設定で期待に近い動作が得られるようになった。
>>576 え?そうだっけ?
WaitForVerticalBlank関数でそれっぽくしてた覚えがあるんだけど
別にフルスクリーンでもウィンドウモードでも垂直同期信号の仕組みって同じじゃないの?
そもそもここがちがうの?
それともAPIがとってこれてないって問題なの?
WinAPIのときもそうだったけどDirectXの構造体の名前って 長くて全部大文字で見づらいですよね。typedef とか #define とかで別名付けてますか?
>>578 俺は見やすいから特に変えてない。
・全部大文字 → 構造体、変数の型、定数
・大文字小文字混在 → 関数、広域変数
・全部小文字 → 部分変数
だからこれに当てはまらないものは好きじゃない。intとか。
そういえばDirectXってプログラムから生成したポリゴンなんかをXファイルに保存できますか? ID3DXFile::CreateSaveObjectでアレしてID3DXFileSaveObject::Saveで保存できそうなんですけど。
できる
IDirectXFileで思い出したけど、このインターフェイス群使うとSTRING型のデータを取得する場合 内部で確保した領域のアドレス返しやがるじゃん。セーブする時もこちらで確保した領域のアドレス渡して、 しかもその領域はSaveData呼ぶまで生かしておかなきゃいけないじゃん。大変素晴らしい糞仕様だと 思ったもんだが、9.0cSDKで新しくの追加されたインターフェイスはこのヘン変更されてたりするのかしら?
ま、まともな人間ならローダやセーバくらい自分で作るけどな
趣味でやるには('A`)マンドクセ
IDirectXFileはXFileの入出力を自分で作るときに利用するインタフェイス。 D3DX系の高レベルAPIと違い、あくまでXMLのパーサのような役割しかしていない。
586 :
580 :05/02/22 10:21:57 ID:VY9kUom0
グラデーションつきの文字ってどのように出力すれば良いですか?
文字のα成分だけを使い、色は頂点カラーで描画すれば簡単。
DDSとかで全フォントもっとくのも手だな。
場違いとは分かりながらも書き込みさせていただきます。 当方、現在DirectX9.0bが入っております。 DirectX9.0cをインストールする際、データが止まり インストールに失敗いたします。 繰り返し試みたところ、「dsound3d.dll」という部分で毎回 止まってしまう模様。 インストールに失敗する原因は、 グラボなども原因に当てはまるのでしょうか? お目汚し大変失礼いたしました。
>>590 素直にもう一回ダウソした方がいいと思う。
592 :
590 :05/02/23 18:19:24 ID:FnrzVZ7u
>>591 氏、返答感謝いたします。
何度かダウソし、消してまたダウソを繰り返してみたのですが・・・。
9.0bを消すこともできないと聞きましたので。
DirectSoundのテストは正常に動きました。
!もでず、問題なしと出ているのですがcにすることはできないようで・・・。
グラボはXabreを使用しているのですがこれが原因でしょうか?
594 :
590 :05/02/23 18:31:08 ID:FnrzVZ7u
ご迷惑おかけいたしました。 本当に申し訳ない。
>>594 いや、そうじゃなくて、9.0c が入っていない状態だと 9.0b は正常に入っているわけだから
dxdiag でも正常に表示されてて……
一度再起動して、もう一回試したらどうか
フレームレートを一定にするには普通どうするんだ? 上で出てるがSetTimerでいいのか?
SetTimerかID:CJMVLT7iが晒してる奴が一般的。 ちなみにウチの講座で紹介してるやつはID:CJMVLT7iとほとんど一緒。 好きなほうを使え。
>>596 >>506 のにtimeGetTime()でDrawGraphics()を省略するかしないかでFPSを調整
599 :
590 :05/02/23 19:12:35 ID:FnrzVZ7u
>>595 ありがとうございます。
試みましたがだめなようです。
DirectX9.0cは諦めることにします。
それでは、失礼いたしました。
>>596 ゲーム処理用のスレッドを作って余った時間をSleepさせる。
ウインドウイベントの処理とメインループはきちんと分けて書くこと。
間違ってもCPUを無駄に使うだけのCJMVLT7iのような作り方はしない方がいい。
社会貢献度0のたかがゲームじゃねーか。
>>600 CPU100%仕様が嫌なら次のフレームまでの時間調べて
MsgWaitForMultipleObjectsあたりで待機してりゃいいんじゃないの?
ゲームアプリでUIスレッドを分離する意味がよくわからん。
スレッドを使う利点は、たとえばデータのロードなど時間のかかる処理を行う場合に、 ウインドウメッセージが処理される点にあります。 フルスクリーンならあまり気になりませんが、ウインドウモードだと、 データの読み込み中にウインドウが動かなかったり、 クライアント領域がリフレッシュされないような状態になります。
>データの読み込み中にウインドウが動かなかったり、 >クライアント領域がリフレッシュされないような状態になります。 そうでないゲームのほうが少なくないか? まぁきちんと作るに越した事は無いが。
CPU使用率100%の話がでてるけど、 エロゲーいくつかやってみた感じでいうけど、 CPU使用率100%でもアリスソフトのゲームの動作が一番いいぞ。(デスクトップ) CPU使用率100%でもいいからこういう具合に軽くならないかな。
ビューポートを使用せずに複数のウィンドウにオブジェクトを描画する方法って D3Dデバイスを複数用意するしかないの?
複数デバイスなんて用意しないでもアクティブなウィンドウにPresent() するように作ればいいだけなんでねーの。 複数ウィンドウだろうと単一ウィンドウだろうとビューポートを使うという コト自体に変わりはないわけで。 確かにレンダリングターゲットとかを細かく制御しないんであれば デフォルトのビューポートで事足りるんだろうけど。
おお出来た出来た。 Presentにそんな秘密があったとは全然気付かなかったよ
ゲームやってるときはゲーム100%でいいよ。 裏でなに動かすんだよ。
あらゆる状況を想定してゲームを作るとするなら、 ノートPCなどでビジーループでCPU使用率100%になるのは問題だろう。 大体ビジーループで待つこと自体Windowsでやるべきじゃないと思うけどね。
非アクティブ時に使用率下がれば十分だろ
UDとF@Hが常時稼動中です。
漏れのPCは、ファンがうるさいんで 待ちは、Sleep() してます。
CPU100%で作られてるような低レベルなゲームが 見向きされるわけもないから別にいいんじゃね?
自分で作るだけなら100%だろうとどうでもいいけど、 そういう駄目な書き方を他人に紹介するのはやめてほしい。
崖に激突して死ぬツバメがいるそうだ・・・・・・ そのツバメは得てして他のツバメよりもとても上手にエサを捕獲したりするのだが・・・・・・ 宙返りの角度の限界を親ツバメから教わっていないため つい 無謀な角度で飛行してしまう だが その親は教えないのではなく そのまた親から教わっていないので教えられないのだ 彼ら一族は短命なものが多くなぜ事故にあいやすいかも気づいてさえもいない
あすか120%じゃなくてCPU100%についてはもう独立スレでも立てれば? 俺自身は結論が出てるからどうでもいいんだけど。
だからいちご100%でいいって
>>618 ゲ製作板じゃないが……正にお前が望んでいるスレを俺は知ってる
分かった!cdかdvdで起動してゲームだけ動くようなシステムにすれば 100%でよいのだ!
DirectX9で、アルファ付きの樹木の画像をテクスチャにして アルファ=1の部分だけ、ポリゴンにテクスチャを描きたかったので、 SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE ); SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); と設定したところ、一見アルファ=1の部分だけ表示されているようなのですが、 Zバッファには、ポリゴン全体のZ座標が書き込まれてしまっているようで 手前の樹を先に描いて、次にその樹より奥の物体を描くと表示されないことがあります。 アルファ=1の部分だけ、ZバッファにZ値を書いて アルファ=0の部分は、Z値を書き込まないという設定って、どうすればいいんでしょうか?
αテストを使え。
αチャンネルとZバッファを併用するときは、 まずαチャンネルを使わないテクスチャから描画するのが定石。
SleepSleepうるせーな。 そんなに眠てーか? 例えば30FPSにしたくてSleep(33)使ってみろよ。 「描画の時間」+「33ms」になるから30FPSを大きく下回るだろ。 ちょっと考えれば分かりそうなもんだけどな。 なんだかんだ言ってもこれはアクションなんかでFPSを一定にしたい場合の話であって、 アドベンチャーやシュミレーションなんかばっかり作ってる厨房は寝とけばいいけどよ。
>>623 このように設定したらうまくいきました。ありがとうございます。
SetRenderState( D3DRS_ALPHAREF, 0x00000001 );
SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );
SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL );
>>624 手前にある物体から描いた方が、塗りつぶしの面積が少なくなって効率が良いと
DirectXのヘルプに書いてあった気がするのですが、
αチャンネルを使わないテクスチャを先に描くことで、何か利点があるのでしょうか?
>>625 描画時間を引いた値を渡せばいいだけ。
> ちょっと考えれば分かりそうなもんだけどな。
>>626 不透明では描画順序を気にしなくても影響が出ないけど、
半透明の場合は前に書いた物が透けて見えるので、
例えば一番先に書いてしまった場合、背景色とブレンドされてしまう。
>>626 α合成をするときは、先に描画してあるものの色と合成するから、
αチャンネルを使っているものを先に描画すると合成できなくなる。
αチャンネルを持つ画像は半透明のセロファンのようなものだと思えばいい。
例えば絵の上に赤いセロファンを乗せると絵は赤みがかって見える→α合成されている
セロファンの上に絵を乗せても赤みがかって見えない→α合成不可
効率が良くてもちゃんと表示されなければ意味がない。
利点というよりは、そうしなければならないと言ったほうがいいかもしれない。
>>627 えっ!?みんなそんなことしてるのか!?
それじゃこんな感じか?
while(1)
{
MyTime1=timeGetTime();
Draw();//描画
MyTime2=timeGetTime();
Sleep(33-(MyTime2-MyTime1));
Present();//転送
}
※メッセージ処理は割愛。
//レスがかぶったorz
つかミリ秒単位のSleep()なんてオーバーヘッドが心配なんですが。
tXeUE82Y ってもしかして CJMVLT7i ? バカっぷりが似てるんだけど。
625 名前:名前は開発中のものです。 投稿日:05/02/24 19:54:15 tXeUE82Y
SleepSleepうるせーな。
そんなに眠てーか?
例えば30FPSにしたくてSleep(33)使ってみろよ。
「描画の時間」+「33ms」になるから30FPSを大きく下回るだろ。
ちょっと考えれば分かりそうなもんだけどな。
627 名前:名前は開発中のものです。 投稿日:05/02/24 20:23:28 A40Js6AL
>>625 描画時間を引いた値を渡せばいいだけ。
> ちょっと考えれば分かりそうなもんだけどな。
629 名前:名前は開発中のものです。 投稿日:05/02/24 20:28:05 tXeUE82Y
>>627 えっ!?みんなそんなことしてるのか!?
ネタとしか思えん…
あの計算ではマイナスになる可能性があるから、ひねりどころか宙返りしている。 しかも描画時間ぶんといっても、その瞬間ではなく全体の経過時間から出さないと、 どんどん誤差が蓄積していくし。
while(1) { MyTime1=timeGetTime(); new CMakeWindow popupWnd; popupWnd.CreateWnd(); //Draw();//描画 MyTime2=timeGetTime(); //Sleep(33-(MyTime2-MyTime1)); //Present();//転送 }
あのさーtimeSetEventってつかわねーの?
>CJMVLT7i とりあえずループ中にSleep(1)でも入れておけ Sleep(2)でもいいけど
HLSL 2.0 でバリバリ書ける時代になって欲すぃ
>>640 Sleep(1)って効かない環境は入れてもCPU使用率100%になるじゃん。
入れなくてもならないときはならないし。
あんまり関係ないんじゃない?実は。
ゲーム機は100%ゲーム用処理
Linuxが全盛になってくれればゲームはCDから起動する 方式が主流になるかもね。
Sleep(n)とやっても、きっかりnミリ秒待つわけではなく 他に動いているアプリとの兼合いから、だいたいnミリ秒待つという具合でしょ
Windows上ではどうしても揺らぎが発生するので、
それを抑えるためには全体の経過時間からウエイト時間の算出と、
処理が間に合っていなかった場合の描画スキップを行う必要がある。
そもそもシングルタスク前提のコンシューマー機とは前提条件が異なる。
また別スレッド上でSleepで待つのは方法の一つであって、
その他にもマルチメディアタイマのイベントシグナルをWaitFor系で待つ方法もある。
Sleepよりは揺らぎの幅は抑えられる。
スレッド等の基本的なWindowsプログラムの知識が欠落している状態でプログラムを組むと、
>>642 のような意味不明なことを口走るようになるので気をつけた方がいい。
timeGetTime()とGetTickCount()どっちがいいんだろう?
ゲームなぞシングルスレッドで組むだろ。
>>646 某やね○らおさんのところでもえらい論争なったことが
ありましたな。WindowsではタイトなループではSleep(0);が
必要とか。
DateTime.Now.Ticks …………
timeGetTime()のがいいはず。 できればパフォーマンスカウンターを使いたいところ。
>648 最低二つはスレッド立てないか・・・? メインとサブといった感じで(内容は様々だが) >651 thx。 これまでGetTickCount使ってたので切り替えてみます
俺もシングル派だなぁ。マルチにあまりメリットを感じないのだけど、 サブの方は何に使っているのかな。 関係ないが、昔、処理がすぐ戻ることを知らずに、描画だけ別スレッドでぶん回してた事が…。
たかがガキのお遊びでスレッドなんか使うなよ
糞スレ
糞レス
>>646 てか、何言ってるのかよくわからない。
これで完璧だ。っていうソース簡単でいいから書いてうpしてくれない?
あ、もちろん動く奴ね。
まあ、匿名掲示板でそこまで頑張ってくれなくてもいいけど。
ちなみにもし晒してくれるなら、何かリアルタイムで動いてるものが描画されてるとうれしい。
あと、ZBufferクリアの全画面描画は必ずやって。(これで結果が変わったようなときあったから)
>>657 何かリアルタイムで適当に描画するソースをうpしてくれ。
そしたらそいつのFpsを一定にするような処理を書いてやるかも。
ちなみに、タイマーの実装ならyaneSDKのCFpsクラスなんかに
>>646 の言うウェイト時間の算出と描画スキップが実装してあるんで
覗いて見ては如何か。
要求仕様が不明瞭な「カンペキなソース」って・・
>654 私はマルチスレッド派かな。 といっても片方はそんなに動かないけどw ゲームループ(描画含む)用と ウィンドウズメッセージによる割り込み動作& メモリが正常かどうかを確認するためのスレッド用かな。
結構既出だとは思うけど、 ログが読めないので質問です。 メタセコアで、xファイルを作成したのですが 描画すると透けてしまいます。 どうにかなりませんか?
ここで聞くということはその問題はDirectXに問題があると? メタセコには問題がないという結論に達した理由は?
>>662 メタセコのD3Dで表示している場合は
きちんと描画されています。
xファイルに吐き出す時のオプションで
反転などチェック入れてみたものの、
どうにも、ダメだったので聞いてみました。
664 :
名前は開発中のものです。 :05/02/26 15:57:10 ID:6fXj7ojd
DirectX9の機能にて、ゲームで使うアイテムリストを自作してるのですがダルー フォントサイズによる調整、スクロールバーによる滑らかなスクロール、 選択時の通知、表示の遅さ、ソート…等々、気を遣う箇所が多くて…。 正直コモンコントロールのリストビューで間に合うのですが、 例えば市販ゲームで、コモンコントロールを使った物は2、3しか無いと以前ここで聞きました。 見栄えや描画速度等、リストビューでオーナードローした場合、どんなデメリットが有るのでしょうか? コモンコントロール以外にも方法が有りましたら是非。
HLSL ファイルの拡張子って何で fx が多いの? 何かの略?
>>664 そもそもWindowsコントロール
を使うことがかっこ悪いとされる。
>661 透けるんならRGBA値を確認してみろよ どうせDiffuseを1.0にしたら直るとかそんなレベルのもんだろ?
フルスクリーン時にIMEの変換ウィンドウを ちらつかせずに描画するにはどうすればいいんでしょう? お昼寝も出来ないくらい悩んでます。
済みませんageてしまいました
672 :
664 :05/02/26 17:53:45 ID:6fXj7ojd
>>666 いやー私もその感覚は痛いほど分かるのですが、正直些末に
拘っていると間に合わなくなりそうで。DXでこの辺の車輪も用意してくれないかな…。
今オーナードローでやってみたのですが、観た感じ違和感ないくらいまでに
コモンコントロール臭は消せました。spyでも使われない限りバレない気がします。
でもかなり描画速度落ちてるなぁ、困リング困リング
あとマウス専用操作になり、 ゲームパッドのみで プレイとかできなくなるな。
>>668 DirectXのバージョン関係ないよ。
なぜならWinAPIの話だから。
変換中や未変換の文字が拾って自分で文字表示。
PCゲームを起動する際、 「directsoundが使用できない」 と表示されるのですが、これにはどのような原因が考えられますか?
サウンドデバイスが動作していないとか、各種いろいろ。
>>672 最近のSDKに付属しているサンプルフレームワークには、GUIパーツも
用意されていぞ。
>>673 あー!仰るとおりで…一応キーでもフォーカス移るようにしてみましたが
どうももっさりするなぁ…。
>>677 と試してたら神レスキタ━━━━━━(゚∀゚)━━━━━━ !!
不勉強露呈恥。DXUTguiってヤツですか、こいつは凄い。
677さん皆さん、レスありがとうございました!
679 :
675 :05/02/26 19:54:43 ID:f4rBj9yH
いくらググってもDirectSoundを使えるようにする方法がわかりません… 考えられる原因をできる限り多く教えていただけませんか?
>>679 ・そのゲームが要求しているバージョン以上の DirectX が入っているかどうか調べる
・サウンドデバイスが DirectX に対応しているかどうか調べる
・というか、素直に DirectX インストールしなおせばいいのかもしれないな……
というか、現在の状況を少しでも書いてくれなきゃこっちとしても……
>>675 ソフトウェアが必要とする能力をSoundカードが備えていないとか。
って微妙にスレ違いな気が。
682 :
675 :05/02/26 20:16:28 ID:f4rBj9yH
すいません。ここはゲーム製作板だったのですね(グーグルから来ました) ・HDフォーマット後、OS再インストしたのでドライバ等が不足してるのかも ・USBサウンドを使用している ・directX診断ツールではサウンド異常なしと出た(音も出ました) 状況はこんな感じです。説明足りなくてすいません
>>682 いや、俺は面倒見てもいいんだけど DirectX のバージョンを先に言ってよ……
>>682 あ、ついでに HD フォーマット前は音が出たのかどうかも
688 :
名前は開発中のものです。 :05/02/26 21:27:09 ID:Ps6SC7i+
690 :
675 :05/02/26 22:15:31 ID:TOTBv+5W
ここは親切なスレですね。こんな厨に付き合ってくれてありがとう DirectXはVer9です。再インストは難しいですがなんとかやってみます ゲーム名は「Guilty GearXX#RELOAD」です。 必要スペック表にDirectSound必須ってあります。 また、再インスト前はPCゲームをまったくしたことがなかったので 以前も同ゲームで音が出たかどうかはわかりません。 それと、動画やMP3等は普通に音が出せます。
>>665 外国人仕様
エフエックス←エフェクス←エフェクツ←effects
fxってCgViewerかなんかのデフォルト拡張子じゃなかった?
法線をワールド座標系に変換するときは、 ワールド行列の逆行列の転置行列を 掛けますが、法線をビュー座標系に変換 するときも、ワールド行列xビュー行列の 逆行列の転置行列を掛けなければなりませんか? (ワールド行列はスケーリングを含む)
ちょ、ちょま!ちょっ待てよ!!
>法線をワールド座標系に変換するときは、 >ワールド行列の逆行列の転置行列を >掛けますが これを知った方法で >法線をビュー座標系に変換するとき も調べてさ、その調べた結果が >ワールド行列xビュー行列の逆行列の転置行列 を掛け算しれば、そうんじゃないの? 調べても、そんな事が出てないならわかるよなw
逆だとか転置だとか、 問題はそんなところじゃなくて ローカル→ワールド変換 ワールド→ローカル変換 が理解できてねぇことだって気が付かないほどアホな奴は 初心者スレ逝け馬鹿。
ゲ製板って時点でレベルが低い事くらい覚悟しとけと。
>>697 目から鱗が
いや、本当にそうなんだよなぁ…(遠い目
>>693 恒例の初心者叩きに巻き込まれたアナタに
つ[ゲームプログラミングのための3Dグラフィックス数学]
>>699 正直半泣きですが、その本や推薦図書で紹介されてる本
を読んで精進します。三日後には
>>693 を見て笑える
くらい頑張ってみようと思います。スレの皆さんには迷惑を
かけてしまったようです。すいませんでした。
みなさん、ランダムの関数は何使ってますか? 我はrand()使ってます。
>>702 boostのrandom.hppに選り取り緑ありますぜ。
>>705 これってこんな感じで使えばいいんだよね?
init_genrand(timeGetTime());
iNum = genrand_int32() % imaxNum;
昨夜見たときは、702がスレ違いと罵倒されて終わりだろうなと思ってたけど、意外な展開だ
わざわざうざい
710 :
名前は開発中のものです。 :05/02/28 18:38:43 ID:U0d9Rr28
ダイレクトXはCOMで創られていると聞いたんですが、 #import "D3D9.dll" みたいな使い方は出来ないんでしょうか?
そんな局所的に言われても とりあえず無理だといっておこう
サンプル通りにやるのが一番簡単。
#include"D3D9.dll"
714 :
名前は開発中のものです。 :05/03/01 16:58:34 ID:8meQbJom
ビルボードやってるんだけど、Zバッファの恩恵は受けられないものなんですか? 板ポリ(ビルボード)をポリゴンの周りをくるくる回しても板ポリがずっと上に表示されるんです
sageてなくて酢味噌 D3DXCreateTextureFromFileExでカラーキーを指定した場合、関数はテクスチャの該当部分のα値を0にするんですか? フォーマットをR8G8B8にした場合抜けてなかったんでそうかなと思ったんです
>>714 板ポリのZ深度がどこになるのかはきちんと設定してる?
>>716 Zバッファ無効にしたままでした 吊ってきます∧||∧
> 板ポリのZ深度がどこになるのかはきちんと設定してる? これはどういうことですか? 今こんな感じで板ポリ作ってます // 頂点バッファを生成 if (GetD3DDev()->CreateVertexBuffer(sizeof(BILLBOARD_VERTEX)*4, 0, D3DFVF_BILLBOARD, D3DPOOL_MANAGED, &m_pVBuffer)!=D3D_OK) { return FALSE; } BILLBOARD_VERTEX* p; // バッファのロック if (GetVBuffer()->Lock(0, sizeof(BILLBOARD_VERTEX)*4, (BYTE**)&p, 0)) { return FALSE; } // 頂点を設定 // 左上 p[0].xyz= D3DXVECTOR3(-fSizeX/2, fSizeY/2, 0.0f); p[0].u= 0.0f; p[0].v= 0.0f; p[0].c= 0xffffffff; (ry
Z深度っつーぐらいなんだからやっぱりZじゃねーのけぇ?
今までDirectX8SDKが入っていたPCを初期化して、新しくDiretcX9をインストールしました。 インストール過程でRetailかDebugかの選択肢がないまま、インストールが完了してしまいました。 インストーラを間違えたのでしょうか?どっちで入ったのか不安です。 バージョンはDirectX 9.0 SDK (Summer 2004)です。
選択肢が無いのはdebugじゃなかったっけ
>>720 アンタのパソコンにどっちで入ったかなんてここの住人が知るわけねーだろ。
それぐらい自分で確認しろや。
その確認もできないのならアンタにDirectXはまだ早いよ、今まで何を作ってたにしても。
コントロールパネルで切替出来るよ
>>723 d!!
・・・って日本語SDK入れたのにこれ英語ですか・・(´・ω・`)
Direct3DタブのDebug/Retail Runtimeってとこですね?
みんなDebugで入れるから、インスコんときの選択がなくなったのかな・・・・お騒がせしました。
>>724 もし釣りでないのなら、本気で頭の中にカニミソ詰まってないか検査行った方がいいよ
>>718 板ポリも対象となるワールド空間に置いていなければ、
重ね合わせは意図した形にはならない。
>>724 このキチガイは何でそんな基礎知識もないのにDirectX使ってるわけ?リア厨?
このキチガイは何でそんなことぐらい検索できないわけ?真性の知的障害者?
こういう馬鹿が何か作ると、
「危険なプログラムや間違ったプログラムを含んでいるが、とりあえず思い通りに動く」
っつー糞アプリを公開する可能性大だから、公開してほしくないね。人の迷惑だし。
//どうせまともな判断もできない異常者のことだから公開するだろうけど。
ID変えて必死な人がいますね
インストール過程でRetailかDebugかの選択肢がないままインストールが完了してしまったのですが、 インストーラを間違えたのでしょうか? 誰か助けてください。
選択肢がないんなら初めから選択できないってコトだろ。 そんなコトも分からんほどなのかね。
最近のインストーラって選択肢出てこなくない?そうでもない?
732 :
名前は開発中のものです。 :05/03/02 16:38:39 ID:MuLREcfZ
>>732 C# でやったときには DirectX 以外にも幾つか必要
・『アプリケーションを正しく初期化できませんでした』
.NET Framework を入れてください
・『アプリケーションでハンドル出来ない例外が発生しました』
何かプログラム上で例外が発生していないか確認してください
または、Managed DirectX ランタイムを入れてください
おそらく MDX ランタイムが入っていないのかと推測
これがあるからC#はな
735 :
sage :05/03/02 16:48:05 ID:MuLREcfZ
>733 MDXって、こちらが再配布しないといけないのかな?
>>734 NET Framework 自体は使いやすいんだけどな
Longhorn に期待しようか
>>732 ちなみに、俺の PC では問題なく動いた
入れているのは11月の SDK
738 :
sage :05/03/02 17:00:11 ID:MuLREcfZ
>736 ありがとう、具体的な回答でとってもありがたいです。 やっぱ、Longhornが出ないとお話にならないね。
デバッグしたらこんなの表示されるんですけど、なんかヤバイですか? D3DX: (INFO) Using x87 Instructions Miss rate before optimization: 2.324939 Miss rate after optimization: 1.135545
上は知らないけど、下は 最適化で指定した頂点キャッシュの結果ミスキャッシュが こんだけ減りましたよって意味。だから全然やばくない
まずどこで落ちてるか調べろ。
ヒョー(・∀・)exeコェー
実行する気になれんな
他人デバッグ〜 ( ・ v ・) 〜!!!
良くexeで上げる気になるな
exeで上げんな!タコ。誰も実行しないって
落ちるところぐらいデバッグしていけば自分で見つけられるだろ
752 :
739 :05/03/02 23:43:05 ID:/6oiQZTS
>>496-498 そうなのか?じゃあ、2Dゲームである限りDirectXを使う必要はないわけだな…。
どこをどう読んだら…
>>753 VSYNC待ちはしろよ>GDI
モニタによってはちらつくからな
VSYNC待ちがめんどくさいならDirectX使った方が楽かもね
BBXの他人デバッグ機能移植?
コテハンってtrueバカが多いな。
if (
>>758 ) >>758->Release();
最近DirectXはじめてとりあえず弾が画面を跳ねてバーにあたったら弾が跳ね返るというやつを作ってみたのですが、 何故かバーの形が縦に2倍ほど伸びています 元サイズが64,16で実行すると目測64,32 弾と背景は当然そのままの形です 何分素人なもので何をここに書けばいいかわかりませんがとりあえず・・・ 読み込み D3DXCreateTextureFromFileEx( lpD3DDevice,FileName,D3DX_DEFAULT,D3DX_DEFAULT, NULL,NULL,D3DFMT_UNKNOWN,D3DPOOL_MANAGED, D3DX_DEFAULT,D3DX_DEFAULT,D3DCOLOR_XRGB(0,0,0),NULL,NULL,&lpObject ) 描画 lpD3DSprite->Draw(lpObject,NULL,NULL,NULL,NULL,&Pos,D3DCOLOR_ARGB(255,255,255,255)); ちなみにフルスクリーンでバージョンは9.0です
>>761 >>465 あたりが答えてる。まあ質問は違うけどね。
画像サイズを64,64にすれば直る。
元サイズ64,16はそれぞれ2^nなわけだが
aspect比とか。
767 :
sage :05/03/03 15:18:23 ID:mmIaAc3X
732ですが、 Managed DirectXがインストールされているのを確認するよい方法ってないかしら?
768 :
766 :05/03/03 15:29:05 ID:4Np6BY+C
ニアクリップの値を変えたら直りました。 すみません。
ニアクリップの距離ってどのくらいがいい感じなのさ〜? 10位だと、アップになったとき描画されないじゃん、 チューしようとして近づいてきた人の顔が、欠けたりしたら怖いっしょ? かといって、0.01とかすると、遠くの風景のZソートが汚くなるし・・・ グラボしょぼいから浮動小数点や32bitのZバッファつかえないし〜
逆にFarを小さくしてみるとか?
>>770 うおー!!なんでそのことに気がつかなかったんだ!
サンクス
>>767 対象のアセンブリ(Microsoft.DirectX.dll など)を Assembly.Load() してみるとか。
存在しなければ例外が送出されるはず。
>773 落としてコンパイルしてみたか? そのままだと通らないだろ? includeできないっていわれないか? あとはそのファイルがincludeできるようにすればいいだけでは? うだうだ言う前に落としてコンパイルしてエラーをつぶせ >こういうことに関しては こういうことも何もC言語プログラマとして初心者レベルだぞ
>774 IDカコイイ >762 お前さんは何が言いたいんだ?
776 :
762 :05/03/04 15:07:08 ID:+MqpW/oj
>>775 正直あの時は頭がマジでおかしかった。
で、罪滅ぼしに同じようにやってみたけど再現できなかった。 orz
もしかしたらD3DXCreateTextureFromFileExの4番目の引数を
16と指定すれば直るかもしれない。
本当に役立たずですみません。逝ってきます・・・
お逝きなさい
>772 サンクスです。 この書き込みの後に、さらに調べたところ、 DirectX9.0をインストールしても、Managed DirectXはインストールされないことがわかりました。 なぜ? インストールの実行ファイルにパラメータをつけて実行するとインストールされることがわかりましたが、 普通の人は、パラメータ指定をして実行など、めんどくさくてしないよね。 Managed DirectXのランタイムを勝手に配布してはならないと、他のサイトで誰かが言っていましたが、 エンドユーザーに、自分でインストールしてくださいというのは、かなり難しいよね。 ちょっと、落ち込みそう。
>>778 そう。それこそが Managed DirectX が流行らない本当の理由だと思われ。
実行速度を気にしているのではないのだ。
この制約さえなければ、今すぐにでも乗り換えるのだが…。
ちなみに、.NET のアセンブリはバージョン間で互換性がないので、
例えば、既に MDX Summer 2004 を導入していたとしても、
新しく入れるゲームが October 2005 を要求していたら、
また「インストール作業」を実行しなければならない。(逆も同様。)
果たしてユーザーはこれを納得してくれるだろうか。
780 :
名前は開発中のものです。 :05/03/05 21:16:00 ID:9JRlst40
結局フレームレートを一定に保つ方法がわからないんですけど。
CJMVLT7i のは分かりやすかったけど叩かれてるし、
Sleepも分かりやすかったけど揺らぎがどうのって言ってるし、
>>637 のソースは俺には理解できなかったし、
検索してもフレームレートより移動速度から算出する話ばかり出てくるし。
Windowモードでの正確なフレームレートを求めるなら、 メッセージループとメインループは別スレッドにして、 メインループではQueryPerformance系関数で時間を取得しつつ Sleep(0)で適度にCPUを別スレッドへ、という方針がいいと思う。 一度メッセージループとメインループを同一にしてみた(PeekMessage)けど、 FPS60を目指しても結構ずれが生じるのよね。 FPS50〜70ぐらいでぐらぐら。
ぶっちゃけホントにテキトーな方法でも(つってもSetTimerはさすがにダメだが) フルスクリーンなら問題は起こらない。
そしてまた環境条件と要求がバラバラのまま不毛な議論に突入。
社会の屑ゲームごときで熱くなるなって
メッセージループとメインループを別スレッドにするのはいいが、 時間を取得するのはtimeGetTimeレベルの精度で問題ない。 どちらにせよ精度はSleepで殺される。 計測には時間をフレームごとに区切らないで、累積された合計を使う。 どちらにしてもWindows上では一回のフレームは揺らぐので、 長期的に一定回数になるように割り振るようにする。 時間が余ればSleepに突っ込み、足りなければ描画をスキップして、 追いつくまでメインループを回す。
おとなしく多スレッドにしてVBlankを待てよ
QueryPerformanceCounterはQ274323の問題があるから使わない方がいいかと。
この問題を抱えてるシステムはまだ結構多い。
使うにしても、timeGetTime等に切り替えるオプションは必須。
>>781 それ君のプログラムが間違ってるだけだぞ。
基本的にメッセージループと同じスレッドにしょうが、別スレッドにしようがfpsの
安定度は変わらない。ウィンドウの移動中にDispatchMessageから処理が戻らない
ことが問題になる程度。
フレームレートが落ちるなら分かるが、60目標で調節していて70まで行くってのは
プログラムに問題が無ければ有りえない。増える方向に狂うのはせいぜい1まで。
何が間違っているのかは大体予想つくが、スレと関係ないので省略。
>何が間違っているのかは大体予想つくが、スレと関係ないので省略。 そこまで言っといて省略かよw ワラタww
単発質問スレを立てるのもなんなのでここで聞きます(既存のスレがある場合誘導お願いします) Windows Media オーディオ ファイルや MP3 オーディオ ファイル (mp3)を MIDIシーケンスに変換できるソフトウェアを教えてください 自分でググったものの見つからなかったので宜しくお願いします
ココじゃねぇよorz ソフトウェア板に逝ってくれ。
>>790-791 すみません^^;
質問を変えてしまいすみませんが
いまDQルート5とNepheshelとというフリゲをしているのですが
両方とも音楽が合わない所があってPCにある他のゲームのサントラの音楽を上書きしようとしたのですが
前者の場合は既存のファイル名と同じにするだけで簡単に上書きできたのですが
後者は前者の方法では上書きできませんでした
どうすれば上書き出来るようになるのかご教授お願いします
すみません誘導先に書き込むの忘れていました・・orz
釣り師乙 釣りじゃないにしても場違い
>>792 本物の2ch初心者だと思ってマジレスするが、
ちょっと書き込まずに色んな板見て回れw
その質問の答えを知るのが2、3日遅れても差し支えないだろうし。
レス番号のつけ方やググるという表現から、釣りのような気がしないでもないが。
>QueryPerformanceCounterはQ274323の問題があるから使わない方がいいかと。 GoogleでQ274323を検索したらNyaRuRuのページしか引っかからなかった。 他にQ274323について説明してるページない?
ウホッ いい機械翻訳
>>人的な確認・修正が加えられたものではありません。 これが書かれてる時点で人的、かつ作為的な雰囲気が漂う。
>QueryPerformanceCounterはQ274323の問題があるから使わない方がいいかと。 実際に問題になるハード構成ってそんなにあるの? DirectXのユーティリティクラスでもパフォーマンスカウンタ使ってるし 実際に問題になったという話は聞いた事ないんだけど。 DirectXのサンプルも全部使ってるわけでしょ。
>>800 それを調べる手が無いから使わないほうがいいっていってんじゃないの?
この辺の判断は賭けになっちゃうね。
色々な構成のマシンを調べてみないとなんともいえない。
個人的には環境なんてそこまでこだわるもんじゃねーと思うけどね。
聞いた事なんてなくっても信じられんような動きをするハードは色々見てるから
何がどう報告されても俺はいまさら驚かないけどね。
同型機で起こらないと思っていたら、メモリとハードディスク容量満杯で現象再現成功なんてのもあったしw
ただ、怪しいかどうか迷ったら手は出さないにこしたことない。
もう、俺は理論的に考えるのは止めた。
けど問題となる確率が5%ぐらいだったらそのハード構成の人達を 切り捨てるのもアリだと思う。ぐぐっても出てこないような問題なら なおさら。 そう割り切ればDirectXのサンプルソースとか見てパフォーマンス カウンタ使うのは作法通りだし楽でいい。 問題があるとすればハードを出したメーカーであってソフトじゃない。
問題があるのはM$でしょ
切り捨てるか否かは開発者が各自で決めればいい。 私は危うきには近づきたくないので、危険は避けるけど。 実際のところ両方ともなくても困らないし。
QueryPerformanceCounterのパフォーマンスはどんなもんなんだろ。 STGなんかだと有用なんだろうか。数%を切り捨てる価値はあるのかな。
精度はCPUに依存します。 さらにMultiCPU環境では利用するプロセッサを固定しておかないと、 返る値が想定したものと異なることがあります。 使う場合はその辺りの事情も考慮して利用するようにしてください。
長年の経験から、こういうのはみんな安全サイドに振ることに決めた。 たとえ0.1%でも積み重なるとえらいことになる。 ちょっとのスタンスの差が、結果的に10%とか20%とかを生み出す。 別に体感でわからんしね。 1ms未満なんて楽器の演奏でもまず問題にならんブレだし。
2Dのゲームをやる場合はDirectX9.0よりも8.0の方が軽いということはありますか? また、オンボードのVRAM11MBでDirectX9.0は必要でしょうか。 よろしくお願いします。
やってみりゃわかる。
次バージョンって名前どうなるんだろ? LPDIRECT3D9 → ??
俺の予想 LPDIRECT3D に回帰する。
Q274323の問題をかかえているのはPentium3の頃のシステムだから、 そろそろ切り捨ててもいいのかな? うちではまだこれに該当するPCが現役稼動中だが。 ググっても出てこないのは、この問題がプログラムが動かなくなる 類のものではなく、動きがぎこちなくなるだけだから、問題として 報告する人があまりいないんじゃないかね。 あとはQueryPerformanceCounterがおかしいと気付いていても、 Q274323とは書いてないとか。
>>812 Pen3である問題なの?
じゃあよしといたほうがいいな。
エロゲユーザーで基本的にPC捨てないでしょ?(エロゲとはいってないが・・・)
ノートばかり買って必要な情報はROMに焼いちゃうくせが付いてるから
Pen3程度のマシンならまだまだ現役なんじゃない?
DirectX関係のスレだと低技術低スペック=エロゲーマーなのな。 とりあえずコーエーに謝っとけ
>>812 > Q274323の問題をかかえているのはPentium3の頃のシステムだから、
ずいぶん断定的だけどソースは?
>>815 Q274323のとこに問題のあるシステム情報が載ってるだろ。
デバイスIDから該当するチップセットを調べると440BXあたりが該当する。
i815は大丈夫なので、Pentium3全てを切ることにはならないな。
どうせゲームでは1msの精度で十分なんだから、無理にQPCを
使う必要はないと思うがね。
>>779 亀だけど、December2004 を要求しているときに Feburary2005 が入っていればそっち使うよ
メジャー・マイナーのバージョンが等しければ、アセンブリには互換性があると .NET は定義している
けど、Summer2004 で随分と構造が変わっちまったからなぁ
バージョン管理が MDX は適当だった過去があるから
>>761 CreateTextureFromFileでの拡大の問題は第5引数(MipLevels)を1にすると
よいようです。
821 :
名前は開発中のものです。 :05/03/10 03:27:51 ID:nfjuTVMK
Xファイルのアニメーションに関して教えていただきたいのですが現在は Xファイルをいくつか用意してそれを描画してアニメーションを表現しています。 そろそろこの方法も限界を感じているのですが私が知っている中では 各関節などを部分的に回転させたりして行なう方法なんですが他になにか方法 ありますでしょうか?それとそういったXファイルのアニメーションに関して ヒントやソースがあるHPありましたら教えていただけますでしょうか。 よろしくお願い致します。
結局検索しかないよ
823 :
779 :05/03/10 09:23:54 ID:XaLryfB+
>>819 これ以上は、ややスレ違いになりそうだけど、
誤解があるといけないので確認させてください。
Version クラスの説明には、確かに互換性云々とありますが、
それは従来の“概念的なバージョン”の話であると思われます。
アセンブリが「厳密な名前」で署名されている場合は、
Build/Revision が違うだけでも異なるマニフェストである
と認識され、読み込み時に FileLoadException が送出されるはず。
構成ファイルで bindingRedirect を設定しない限り。
で、件の MDX は、最近は Direct3DX しか更新されていないらしい。
他の dll は Summer 2004 からアセンブリバージョンに変化がないので、
D3DX を使用しなければ(表面的には)問題なく動くと。
(
>>779 は "Summer 2003" と "October 2004" の間違いです…。)
…この辺りのややこしさも敬遠される理由かしら。
すみませんが、pickサンプルってsdkから消されましたか? 見つからないんです・・・
大分前に削除されたと思う
>825 ぐは、やっといろいろ終わったから本腰入れようと思ったのに・・ もう遅いか・・・ ありがとうございました
827 :
名前は開発中のものです。 :05/03/11 00:50:09 ID:QjL6ioRM
立方体や直方体の当たり判定ではなく、 視錐台のような形のポリゴンの中に オブジェクトが有るかの判定はどうすればいいのでしょうか。 MinMaxのような方法とは全く違う方法を使わないといけない??
>>828 視錐台の6面に対して、オブジェクトが面のどちら側にあるのか調べればよい。
830 :
828 :05/03/11 21:08:53 ID:lP583sDC
>>829 トンクス。
トンクス。って何だろう。笑える。
831 :
名前は開発中のものです。 :05/03/12 00:32:35 ID:1N+J4R+w
DirectXで3Dのレースゲームを作ろうと思っているのですが、 視野をπ/4として、それ以外の見えない範囲のレンダリングはどうするんですか? 視野に入らないものも全部レンダリングするものなんですか? それとも計算して視野に入らないものはなるべくレンダリングしないようにするんですか? レースゲームでコースをどうやって表示するのかなと思いまして。
>831 そこまでわかってんならさっさと実装汁
規模によるね。 趣味の制作で手っ取り早く完成させたいなら、とりあえず、視野外のも全部描いちゃえば良い。 完成させたうえで、速度を上げたくなったら、視野外のを描かないように最適化する。 自分がもっとも作りたい部分以外は、楽に実装できて安定動作する手法がいいと思うよ 検索キー → カリング
まだ検索してはないんだが・・ かじり始めで漏れもちょっと疑問に思ってた。 地形マップなどのドでかい物も、 小物と同じ要領で作成するんですかね?
835 :
831 :05/03/12 01:40:19 ID:1N+J4R+w
>>832-833 ありがとうございます。
とりあえず作って、それから考えたほうがよさそうですね。
まず作ってみます。
>834 そんな君には 検索キー → Level of Detail
837 :
名前は開発中のものです。 :05/03/12 02:46:41 ID:QSbIxStU
最近のゲームはDirect3Dを使うのが一般的ですか? もうDirectDrawは使われなくなってますか?
半透明やら加算ブレンドを使いたい時はDirect3Dの方が良いねぇ そういったフューチャーを使わずに純粋にドット絵オンリーなら DirectDrawもいいんだけどね…ただ若干地味な印象受けるよな
古い環境で動かせるってのはメリットだけどね。
フィーチャーとフューチャーは区別しようや
841 :
名前は開発中のものです。 :05/03/12 13:34:07 ID:s/dTpuQs
カリングなんて後から増設出来るもんでもない エンジンの基幹
よくいるんだよな。カリングとクリッピングを混同してる馬鹿が。
843 :
名前は開発中のものです。 :05/03/12 15:11:37 ID:s/dTpuQs
お前は日本語の乱れを嘆く学者か? これ流行ってんの?うざいんだけど
君には学位はあげられないね。学会発表もはずかしいからやめてくれ。 論文なんてはずかしくて出せないよ
845 :
名前は開発中のものです。 :05/03/12 17:27:27 ID:r/UPuCnl
質問、よかですか? D3DXVECTOR3(位置)とD3DXQUATERNION(回転)で頭部ポリゴン(以下、A)の回転を制御しているとします。 Aが向いている方向に位置をスライドさせたいのですが、どうすれば良いのでしょうか? (Aの向きは動的に変化します)
>>我武者羅 Aの行列に、0.05fだけスライドさせた行列を掛ければいいのでは?
俺はD3DXMatrixLookAtLHの結果をD3DXMatrixInverseして それをD3DXQuaternionRotationMatrixでクォータニオンに変換してるけど、 もうちょっとマシな方法があるはずだよな
848 :
847 :05/03/12 17:52:28 ID:l67B4xHJ
あーすまん質問の意味を間違えた。 D3DXMatrixRotationQuaternionで作った行列でD3DXVECTOR3(0.0f,0.0f,1.0f) をD3DXVec3TransformCoordしたものをAの位置ベクトルに足すってやるかな俺なら
そもそも
>D3DXQUATERNION(回転)
が分かっても向いている方向が分からないので、その情報だけでは無理。
基本ベクトルが分かれば
>>848 のようなやり方は可能。
>>我武者羅 このスレは放置か?
>Aの行列に、0.05fだけスライドさせた行列を掛ければいいのでは? >Aの行列に、0.05fだけスライドさせた行列を掛ければいいのでは? >Aの行列に、0.05fだけスライドさせた行列を掛ければいいのでは?
>>847 できました!
D3DXVec3TransformNormalでも同じ結果が得られました。
ありがとうございました。
>>我武者羅 よかったないろんな板で答え貰えて。 いかにしてマルチがばれる前に答えを貰うかが勝負だな。
マルチでも放置せずにちゃんと返答してれば良いとは思うがなぁ。 皆が全部のサイトを見てる訳でも無いんだし。
そもそもマルチが駄目な理由って何だっけ
たいしたことないよ。失礼なだけ。 教えて君養成マニュアル でぐぐれ
DirectXって基本的にGPUコマンドをダブルバッファリングして、 描画中に次のフレームのコマンドを作成するって使い方は出来ないですよね? OpenGLのディスプレイリストならそれで高速化出来そうですが・・・。
よくわからん GLでもVBOが一番効率的だと知っての発言か?
DrawPrimitive()系関数の間それを呼び出したスレッドは拘束されてるのかって話じゃない? 俺は知らないけど、もし拘束されてるとするならマルチスレッドにすれば多少早くなるんじゃないか
描画中に次フレームの描画コマンドとなると、
日曜プログラマの頭では自力で実装するしか思いつかないなあ
過去に2Dシューを作るときに、
垂直同期待機中にCPUで出来る次フレームの作業をするため
マルチスレッドのシステムを作ろうとした。
だけど入力デバイスに依存する処理は行うことが出来ず、
しかもほとんどが依存する処理なもんだから、
結局めんどくさくて完全に同期を取るようにした
>>859 DrawPrimitiveは拘束されんよ。
それに↑みたいに完全に同期を取っても問題ない処理の軽さなら速くはならない。
CPUの作業時間帯がスライドするだけで結局は同じだけCPUに作業させるわけだから
>>856 違う違う、各所で聞いたら無駄が出来るからだよ
>>860 そもそも発想がおかしくね?
垂直同期信号待ち状態のときに次のフレーム処理はやっても意味が無いよ。
だって垂直同期信号ってゲームのワンフレームの一定時間をカウントするのにも使ってるわけじゃん。
だからこれを待ってるときってのは「待ってなきゃいけない時間」なんだし。
これより先にフレームの処理をしちゃうとしたら「プレイヤーの入力はいつとってくればいいの?」って話になるじゃん。
0.プレイヤーからの入力取得
1.内部処理(0の結果を必要とする)
2.描画処理(1の結果を必要とする)
3.垂直同期信号待ち
4.フリップ(2の結果を必要とする)
5.プレイヤーからの入力取得(3の時間待ってからでないと取得する意味が無い)
6.内部処理(5の結果を必要とする)
7.描画処理(6の結果を必要とする)
8.垂直同期信号待ち
9.フリップ
A.プレ・・・以下略
って並べるとわかるけど1つとして、並列処理ができる処理が無いんだよね。
>>862 入力に依存しない処理なら垂直同期待機中でも行えるからね
例えば揺れ動く木々とか水面の波の処理とかが入力非依存な物理シミュだったとか
ところが2Dシューだと入力に依存する処理ばっかだからなあ、という話
追記だけどよく考えたら敵キャラとか敵弾の移動とかは
前フレームの自機の状態を参照して行動するわけだから
入力非依存で垂直同期待機中に行うことが出来るわけか…
ただ結論は
>>860 の通り処理が軽くなるわけではないしどうでもいい話かもしれん
>>863 それってユーザの入力の影響を受けたものの影響までうけない(つまり、ユーザが蹴ったボールに当たる等が無い)
保障までされてないと意味無いよね。
つまり、完全に独立して動いちゃってるもの。
そんなものに物理シミュなんて使う必要無いし、時間がかかるんだったらあらかじめ計算しておいてだな以下略
って話になるから結局どんなゲームでもそんな仕組みはいらないと思う。
意味がないのは同意だが、秒間60フレームと考えて、 操作を後のフレームに持ち越し、1/60秒の操作誤差があって動作が遅れたところで、 普通の人間は気がつかない。 この場合入力操作云々ではなく、プログラムを複雑にしてまで得られるメリットがないのが問題。
>>865 例として、背景にパーティクルが1万個表示されるようなのは?
あらかじめ計算しようとすればできるだろうが、普通はやりたくないよな
>>867 そういう場合は動画を貼り付けるとか別の表現方法を探しちゃうね。
「パーティクルを1万個使うこと」っていうお題がまずありえない。
やるにしても10000個のうち100個は同じ動きをするとか(そうすると100X100で10000)。
正直、10000個のパーティクルの処理をする奴はさっさとクビ切った方が後のためだw
>>865 「前フレームにのみ依存するオブジェクトの行動は垂直同期待機中に処理を行える」
というのが大切であり、それ自体の処理の重さに関しては関係がない。
今までは待機だけだった時間に処理が行えるのならば、垂直同期後に使えるCPU時間が増える。
重い処理が別にあるなら、新しく出来た時間で更に処理を行うことが出来る。
重い処理が別に無いのなら意味が無いのは
>>860 に書いた通り。
少し話はそれるが速度が遅けりゃ事前に計算って訳にもいかないもんもある
水面とか事前に計算したら膨大なテクスチャになるが
リアルタイムで波動方程式を解けば処理は軽いし綺麗だ
実際に水面シミュはDoubleSteelとかに使われているわけだ
>>869 >リアルタイムで波動方程式を解けば処理は軽いし綺麗だ
軽いんならいいじゃん。
なんの話をしとるんだね。君は。
872 :
名前は開発中のものです。 :05/03/13 16:10:23 ID:cowuc2/p
SkinnedMeshでアニメーションをループするのをやめて ループする回数を決めて再生させたいのですが、 どこを変更すればいいのでしょうか? 時間のある方、ヒントください。
>>842 カリングとクリッピングの違いを教えて下さい。
クリッピングはカメラに写らないポリゴンをレンダリングしなことですよね?
カリングもカメラに写らないポリゴンをレンダリングしないことじゃないんですか??
クリッピング:視錐台外のポリゴンを描画しない カリング:裏向きのポリゴンを描画しない
>>878 話の伝わらない奴に話をするのは無駄なのでサヨナラ。
>>873 カリングはクリッピングの手法の1つ。
↓どうぞ!
何も言ってないのに(´・ω・`)ショボーン
解らない人ですね あなたは !
_ /- イ、_
__ /: : : : : : : : : : : (
〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
〈⊃ } {:: : : :ノ --‐' 、_\: : ::}
∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
>>878 | ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ
/ ● ● | / ,,・_ | //  ̄7/ /::ノ
| ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/
彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ
/ __ ヽノ / / // |//\ 〉
>>874 ,875
ありがとうございました。カリングはクリッピングの一種というわけですね。
視錐台内にあるかどうかって 普通は境界球でチェックするんですか?
883 :
名前は開発中のものです。 :05/03/13 18:26:08 ID:DDrKgH3V
886 :
872 :05/03/13 19:39:09 ID:dknlVN/n
言い忘れてましたけど、DirectXのバージョンは9.0b summer2003です。 個人的には CMyD3DApplication::FrameMove()の if (m_pAnimController != NULL) m_pAnimController->AdvanceTime(m_fElapsedTime, NULL); あたりが怪しいと思っているんですけど、 ここをどう変えればループ再生をやめれるのでしょうか?
GetTrackDescで D3DXTRACK_DESCを手に入れて Positionの値見て回数かずえて SetTrackEnableで止める というのはどうか?
888 :
872 :05/03/14 02:40:01 ID:622id3b2
>>887 おおー!
それで何とかいけそうです。ありがとうございます!
以前 MDX ランタイムのインストールについて解答したものだけど、
http://www.microsoft.com/japan/msdn/directx/dxreadmej.asp >マネージ コード用 DirectX を再頒布するにはいくつかの方法があります。
>Feb2005_MDX_X86.MSI を直接起動する。これは許諾事項を表示し、
>セットアップ完了ダイアログを含む完全なユーザー インターフェイスでパッケージをインストールします。
なんていう記述あったことに気づいたんで、
もしかしたら Feb2005_MDX_X86.MSI 単体の再配布は許可されているのかもと言ってみる
っていうか、そもそも『全てのファイルはひとまとめで配布しなければならない』ってどこに書いてあったっけ?
EULA の行間なんて読めないよママン
890 :
名前は開発中のものです。 :05/03/14 19:34:58 ID:sFK5AQHR
裏向きのポリゴンを描画しないってのは 裏面カリングであって、 むしろクリッピングがカリングの一部だと思う。 どうでもいい話だが。 カメラの視錐台とスポットライトの視錐台から 見えるオブジェクトを抽出したいんだけど どの方法がいいと思いますか? ・二つの錐台の積をとって凸包体を作り抽出 → 凸包体作成のアルゴリズムが難しい。 ・二つの錐台からそれぞれオブジェクトを抽出し積をとる → 処理は簡単だがオブジェクトの数が増えると重くなりそう。
891 :
煽一色 :05/03/14 19:57:30 ID:CdgsM2EQ
>>890 そんな視錐台の計算まで知ってるくせに
発想が貧困過ぎて全く素質が感じられない。
解決策なんて無限にありすぎてどれを使うか迷うぐらいだ。
からかってんのか話相手になってほしいだけなのか知らんけど邪魔だから失せろ。
また変なのが出てきたな
おそらく890(キツネ)は 1番目の選択肢(葡萄)は酸っぱいだろうと判断していた。 しかしその後 もしかするとアレは甘いのかもしれない 甘かったらどうしよう、悔しい、という思いが生じ ここで質問するに至ったのであろう。とエスパー。
>>890 まずカメラの視錐台から見えるオブジェクトを抽出して、
その各オブジェクトがスポットライトの視錐台の内部にあるか調べればいいんじゃないの?
速度なんてものは実際に組んで検証してみれば済む話だ。
>>889 それはやはり許可されていない。
"Documentation/License Agreements/directx redist.txt" に
> All files in the above directory must be included in any distribution of
> the DirectX 9.0 Runtime with the following exceptions:...
とある。
898 :
890 :05/03/15 14:26:01 ID:2cNmR4Ab
回答ありがとうございます。
>>891 >解決策なんて無限にありすぎてどれを使うか迷うぐらいだ。
例えばどんなでしょう?
もうずっと悩んでいるんです。助けてください。
>>892 説明不足でしたが、
オブジェクト群は木構造のリストに保持されており
一回目の抽出はそこから行い、単方向リストに保持されます。
二回目の抽出はその単方向リストから抽出されることになります。
木構造のリストと単方向リストでは抽出速度に差があると思うので
多分2倍以上になるんじゃないかと思いました。
>>894 今の自分の能力では一番のアルゴリズムを組むのは難しいんです。
だから本当は二番目にしたいんですけど、世間一般的にはどうなんだろうな
と思って質問したんです。一般的に1案が普通ならそれに合わせたいですし、
参考になる情報も手に入るかなと。
市販されているプロのゲームとかではどうなんですかね?
>>895 木構造のリストから、同時に二つの視錐台で抽出するって形ですかね?
確かに悪くないですね。ちょっと検討します。
QueryPerformanceCounter は避けたほうが無難かな…? SDL-1.2.8 でも QPC は使わないようになってるし このスレ読んで不安になってきたyo。 ## 飛べない QueryPerformanceCounter に意味はあるのでしょうか。
用途によりけり。
まぁ藻前ら、それほどの技術と経験と根性があるなら、今まさに危機に瀕している↓のMMORPGを救ってくれ。
軽く問題に触れておくと、要は開発者が逃げ出しましたよと。
そしてそれに痺れを切らした3Dモデリング担当の人もプロジェクト脱退しましたよと。
そこで藻前らの力が必要になったわけで。。
この企画に参加、若しくは引継ぎすれば少なくとも藻前らのスキルアップにも繋がるだろうし。。
頼むよ。絶望に満ち溢れた世界に新たな風を吹き込んでくれ。藻前らの力で・・・・・・
頼 ん だ ぞ
http://rob2.jp/
DirectX9 & シェーダで頂点ブレンドを行っているのですが、 ブレンド後の座標を取得したくてしたくて、夜も眠れず昼眠る日々です。 「ブレンドをハードに頼らない」という最悪最終の手段以外に、何か方法は無いでしょうか。
903 :
902 :05/03/15 16:18:51 ID:BnSZNbJe
すいません、語弊があるかも知れないので訂正 「ブレンドをハードに頼らない」>「ブレンドをCPUで行う」
904 :
初心者 :05/03/15 17:49:40 ID:IHclVbLd
超初心者です。 Direct3Dで3DRPGのマップみたいなのを表示できるようになったのですが、 嬉しくてぐるぐる回してたら酔いました。 キモチワルイorz
質問が続くかと思ったらなんかワロタ
>>904 酔い止め飲め
視野角広めに設定するとちょっとマシになる
やべぇ微笑ましい
908 :
名前は開発中のものです。 :05/03/17 02:09:08 ID:GVwcpU5l
DirectXを使って、モデルの表示に挑戦中です。 そこでふと考えたのですが、市販の(コンシューマ、PC)ゲームって、モデルデータはどうやって作ってるんでしょうか。 1、 独自形式を出力する独自の3Dモデラ。 2、 市販モデラの出力ファイルを独自コンバータで独自形式に変換。 3、 市販モデラの出力ファイルを独自ローダでロード。 4、 まさかのXファイル。D3DX。 1、4は多分やってないと思うんですが、どうなんでしょうか。
しらねーよ自分で調べろ
だいたいあってる。
911 :
名前は開発中のものです。 :05/03/17 07:18:40 ID:JQpy9ZKK
>>908 LightWaveやSoftImageなんかはモデラの出力ファイルを独自形式にコンバートじゃね?
でも、Mayaや3DSMAXなんかは独自形式を吐き出すプラグインを作るのが一般的。
どっちかっていうとプラグインを作る方が今後主流になっていくような傾向はある。
ちなみにMayaの出力ファイルを解析しても独自データへは変換はたしかできない。
>>908 うちは一回テンポラリファイルを作ってそれを
そのオブジェクトに関するプロジェクトにまとめる
プログラムがあって、そっちで最終処理してる。
2ステップだね。
そのバイナリコンパイラの部分でモデル表示して、
うちのレンダー独自の加工ができるようになってる。
便所の落書きだと思わずにちゃんと文章書いてくれよ
914 :
912 :05/03/17 17:50:02 ID:EBbZBbt6
すまんすまん。 3Dソフトのエキスポーターから、シーン(モーフとか)ごとに テンポラリファイルを1個はき出す(1ステップ目)、 それらを1つのリソースファイルにまとめるプログラムが別にあって、 そのプログラム上ではレンダーの特性に応じてヴァーテックス情報の 編集とかスキニングの細かな設定とかその他諸々ができるってこと。 で、そのプログラムで最終的なリソースをはき出すと(2ステップ目)。 ちなみに、1ステップ目にはき出すのはアスキーファイルで、 2ステップ目がバイナリになる。
915 :
912 :05/03/17 17:56:35 ID:EBbZBbt6
あ、もちろんエキスポーターは自分で書くんだよ。
点光源によるライティングが上手くいきません。 XZ平面に正方形のプリミティブを配置して、その右上隅に点光源を置いたのですが、 その点光源からの光が出ていないようです。 SetRenderStateでアンビエント光を暗くしていくと全体が均一のままどんどん暗くなります。 プリミティブの各頂点の持つ情報は、 頂点座標、頂点色、テクスチャのUV座標、です。 プリミティブの各頂点は(-100.0f,0.0f,-100.0f),(-100.0f,0.0f,100.0f),(100.0f,0.0f,-100.0f),(100.0f,0.0f,100.0f)です。 頂点色は全て0xFFFFFFFFです。 マテリアルの設定は、 ディフューズ色・アンビエント色のRGBに1.0fを設定しました。 ライトの設定は、 タイプにD3DLIGHT_POINTを設定、 ディフューズ色、アンビエント色、スペキュラ色のRGBに1.0fを、 位置は正方形のプリミティブの頂点上、(100.0f,20.0f,100.0f)にしました。 また、光の届く範囲を200.0f、 Attenuation0〜Attenuation2はそれぞれ0.0f、1.0f、0.0fを設定しました。
917 :
916 :05/03/17 22:44:03 ID:lxfS6Q7E
SetRenderStateによって設定した項目は、 D3DRS_ALPHABLENDENABLE を TRUE、 D3DRS_SRCBLEND を D3DBLEND_SRCALPHA、 D3DRS_DESTBLEND を D3DBLEND_INVSRCALPHA、 D3DRS_LIGHTING を TRUE、 D3DRS_AMBIENT を 0x00202020、 にしました。 最初の3つはDirect3Dのデバイス作成直後に、後の2つは毎フレーム行っています。 プリミティブの各頂点の法泉ベクトルを持たなければならないと書いてあったので、 どの頂点にも真上(0.0f,1.0f,0.0f)のベクトルを持たせたところ、 プリミティブが全く見えなくなりました。 点光源によるライティングはどうすれば実現できるのでしょうか? 環境:WindowsXP BCC5.5 DXSDK(Oct2004) //平行光線によるライティングは付属のマニュアル通りにやったらできました。
法線ベクトルがまずいんじゃない? 法線ベクトルはその頂点を含む面の座標系じゃなくて、 そのメッシュの座標系だから。
あと、とりあえずアルファオフにしたほうが面倒が無いかも。 アルファオンにするんだったら、ライトのアルファも1.0fにするんじゃなかったっけ? ちょっといまヘルプ無いからわからんけど。
>>920 だったら、XBOX2の開発環境にアンリアルエンジンが付いてくるだのどうのこうのって話あったじゃん。
あっちだせよ。
もう、モデルのロードやシェーダーの作成なんて腐ったことしなくていいんだ!
って手を叩いて喜んだよ。俺は。
書いてて気がついたんだけど。
そか、良く考えるとDirectXが無くなるのって3Dエンジンが普及しだすからなのかもしれないな。
いや…DirectXがなくなるのは WindowsAPIに組み込まれると言うだけの事だと思うけど… 別配布じゃなく、windows強制インストール済み見たいなモンじゃない?
923 :
916 :05/03/19 21:16:55 ID:4hwC9Fw8
>>918-
>>919 ありがとうございます。
法法線ベクトルを設定するとき、DEDXVECTOR3で各頂点のy軸方向+10.0fの位置の値を指定したら
消えなくはなりましたが、ライティングは上手くいきません。
平行光線も、チュートリアルのは成功したのですが、
今組んでいるプログラムでやってみたら上手くいきませんでした。
ライトのαも1.0fにしてみましたが変わりませんでした。
SetRenderStateで、D3DRS_AMBIENTの行を削除してみると、
平面の明るさにムラが出てライティングが成功しているような気配はするようになったのですが、
点光源にしても平行光線にしても様子が変わらなかったので、失敗していると思います。
先日から正方形のプリミティブにはライティングが上手くいかないのですが、
色々試してみたところ、そのプリミティブと同時にXファイルのメッシュを表示したら、
それにはライティングが上手くいっているみたいです。
ちょっと剣呑なんですけど、
平面だとライティングによって照らされたプリミティブって、角度によって明るさが変わりますか?
マニュアルには法線を基準にして入射角と反射角があると書いてあったのですが、
ということは極端な話、プリミティブとライトの位置が固定されていてもカメラの位置と角度によっては
鏡を通して見るときのように明るさが違うことになりますよね。
今は平面を一つ作成して、屋外の地面のようにどの角度から見てもどの方向から見ても同じ明るさにしてみたいんです。
ソースをアップしたほうがいいでしょうか。
各頂点のY軸方向+10.0fって法線ベクトルの値がまずいと思う。 ちゃんと、その頂点の存在する平面に対して垂直に設定してみたら?
>923 法線をちゃんと設定しる 正方形の頂点をABCDだとすると V1 = B - A V2 = C - A N = V1・V2 でNを正規化すれば法線取れるだろ 頂点の順番や座標系によっては外積かける順も逆かもしれんが もしSetWorldMatrixで行列を設定して姿勢を制御してるんなら たとえばA( -1,0f, 0.0f, 1.0f)B(1.0f,0.0f,1.0f )C(1.0f, 0.0f,-1.0f)D(-1.0f,0.0f,-1.0f)なら 法線は(0.0f, 1.0f, 0.0f)を設定してやればいい >鏡を通して見るときのように明るさが違うことになりますよね。 スペキュラライトならそうなるだろうな スペキュラは光源の位置、頂点の位置、法線、視点で計算するから ディフーズは光源の位置、頂点の位置、法線だけ >今は平面を一つ作成して、屋外の地面のようにどの角度から見てもどの方向から見ても同じ明るさにしてみたいんです。 そういうのはディフーズつかえってこった もう少し勉強というか、色々調べれ
V1・V2じゃないだろV1×V2だろ
頂点4つでindexつかって正方形ってだったら… 各面の法線なんて出せないんじゃ…と思ったのは俺だけ? それとも各法線の平均とかでやってるのかな… 普通にフラットシェーディング風に各面が立ったライティングしたかったら 各面の法線をセットした同座標頂点用意するしかないんじゃない?
スマン…立方体と勘違いしてた…
3Dソフト全般がFBXでPS3がCOLLADA? そしてDirectXはXファイルと・・・。 どれ触ろっかなぁ。
930 :
名前は開発中のものです。 :2005/03/21(月) 12:41:59 ID:boUamsl4
テストでDrawPrimitiveUpを数百回呼んだら、その中の一回だけがえらく時間かかる時がある。 普通5 重い一回5000 単位はマイクロ秒 その一回の間DirectXの中の人なにをしているのがを教えてエロい人
描画コマンドのFIFOがストールしてるんだよきっと(適当
>>931 ソレは多分DirectXじゃなくてドライバ側のストールだとおもう。ドライバは描画命令を
push bufferとかいう描画コマンドをためて置く所に書き込んでいってPresentでGPUに
コマンドを送るわけだけど、これのサイズを決める命令はDirectXには無い。だから
CreateDeviceを呼んだ時にドライバが勝手にpush bufferのサイズを決めちゃう訳。
で、このPushBufferがあふれた場合、ドライバが適切な処理を行う訳だけど、どうも
NVIDIAのドライバはBufferを拡張するんじゃなくて、内部的にPresentと同じ処理を呼び出して
Bufferを空にしようとするみたい。んで、この時に前のPresentの描画コマンド待ちが発生
しちゃう訳。
もしかしたらpush bufferのサイズは全体メモリ量から割り振られている可能性もあるから
アプリ側から意図してプログラムを組むのはちょっと無理かな。
相変わらず根拠はなにも提示されないのですね
同じ現象の再現も出来てないのに根拠を言えだなんてむりぽ
ドライバの仕様によるとしか言いようが無いもんなぁ。
936 :
916 :2005/03/21(月) 22:33:35 ID:Oc+Uibze
>>924-928 ありがとうございます。
先程、最小のコードで問題点を解決しようと、別に一から組んでみたのですが、
平行光線によるライティングは成功しました。//点光源に関してはまだ成功の光が見えていませんが。
問題だったのは、プリミティブの頂点情報を格納するCUSTOMVERTEX構造体内での
変数の宣言順序だったみたいです。
//変更前(失敗)
struct CUSTOMVERTEX{
D3DXVECTOR3 position; //頂点座標
D3DXVECTOR3 normal; //法線ベクトル
float tu,tv; //テクスチャ座標
D3DCOLOR color; //デフューズ色
};
//変更後(成功)
struct CUSTOMVERTEX{
D3DXVECTOR3 position; //頂点座標
D3DXVECTOR3 normal; //法線ベクトル
D3DCOLOR color; //デフューズ色
float tu,tv; //テクスチャ座標
};
ここを弄るとプリミティブが表示されないという問題を再現できました。
マニュアルではこの構造体内での宣言順序に関して特に言及していないようなのですが、
これに関する情報はありますでしょうか?
1024x512等で確保したテクスチャの左上640x480をNO_DIRTY_UPDATE でLockし、弄った後AddDirtyRectで左上640x480のRECTを与えると、 NULLで全面更新よりも遙かに重くなってしまうのですが、ドライバ等 環境の問題・DirectX9の仕様、どちらでしょうか。 1024x1024・2048x2048で確保してみても、640x480のRECTよりNULLの 方がずっと早く、理解不能の重さです。
test
941 :
938 :2005/03/23(水) 01:49:18 ID:w5k7ctWo
知人に試してみて貰ったら環境の問題の様でした・・・ 色々試してみると、結局部分更新だと全面更新よりも壊滅的に遅くなる 模様・・・何故だ・・・
>931-935 感謝感謝、たしかにビデオカードがNVIDIAQuadro500でした('A`) やはりDrawPrimitiveUpの回数を減らしていくしかないですかね・・・ いろいろためしてみまふ
directX8.0とかの解説しているサイトのサンプルは 9.0ではビルドできないものなんでしょうか?
「9.0では」の意味が分からん
>>943 一部APIの引数が変わっているからそのままじゃ無理。
>>943 なんたらVERSIONを使ってDX8だぞと教えこめばビルド可能
947 :
名前は開発中のものです。 :2005/03/23(水) 19:31:33 ID:CygUM1FU
Xファイルのモーションのフレーム数ってどれぐらいがいい?
>>947 玉なでで我慢するなら15とかでもいいけどモーションの複雑さに依存
>>943 DirectX9SDKでd3d8.hとか使えるぞ
質問です。エフェクトファイルを使って固定機能でレンダリングしようとしています。 パスに、 ViewTransform = (view); WorldTransform[0] = (world); ProjectionTransform = (projection); fvf = xyz | diffuse; VertexShader = null; PixelShader = null; と記述して、パスを呼び出して、DrawPrimitive()したのですがモデルが描画されません。 描画されない理由がなにか考えられましたら、お教え下さい、オネガイシマスorz SetStreamSource()、SetVertexDeclaration()、念のためSetFVF()も呼び出しています。 D3DXCreateEffectFromFile()は成功してます。 SDKは、Summer 2004です。
>エフェクトファイルを使って固定機能で なんじゃそりゃ?
>>951 ID3DXEffectを使って、シェーダを使わないでレンダリングすることです。
SetMatrix()をSetMatrixTranspose()にしたら上手くいきますた。
なんで転置がいるのかな'`,、('∀`) '`,、
953 :
名前は開発中のものです。 :2005/03/24(木) 16:31:40 ID:czRJ8Hem
チューブにテクスチャ貼ってアルファブレンディング
チューブじゃないだろ
gemsに載ってるよ 確か3だったかな
肉棒にテクスチャ貼ってアルファブレンディング
面白いと思って書いてるんだろうな・・・かわいそうに
肉棒って何ですか? すみません、初心者です。
ビーフジャーキーのスティックタイプ位食べた事あるだろ。
961 :
初心者 :2005/03/25(金) 04:44:41 ID:zuykgziU
DirectX8を使ってゲームを作ってるのですが。ALT+TAB等で、 切り替わっても、途中でエラー落ちしないように作るには、 どうしたらいいでしょうか? そのほかに、WM_ACTIVATEを受け取って、 (fActive==WA_ACTIVE||fActive==WA_CLICKACTIVE)&&fMinimized==0 の時にDirectX8の初期化をして それ以外でReleaseしているのですが、 非アクティブになったときに、音楽を停止してるはずなのに、 アクティブにしたときに、n回アクティブにすれば 音がn重になって流れてしまいます。 セグメントがうまく開放されてないんでしょうか?
>>961 DirectX SDKのサンプルがそのまま答えになっている。
それと同じ仕組みにすれば問題なく動く。
963 :
名前は開発中のものです。 :2005/03/25(金) 11:28:09 ID:BPyxHOsA
マップチップで昔のドラクエみたいのが作れる物はありますか?
964 :
初心者 :2005/03/25(金) 14:37:13 ID:zuykgziU
>>962 SDKのサンプルを見ましたが、英語ばかりで、
どこでなにをしてるのか、よくわかりません。
グーグルで検索をかけてもでないような、
分かりやすく、書いてあるページをご存じないでしょうか。
もし、お知りでしたら。
お教えくださいますよう、お願いいたします。
>>964 DirectX SDKのサンプルがそのまま答えになっている。
それと同じ仕組みにすれば問題なく動く。英語は辞書引け
>>964 中卒程度の教科書的英語+専門用語の為の辞書があれば読めるから安心して読め。
> DirectX SDKのサンプルがそのまま答えになっている。 > それと同じ仕組みにすれば問題なく動く。 これ、テンプレにしようw
というか日本語サンプルがあることぐらい 教えてやれよ。
あるの? 特に困ってないが見てみたい。
俺も知らなかった 厄介なところだけとはいえ、わざわざ自分で訳していたよ
971 :
名前は開発中のものです。 :2005/03/27(日) 00:00:42 ID:xG8YYMwP
3Dの広大なフィールドの描画についての質問です。 視界がカメラの位置を中心に半径50000あります。 現在、単純に10000四方を10x10個置いています。 10000四方なのでテクスチャが256や1024ではかなり荒く表示されてしまいます。 テクスチャのサイズを5120x5120で用意すると70MBを越えてしまい、 かといって1000四方を100x100個表示すると処理がかなり重くなってしまいます。 スクリーンに表示されていない部分は描画しないにしても位置や角度によっては相当数の描画に。 起伏をつけるとさらに増えるでしょうし・・。 できる限り細かいテクスチャが表示でき、かつ軽い方法はありませんでしょうか?
972 :
名前は開発中のものです。 :2005/03/27(日) 00:04:27 ID:QPFAy6LO
973 :
名前は開発中のものです。 :2005/03/27(日) 00:26:30 ID:Bg15dS2A
>>971 クワッドツリー、オクトツリー
MipMap、LOD、Fog
全部組み合わせれば、かなり軽く早く細かくできる
974 :
971 :2005/03/27(日) 00:34:25 ID:xG8YYMwP
>>973 ありがとうございます。
fogって重くなりそうな印象がありましたが結構有用な感じですね。
975 :
名前は開発中のものです。 :2005/03/27(日) 08:33:57 ID:r4ERBttl
2Dの場合、スプライトを使うのはもはや一般的ではないのか?
スプライトが何かをまずは定義づけなきゃ
時代によってスプライトの意味も違うような
ヒント:DirectX総合スレ
981 :
名前は開発中のものです。 :2005/03/29(火) 12:32:54 ID:a9plaJaG
CgはATIのカードでも動きますか?
982 :
名前は開発中のものです。 :2005/03/29(火) 12:50:15 ID:08jil4AO
ゲームで使えて、フリーのXファイルはどこかにないですか
>>982 フリーのモデルデータをXファイルにコンバートしたほうがいい。
984 :
名前は開発中のものです。 :2005/03/29(火) 14:05:36 ID:08jil4AO
>>983 ありがとう。フリーのモデルデータはどこにありますか?
質問ばかりですみません
×質問ばかりですみません ○自分で探す気がまるっきりなくてすみません
>>984 ネット上にあると思う。
貴方がほしいモデルデータの名前や種類で検索すれば見つかる。
ちなみにXファイルへのコンバータも同様。
ありがとう。ネット上はどこにありますか? 質問ばかりですみません
samui
989 :
名前は開発中のものです。 :2005/03/29(火) 20:44:24 ID:0qdzUbuy
JISレまだぁ?
990 :
名前は開発中のものです。 :2005/03/29(火) 21:57:04 ID:VyPwKdyT
よーし!埋めちゃうぞ!
992 :
名前は開発中のものです。 :2005/03/30(水) 01:24:30 ID:1n6ip0nH
頂点シェーダを使った場合とそうで無い場合で正立方体を描画するのって どちらが早いですか?やれることが頂点シェーダの方が多いってのは いろいろ呼んでわかってるんですが試そうとしてもうまくいかないので 誰か教えてください。 それと頂点シェーダでモデルの位置やデフューズ色・ライトなどを設定 したあとテクスチャをピクセルシェーダを使わずにしたいのですが サイトでいいとこあったら教えて頂戴。
>992 >それと頂点シェーダでモデルの位置やデフューズ色・ライトなどを設定 >したあとテクスチャをピクセルシェーダを使わずにしたいのですが >サイトでいいとこあったら教えて頂戴。 思いつくままためしてみれ >試そうとしてもうまくいかないので シェーダが動かないならまずはグラボ買え まずは色々気になるかもしれんが、動かさないことには先にすすめないから とりあえずシェーダを動くようにしてから質問しる >どちらが早いですか? 朝は早いです
995 :
名前は開発中のものです。 :2005/03/30(水) 05:46:25 ID:2B7C2TZ6
マスケン
996 :
名前は開発中のものです。 :2005/03/30(水) 05:46:57 ID:2B7C2TZ6
997 :
名前は開発中のものです。 :2005/03/30(水) 05:48:56 ID:2B7C2TZ6
998 :
名前は開発中のものです。 :2005/03/30(水) 05:49:41 ID:2B7C2TZ6
,r';;r" |;;;;;;;;;;;ヽ;;;;;;;;;;; ,';;/ /;;;;;;;;;;;;;;;ヽ;;;;;;;; l;;' /;;;;;;;;;;;;;;;;;;;;;',;;;;;;; . ,l;L_ .,,、,--ュ、 ';;;;;;;;;;;;;;;;;;;;;;;;;;;iソノ ヾr''‐ヽ, ,、ィ'r-‐''''''‐ヽ ';;;;;;;;;;;;;;;;;;;;;;;;;;| l rO:、; ´ ィ○ヽ 'i;;;;;;;;;;;;;;;;;;;;;、l | `'''"/ `'''''"´ !;;;;;;;;;;;;;;;/ l | . ,' / 、 |;;;;;;;;;;;;;ノヽ'/ . l ,:' _ ヽ .|;;;;;;;//-'ノ ', ゞ,' '"'` '" i;;;;;i, `' / ', i、-----.、 `''"i`'''l . ヽ ヾ゙゙゙゙ニニ'\ ,' ト、, ヽ ヽ〈 i| Vi゙、 ゙, ,ヽ===-'゙ ,' , // ヽ . ',.' ,  ̄ , ' ノ /./ ヽ, . ヽ.  ̄´ / ,、 ' / / \ ノ:lゝt-,-‐''" / ,.ィ゙ / ,、 - '''´ | ヽヽ /,、ィ /
999 :
名前は開発中のものです。 :2005/03/30(水) 05:50:34 ID:2B7C2TZ6
,r';;r" |;;;;;;;;;;;ヽ;;;;;;;;;;; ,';;/ /;;;;;;;;;;;;;;;ヽ;;;;;;;; l;;' /;;;;;;;;;;;;;;;;;;;;;',;;;;;;; . ,l;L_ .,,、,--ュ、 ';;;;;;;;;;;;;;;;;;;;;;;;;;;iソノ ヾr''‐ヽ, ,、ィ'r-‐''''''‐ヽ ';;;;;;;;;;;;;;;;;;;;;;;;;;| l rO:、; ´ ィ○ヽ 'i;;;;;;;;;;;;;;;;;;;;;、l | `'''"/ `'''''"´ !;;;;;;;;;;;;;;;/ l | . ,' / 、 |;;;;;;;;;;;;;ノヽ'/ . l ,:' _ ヽ .|;;;;;;;//-'ノ ', ゞ,' '"'` '" i;;;;;i, `' / ', i、-----.、 `''"i`'''l . ヽ ヾ゙゙゙゙ニニ'\ ,' ト、, ヽ ヽ〈 i| Vi゙、 ゙, ,ヽ===-'゙ ,' , // ヽ . ',.' ,  ̄ , ' ノ /./ ヽ, . ヽ.  ̄´ / ,、 ' / / \ ノ:lゝt-,-‐''" / ,.ィ゙ / ,、 - '''´ | ヽヽ /,、ィ /
1000 :
名前は開発中のものです。 :2005/03/30(水) 05:52:37 ID:jQ5vu27c
「`ヽ l゙ヽ、 ○ ヽ ,l ) ,`─-、,,_ ┠─┐ ゙l .l `'''´゙ヽ,,,__, `i ┃大│ | ヽ_,,,-‐'´ ノ ┃分│ ゙l、 `ーヾ ,/ ┃の│ _,,,―´l;;i' `l;;゙r'" ┃龍│ ,「 / |;;;;ヽ、,,,,ノ;;' ┃二│ ヽ| ヽ ヽ、;;;;;;;;フ ┠─┘ | |、,,_,ノ´ ┃ . ヽ,丿 千代大海が1000にダイブ!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。