【C++】 DirectX初心者質問スレ Part9 【C】
1 :
デフォルトの名無しさん :
2006/04/13(木) 06:48:18 後は面倒だから勝手にやってくれ頼むよ
鬱だ、2get
3ktkr
糞スレに認定されました。
前スレは凄いギャグで占めやがったな・・・
999 名前:デフォルトの名無しさん[] 投稿日:2006/04/13(木) 01:49:02 お、なんかいいこと思いついたぞ。 DrawPrimitiveのVertexBufferを一括確保してる奴等さ、 一括確保するVertexBufferを2つ用意してフレームごとに交互に使えば もしかして速いんじゃねぇの? 1000 名前:デフォルトの名無しさん[sage] 投稿日:2006/04/13(木) 01:51:41 フレームごとじゃないか。 DrawPrimitiveごとか。
本気で言ってそうだから怖いよな。
8 :
デフォルトの名無しさん :2006/04/13(木) 15:12:09
質問です。 C++/CLIでマネージドC++の検証を始めたのですが、 てっきりマネージドC++のDirectXもあるもんかと思ってたら見当たりません。 MDXってC#かVBオンリーなんでしょうか? うーんC++/CLIとWindows Formで3Dツール作って見たかったんだけどなぁ。。
.NETはよく知らんけど使えるんじゃない? プロジェクトのプロパティの「参照設定」の「参照の追加」。
ManagedのヘルプにC++も載ってるが。
テンプレ ・ヘルプも読まない人はお帰りください
テンプレもうやむやのうちに破棄されたし もうDirectXだったら何でもありだろ
前スレ2DSTG側の自演酷くない? さすがにシェーダを切り替えない前提でしか効果がないなんて使いどころない。
今までDirectXApplicationWizard使ってたけど乗り換えようと思う 最近のナウでヤングなDirectXフレームワーク教えてちょ
CYamaD3DRM
2DSTG側ってどっちだ? ・DP呼び出しは減らす方がいい、バッファにまとめて描画、DP減らすほうが速い派 ・纏めるなんてCPUのやフィルレートの無駄、そんなんするならくらいならDP呼びまくるほうが速い派 だと思ったが。
あの議論を2DSTG側、なんて見方をする人はつまり…
18 :
デフォルトの名無しさん :2006/04/14(金) 13:29:35
8です。 >9 さん、参照を設定したらイケました。 これから勉強してみようと思います。ありがとうございました! >10 さん サンプルの詳細まで見てませんでした(C++のマネージなのかアンマネージなのかまで。。)
質問です。 よく 「DirectX9.0 に対応したグラフィックカード」 という言葉を目にしますが、対応とは何の事を指すのでしょうか? GeForce2 MX400 上でもDirectX9.0は動きますが、「GeForce2 MX400 は DirectX9.0 に対応したグラフィックカード」 とは呼べませんよね? では対応とは何なのか。。。 そこが全く分かりません。 分かる方、お願いします。
>>19 メーカーとかライターが勝手に言ってるだけで、明確な決まりはないよ。
MSはそんな基準を作ってない。
21 :
19 :2006/04/14(金) 19:21:22
なるほど。 ありがとうございました。
>>16 上は2DSTGオンリーで下は視点が動く3Dゲー
24 :
デフォルトの名無しさん :2006/04/14(金) 23:38:29
質問があります。 どうもいまいち2Dの使い方がわからないのですが。
フーン。
DirectXって今比較的詳しい参考書が出てるのは9.0なんでしょうか? 一応見よう見まね(変数以外ほぼ同じ)で2Dグラフィックのみ表示できたのですが… それ以上があまり分からず簡単な参考書が知りたいのですが…
君が持っているのが 一番簡単な参考書だと思うよ。 ほかのやつもどれも一緒だと思われる。
>>26 簡単な参考書なんてない。
簡単そうに話してはいるものの役に立たない本はいっぱいあるけどw
やっぱり、成熟してない分野だから敷居は高いよ。資料もワードやエクセルとかと比べるとそんなねーし。
ので、まずやりたいことを書いて具体的に最短の道を探すのが最短じゃね?
3Dが必要なのかそうでないのかでもやることが違うし、
前に質問しにきた奴では実はプログラムでムービー再生したかっただけみたいな人もいたし。
発展として3Dを望むならある程度きついもんが必要になるだけに中途半端な出だしはさせたくない
っていうのはあるね。
ただ、資料とか今後のサポートとかを考えるとDirectXのバージョンはまちがいなく9がいい。
上司が社内ライブラリしか認めてくれません。 DirectSoundは使うけれどDirectDrawも駄目で、それが業界の常識らしいです。
上司の弱みを握るか上司の奥さんを寝取るしかないな
>29 エロゲ業界ではそれが常識です。
それどんなエロゲ?
そういえば、DrawPrimitiveで一括描画が言及されてる参考書ってあるのかな? 前作った3Dゲームは、ウィンドウとか文字とか2D周りの部分は一括描画、 3Dモデルだけモデル単位で描画やってたな・・・。
>>33 弾幕STGみたいにたくさんでないなら。
2D部分の不透明->3D部分の不透明->3D部分の半透明->2D部分の半透明
って順番で描画するとZBufferが助けてくれるかな。
すくなくとも不透明と半透明はわけたほうがいいぞ。
不透明が前面にあればそっから後ろのピクセルは描かなくていいわけだから。
>>27-28 成程、ちなみに自分がやりたいのはゲーム製作関連(2D、3D)とネットワーク通信です。
やっぱ「DirectX9 DirectX Graphics」と「DirectX9 実践プログラミング」が一番簡単なのかな?
簡単ってーか手を付けられやすいって漢字じゃない? チュートリアルも併せて進行させればいい感じじゃない?
>>35 3Dもやるならいきなり3Dから入ったほうがいい。
3Dができれば2Dを勉強してる期間なんて無駄だと思えるぐらいに実力がつく。
まずはチュートリアルどおりにプログラムを組んで実行してみれば次のステップが自然とわかる。
>>35 いちいちこんな所で聞いてる暇があったら、さっさと買ってきて嫁
>>37 成程、3Dからですね。ありがとうございます。
DirectX7の質問ですがよろしいでしょうか。 DDSURFACEDESC2 ddsd; ZeroMemory(&ddsd,sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX; ddsd.dwBackBufferCount = 1; hr = this->m_pDD->CreateSurface(&ddsd, &this->m_pPrimarySurface, NULL); if (hr != DD_OK){ return FALSE;} でプライマリサーフェイスを作ろうとしてるのですが、ことごとく失敗します。 要因はどこにあると思いますか?
>>40 やっぱ、エラーコードみるしか・・・。
それとDirectDrawオブジェクトの初期化にそもそも失敗してるとかない?
42 :
40 :2006/04/16(日) 00:52:52
試しにフリップしないでやる方法やってみたらできたんで、ここが問題だと思います。
あ、もしかしてウィンドウモードで実行してない?
ウィンドウモードだと無理なんですか? なんと根本的なミスだったんだ・・・ どうもありがとうございました。
>>44 まだ、DirectX7なんてやるきなのー。
ウィンドウモードとフルスクリーンで処理別々にしなきゃいけないし、
無駄に疲れるだけでいいことないと思うけどナー。
せっかくシステム整えてもいつ切られるかわからないぞ。
もう、はじめに気合入れて最新のDirectX習得しちゃってあとは更新されるごとに
差分だけ覚えていくほうが楽だと思うんだけどなぁ・・・。
>>45 どうせ2Dのゲームしか作らないだろうからと思ったんですけど、
DirectX9の方がいいですかね?
ノートPC使ってるんで速度がちゃんとでるか心配だったのもあるのですが。
>>46 >ノートPC使ってるんで速度がちゃんとでるか心配だったのもあるのですが
最近のハードは大体3Dアクセラレータがついてると思われるのでDirectX9でいいと思われ。
それに2Dだと画像の回転とか拡大縮小とかも簡単にはできないかも。
まず、何をやるにも(今回のことにしても)情報が少ないしいいことないと思うよ。
DirectX7の日本語ヘルプはどっかで手に入るかもしれないけどそれで終わりじゃないわけだし。
あと、どういう状況におかれてるのか知らないけど
「2Dのゲームしか作らないだろうから」とかなんでそんなカッキリきめちゃえるのかわからないな。
とりあえず、あまりよく知らない人が当然2Dの機能でできる(と思われる)ことがことごとくできないのが2D機能だよ。
ホント単純な矩形の描画しかできない。アドベンチャーゲームの人物を表示して後ろに背景があってって処理もちょっと苦労する。そんな世界。
そうですね。 DirectX7のこともどんなもんかわかりましたし、DirectX9の方を勉強したいと思います。 どうもありがとございました。
49 :
デフォルトの名無しさん :2006/04/16(日) 15:01:54
rhwって何ですか?
RedHat Windows
>>49 3DCG講座 - 第17回 - rhwとは何か
glossary.tank.jp/t0A17.html
チラシの裏 ボーン無しのメッシュとはD3DXIntersectで正常に当たり判定できたけど、 ボーン付き(アニメーション)ではメッシュが変化するのでうまくできない。
>>52 XYZの要素が1,1,1のバウンディングボックスのマトリックスをアニメーションさせるモデル(ボーン付きの)につっこんで
デザイナさんに回転要素なしでキーフレームごとに調節してもらえ。
そうすればいっしょにアニメーションさせれば、アニメーションにあわせて変化するバウンディングボックスの出来上がり。
XYZの要素を111にするのは計算しやすくなるからってただそれだけ。
こうしておけばマトリックスだけとれば平行移動と拡大縮小だけをみれば範囲がとれて計算が非常に楽。
ここ↓ちょっとわかりずらかった XYZの要素が1,1,1のバウンディングボックスのマトリックス じゃなくて 頂点の座標が1,1,1な。 つまり、追加するのは頂点の座標が1,0,0と0,1,0と0,0,1と0,0,0と1,1,0と1,0,1と0,1,1で構成される立方体のモデルで アニメーションさせるのはその立方体のマトリックスな。
Xflieから、ボーンごとに主成分分析してボックス生成がデフォ 絵心ない奴は全部計算でやるしかない
>>55 はぁ?
立方体の拡縮のアニメーションをつけるのがそんなにやっかいか?
>>53-54 のレスの意味わかって言ってるのかと。
//! 頂点ブレンド m_pd3dDevice->SetRenderState(D3DRS_VERTEXBLEND, NumBlend); で座標を変換したいのだが これってレンダーのみなのね。
キー入力のエミュレート方法をお教えt keybd_eventでは限界なので、DirectXに手を出そうとしてる・・ そもそも、DirectXで実現可能なのかどうかさえ分からない GetDeviceDateに対して、SendDeviceData使えばいいのか・・って ものでも無さそうだし、大体”使ってはならない”って一体・・ ゲームそのものではなくて、ゲーム用のツール作成が目的なんds
日本語で頼む
60 :
58 :2006/04/17(月) 17:55:27
キーマクロを実行するプログラムを作りたい。
WinAPIのkeybd_eventでは動作しないソフトに
DirectXからキー入力を送信できれば、どうか?
・・という動機なんだけど。。。
>>59 まだオカシイデスカ?
DirectXでそんなことはできない。
>>54-56 地面みたいなでかいメッシュとはどうすればいい?
BOX作ると、地面には合わなそう 精度高めるとBOXがかなり増えるし。低いと地面にめり込むし。
それと、
ボーン変換って普通ソフトでやるの?
頂点ブレンド を使えばハードできるので負荷減らせるけど変換後の座標取得ができないので当たり判定できないYO、
やっぱ、ソフトで変換していくしかないのかな・・・いろいろ出来るし 重いけど。
頂点ブレンドって実際はソフトで計算してたりしてw
>>62 お前が何をいっているのかまったくわからない。
下のほうはチラシの裏でおk。 変化する地面との当たり判定の方法が知りたい。
対戦格闘ゲームは境界ボックス単位の判定でいける。 変形するハイトフィールドは別として、 ワンダと巨像っぽいのであれば、判定用モデルが ボーンの変形を伴わない多間接モデルで結構できそうな気がする。
いや、格闘ゲームならむしろモデルの動きと関係ない判定付けるかもな
>>64 ハイトフィールドだったら多少頂点が上下に動いたところでなんでもねーじゃん。
DirectSoundを参考書どおりに組んでみたら何故かdsound.hにエラーが…
>>69 Direct9のDirectSound8インターフェイスで同じ…だと思う。
構文エラーばかり出るけど。
>>70 年度と季節も合わせたか?
書籍に付属してるならそれを入れろ
エラーと書籍名ぐらい書け
もしVS2005で文字コード云々なら保存しなおせ
描画時の不具合について教えて下さい。 矩形の1枚絵を描画する時に、1フレーム毎に画像を垂直移動させようとすると、 フレーム切り替え時にプリミティブの継ぎ目が見えてしまいます。 静止状態では継ぎ目は見えないのですが… 問題を単純化して、↓ {-0.5, 0.5, 0.0}, { 0.5, 0.5, 0.0}, { 0.5,-0.5, 0.0}, { 0.5,-0.5, 0.0}, {-0.5,-0.5, 0.0}, {-0.5, 0.5, 0.0} ↑こんな2PrimitiveのTRIANGLELISTを描画した場合、全く頂点をいじらない状態(静止状態)では 正常に継ぎ目が見えないのに、例えば描画1フレーム毎に全Y座標を-0.0001して絵を垂直移動させて みると斜めにプリミティブの継ぎ目が見えてしまい非常に見苦しいです… 例の値でもわかる通りfloatの精度の問題ではなさそうです。 ややこしい事に、同じようにX座標をいじって水平方向に移動させた場合にはこの問題は出ません。 またCreateDeviceに渡すD3DPRESENT_PARAMETERSのSwapEffectを変えても変わりませんでした。 想定される原因がわかれば教えて下さい。
>>72 その移動ってのは SetTransform じゃなくて
頂点データを直接書き換えてるの?
それなら、そこが間違ってるとかロックの仕方が変とか
じゃないかしら。
あと一応REFでも確認するべきね。
75 :
72 :2006/04/18(火) 16:17:06
>73 >頂点データを直接書き換えてるの? そうです ただ、回転とかでもなく、単純にY座標を0.001加算して描画するだけのテストでも 発生するので丸め誤差とかの問題ではないはずなのですが… >74 それもちょっと疑ってます テストで使ってるのがRivaTNTなもんで 実はcodesampler.comのコードをいじって勉強中なんだけど、このコード REFで初期化したら何も描画されなくなった ナンダコレ orz
76 :
72 :2006/04/18(火) 17:24:16
855GEMでも駄目だった… 頂点書き換え止めてSetTransformなら継ぎ目は出ないのになぁ 自力変換してる人は同じ現象は出ないんだろうか
>>71 なんかdsound.hをincludeした時点でエラー出てるや。
dmusiciにしときます。
79 :
72 :2006/04/18(火) 23:42:38
>>78 疑心暗鬼にかられて計算値を検証しますた。流石に間違ってなかったです。
フレーム切替え時に継ぎ目が見え、静止状態では出ないので、フレーム更新
のタイミングに問題があるのかな、と
現象が出る最小コードをうぷしました
http://gamdev.org/up/img/5335.zip 切り分けたら画像を「上から下」に移動させた時と「右から左」に移動させた場合に発生し、
それぞれ「下から上」、「左から右」に移動させた場合には問題ないんだよな…
マジでわからん
見たけど、これは高度なネタなのかしら…
>>79 とりあえず299行〜313行をforの外に出せば
MissionCompleteみたいよ。
>80 つ[【C++】 DirectX初心者質問スレ Part9 【C】] 答える気が無いなら煽らない
83 :
72 :2006/04/19(水) 00:10:23
今日からDirectX始めてみようと思います! よろしくお願いします! 押忍!
87 :
デフォルトの名無しさん :2006/04/19(水) 20:00:38
昔、DirectXのステンシルバッファ使って ブーリアン演算してたサイト見たんだけど知らない?
89 :
デフォルトの名無しさん :2006/04/21(金) 01:04:41
誰か,SLIかCrossFireでDirectXいじっている人いねーっすか? 色々と特殊なプログラミングしないといけないのかしら. 二枚のカードを別々に叩けるのかしら. ……まぁ,二枚別々に叩いても,何に使うんだろうって感じなんだけど. 使えるなら使えるで,何かネタっぽい使いかたが思いつくかもしれん.
( ゚д゚)ポカーン
無知が行き過ぎて知ったかになったという珍奇な症例
ワラタ
チラシ ハードとソフトのボーンアニメーション比べたら 20%ぐらいハードの方が早かった、ハードでアニメーションできるとは
( ゚д゚)ポカーン
釣りなら釣りとメーr
ハードでも♪ソフトでも♪コンタクトレンズをつけたまま♪
せーのっ! ば・び・ぶ・べ・ぼーん!
>>93 Radeon9600proではスキンメッシュのサンプルで
ソフト→130fps
ハード→796fps
ですがなにか?
99 :
デフォルトの名無しさん :2006/04/21(金) 23:10:46
delphi
101 :
デフォルトの名無しさん :2006/04/21(金) 23:17:21
>>99 20%なんてどこに目ぇつけてんの?死ねば?
だってさw
ハードとソフトの差は、CPUとビデオカード次第だしなぁ・・・
>>98 うわはぁ
爆速、うちのボード弱いのか・・。
まぁ普通に考えてソフトのが速いなんて状況はないわな・・・
( ゚д゚)ポカーン
106 :
デフォルトの名無しさん :2006/04/22(土) 12:40:56
>>103 ゲーPGなのにノート買って失敗した馬鹿だろ?
大変だな。
こんな失敗1つで就職する機会すら逃しちまうんだから。
いっとくけど、今の時代シェーダも使ってないような就職作品作ってくる奴なんか
すくなくともうちじゃいらないから。
入門書みればだれでもできると思うけど、ハードがサポートしてないんじゃしょうがないよね。
まあ、運が無かったとあきらめればいいよ。
2DSTGを送ってくる場合、コミケでいうと、100作って\1000で売って完売なレベルじゃないと門前払いですね。 評価する側からすれば、むしろ敷居が高いんですよ。
>>106 見事にノート。 ゲーPGではない。 最近、就職、就職とかいってるけど落ちたの?がんばれ。 俺は、PGにはなりたくないな、低賃金 過酷な労働条件・・・ 趣味でさえつらいのに 職には出来んなw
コミケで売れるかどうかとプログラムの腕はあまり関係ないような・・・・・・
頂点シェーダーなら別にハードで対応してなくてもそこまで酷いことにはならないんだが。 そもそもノートPCだからシェーダー対応ボード乗ってないなんてこと無い。 MobilityRadeon9700搭載とかのノートは普通にハードウェアで対応してるよ。 PGの利点は仕事中に2ch徘徊できることだろうw 休日出勤してて言ってもむなしいだけだがな・・・
>頂点シェーダーなら別にハードで対応してなくてもそこまで酷いことにはならないんだが。 シェーダーの処理内容や容量などの前提条件すら出さず、勝手に脳内で結論を出す典型的な馬鹿。
国内のゲームでVertexShaderの能力を使い切ってるゲームなど存在しない件について
>>106 あたりも脳内開発者
日本だとオリジナルで3DゲームなんてPCじゃろくに出てないしな
必用な処理を必用なだけ処理させればいいだけの話なのに、 何故使い切るとか頓珍漢な言葉が出てくるんだろう?
>>112 はぁ?
PS2で出てるゲームだって頂点処理なんてかかってるじゃん。
どこみてるんだ・・・マジで。
>>115 VertexShaderの話してるのになんでVUの話になってるんだ?
どこみてるんだ・・・マジで。
>>116 はぁ?
要は頂点処理ができるかどうかをみたいってところだろ。
それならシェーダーじゃなくても別にソフトウェアレンダラーでもなんでもよくね?
>>118 俺もそれで頑張ってたけど、それだと実用的な速度がわからない。
ハードやるのとソフトでやるのとじゃ7〜8倍も違っちゃうからゲームで実際に使うと
すごく差がでる。
ゲーム作るならソフトウェアレンダラーは厳しいだろうな・・ レンダラーはレンダラーで作品のひとつとして提出すれば評価対象になるからいーんでね。
ところで作品を審査するPCってどんなスペック?
( ゚д゚)ポカーン
J( ゚д゚)しオカーン
(;;゚;;) ミカーン
作品を見る可能性が高いのは開発現場のプログラマではなく、総務部の人事担当だからね その彼に割り当てられたデスクトップPCを想定してください
確かに、例えばDirectXでシェーダばりばりのプログラムを送ったとして、 それなりの環境で実行してくれるのかしらね。 家に持って帰ってハイエンド環境で実行してくれる お茶目な担当さんだといいわね。
学校のテストじゃないんだから・・・
>>121 マヂレスしちゃうけど、うちの会社で動作確認するPCはこれ。
社長用:P4-3/1GB/GF5700/XP
人事用:P4-2/512MB/RADE9200/2000、Cele-1.?/512MB/オンボード/XP(ノート)
最低環境用:P2-266/192MB/オンボード/98、P3-1/256MB/TNT/ME
一次通過したものはグラマさんらも手があいたら確認してくれる。
グラマ志望の場合、限られた環境でどれだけ動作するものが作れるかを見ている。
>例えばDirectXでシェーダばりばりのプログラムを送ったとして、 いくら頑張った所でそんな所は評価されない 見るところはコンテンツとしての出来であって瑣末なコーディングではない
>最低環境用:P2-266/192MB/オンボード/98、 その世代のオンボードはD3Dは無いワケだが さてはエロゲ屋だな
別にプロにならなくてもいいと思うよ。 多分理想とのギャップに幻滅するよ。 「プロの仕事≒やっつけ」だからな。
132 :
デフォルトの名無しさん :2006/04/23(日) 00:54:30
あ、あの、なんか変な雰囲気だけど質問してもいい…? オクトツリーって単純な空間分割(軸沿の格子に登録)と比べて どんなところがいいの? 今後者でやってるんだけどオクトツリーにした方がいいのかな ちなみにオクトツリーについて知っているのは8分割の再帰構造って ことくらい…
線形サーチ O(N) バイナリサーチ O(log2(N))
>>132 正直、洋ゲーみたいなかなり広大な敷地でも作らない限り
オクトツリーなんていらないと思う。
格子状の分割の方がゲームで扱うときにどの格子がどれなのかわかりやすいから
俺はこっちのが便利だったけどな。(アクション)
ただ、レースゲームなんかとなるとどうだろな?
作ったことないけど・・・w
>>132 つーか、格子状の奴って2Dマップのチップ並べるときみたいな
1マスの縦横のサイズがいくらいくらでXZ座標がわかるとそれぞれの要素を
サイズでわるといっぱつで範囲が確定する奴だろ?
速さ的には一番速いんじゃね?
octtreeにしないと、 ものがあんまり無いとこはスカスカのくせに物が いっぱいあるとこは1マスの中に物が沢山あって分割した意味なくなるじゃん。 ↓ ピコーン! (AA略) ↓ いっぱいあるとこはさらに分割すればいい! ↓ オクトツリー
>>136 いや、そこまでする状況ってそんなないと思うんだけど・・・
とりあえずテキトウな数に分割されてりゃいいわけだから。
処理的に理解しやすいし、楽だからおれは格子状の分割でもいいと思うよ。
ただ、オクトツリー使うのも自由だけど。
でも、オクトツリーでなきゃ駄目ってのはかなり立派なゲームじゃないとただのオナニーで終わると思う。
なーんだ、みんな大したもの作ってないんだね 安心した
この流れでにナニに安心してるのかわからん。
>>130 「元」エロゲ屋なので、当時の名残りで同じPCが使われている。
店頭デモ用PCは競い合いが激しいので、たまにハズレ引いたこと考えて古いPCを残してあるわけ。
エロゲ屋はriva128でも対応してろw
143 :
デフォルトの名無しさん :2006/04/23(日) 11:40:09
Visual Studio .NET 2003 と DirectX の SDK を入れると、
144 :
間違えました :2006/04/23(日) 11:41:17
Visual Studio .NET 2003 と Visual Studio 2005 を使っています。 DirectX の SDK を入れると DirectX を使ったプログラムを 作成するための専用のプロジェクトテンプレートが 用意されるのでしょうか?
されないよ
されるよ馬鹿
147 :
デフォルトの名無しさん :2006/04/23(日) 17:38:50
148 :
デフォルトの名無しさん :2006/04/23(日) 17:39:55
ちなみに、VS.NET 2003 は VC++ / VC# のみインストールしていて、 VB.NET はインストールしていないのでちょっと確認できません。 いま手元に VS.NET 2003 のインストールCDが見あたらないので。
されないよ
一応 VS.NET 2003 と VS 2005 の両方をインストールした
環境に DirectX 9 SDK を入れると、両製品にそれぞれ
DirectX extensions for Visual Studio
DirectX extensions for Visual Studio .NET
が追加されているので、ちゃんとインスコされてる見たいです。
>>147 の画像見てもしやなんらかの便利なウィザードが!?
と妙な期待を持ってたので混乱していたようです。
お騒がせしました。
されるよ馬鹿
お前が馬鹿
俺が馬鹿
されないよ
155 :
デフォルトの名無しさん :2006/04/23(日) 19:37:02
うるさい! そんなに喧嘩ばかりするならプログラムなんて組まなくてよろしい! PCなんて捨てちまえ!
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」 ―――――――――――――‐┬┘ | ____.____ | | | | | | | ∧_∧ | | | |( ´∀`)つ ミ | <うるせーな!ちくしょう!やめてやる!ほらよ! | |/ ⊃ ノ | |  ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ | \\\ PC
OBBの当たり判定の計算の仕方教えてくれ。 細かくではなくて、流れだけでもいい。
ここは初心者スレであって、教えてクンスレではありません。
>>158-159 ありがとう。
中心間の距離
↓
分離軸の算出
↓
長さの比較
↓
分離軸同士の外積
↓
さらに分離軸同士で外積。
ってすれば、いいんですね。
161 :
132 :2006/04/24(月) 02:38:42
>>134-137 どうもです。
オクトツリーは広大な敷地の時、メモリコストで勝るって感じでしょうか?
(単純な分割では最低でも分割格子分だけのジャンプ先アドレス情報が必要になるわけで。)
…あとは単純な分割だと大きい当たり判定の登録が効率わるいって感じでしょうか…。
オクトツリーだと格子をまたぐものの登録は階層を下にたどらないわけですよね?
DirectXと何の関係が?
性的な意味で
GDC2006でDirectseX出てたみたいだなw
DirectShowでmp3再生しているのですが、 音量の指定ってできないのでしょうか?
できる。 MP3は権利関係めんどいからうっかり同人や商業で出すなよー。
>>166 ありがとうございます
権利関係大変なのですね、mp3の方が容量も小さく良いかと思ったのですが
wavファイルで音質下げることにします
>>167 wavなんかにするならwmaとかにしたら?
そんな君にogg超オススメ。
>>168-169 現在DirectSoundでwav再生でやってるのですが、
その辺りのフォーマットを再生するには、DirectShowだと何の指定も無しに柔軟に再生できますよね
とりあえずサンプル見ながらmp3の再生はできたのですが、音量の指定で躓いています
とりあえずできるということなので、もうちょっと色々見てみます。
習作という意味でやってるのなら別だが なんらかのソフトを作るのに必要というのであれば 素直に既存DLLなりライブラリなりで再生しちまうのも手。
oggってやっぱりおじじって読みますよね?
DirectSoundに限らないかもしれませんが、 同じサンプリング周波数、Bit等の設定で、 マイク入力、スピーカ出力のリングバッファの 進み方に差が生じてきて、出力が足りなくなってしまいます。 時間辺りで計算してみると、入力が微妙に少ないみたい… このようなとき、どうやって補正するのが正しいんでしょうか? これはDirectSoundのバグでしょうか?ドライバ等のバグでしょうか?
おぐぐ
きわめて微弱ではありますが地球の各所で重力は異なるのです。 常人のレベルを超えた鋭敏さを持つことは時に不幸であると、 私は幼少の頃サイボーグ009で教えられました。
DirectShowでmp3再生できるだけでも、同人で出したらやばいの? 曲自体はオリジナル&差し替え自由でも。
別にやばくないよ。国内なら個人では99.9%ぶっちできる。 0.1%もライセンス料を払えば良いのです。
つっても、oggの再生が楽にできるサンプルコードがそのへんに落ちてっからどうでもいいんだけどなw エロゲ屋はoggで統一されてるっぽいな。
179 :
デフォルトの名無しさん :2006/04/26(水) 12:27:04
メッシュ作成の際、作成関数からしばらく帰って来なくなり困っています。 メッシュのストリーム作成って出来るんでしょうか? 分かる方、お願いします。
スレッドを分ける。
181 :
179 :2006/04/26(水) 17:59:16
>>180 それって本当に可能でしょうか?
過去に試した事があります。
その時はデバイスの使用でバッティングが起きたように思います。
(原因は結局分かりませんでした)
もし可能な場合、クリティカルセクションで何処を囲めば良いのでしょうか?
>>181 デバイス作る時にマルチスレッド用のフラグ立ててないとかじゃないよな?
183 :
179 :2006/04/26(水) 19:50:39
>>182 すいません。立ててません。。。(汗
というか、そういうのが存在する事自体知りませんでした。
D3DCREATE_MULTITHREADED っすね。
出直してきます。。。orz
普通のゲームのメッシュのロードにでかめのXファイルを使っているのだったら、 Xファイルを止めて、自作のベタのバイナリ形式にすることでも読み込みとデータの加工の速度の問題は解決したりする。
DirectX9のウィザードで作ったプログラムなんですが、 ウインドウモードでALTキーを押したとき、メニューバーに フォーカスが行ってしまうのを止めたいのですが、 どうすればいいんでしょうか? いろいろ試してみたところWS_OVERLAPPEDWINDOWから、 WS_SYSMENU をはずすと、Altを押してもメニューは表示されないようですが、 ウインドウ右上の×ボタンも表示されなくなってしまいました。
>>185 WS_OVERLAPPEDWINDOW
でググるとヒントが一杯出てくるぞ。
メニューバーについては
WNDCLASSかEXかの
lpszMenuNameがNULLになってるか
CreateWindowかEXかの
HMENUがNULLになってるかどうか
これで消えるでしょう。たぶん。じゃないかな?おそらく。
WS_SYSMENUは
タイトルバーにシステムメニュー(閉じるボタンとアイコン)つける
とある。見当違いだったな。
OBBツリー難しい・・・orz あきらめて円での当たり判定にしようかな。
つ[ チラシの裏 ]
190 :
デフォルトの名無しさん :2006/04/29(土) 07:44:22
普通にダウンロードしてCDに焼け。
ヒント:割れ
>>186 できました。ありがとうございます。
でも、Altを押すと、もう一度Altを押すまで、画面更新が止まってしまいます。
アクションゲームをつくりたいので少々問題です。
>>192 Altキーを押してフォーカスが変わるのは正常な動作なんだから
アクションゲームだからって別に気にしなくて良いんじゃないの?
むしろウィンドウモードで起動してるのに、デフォルトのキーがちゃんと機能しないアプリは怖いと思うんだけど
どうしても止めたくないなら、フォーカスが変わっても画面更新の処理を止めないとか
って方法でもいいんじゃないの?
>>193 ZキーとXキー、カーソルキーを使おうと思っているのですが、Altも間違って押してしまいそうです。
>>どうしても止めたくないなら、フォーカスが変わっても画面更新の処理を止めないとか
この方法ってどうやるのでしょうか?
メニューが表示されると、WM_ENTERMENULOOP、非表示になるとWM_EXITMENULOOP
というコマンドが送られてくることはわかったので、そのタイミングで何か処理をすれば
回避できるかと思うのですが良くわかりません。
それと、リソースファイルには、メニューの項目は見当たらないのに、
元のサイズに戻す(R)
移動(M)
サイズ変更(S)
最小化(N)
最大化(X)
閉じる(C) Alt+F4
というプルダウンメニューが出たりすることがあるのが、これはどこで定義されているものなのでしょうか?
よろしくお願いします。
195 :
デフォルトの名無しさん :2006/04/29(土) 18:51:52
ゲームを作ろうと思ってます。 ただ、オブジェクト指向で考えると表示部分をどうすればいいかわかりません。 例えば、キャラAを描くときは キャラA->Draw(pD3DDevice) のようにキャラクラスに自分自身を描画するメソッドを用意してデバイスのポインタを渡すのか、 描く際は別に、 Draw(キャラA) のように描画クラスや描画関数を用意してそちらで処理するのか 一般的にどうするのでしょうか?
オブジェクト指向で考えなければ良い。
>>195 ゲーム作ったこと無いんだけど、
作ったことある人はどうやって作ってんの?
あ、専門学校の課題でオセロは作ったこと有ったけど、
さすがに「コマ」を表現するオブジェクトに
描画メソッドを持たせて、なんてことはやらなかったなぁ。
あたりまえか
198 :
195 :2006/04/29(土) 19:02:24
C言語で書いてあるゲームエンジンなどはソースが沢山あるのでだいたいわかるのですが、 C++で書いた場合のオブジェクト指向のソースっていうのがなかなか見当たらなくて、 入門書などもグラフィックの表示の仕方とかをクラスで表現しているだけなので、 実際にキャラとかとグラフィックスを関連させるところをどのようにしているかを知りたいのですが。 誰か!愛の手を!
キャラごとに、表示する方法が全然違ったら キャラA->Draw(); の方がいいんじゃないかな?
Draw(キャラA)の方が良いと思うよ?
201 :
195 :2006/04/29(土) 19:12:53
いきなり、意見が割れた・・。 ん〜、スレ違いなんですかねぇ〜・。
はっきりってどうでもいい。好きなほうでやれ。 いちいち普通は、普通は、って聞く奴はうざい。
たとえば、キャラごとに、レンダリングステートを変える必要があるとするじゃん。 Draw(キャラA)とかしたら、そういう設定ごとに SetRenderState(キャラA)とかしないとだめになるお。 キャラA->Draw()ならその中で一気に設定できてパーヘクトだぜぃ。
グラフィッククラス->Draw(リスト);
205 :
195 :2006/04/29(土) 19:31:30
ふむふむ、参考になりやす。 やはり、キャラAにもたしたほうが融通がききますか。 グラフィックスクラス->Draw(リスト)も 一応自分でも考えたんですよね。 グラフィックスポインタをいちいち移さなくて最終的にリストを網羅する方法。 しかし、203の意見を考えるとキャラごとにステートを変えたりすることを考えるとやはり キャラA->Drawですかね! とりあえず、それでいきます。ありがとうございました。
それだと、キャラごとに、不透明、半透明の描画をするとして、 各キャラの不透明の描画を先にして、その後半透明を描画したいとかなると困らないか? DrawNormal() DrawTransparent() って関数分ければいいかorz
やってみて駄目だったら変えればよい。
>>194 > >>どうしても止めたくないなら、フォーカスが変わっても画面更新の処理を止めないとか
> この方法ってどうやるのでしょうか?
メッセージループとゲームのルーチンを別スレッドにする。
> それと、リソースファイルには、メニューの項目は見当たらないのに、
システムで定義されている。ウィンドウ左上のアイコンをクリックすると出る。
あるいは Alt + SPACE。
209 :
194 :2006/04/29(土) 20:30:29
>>208 たびたび質問してすいません。
>メッセージループとゲームのルーチンを別スレッドにする。
というのは、ゲーム処理をCreateThreadで作った別スレッドで処理させるということですか?
その場合、元のメッセージループでメニューが呼び出されたとき、どういう仕組みで処理が
続くのかちょっとイメージがわかないのですが、
そいいうのを解説しているHPとかってご存知ありませんか?
わからない五大理由 1 読まない 2 調べない 3 試さない 4 理解力が足りない 5 人を利用することしか頭にない
>>209 そのウィーザードを使ったこと無いけど、フォーカスが無い時にゲームが止まる処理が入ってるんじゃないの?
敢えて止めなきゃバックグラウンドでもアプリは動くでしょ
それと、ZXキーを使うから、その近辺にあるキーの動作を効かないようにするってのは
余計なお世話だと思うけどなぁ。
「チラシ」 キャラの座標とかも キャラ->Pos( 0,0,0 ); って感じ? 座標もクラス内に入れるべき? 入れたらキーで移動するとき上のような関数作らないといけないし、 クラス無しにして直接変数に書き込むほうが軽いのかな〜。
キャラがもつべき変数だと思う。
最新のdirectx入れたら3Dテスト時の箱の回転速度が20倍ほどアップしたんだけど、 あまりの速さに恐怖を覚えた
それはお前の体内時計が 遅くなってるだけ。
217 :
デフォルトの名無しさん :2006/04/30(日) 14:40:08
ものすごい初歩的なことを聞いてすみませんが、(もしかしたら場違い?) Visual C++ 2005 Express Editionをインストールしたところ エラーで全てのコンポーネントをインストールできません。 net framework2.0と net framework2.0 日本語packと sql server 2005 express edition x86 がインストールできません どうしたらよいでしょうか? 全くの初心者なのでご指導おながいします
>>217 > ものすごい初歩的なことを聞いてすみませんが、(もしかしたら場違い?)
どう見ても基地外です。本当にありがとうございました。
219 :
デフォルトの名無しさん :2006/04/30(日) 14:56:29
全くの初心者なのでご指導おながいします 全くの初心者なのでご指導おながいします 全くの初心者なのでご指導おながいします
2chでも半年に一回みれるかどうかぐらいの低脳だな
221 :
デフォルトの名無しさん :2006/04/30(日) 15:13:28
ご迷惑おかけしました。 消えますそして、 氏にます。
てか、なんでこの板で聞くんだろうか
>後は面倒だから勝手にやってくれ頼むよ なんで1さんはこんなになげやりなの? なんかあったのこの板
板≠スレ
195の話題に乗り遅れた まぁセオリーからすると>204になるんだろうけどやっぱステートの変更がなぁ 関連して前スレでDrawPrimitiveを減らす為に纏めるってな話があったけど、纏められる 場面てのはかなり限定されね? キャラ->Draw()なんてのはキャラクタ数に比例してオーバーヘッドがでかくなりそうだし
また、勝手な予想で速度語る奴キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
別に間違っちゃいない
2Dか3Dかでだいぶ変わるな。 2Dならキャラ毎に別々にステート変更なんて普通は必要ないから、 いくつかのステートブロックに分けてそれぞれのブロックの描画キューに突っ込むようにするとか出来る。 3Dは微妙。ゲーム次第だろうな。
>2Dならキャラ毎に別々にステート変更なんて普通は必要ないから、 >いくつかのステートブロックに分けてそれぞれのブロックの描画キューに突っ込むようにするとか出来る。 背景->Draw() 敵->Draw() 弾->Draw() こんな感じかね それぞれ単一ステートで
Drawメソッドの中でステート変更ぐらいやればいいじゃん
敵や弾でクラス別けしないなぁ 俺の現在の構成は Volume Texture Material Geometry Frame Effect(シェーダ) 描画単位としてはGeometryでまとめてる 他にも、TextureやEffectでまとめられるけど どれが一番効率がいいのかはわからんし
2chのスレでは当たり前のようにデカイ顔してDirect3Dについて語ってるけど じつは2Dしかやったことないって奴、結構多いのか?
国産のPCゲームもそれほど多く無いと思いますし、 3D使ってる同人ゲームも最近増えてきたとはいえ数はまだまだ少ないと思います。 でもこのスレや、ここ以外のスレでも色々答えてくれる人は沢山居るようなのですが その人たちは3Dのゲームの製作に携わってる極小数の方たちなんでしょうか? それとも会社ではPS2とかで製作しつつ、趣味でDirectXを使ってるとかそういう人なんでしょうか?
同人サークルでPGやったことあるけど一番の問題はデータ。 ドット絵やらキャラ絵は描ける人はいくらでも居る。 背景なんかも写真から起こせばいいのでソレほど大変でもない。 だがポリゴンモデル&テクスチャ+ボーン&ウェイトマップとなると途端に人が居なくなる。 自分の方がLightwave使いこなせてたりする事もザラ。 結局たまに見るよく出来てる3Dの同人ゲームとかも 調べてみるとデザインがコンシューマー会社のデザイナーだったりするし。
***チラシ AA->Draw() のとき LPDIRECT3DDEVICE9 *m_pd3dDevice が必要なんだが、これもクラス内にいれるべき? メモリの無駄がどんどん増えていくな〜 グロールはやばいしな〜
D3DDeviceのインスタンスはグローバルでいいよ それかテクスチャとかから取得出来るので 使うときその都度取得してもいい
チラシじゃスルーだぜ。 質問スレなんだから、変なの気にしないで堂々と恋 Drawの引数なんかで渡せばOK。 その都度渡すのは面倒と思うかも知れないけど、実際は数カ所におさまるはず。 え、俺? ∧_∧ ┌──────────── ◯( ´∀` )◯ < 俺は、グローバルちゃん! \ / └──────────── _/ __ \_ (_/ \_) lll
グロール多いな。 う〜〜ん、グローバルはあんまり使うなと教えられたのに 猫でも分かるCでw
AA->Draw() とやらずに mainWnd->Draw(AA) とすれば一挙解決
ふりだしにもどる
あんまり使うな != 絶対使うな
>>234 べつにボーン使わなくてもマップ3Dで
キャラだけ2Dエセビルボード(FFT?)でもいいと思うんだけどな。
そんな苦労なく栄えるようになると思うけど。
要は作り手のセンスが悪い。
もっと自分の好きなゲームをよくみたほうがいい。
どう考えたってチッププチプチつないでマップつくるよりは
3Dでモデリング一発でこさえたほうがデザイナも作ってて楽しいし、
作業量的にも楽だし、見た目もいいよね?
FFとかシステム的に出来が良すぎるゲームばっかりみてその辺がわからなくなってるのかもね。
別になんでもかんでも3Dで作ればいいってもんじゃないけど、
全く使わずに無駄な苦労をすればいいってもんでもない。
そこでFFが出た事で説得力が失せてる
すまんな。 代わりに説得力溢るる例を挙げてくれ。
単にコード書きがヘタなんだが、やっぱ纏めて描画ってのは結構難しいわ orz DrawPrimitive()を減らすのに拘り過ぎてんのかな… いっそ全ての描画で単一ステート(切り換え無し)かつ全モデルをTriangleListに してしまえば楽なんだろうが… 真面目に↑案を検討し始めている俺ガイル どうせホビープログラミングだしな
プロファイリングしないで最適化しようとする奴は馬鹿
さみしいゆるわごめんだ
教えてプロファイリングって何?
心理捜査官 草薙葵でぐぐれ
対案なり解決法なりも提示しないで文句垂れるだけの奴も馬鹿ということで
自己紹介・・・
そんな奴が常駐してて、質問者が萎縮している質問スレ もっとも245みたいに、質問スレに愚痴書く奴も馬鹿だけど
と、馬鹿が何か言ってます
VS2005とdirectX9(april2006)を使ってます。 今は、VS2005でdirectX9の本がなかったので 著者がVC++6.0 or .netとdirectX9を使っている本を参考にしています。 その本にはdirectXをインストールすれば新しいプロジェクトの作成のとき directX 9 AppWirardというのが出てくると書いてあるのですが 私の環境では出てきません。これはVS2005とVC++6.0の違いでしょうか? それとも何かしらの操作をすれば使えるようになるのでしょうか?
たしかDirectXのバージョンにも関係してた希ガス
>>254 (Summer 2004)でウィザードは廃止
なるほど。わかりました。 その本はappwizardをベースに作ってく本だったので ちょっと困りますが、サンプルCDもあるのでそっちだけを参考にすることにします。 本当にありがとうございました。
258 :
デフォルトの名無しさん :2006/05/03(水) 02:51:58
ウィザードを使わないで、サンプルを参考に作れってことなんですか?
259 :
258 :2006/05/03(水) 03:58:04
自己解決。サンプルブラウザに入ってるEmptyProjectを使うのですね。
質問です。 Direct3DはHWNDを引数にしてデバイスの作成をするのですが、 それはつまり「沢山のWindow」があるアプリケーションでは Windowごとにデバイスを作成し、それに関連付けしたテクスチャーをロードする必要があるのでしょうか。 1回テクスチャーをロードし、それを複数のWindowに表示したいのですが…。
デバイスは1個。 複数のウィンドウへのレンダリングは、日本語SDKヘルプで「スワップチェーン」で検索
ありがとうございます。試してみます
試すなら俺を倒してからにしろ
やめておじいちゃんその体じゃ
スワップチェーン成功しました。 ありがとうございました。 ただ、Direct3D8でやろうとがんばっていたのですが、結局9でしかできませんでした。 プログラムはほっとんど同じなのに…。
ヘルプ眺めただけでやったこと無いけど、表示するだけなら、 IDirect3DDevice8::Present()の引数でHWNDを指定するだけじゃ駄目?
8なんかいじるなよ・・・
いきなりDirectXのプログラムから始めようとしたけど無理だった
>>268 すでにいきなりではなくなったのでこれから頑張れ
>>266 ダメでした。9のサンプルとはほっとんど変わらずに作りましたが
何故か真っ黒に変な色のドットがちょびっと。といういわゆる「VRAMの予期しないところを参照している」状態。
原因はわかりません
>>267 8だめですか…。
基本的にがなるべく古いもので作るのが良いと思うのですが…。(動作環境が多い)
現在、DirectX9のドライバがないようなハードウェアは メーカーでさえ製造はもちろんサポートを打ち切ったようなものだってことだ。 ドライバにバグが残っていても更新の見込みもない。 そんなものを君は全力でサポートしようとしようというのか。 プロでもつらいのに初心者には無謀。ゾンビに墓穴に引きずり込まれるだけだ。 世界は、美しくなんかない。
何をアホなことを言っているんだ? 3D系の機能にしてもDirect3Dが使えれば、ドライバそのものにDirectXのバージョンは関係ない。 どの機能に対応しているかどうかの違いでしかない。 それにDirectX9のフル機能に対応していないビデオカードは、 現在サポートが続いているものでも山のようにある。
7で作れるんだったら7で作っとけ 7で作れないんだったら8でも9でも大した違いは無いから9にしとけ
274 :
デフォルトの名無しさん :2006/05/05(金) 13:37:00
DirectX9.0ってどうしたら使えるんですか?orz
>>272 書籍やヘルプもないのに頑張れとかすげー無責任にもほどがある。
276 :
デフォルトの名無しさん :2006/05/05(金) 14:24:43
DXライブラリでフォトショップで描いた透過PNG画像を表示したいんだけどどうすればいいんだろう・・・ 水面の波とかを透過して描いたんだけどDrawGraph関数じゃ表示できないみたいです・・・ RPGツクールXPすごいな・・・
277 :
デフォルトの名無しさん :2006/05/05(金) 14:48:20
PNGにアルフ入ってるならそのまま出せば透過されるはずだが。 むろんステート関係はちゃんと設定した上での話。
279 :
デフォルトの名無しさん :2006/05/05(金) 15:17:03
278>> アルファチャンネル入ってる。ステートはまだいじってません・・・ Windows画像とFAXビューアではしっかりと透過表示されてるのに・・・ 勉強しよ
せめてチュートリアルぐらいは終わらせろ。
>276 DXライブラリはスレ違い。スレ無いけど。 SetDrawBlendModeを使え。
ちらし〜 OBBついにできたーーーーーー!!!(BOX表示だけですが・・) あとは、当たり判定をつければウハウハです! しかし、BOXに無駄がかなりあなるな、 う〜〜ん
ちらしうざい
284 :
デフォルトの名無しさん :2006/05/05(金) 20:48:36
>>276 ツクールXPってDirectXで描画してるにしては描画えらく遅いな。
透過はハードウェアでやってないんじゃないのか・・・?
計算も出力も全部ハードウエアですが?
なんで知ってるんだ。
ツクールXPの製品概要によればDirectDrawも使ってない。 2001年の頃にはDirectDrawのハードウェアなどあてにせず、 システムメモリ内で全画面のイメージを作ってから全体を転送するのが当たり前だった。 透過もソフトウェアでやる。それで60FPS出てたよ。 ツクールXPの描画は30FPSが上限でティアリング上等という設計なんだと思う。 DirectDraw全盛の時代の市販ゲームのRPGを思い出せば、 VSyncに同期したなめらかなスクロールより、そういうタイプが多かった。
>>282 OBBを作るのに苦労してたのか・・・
あたり判定の方が数倍面倒くさい気がするが。
291 :
デフォルトの名無しさん :2006/05/06(土) 16:19:54
Visual Studio .NET 2003でDirectXの勉強を始めてみようと思っているんだけど、
VSをインストールした後、
Microsoft DirectX 9.0 SDK (April 2006)
http://www.microsoft.com/japan/msdn/directx/downloads.aspx を入れるだけでいいのかな?
あとできれば簡単なサンプルプログラムと日本語のドキュメントを見てみたいんだけど
どこから入手できる?ちなみにまず勉強しようと思っているのはDirectSoundに関して。
サウンドカードからwave音を出す練習をしてみたいと思っている。
勉強する気なんてさらさら無いように見える。
工工エエエ(´д`)エエエ工工
295 :
291 :2006/05/06(土) 17:50:12
296 :
291 :2006/05/06(土) 17:54:45
>>293 結局日本語ドキュメントの最新版、October2004までさかのぼらなければ
Windows2000はサポートされてなかったorz・・・
DirectX 9.0 SDK Update - (December 2004)
.libと.hだけあればインストールする必用はないし、それだけで十分開発できる 少しは頭を使って考えろ。
>>296 Windows2000サポートの最新版は(December 2004)
300 :
291 :2006/05/06(土) 18:01:03
>>297-298 なるほど。そういう裏技もあるのか。
でも慎重派の俺はDecember 2004に甘んじることにしよう(´・ω・`)
二℃とくるなボケ
オブジェクトはデータでそ? データが自ら描画するわけないって思うんだけど。 シーンを管理するクラスなどがデータをいじくって、描画クラスがデータを元に表現する。 こう思ってるんだけど、どうよ?あってんのかな?
>>304 え?オブジェクトを描画されるものとみれば
描画は1メソッドにしかならないんじゃない?
オブジェクト指向っていうんだから実際に実体の認識できるものをクラスに反映しようよ。
それすらやらずに抽象クラスを先にだしちゃうのはなんかセンスなさげじゃない?
この世界のオブジェクトは描画クラスが存在を表現しているわけではない。
描写してくれって頼みにいく相手はキャラクタ等のオブジェクトではなく ウィンドウクラスなり何なりだと思うがね。
obbの境界BOXがうまく作れないorz 一個一個頂点を調べて 近い座標をある一定間隔でまとめてそれを囲む箱作ればいいのかな・・・ うーん、OBB専用モデル作成とかした方が簡単かも
>>308 つ 主成分分析
専用モデルもありだけど。
310 :
デフォルトの名無しさん :2006/05/06(土) 23:40:30
sdk8のサンプルでdirect3dのスキンメッシュにdirectinputの ジョイステックのサンプルを結合して人間を動かすプログラムを 書いても正常にビルドできたことが無いんですが、 ((関数%45&)〜〜は未解決です。みたいなエラー) それは置いといて、 例えばdirect3d + directinput + directmusicのように サンプルを組み合わせるときの注意点はありますか?
必用なものを必用なところに入れる。
>>309 > つ 主成分分析
そういう難しいことをいわれても実に困る。
カルシウムのことだよバカ
専属のCGデザイナーがいるなら専用モデル プロの自覚があるなら主成分分析より良いモノが出る。
315 :
304 :2006/05/07(日) 01:25:21
>>305 ごめん、オブジェクトってのがおかしいのかも?
抽象クラスでなく、何かメッシュやら画像やらを持ったクラスっす。
なんて表現すればいいか解らない俺は、バカ・・・。
みなさんは、そうゆうクラスにDrawメソッドを与えてるの?
ここにいる人たちって絶対にカルシウム不足だよねー
2ちゃん全体、ひいては全日本
なんか、頭の固いコンパイラといつも対話しているから、自分の頭も固くなるらしい。
>>314 今後の参考のために、主成分分析より良い物を教えてくれ。
__(^^) <ペイピッポォ みんな仲良くするピー /__ \ | | | | (_) (__) 愛用ツール:ツクール
321 :
319 :2006/05/07(日) 01:59:18
CGデザイナーに「プロの自覚があれば」って意味か。 プロのプログラマーなら、主成分分析よりいいアルゴリズムが出る という意味かと思った。 >312 主成分分析 OBB でググれ。
DX10って何が凄いんやろ、 噂によればまた初期化が難しきなってるとか・・・orz
ああ、難しき。
>>308 DirectXには
D3DXComputeBoundingBoxってのあるだろ?
車輪の再発明でもしてるのか
325 :
324 :2006/05/07(日) 09:34:22
俺勘違いしちゃってるな モデルにフィットしたOBBを作ってるのか
俺はOBBやるのに 線形代数ライブラリを一から作る羽目になったぞ えらい苦労した
327 :
291 :2006/05/07(日) 13:25:40
>>293 > 日本語ドキュメントは (October 2004) 日本語ドキュメントが最新版
>
http://www.microsoft.com/japan/msdn/directx/downloads.aspx ↑のドキュメント入れてみたよ。
インストール自体はうまくいったんだけど反映されたのが
・Visual Studio .NET 2003 Combined Collection
の方だけなんだよね。
・Visual Studio .NET 2003 MSDN ライブラリ
の方にはなぜか反映されなかった。
いや別に調べ物は今後はVisual Studio .NET 2003 Combined Collectionの方だけで
やれば済むことなんだけどね。
クエスト受けていないと手に入らないアイテムは クエストに必要な分が揃うとそれ以上出なくなるね。 それはいいんだけど、同じアイテムが必要なクエストを 複数受けていても、1回分しか出ないね。 清浄水のクエを3つ受けて行ったら無駄になった。
超誤爆ったw スレ違いどころか板違いorz
メッシュが閉じた形状か判定するには どうすればよいでしょうか
すべてのポリゴンの辺に他のポリゴンが隣接していれば閉じている。 クラインの壷みたいなのはどう扱うんだっけ
332 :
291 :2006/05/07(日) 19:34:34
今DirectSoundの勉強しているんだけど静的バッファとストリーミングバッファの扱いって難しいのぅ。 要は静的バッファに収まりきらないくらい長いwaveファイルはストリーミングバッファに 格納するらしいんだけど、具体的にどのくらいのサイズまで静的バッファは格納する ことができるんだろう?
>>331 レスありがとうございます。
クラインのツボみたいなの使われてるゲームってあるのかな...。
プログラムの仕方は分からないです。スミマセン。
ややこしい書き方してしまいました。 分からないってのはクラインの方です。 閉じた形状の方は分かりました。 ありがとうございました。
>>335 お、俺ん家の玄関においてあるのと同じだ>クラインの壺
クラインの壺の中ってどれくらい暗いん?
12ルクスくらい。
もう閉経してるから
急にレスがなくなったけど何かあったのかい?
DairekutoEkkusu?
342 :
デフォルトの名無しさん :2006/05/22(月) 12:25:48
質問失礼します。 D3DX: MEMORY LEAKS DETECTED: 43712 allocations unfreed (699392 bytes) D3DX: Set HKLM\Software\Microsoft\Direct3D\D3DXBreakOnAllocId=0xb60cb to debug アウトプットに上記2行が表示されました。 何が原因か分かりません。 怪しい個所など教えていただけると助かります。
メモリ開放箇所を全て確認しる (というより丸っきり開放してないように思えるが・・・)
344 :
342 :2006/05/22(月) 17:55:29
返答ありがとうございます。 まだ駄目です。。。解決しないです(;_; 解放は全部見ましたが特に怪しい所はありませんでした。 43712 と 699392 の数値が毎回激しく変わるのですが、プレイは毎回正常に行えます。 メッシュ(テクスチャー?)を作り過ぎると出る印象があるのですが、分かる方お願いします。 メッシュは104個程作ってます。
見落としてるに100メッシュ
メッセージにメモリリークって出てるんだからどっか解放忘れてるんだろ。 自分のプログラムの腕を信じないで素直にエラーメッセージを信じろ。
未解放のポインタに、新しくテクスチャを突っ込んでいるに 100テクスチャ
348 :
342 :2006/05/22(月) 19:37:54
表示された2行を元に何処を解放していないのか探し当てるのは辛いので、もっと情報が欲しいです。
とりあえず_CrtDumpMemoryLeaksのような、リークしているポインタリストが欲しいっす。
D3DX: Set HKLM\Software\Microsoft\Direct3D\D3DXBreakOnAllocId=0xb60cb to debug
とあるので、レジスタの
HKEY_LOCAL_MACHINE\Software\Microsoft\Direct3D\D3DXBreakOnAllocIdに0xb60cbをセットしてみました。
(HKLMってHKEY_LOCAL_MACHINEの略だったんですね。ったく分かりづらい。。。)
でもその後は、
http://www.gamedev.net/community/forums/topic.asp?topic_id=313718 のMetaKnight氏と同じ状況。
im not sure if that'll catch a DX leak
ですよ。
知ってる人、助けて。。。orz
×辛い ○面倒
>>342 バグが見つからないならプログラムを小分けに走らせればいいのさ
必要最低限の部分だけ抜き出して走らせるのさ
問題ないなら少しずつ大きくしていくのさ
351 :
342 :2006/05/22(月) 20:17:14
返答ありがとうございます。
>>350 まずそれやったですよ。
Aクラスを止めました -> リーク表示が消えました
Aクラスの中のものが解放されていないのかと思い、調べましたが結局分からず。
Aクラスを止めていたのを元に戻し、今度はBクラスを止めました -> リーク表示が消えました
もうね。
DirectXが人間だったら殴ってます。
なんだよ。。。こんなリーク初めてだよ。。。orz
短気な人はプログラミングに向かないよ。 とっととやめちまえ
クラスAとBで共有しているオブジェクトがあるとして それをAddRef()してるのに片方でしかRelease()してなかったりするってところか。
>>351 それならばAとかBとか関係なくどこか壊してんじゃないのか
>>344 でメッシュ作りすぎると出るとか言ってるから
メッシュ作るところを一部分ずつ何度も回すしかないだろ
640x480のウィンドウを作って640x480のbmpをSprite->Drawで表示させたのですが、 縦横に激しく間延びしてしまってウィンドウに収まらないのですが どのような原因が考えられますでしょうか? スプライトは下のように描画したのですが、、、 Sprite->Draw(texture, NULL, NULL, NULL, 0, NULL, 0xffffffff);
自己レスです。テクスチャを作る時にフィルタリングされてしまっていたようでした。 D3DX_FILTER_NONEにしたら解決しました。失礼しました
なんでこんなことを聞くのかについては気にしない方向で… ・共通のメッシュとボーン構造を持つ、複数のXファイルがあります。 ・D3DXLoadMeshHierarchyFromX()云々を使用して、個々のモデルとモーションの再生が可能になりました。 ・が、実は目的としたいのは、同一のメッシュ上で、複数のモーションを切り替えて再生することだったのです。 ・モデル情報(Xファイル)はバイナリで編集不可、製作者は現在多忙で、テキスト化->編集で複数モーションを もたせる手が使えません。 ・仕方ないので、各モデル情報から
for(int i=0; ANIMSTATE_MAX>i; ++i) { static const wchar_t* stapFileName[ANIMSTATE_MAX] = { L"MODELA_ANIM0.X", L"MODELA_ANIM1.X", L"MODELA_ANIM2.X", L"MODELA_ANIM3.X", L"MODELA_ANIM4.X", }; m_aSkinMesh[i].Load(&getD3DDevice().getDevice(), stapFileName[i]); HRESULT hr = m_aSkinMesh[i].GetAnimeCtrl()->GetTrackAnimationSet(0, &m_apAnimationset[i]); if(FAILED(hr)) _ASSERT(0); } } みたいにして、m_apAnimationset[]に AnimationSet を回収することにしました。
で、モーションのつなぎ。 ここでは補間とかは考えず、単にAが終了->Bを再生->Bが終了->Cを再生みたいなことをします。 本当はモーションの再生イベントをチェックするのが筋なんでしょうが、再生終了時間を検出しました。 LPD3DXANIMATIONSET panimationset = m_apAnimationset[m_eAnimState]; double periodtime = panimationset->GetPeriod(); double delta = rDelta; double time = m_aSkinMesh[0].GetAnimeCtrl()->GetTime(); time = fmod(time, periodtime); if(periodtime <= time + delta) { delta = periodtime - time; m_eAnimState = m_eNextAnimState; m_aSkinMesh[0].GetAnimeCtrl()->ResetTime(); m_aSkinMesh[0].GetAnimeCtrl()->GetTrackAnimationSet(0, &panimationset); m_aSkinMesh[0].GetAnimeCtrl()->UnregisterAnimationSet(panimationset); m_aSkinMesh[0].GetAnimeCtrl()->RegisterAnimationSet(m_apAnimationset[m_eAnimState]); m_aSkinMesh[0].GetAnimeCtrl()->SetTrackAnimationSet(0, m_apAnimationset[m_eAnimState]); m_aSkinMesh[0].GetAnimeCtrl()->GetMaxNumTracks(); m_aSkinMesh[0].GetAnimeCtrl()->GetNumAnimationSets(); }
…ぶっちゃけ、 あるモデルのアニメーションセットの差し替えって、アニメーションコントロールから GetTrackAnimationSet() UnregisterAnimationSet() でアニメを外して、 RegisterAnimationSet() SetTrackAnimationSet() で再登録って流れを踏めばいいんでしょうか? ある程度はちゃんとうごくっぽいんだけど、一部のスキンに 妙なスケールがかかっちゃったりして、元データの問題なのか プログラム側が強引過ぎるのか、問題が掴めずにぼーぜんとしております。 どなたか詳しい方、ご教授くださいぃ。
>>357-360 自己解決してしまいました
っつーか、上のやり方で普通に正しかったみたい。
m_aSkinMesh[0].GetAnimeCtrl()->GetMaxNumTracks();
m_aSkinMesh[0].GetAnimeCtrl()->GetNumAnimationSets();
はいらないけど。
モデルデータの問題だったーよ…
少し構造の違うモデルが紛れ込んでただけだった。
お騒がせしましたー。
つ [熊さんのぬいぐるみ]
DirectMusicを使おうと思ったのですが、CoCreateInstanceでエラーが出て使うことができません。 「0x80040154 クラスが登録されていません」とのことですが、よくわかりません。 CoInitializeもやっています。
Managed DirectXって未来無いのかな・・・ 使ってるよって話を全く聞いたことがない。
>>364 そもそもMSは外部からきた奴が提案したものは短命
366 :
デフォルトの名無しさん :2006/05/27(土) 23:09:30
skinnedmeshで ビュー行列とプロジェクション行列をセットして m_pd3dDevice->SetTransform(D3DTS_VIEW, (D3DMATRIX*)&m_mView); の文のD3DTS_VIEWをD3DTS_WORLDにしてD3DXMatrixTranslationで 座標を変えたいのですが原点(0,0,0)から動きません。 どうすればワールド座標で座標を変えられますか?
SDKのサンプルじゃなく、市販か同人でひとつの作品まで仕上がったレベルで、 skinnedmeshを固定機能で実装してる奴って存在しないんじゃないかと思うが どうだろう
開発用の、ノートの方がシェーダ使えなくて、やむなく固定も使用してるね
>>366 skinned meshの場合(インデックス付き頂点ブレンディングが有効の場合)は、
ボーンごとにワールド(ローカル)行列をセットする必要があるよ
例えば0番目のボーンのワールド行列をセットするには
device->SetTransform( D3DTS_WORLDMATRIX( 0 ), &matrix_world );
初心者ですけどVisualStudio2005でビルドしたらunicode形式にしろって警告がでるんですけど どうしたらいいんでしょう?
372 :
371 :2006/05/28(日) 14:06:12
自己解決しました。 どうもすいませんでした
>>369 ワールド座標でできました。ありがとうございました。
すいません質問です。 VisualStudio2005でV++ディレクトリでインクルードとライブラリを設定して プロジェクトのプロパティ[リンカ]→[入力]→[追加の依存ファイル]を設定しても LINK : fatal error LNK1104: ファイル 'C:\Program Files\Microsoft DirectX SDK (April 2006)\Lib\x86.obj' を開くことができません。 とエラーがでます。ググりましたがぜんぜん原因がわからないので、わかる方は教えていただけないでしょうか? V++のライブラリファイルにインクルードしてるファイル↓ 「C:\Program Files\Microsoft DirectX SDK (April 2006)\Lib\x86」 V++のインクルードファイルにインクルードしてるファイル↓ 「C:\Program Files\Microsoft DirectX SDK (April 2006)\Include」 プロジェクトのプロパティ[リンカ]→[入力]→[追加の依存ファイル]設定しているファイル 「"C:\Program Files\Microsoft DirectX SDK (April 2006)\Lib\x86"」
>プロジェクトのプロパティ[リンカ]→[入力]→[追加の依存ファイル]設定しているファイル >「"C:\Program Files\Microsoft DirectX SDK (April 2006)\Lib\x86"」 これってフォルダじゃないのか? ファイルの設定するところにフォルダ書いたら、そりゃエラー出るだろう。
376 :
374 :2006/05/28(日) 16:26:39
>>375 指摘されたところを修正したらうまく行きました。ありがとうございます。
V++ディレクトリのライブラリと同じものを設定すればいいと勘違いしてました。
<修正前>
"C:\Program Files\Microsoft DirectX SDK (April 2006)\Lib\x86"
↓
<修正後>
"C:\Program Files\Microsoft DirectX SDK (April 2006)\Lib\x86\d3d9.lib"
"C:\Program Files\Microsoft DirectX SDK (April 2006)\Lib\x86\d3dx9.lib"
"C:\Program Files\Microsoft DirectX SDK (April 2006)\Lib\x86\dxerr.lib"
"C:\Program Files\Microsoft DirectX SDK (April 2006)\Lib\x86\dxguid.lib"
質問ですが、SkinnedMeshサンプルで g_pFrameRoot、g_pAnimController、g_vObjectCenter、g_fObjectRadius これらのグローバル変数を名前を変えて自作のクラス内に入れ、実行すると 「Unexcepted error encountered」 「SetupBoneMatrixPointers()」 というダイアログが出てストップしてしまいます。 尚、グローバル変数でもう一度試したところ問題なく実行できました。 どうにかしてクラスor構造体で動作させたいのですがどうすればいいのでしょうか? 一応下に作ったクラスを書いておきます(コン・デストラクタは省略です) class Objects{ public: Objects(); ~Objects(); LPD3DXFRAME FrameRoot; ID3DXAnimationController* AnimController; D3DXVECTOR3 ObjectCenter; FLOAT ObjectRadius; Objects* NEXT; };
デバッグ汁
379 :
377 :2006/05/29(月) 01:28:00
根本的なところを間違っていたんでなんとか修復できましたw
380 :
デフォルトの名無しさん :2006/05/31(水) 06:48:32
DirectX9のDirectFontについての質問です。 現在2D系のゲームを作っていて、会話画面と体力の表示画面とで文字出力のフォントの大きさを変えたいのですが、 Draw() { logFont.Height = 25; //フォントの文字セルまたは文字の高さ logFont.Width = 10; //フォントの文字の幅 (論理単位) D3DXCreateFontIndirect(lpD3DDEV, &logFont, &g_pFont); DrawText(会話画面描画命令) logFont.Height = 50; //フォントの文字セルまたは文字の高さ logFont.Width = 20; //フォントの文字の幅 (論理単位) D3DXCreateFontIndirect(lpD3DDEV, &logFont, &g_pFont); DrawText(体力の表示画面描画命令) } とやるとプログラムが滅茶苦茶重くなります。 D3DXCreateFontIndirect(lpD3DDEV, &logFont, &g_pFont); で毎フレームフォントの設定をしなおしているからなのですが、 このような方法以外に、フォントの大きさを別々に設定する方法はないでしょうか?
またか・・・ もう見飽きた質問だな
>>380 GetGlyphOutline でググってみるといいかも。
383 :
デフォルトの名無しさん :2006/06/01(木) 00:15:48
初心者なんで根本的に勘違いしてたらすいません。 Xファイルを読み込んで表示した所、奥に隠れて見えないはずの部分も表示されてしまいました。 深度テストとやらが上手くいってなさそうな雰囲気なのですが・・・ EnableAutoDepthStencil = TRUE; AutoDepthStencilFormat = D3DFMT_D16; の後にデバイスを作っていてSetRenderStateで深度バッファを有効にしています。 もう何が原因なのやらさっぱり。D3DRS_ZFUNCを色々いじった結果、全部同じ深度にある事になってるっぽいです。 SetRenderState深度バッファ書き込みを有効にしてみたり色々やったんですが解決しませんです。。。 なんか他に原因があるんでしょうか? ちなみに使ってるのは2003summer C++6.0です
>>383 射影行列(D3DXMatrixPerspectiveFovLHとか)のパラメータは
どうなってるのかしら。
385 :
デフォルトの名無しさん :2006/06/01(木) 01:16:14
DirectX9のDirectFontについての質問です。 現在2D系のゲームを作っていて、会話画面と体力の表示画面とで文字出力のフォントの大きさを変えたいのですが、 Draw() { logFont.Height = 25; //フォントの文字セルまたは文字の高さ logFont.Width = 10; //フォントの文字の幅 (論理単位) D3DXCreateFontIndirect(lpD3DDEV, &logFont, &g_pFont); DrawText(会話画面描画命令) logFont.Height = 50; //フォントの文字セルまたは文字の高さ logFont.Width = 20; //フォントの文字の幅 (論理単位) D3DXCreateFontIndirect(lpD3DDEV, &logFont, &g_pFont); DrawText(体力の表示画面描画命令) } とやるとプログラムが滅茶苦茶重くなります。 D3DXCreateFontIndirect(lpD3DDEV, &logFont, &g_pFont); で毎フレームフォントの設定をしなおしているからなのですが、 このような方法以外に、フォントの大きさを別々に設定する方法はないでしょうか?
>>385 2種類のフォントをあらかじめ生成しておけばいいんじゃないの?
(g_pFont1とg_pFont2とか)
というか"設定"じゃなくて"生成"だから、それだと生成されまくりよ。
>>384 射影行列のパラメーターを聞かれたので関係あるのかと色々いじってみました。
そんでどうも、前方投影面と後方投影面の距離差を小さくすると上手くいきました。
これは、前方投影面と後方投影面の距離差が大きすぎると計算誤差が出てダメになるって事ですよね?
良く考えたら当たり前ですね深度バッファの計算範囲は0.0f〜1.0fみたいですし。
記憶が正しければfloat型の精度ってそこまで良くなかったような気がしますし。
0.01〜1000くらい取ってたんですが今考えると大変愚かしい。0.01ってなんだ0.01って。
どうもありがとうございます。助かりました。
388 :
デフォルトの名無しさん :2006/06/01(木) 10:36:37
D3DRS_ZENABLEをD3DZB_TRUEにして D3DRS_ZWRITEENABLEもTRUEにしてるのに Zバッファが有効にならない状態って なんか心当たりある人いない? Zバッファは毎回クリアしてます。 EnableAutoDepthStencilはTRUEです。 AutoDepthStencilFormatはD3DFMT_D16です。
389 :
388 :2006/06/01(木) 10:39:11
ごめん、スレ何も見ないで書いた。
>>383 と殆ど同じ。
390 :
380 :2006/06/01(木) 11:41:10
>>382 後で調べてみます、情報ありがとうございます。m(_ _)m >>386 なるほど!!生成しまくってたのですね!! 重くなった理由がわかりました!! フォントを2種類作る方法もわからなかったのですが、 g_pFontを2種類作れば良かったんですね!! 試してみたら成功しました。 ありがとうございましたm(_ _)m
質問失礼します。 OS:WindowsXP IDE:VisualStudio2002 SDK:DirectX9(December 2005) 言語:C++ 上記の環境で開発しています。 DirectXでSurfaceなどを取得して、Releaseせずに終了した際に、メモリリークが発生しますよね。 その時に、デバッグモードだと出力ウィンドウに下記のような表示がされるんですが、 Direct3D9: (ERROR) : [0] : Address 0047A3A5 Direct3D9: (ERROR) : [1] : Address 0047A3A5 開発マシンによって出たり出なかったりするんですよね。 適当に設定したので、なにを設定したらメモリリークなどのエラー表示をするのか分かりません。 どなたかご教授願いませんか? よろしくお願いします。
>>391 コンパネ>DirectX>Direct3D>
Debug Output Level
Use Debug Version
他
>>392 設定してみたら出来ました、
色々みてみます。
ありがとうございました!
394 :
デフォルトの名無しさん :2006/06/01(木) 20:14:10
そういえば最近、「DirectX逆引き大全」が出たね。 重大な誤りとかが無ければ買おうと思ってるけど、 どんなもん?
レポよろ
立ち読みした限りでは浅く広くって感じ 恥ずかしくて今更人に聞けないような事もきちんと書かれていていいんじゃね
恥ずかしい とは性的な意味でしょうか
398 :
デフォルトの名無しさん :2006/06/03(土) 02:03:23
カメラの位置から、2Dマウスの場所に向かってレイを飛ばしたいのですが、どうやれば良いのでしょうか?
そのようにせい。
クリックしたスクリーン座標をワールド座標に変換してみ
401 :
デフォルトの名無しさん :2006/06/03(土) 11:05:06
日本語のドキュメントをインストールしたのですが どうやったら見られるのかがわかりません フォルダをみると得体のしれない拡張子のファイルはいくつかあるのですが
連結ヘルプコレクション
スカートの中は見通せるのにヘルプファイルは見通せないのか
404 :
401 :2006/06/03(土) 17:05:21
>>403 ドキュメントの見かたは諦めるからスカートの中の見通しかた教えて
405 :
デフォルトの名無しさん :2006/06/04(日) 01:17:57
縦画面環境で質問、 縦画面をサポートしたビデオカードで画面を縦にしている環境で、EnumAdapterModes()の 結果はやっぱ横画面の時と変わるの? あと、現在の画面が縦か横かを判断するのはGetSystemMetrix()で画面サイズ拾って 縦横比調べるのでおk? DirectX的にもっとスマートな方法はないもんかと
406 :
デフォルトの名無しさん :2006/06/04(日) 16:32:36
Direct3Dで描画するときにRGBのRのバッファにだけ 書き込む方法とかない?
>>406 D3DRS_COLORWRITEENABLE
408 :
406 :2006/06/04(日) 16:39:12
409 :
デフォルトの名無しさん :2006/06/05(月) 00:39:52
正直に白状するとヘルプ読んでも判らなかったのでここで質問 正しいレンダーターゲットの「戻し方」を教えて下さい。 SetRenderTarget()で描画先を変えた後で元に戻したい場合にどう戻せばよいのか判りませぬ。 SetRenderTarget()で変える前に元々のレンダーターゲットをGetRenderTarget()で取得しておいて、 用が済んだらこの値を使ってSetRenderTarget(0,元の値)とかするのかと思ったけど、GetRenderStateって 参照カウント上がるし、使った(SetRender…で戻した)後は解放するしなきゃならんのでちょっと違和感。 この辺の作法について教えて下さい。 コノトオリ orz
そもそも"戻す"ってのがおかしい。
411 :
デフォルトの名無しさん :2006/06/05(月) 00:48:57
どうおかしいのかがワカランのですが
ここは不親切な回答しかないインターネッツですね
別に「元」なんてとっておかないでバックバッファ指定すりゃいいじゃん。
>>415 「作っておく」ってなんだよ。
関数の宣言のことなら、プロトタイプ宣言でググれ。
プロトタイプ宣言さえしてあれば、関数の定義の順番なんてどうでもいい。
DirectXは関係なく、C言語の話。
417 :
デフォルトの名無しさん :2006/06/05(月) 14:59:25
directmusicで曲を再生すると、なぜか音飛びや音ブレが起きます 容量に関係なく曲によってそういった現象がおこるものとそうでないものがあります いったい何がおかしいのでしょうか 助けてくださいm(_ _)m
ところで
?
すいません 手の施しようが無くて困っているのですが教えていただけませんか DirectShow Filter Toolでロクに考えもせずにフィルタ登録を解除していったら、 DirectShow Filter Tool自体が機能しない上に、 メディアプレイヤーも全く機能しなくなってしまいました 起動はするのですが、メディアファイルを読み込む時点でエラーが起きます ・WMP→不明なエラー ・リアルプレイヤー→エラー報告すらなし ・GOMプレイヤー →「ダイレクトシヨーを初期化できません。 このソフトウェアはダイレクトX 7.0以上が インストールされていないと動作しません。」 と出ます。 DirectXは9.0Cがインストールしてあるので、 あとは認識させることが必要だと思うんですが…方法が分かりません。 どなたか分かる方、ご教授お願いします…。
たとえば
なんつーか、回答者も初心者だよな
423 :
420 :2006/06/06(火) 00:40:43
なんかスレ違いだったみたいですね…お目汚し大変失礼しました。 他を当たってみます…。
ああこのスレ大好きだ・・・過去ログ漁ったら知りたかった事即解決された(;´Д`) うっひょーー
425 :
デフォルトの名無しさん :2006/06/07(水) 14:22:14
すみません質問です。 DirectX9で3000*3000といった大きな画像を読み込んで等倍で表示する場合、 元画像は1024*1024サイズ毎に切り分けないとダメなのでしょうか? できるだけ元の画像はいじらないでDirectX上から大きな画像を扱うにはどうすればよいのでしょう。
426 :
デフォルトの名無しさん :2006/06/07(水) 14:38:41
4096x4096のテクスチャの左上に展開。 そうはいっても4096x4096の32Bit画像を1つ持つだけでも 64MBのメモリが必要になるわけだが・・・ そんなでかい画像を使う必要あんのか? 256x256をタイル上にしてレンダリングしてもバイリニア+回転とか やらない限りつなぎ目なんてそうそう見えないはずだが。
427 :
425 :2006/06/07(水) 15:54:10
なるほどたしかにメモリは食いますね・・・画像カット以外に手はないのでしょうか? >そんなでかい画像を使う必要あんのか? まぁ、そうなんですけどチト仕事上で必要なので 元画像を複数枚に分けてってのはできるだけ避けたいのです。
なぜ避けたいのか理由を明確にせよ。
3000x3000のテクスチャを作成すればいーじゃん。
430 :
425 :2006/06/07(水) 16:32:03
>>428 ようは会社間の力関係です。
上から頂戴した画像素材様をこちらの都合で切り分けたりすることはもってのほか。
自分はひ孫以下の階層に位置しますので、もちろん画像の仕様について口を出せません。
またプログラム作成後も画像がさし変わるので、切り分けの手間も入れたくないのです。
・・・という理由です。 orz
昔から孫の頼むことにじいさんばあさんは弱くてだな…
ファイルを分割しなくても、プログラム側で切り分ければいい。
理由と画像を切り分ける事が全然繋がらないな。 読み込む時に内部でバラせばいーじゃないの? int size_x = 256; int size_y = 256; for ( int y = 0; y < 3000; y += size_y ) { for ( int x = 0; x < 3000; x += size_x ) { pTex[y/size_y][x/size_x] = テクスチャ作成( size_x, size_y ); int Sx = 3000 - (x * size_x); int Sy = 3000 - (y * size_y); if ( Sx > size_x ) Sx = size_x; if ( Sy > size_y ) Sy = size_y; RECT Dst = { 0, 0, Sx, Sy }; RECT Src = { x, y, x+Sx, y+Sy }; D3DXLoadSurfaceFromFileInMemory( 色々, &Src, &Dst) } } こんな感じでどーよ。
>int Sx = 3000 - (x * size_x); >int Sy = 3000 - (y * size_y); ココ間違ってた・・・
436 :
425 :2006/06/07(水) 17:20:08
>>434 なるほど、プログラム内部で2のn乗サイズに切り分ければいいんですね。
この方法でなんとかなりそうです。(^^;
どうみても初心者質問です。本当にありがとうございました。
437 :
デフォルトの名無しさん :2006/06/08(木) 19:19:58
質問です 3Dでパースをつけないように描画する方法があれば教えてください DirectXのバージョンは8です
D3DXMatrixOrthoLH DirectXだとかOpenGLだとかは関係ない。 透視変換時のマトリックスの違いだけだ。
そういえば、普段は正常なシーンでも、射影変換だけ正射影に切り替えると Zバッファの比較がぐちゃぐちゃになるのですが、 そういうものなんですか? まあ、ツールのワイヤーフレーム画面ならそれでも問題なく動きそうではあるけど。
アホなことを言う前に自分で計算してみろ。
すみません。スキンメッシュモデルでのピクセルシェーダの 使い方について質問です。 今まで頂点シェーダのみで描画していたモデルにピクセルシェーダを 適用してみようと思って以下のコードを書いてみたのですが…。 (頂点シェーダの内容は省きます) // ピクセルシェーダ float4 PS_HDRShader( VS_OUTPUT In,uniform int NumBones ) : COLOR0 { float4 s = In.Diffuse; float4 a = tex2D( MeshTextureSampler, In.Tex0 ) * s; return a; } technique t0{ pass p0{ VertexShader = compile vs_1_1 VShade(1); PixelShader = compile ps_2_0 PS_HDRShader(1); } } このように記述すると、スキンメッシュモデルの形状等は正常に描画されてるのですが テクスチャが真っ黒な状態で描画されてしまいます。 テクスチャの色を出す良い方法はないでしょうか? (ピクセルシェーダの部分を削ればテクスチャ含め正常に描画するのですが…) DirectX9.0 9.0c WindowsXp VisualC++ Express にて開発をしています。
シェーダーにちゃんとテクスチャ送ってる? IDirect3DDevice9::SetTexture()じゃシェーダーにはテクスチャ送られないぞ?
443 :
デフォルトの名無しさん :2006/06/09(金) 15:14:11
すんません、質問させてください。 DirectX9で円や矩形といった基本的な図形を描画するにはどうすればよいのでしょうか? ID3DXLineというのは見つけたのですが、四角や円を描く方法が分かりません。 多分ものすごく初心者質問だと思うんですが、ヘルプやGoogleで調べても分かりませんでした。 ご存知の方いらしたら、よろしくお願いします。
線分を4本組み合わせれば矩形になります。 三角関数を使って座標を計算しながら1周つなげれば円になります。
あう・・・それはもしかすると 「そんなのねぇよ!板ポリで描けや。」 ということでしょうか・・・(´;ω;`)
ポリゴン以外に画面描画する方法はない。 と思っておけばよい。
いや目的によりけりでしょ。 事前に円や矩形のテクスチャ用意してそれを表示するだけで済む場合もあるし・・・ でも DrawPrimitive の類を使って自前で描くのが全ての基本。 GetDC 使えばデバイスコンテクストもゲットできるから GDI の描画関数も使えるけど、 それだと DirectX 使う意味があまりないかもね。
C# + DirectSoundについては、ここで質問してもかまわない?
>>449 URLまで貼ってくれて・・・丁寧な案内さんくすです。
誰かNVperfHUDの2.0ベータもってない? 徹夜で検索したけどどこにもないよ・・・
どこかshaderいっぱいおいてあるとこない?
453 :
デフォルトの名無しさん :2006/06/14(水) 11:14:25
質問です。 D3DXCreateTextureFromFileExを使って読み込んだテクスチャを、四角ポリゴンに貼り付けて使おうとしています。 いわゆる2Dゲーム用の描画を作っているところです。 テクスチャを2の乗数とし、かつ四角ポリゴンの表示場所を-0.5fし、フィルタをD3DX_FILTER_POINTEにすることで、ドット絵も綺麗に(アンチがかからずそのままという意味)表示することができました。 で、次のステップとして「640*480のような画像であっても、1サイズ上(1024*512)の領域を確保して、そこにロードすることによって対応したい。使わない領域ができて無駄だけど…」と思いました。 D3DXCreateTextureFromFileExの第二、第三引数に、テクスチャサイズを指定するところがあるので、早速1024, 512と入力してみたのですが、変化がありません。 (四角ポリゴンの設定は変えていないので、予想では「左上にファイル画像が。右と下に余白がある画像」が描画されるつもりでした) 大きめのテクスチャに、ファイルから読み込んだ画像を配置する方法は、D3DXCreateTexureFron〜ではなく、別にあるのでしょうか? (逆に256,256などを指定することで、画面が粗くなることは確認しました)
454 :
デフォルトの名無しさん :2006/06/14(水) 11:39:28
追記です。 DirectXのヘルプでD3DXCreateTextureFromFileExを見たところ Width [in] Width in pixels. If this value is zero or D3DX_DEFAULT, the dimensions are taken from the file and rounded up to a power of two. If the device supports non-power of 2 textures and D3DX_DEFAULT_NONPOW2 is specified, the size will not be rounded. とありました。つまり2の乗数じゃなくても、2の乗数に自動的に大きくして領域を確保するよ。 とあるのですが、はて、うまくいっていません。 そこで56*64という中途半端な画像を用意して、同じく64*64のサイズを指定しつつ読んでみました。 画像が微妙に乱れます。 ですが128*128を指定すると綺麗にうつりました。 それならと、640*480の画像を1024*512のさらに二倍。2048*1024で確保してみました。 綺麗にうつりました。 つまり、2段階大きいサイズを指定すると綺麗にうつるようです。 なんて物凄い無駄…。 一応解決したにはしたのですが、せめて1段階大きいサイズですませる(60*17→64*32)方法はないものでしょうか?
>>455 ありがとうございます。
解決することができました。
FILTER_POINTについて誤解していたようですね。再度調べてみます。
457 :
デフォルトの名無しさん :2006/06/14(水) 14:59:49
ビデオチップ Intel(R) 82852/82855 GM/GME Graphics Controller DirectX7 において、CreateSurfaceを使ってビデオメモリにオフスクリーンサーフェスを作成するとき、 1024x1408(16ビット、32ビット共)からメモリ不足が返ってきて作成できなくなります。 1024x1407までは作成できます。 システムメモリには問題なく作成できます。 ビデオメモリの残りが30Mと十分に余っているのになぜ作成できないのでしょうか? 同じような症状で困った方や、解決した方がおられましたら、教えていただければ助かります。
DirectDrawSurfaceは縦長サーフェイスはビデオカードの気分次第です。 素直に縦長のサーフェイスは分割しましょう。
459 :
デフォルトの名無しさん :2006/06/14(水) 18:02:09
417です 事故解決しましたので僕と同じ症状が出ている方はためしてくださいな DirectAudio初期化の際のCoInitialize(NULL);を呼びますが、私はこれを ウィンドウの設計図 こんなやつ WNDCLASSwndclass; memset( &wndclass, 0, sizeof( WNDCLASS ) ); // ウィンドウの設計図 wndclass.hInstance= hInstance; 以下続く の前呼んでいたから音飛びなどが出ていたようです。 なぜだろう・・バグが直る要因がわからないのってすっきりしませんね バグ直ったからとりあえず良しとしますが、今後調査します
なんで初心者がDirectX7に手を出すんですか? それにハードウェアblitって今でもやるメリットあるんですか? 普通の2Dゲームなら、ソフトウェアでも滅多に処理落ちしないんじゃないですか?
2Dアクションゲーム(スーパーマリオみたいなの)でDirectX使う場合ってDirectInputとかDirectSoundを使うくらいですか? 全く見当違いのこと聞いてたらごめんなさいorz
>>462 マジレスするとそんなことも調べられないようじゃ2Dなんかに手をださないほうがいい。
はっきりいって2Dゲームってのは鬼門だ。
鬼門であることを理解するのもまたそれなりの期間がいる。
>>463 んなこたーねえだろw
>>462 みたいなことを聞いてくるやつには、
3Dのリソースを簡単に作れねえ以上、2Dゲームの方がまだ作りやすい。
>>462 今時2Dでも、DirectDrawは使うやついないとして、、
Direct3D+DirectInput+DirectMusic(DirectSound)じゃね?
>>464 メタセコでも使えば一発で作れるじゃん>XFile
別にアニメーション(3D的な)しなくてもいいっしょ?
2Dだから単純なポリ板作ってテクスチャ貼り付けるだけだし。
質問です。 D3DPRESENT_PARAMETERS の Windowed に false を与えて デバイスをリセット、全画面化の後、Alt+TAB キーなどで他のアプリに フォーカスを移動させてからの復元を考えています。 この時点では最小化状態になっているので、ウインドウのプロシージャから WM_SYSCOMMAND の SC_RESTORE をフックして、その内部で もう一度デバイスをリセットすることで復元できるかと考えたのですが、 まだウインドウが復元しきっていないからなのか、リセットに失敗してしまいます。 こういう場合、どのタイミングでリセットするべきなのでしょうか? ウインドウが復元されてから(といっても表示は失われてしまっている状態ですが) 改めてリセットを行えば全画面状態が復元されるため、D3DPRESENT_PARAMETERS の パラメータ指定違いなどは多分無いと思います。 ShowWindow() の呼び出しも試したのですが、SC_RESTORE の中からでは意味が無い様でした。 どなたかアドバイスいただけませんか?
467 :
466 :2006/06/15(木) 03:32:58
自己解決とは少し違うのですが、一応対処だけはできたので、自己レスしておきます。 描画ループのIDirect3DDevice9::Present() に失敗したら、 IDirect3DDevice9::TestCooperativeLevel() を呼び出して 返り値に D3DERR_DEVICENOTRESET が戻ってきた時点で 改めてリセットをかけることで、問題なく復元はできました。 とはいえ、これが本当に正しい復元方法なのかは判断つきかねるところです。 引き続き、どなたか詳しい方のアドバイスをいただけたらと思います。
SDK付属のサンプルフレームワークに、目的の処理が 全部含まれているよ。 それを解析すればおk
469 :
466 :2006/06/15(木) 06:21:46
orz DXUTの長大さに恐れをなして、読むのを諦めてました… デバッガで追ってみたら、やってることはほとんど変わらない (Present() の結果で判断するのではなく、レンダリング前に TestCooperativeLevel()を呼び出してチェックしているくらい) みたいなので、この辺についてはこのまま行こうと思います。 ありがとうございましたorz マルチディスプレイの時はウインドウを表示しているディスプレイに合わせて デバイスのアダプタを切り替えてたり、本当にここまでしないといけないのかってくらい 色々やってますね、DXUT。 そのまま流用してもいいんだろうけど、隠蔽されすぎで何がなにやらなので もうしばらくは蹴ッ躓きながら読み進めていこうと思います。 重ね重ねありがとうございましたorz
470 :
デフォルトの名無しさん :2006/06/15(木) 12:00:54
LPD3DXFONTを利用して、3D画面に文字列を描画しているのですが、 その文字列がどれくらいの幅、かつ高さなのか取得する方法はありませんでしょうか? Microsoft DirectX 9.0 SDK (Summer 2004)をつかっております
>469 どうでもいいことだけど ここでのorzって挫折じゃなくてお辞儀の意味か? 礼というより土下座で謝ってるように見えるが。
DirectX風に謝れよ
D3DXorzLH()
orz 三跪九叩頭の礼
orzを使いたがるのは腐女子のようなセンスの人間 馴れ合いが好きで、鬱スレのウナギとかつまらないことに興じ、 同じ嗜好を持たない者がめについたら、罵倒でたたみ掛け 村八分にして喜ぶ。
orzを使いたがるのは腐女子のようなセンスの人間 馴れ合いが好きで、鬱スレのウナギとかつまらないことに興じ、 同じ嗜好を持たない者がめについたら、罵倒でたたみ掛け 村八分にして喜ぶ。
('A`)
('A`)
// D3DPT_TRIANGLEFAN
vside[0].p = D3DXVECTOR3( 0f, 0f, 1f );
vside[1].p = D3DXVECTOR3( 0f, 0f, 0f );
vside[2].p = D3DXVECTOR3( 1f, 0f, 0f );
vside[3].p = D3DXVECTOR3( 1f, 1f, 0f );
vside[4].p = D3DXVECTOR3( 0f, 1f, 0f );
vside[5].p = D3DXVECTOR3( 0f, 0f, 0f );
// D3DPT_TRIANGLESTRIP
vbottom[0].p = D3DXVECTOR3( 0f, 0f, 0f );
vbottom[0].p = D3DXVECTOR3( 0f, 1f, 0f );
vbottom[0].p = D3DXVECTOR3( 1f, 1f, 0f );
vbottom[0].p = D3DXVECTOR3( 1f, 0f, 0f );
ゴメンたい。
>>472
VC++6.0使ってるんですけどDIRECTXSDKのバージョンによっては(最新?) SDKが使えないようなことをどっかで見たようなきがするんですけど 最新のやつでも問題ないですか?MSのページ見たけどよくわからん
わからんままでいいじゃん
October 2004
483 :
480 :2006/06/16(金) 02:52:59
>>482 ありがと
それだとおけですよね?
あと今最新版のランタイム入れてるんですけど古いSDK入れてもおけ?
484 :
デフォルトの名無しさん :2006/06/16(金) 03:20:46
<わからない五大理由> 1. 読まない ・・・説明書などを読まない。読む気などさらさらない。 2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。 3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。 4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。 5. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする
次は質問スレで484みたいのを書く五大理由 480は態度で損しているが
次は、質問スレを教えてクンスレと勘違してる
>>485 みたいな奴が発生する五大理由
何言ってるんだ、質問スレは教えてクンスレだろw
そりゃそうだよな。 しかも初心者質問スレだし。
じゃあいつもの流れに復帰。
490 :
デフォルトの名無しさん :2006/06/17(土) 02:32:29
お前ら彼女いる?
いたけどリリースされてしまった。 慰めてくれ。
493 :
デフォルトの名無しさん :2006/06/18(日) 14:53:58
質問です。XP、.NET 2005、DirectX 9.0c です。 Direct3D を用いて 2D の描画を行っています。 あるテクスチャの貼られた 2D ポリゴンがフェードアウトする (α値が 255->0 に変化する)様子を描きたいのですが、いい方法が思いつきません。 1.CreateVertexBuffer 時に得られた頂点バッファのインターフェイスをロックし、ディフューズ色を書き換える →ロックに時間がかかってしまう 2.SetTextureStageState でα値の計算方法を、テクスチャの値×自分で計算した透明度に設定 →「特定の値との乗算」という方法が見つからない 3.ライト/マテリアル/法線を FVF に追加し、ライティング処理を利用する →透明になるわけではないので、後ろが透けるわけではない このような処理は、何を使って行うものなのでしょうか? よろしくお願いします。
三次元テクスチャを使えw
495 :
493 :2006/06/18(日) 15:03:10
肝心なことを書き忘れていました。
2D ポリゴンと言うのは、FVF にD3DFVF_XYZRHW を指定しているということです。
そもそもライトは効きませんね・・・。
>>494 2D ポリゴンでは上手く行かないのでしょうか?
DrawPrimitiveUP系でいいじゃん
>1.CreateVertexBuffer 時に得られた頂点バッファのインターフェイスをロックし、ディフューズ色を書き換える > →ロックに時間がかかってしまう どのくらい時間がかかったのか、測定条件と結果を言ってみ。
だから、全部用意して切り替えるでいいじゃん。 α値やなんかは頂点シェーダで渡せばいいんじゃん。 頂点シェーダってのは別にハードでサポートしてなくても勝手に動かしてくれんだよ。 その辺は心配すんな。 ロックしてなにやらする必要も無いぞ。 俺は矩形の描画でも頂点バッファなんかいちいち弄らずにシェーダにマトリクス情報渡してサイズも確定させちゃうけどね。
>>493 >1.CreateVertexBuffer 時に得られた頂点バッファのインターフェイスをロックし、ディフューズ色を書き換える
> →ロックに時間がかかってしまう
Lockに大して時間なんてかからない。
そんなにLockが嫌ならDrawPrimitiveUPを使う。
>2.SetTextureStageState でα値の計算方法を、テクスチャの値×自分で計算した透明度に設定
> →「特定の値との乗算」という方法が見つからない
D3DRS_TEXTUREFACTOR
>3.ライト/マテリアル/法線を FVF に追加し、ライティング処理を利用する
> →透明になるわけではないので、後ろが透けるわけではない
???
透明になるけど?
>>500 テクスチャの透明度と頂点に設定したαを使うなら
マルチテクスチャ(?)を使って、
>>500 が言ってる奴と頂点のどの値からとってくるのか指定しないと駄目じゃなかったっけ?
例えばマルチテクスチャ2のときって
1枚目の色をどっからとってくるか?
2枚目の色をどっからとってくるか?
1枚目と2枚目の計算をどうしたいのか?
って必要じゃなかったっけ?
この場合だと、
1枚目の色:テクスチャの色
2枚目の色:マテリアルの色
1枚目と2枚目の計算:テクスチャのαで計算した後の色をさらにマテリアルのαで計算する。
みたいな感じじゃなかったっけ?
超うろ覚え。間違ってたら腹切って責任とるわw
あ、マテリアルじゃないわ、頂点だっけ?
間違え X:1枚目と2枚目の計算:テクスチャのαで計算した後の色をさらにマテリアルのαで計算する。 ○:1枚目と2枚目の計算:テクスチャのαと頂点のαで計算する。
>>501 そんなもの、常に設定するのが当然だけど。
○○のときは指定するとかいうものではなく、常に明確に指定するもの。
デフォ設定を利用するなんて、描画オブジェクトが1つしかないようなデモくらい。
505 :
493 :2006/06/19(月) 00:18:04
色々とありがとうございます。 お教えいただいた D3DRS_TEXTUREFACTOR を用いて、透明度の設定ができました。 SetRenderState(D3DRS_TEXTUREFACTOR, 0x80******); SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_BLENDFACTORALPHA); SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE); として、DIFFUSE 色を 0 にすることで、透明度 0x80 を実現できました。 ロックが遅いのは、テクスチャをロックし、ビットデータを直接書き込むという処理を昔やってみたところ、 目視で確認できるほど遅かったため、ロック=遅いという風に思い込んでしまっていました。 ロックして書き込む方法、DrawPrimitiveUP を使う方法、色々試してみて最適なのを探してみます。 ありがとうございました。
テクスチャをロックせずに頂点カラーをロックすればいいのでは・・・。
507 :
493 :2006/06/19(月) 00:39:22
>>506 テクスチャのロックは、今回の件とは別件です。
まぎらわしくて申し訳ないです。
それはロックが遅いんじゃなくって書き込み自体が遅かったってオチかね。 いわゆるロックの遅さって、処理そのものの重さの問題じゃなくって、 描画に使用される段になってロックがかかっていると、そこでロックが開放されるまで 処理がストールしちまうことにあるわけであって、回避したければダブルないしは トリプルバッファリングすればいいってことになるんだろうけど、そういう認識であってる? ドライバ側の実装次第なんでなんともいえない? ビデオ側への散発的なメモリ転送がやたらコスト食う遅いことも考えられるか。
DirectXで外積とか内積使う場面ってどういうときなんですか? それによって得られる利点(効果)は何なのですか?
ポリゴンと線分の交点求めたりとかできるよ。 内積も外積も水や空気みたいに大事なものなんで、利点は何と聞かれると困るけど。 ぶっちゃけ無いと死ぬ。 世界が成り立たない、
3Dの世界には必須なものなのですか・・・
数学的知識盛り沢山ですね^^;
>>510 どうもありがとうございました!
>>511 3Dの世界?2Dで必要ないとか思ってるの?
とりあえず、平面上で自分の進行方向からみて
敵が右にいるか左にいるか?って外積使って出してみ?
それができたら、平面上に玉と直線の当り判定用意して、
玉が直線に当たって跳ね返る方向を内積使って出してみ?
>>512 おぁ・・・それが出来れば確実にステップアップとなりそうです。使いどころが前よりかは
見えてきました。重ねて御礼申し上げます。
MFCのピクチャーコントロールに描画してるんですが, ピクチャーコントロールのサイズが変わってもビューポートの値変わってないようです. ハンドルから?再取得するような関数ってありますか?
GetWindowRect と AdjustWindowRect および AdjustWindowRectEx でググりなされ。
516 :
514 :2006/06/20(火) 03:38:11
>>515 遅レスすみません
調べてみます.
ありがとうございました
517 :
デフォルトの名無しさん :2006/06/20(火) 21:09:01
8分木で表現されてるモデルを 効率的に描画するアルゴリズムで有名なものある?
518 :
デフォルトの名無しさん :2006/06/20(火) 22:08:57
>>517 意味わからん。
効率的ってどう効率的なのがいいの?
つーか、効率も糞もやっぱ、始めはクリッピングじゃねぇの?
データ構造がオクトツリーになってるなら 幹から順にビューフラスタムでカリングしていけばいいだけの気がする。 いきなりOBBで判定する前にスフィアで絞り込めばちょっと早くなるかの。
>>519 ツリーになってるといっても幹がクリッピングされたとしても
枝の方がクリッピングされるかどうかはわからないから
結局、すべてのオブジェクトをカメラ座標までもってこないとわからないんじゃね?
効率的もなにもないような・・・
普通、幹は枝を包括するように作らんか?
522 :
デフォルトの名無しさん :2006/06/21(水) 00:18:22
>>521 すまん。
実は8分木で表現される物体ってのがよくわからん状態でレスしたw
つまりただの8分木の描画について聞きたかっただけなんだな・・・orz
物体っちゅーからなんか別のモンだと思った。
>>510 >>512 ついでに教えてくれ
hsin や hcos って何に使う3D、2Dだと何に使う?
>>523 アークサインとかアークタンジェントは使ったことあるけど
双曲線サインなんて使ったことないな。(俺は)
まあ、サインとかコサインとかタンジェントとか内積とか外積とかよりは
ポピュラーには出てこないんじゃね?
とりあえず、数学は高校数学+αぐらい押さえときゃいいんじゃね?
物理も高校物理+αぐらいで十分っぽいし。
あとは気合でなんとかなる。
意外とよく使うのが直線の方程式だ。(y=ax + bの方じゃなくてなんか凝ってる方w)
俺はsin/cos&atanはテーブルにして使ってる程度だなぁ。
次世代機になると流石にテーブルのメモリアクセスより
関数呼び出した方が遥かに早そうだがなー。
まぁライブラリのシステム部分とかシェーダー周りを触らない限り
三角関数も基本的な内容で事足りるんだよな。
普通にゲームを作る上ではソレらしく見えればいいからやりようはいくらでもある。
>>524 3Dやるなら直線と平面の方程式はおさえておかないと厳しいよなw
>俺はsin/cos&atanはテーブルにして使ってる程度だなぁ。 整数系か固定少数系で弾幕シューティングでも作ってるなら、まあ使うのかも知れないけど、 現行のコンシューマー機でも、自前でテーブル持つメリットってほとんど無くね? ライブラリ側の実装自体、テーブル+補間程度だったりするしなあ。
>>518-522 サンクス
とりあえず
>>519 について調べてみる。
効率的ってのは見えない面を描画しないアルゴリズムとかです。
8分木でやると視点が変わっても絶対に見えない面だとがが出てくるんで。
そもそも、俺はsin/cos自体あまり使わないなぁ。 ほとんどベクトルだけで用が足りる。
内積から回転角求めるときacosとか使わない?
いわゆるラジアン角自体への用って、思うほどないんだよね。 回転量とかも大抵Quaternionで保持して終了だし。 明滅とかのためのちょっとしたカーブの取り出しに sin や cos 使うことは多いんだけど、 俺も大して使わないかも。 >8分木でやると視点が変わっても絶対に見えない面だとがが出てくるんで。 これなんかおかしくね?? 8分木の構造自体が間違ってるか、使い方を間違えてない限り、そういうことは起きないと思うんだけど。
>>529 そもそも角度という単位を、ユーザへの情報表示以外であまり使ってない。
8分木でも確かに見えない面とか出てくるけど、
それって屋内マップの場合じゃないか?
屋内マップなら8分木じゃなくBSPツリーの方が一般的のような気も。
4/8分木構造は基本的に屋外マップのような広大なフィールド向けの構造だと思うけど。
>>526 コンシューマーの中でも特にダメな黒箱はテーブルの方がいいと思われ。
とはいってもメモリ結構使うし、メモリのアクセス速度考えるとVU0で書いた方がいいかもな。
533 :
527 :2006/06/21(水) 13:32:52
速度云々は関係なしに跳ね返る方向なんかを8方向に固定したいとかいうときに テーブルをつかった小細工が使えるときがある。>テーブル
535 :
デフォルトの名無しさん :2006/06/21(水) 20:55:15
円柱と立方体の衝突判定がしたいのですが いい方法はありませんか? 円柱は底面の中心の座標と軸方向ベクトルが与えられ、 立方体は原点から(w,w,w)の大きさです。
>>534 そりゃ、まあ、そうだろうけどさあ。
だから何よって感じだぞ、流石に。
ヘルプの複数レンダーターゲットの説明がよく判らないので教えて下さい。 要するにCreateRenderTarget又はCreateTextureでD3DUSAGE_RENDERTARGETを 指定して作るレンダーターゲットの上限数は、D3DCAPS9.NumSimultaneousRTsの 値の数という事なのでしょうか? つまりこの値が1ならレンダーターゲットは1つしか作れないという事でしょうか?
いや、SetRenderTargetで同時指定できるレンダーターゲットの数の上限。 レンダーターゲット対象自体はメモリが許す限りいくらでも作れるよ。
>>538 あー、やっと理解できますた。
ありがとうございます。
540 :
デフォルトの名無しさん :2006/06/23(金) 13:02:56
2D剛体シミュレーションのライブラリ、フリーでありませんか?
質問させてください。現在DirectX9.0cSDKを入れているのですが、 ネット上のサンプルコードを実行したいためDirectX8.1も入れてみたいのですが、 共存ってできるのでしょうか?
>>541 9を入れると8も動くようになる仕様でな・・・
っていっても9以降はちょっと大変なことになってるが・・・
8なら9いれてありゃ動くよ。
>>542 そうなんですか。でも、サンプルコードにある
#include <D3DX8.h>
とか、D3DX8.hとかが見つからない、となるのですが・・・。8関連のヘッダは
DirectX9.0cには含まれて居ないんでしょうか?
>>543 うっそまじで?
そうだっけ?
そんな感じだったっけ?
バージョン定数設定するだけだと思ったけど・・・
最新のヘッダで8が動くだけだったっけか?・・・
D3D8.hは入ってるけどね。 DirectX7から10までのヘッダは含まれてるし、インターフェイスも取得できるみたい。
>>545 おっしゃるとおりD3D8.hは入ってました。しかし、D3D8X.hがないというのは一体・・・?
D3D9X.hの方を使え、ということでしょうか?
>>546 インクルード自体はD3D9X.hを指定して、バージョン定数を定義してやればいいんじゃね?
>>547 #include <D3D9X.h>
するまえに
#define DIRECT3D_VERSION 0x0800
としろ、という事でしょうか?
>>548 そんな感じでよかったと思うんだけど、駄目だった?
手元にソ−スが無い状態で申し訳ありませんが質問させてください。 D3DXMatrixPerspectiveFovRH って描画空間を x=[-1,1] y=[-1,1] z=[0,1]に変換するってことでいいんですよね? 実際やってみたところ値がこの範囲に収まらなくて…
視野に収まってない座標を変換してるだけなんじゃないか? エスパーでもないとパラメータなしじゃ答えられん。
>>550 それを答えるかわりに、簡単な計算を教えてください。
10+x=y
xは不明です。yの答えを一つの整数でお願いします。
554 :
550 :2006/06/24(土) 14:58:26
質問の仕方が悪くて申し訳ありません。 改めて読んだらほんとに意味不明な質問でした。 D3DXMatrixPerspectiveFovRHで作られる射影変換行列による座標変換によって描画される範囲(視錘台)は先ほどの直方体に変換されるのでしょうか? やはり具体的なパラメータなしではわからないですね。大変失礼いたしました。スルーでお願いします。
すみません、DirectXSDKのDXtexを実行したいのですがd3dref.dllを入れて下さいといったような メッセージが出てきて実行できません 一度、DLLサイトで落としたd3drefをx86のフォルダに入れたのですが 結果は同じでした。格納場所が違うのでしょうか
C:\Windows\System とかに入れればいいとは思うけど、その前にDirectXSDKをインスコしないで SDK内のExeを実行しようとしているのか聞いてみたい。 素直にSDK入れた方が早くね?
557 :
555 :2006/06/25(日) 04:27:18
SDKをREMOVE?結局、再インストールしたら普通に実行されました・・・ 再インストールは3回くらいやったのですが・・・・なんだったんだろう
なんだったんだろう?といわれても、なんだったんでしょうねぇ・・・
まあ良かったじゃないか。
CG板の奴っぽいな 向こうでも思ったが礼くらい書けw
ジョイパッド(PS用コントローラ)からの入力処理をしたいのですが、 DirectInputとjoyGetPosExではどちらが使い勝手いいのでしょうか? また、これらは、OpenGLと組み合わすことできますか?
聞く前に試せ。
joyGetPosExってジョイスティック2つまでしか認識しないんじゃなかったけ。 DirectInputの方が多少面倒だが、潰しは利くだろ。 やっつけ仕事用にはjoyGetPosExで十分だが。 OpenGLとは完全に別レイヤなんでいくらでも同棲可能。 DirectSoundでもDirectPlayでも同棲可能。 好きなだけハーレムをこさえるがよい。
564 :
555 :2006/06/25(日) 18:48:25
>>560 やっぱり見てる人は見てるんですね 返す言葉もありません
しかしながら、DXtexも無事起動できたし気になるところは全てクリアできました
改めてお礼を言わせて頂きます 本当にありがとうございました
565 :
561 :2006/06/25(日) 23:49:52
>>563 返事遅くなりすいません。
レスありがとうございました。
ハーレムさせてみますw
566 :
デフォルトの名無しさん :2006/06/26(月) 05:31:37
Operating System: Windows XP Professional (5.1, Build 2600) Service Pack 2 (2600.xpsp_sp2_gdr.050301-1519) DirectX Version: DirectX 9.0c (4.09.0000.0904) Description: SoundMAX Digital Audio Default Sound Capture: Yes Default Voice Capture: Yes Driver Name: smwdm.sys Driver Version: 5.12.0001.3665 (English) Driver Attributes: Final Retail ゲームやウィンドウズ起動音などの音がでなくて困ってます。mp3やCD−Rなどの音はでます。 診断ツールではサウンドでエラー0x00000000 (エラー コード)がでます。ミュージックは正常なのですが・・・ ドライバの入れ替え、ミュート、BIOSなど調べてわかったことは全部したのですがなおりません。 どなたか力をかしてください。お願いします。
ここはDirectXでプログラムを作る人間用のスレであって、
プログラムを使う側の質問スレじゃない。
君にとっては二度手間かもしれないが、Windows板でもう一度聞きなおしてきなさい。
http://pc8.2ch.net/win/ 『WindowsXP質問スレ』てのがあるはずだから、そこがいいだろう。
568 :
デフォルトの名無しさん :2006/06/26(月) 12:40:25
親切にありがとうございます。 そこにいって聞いてみたいと思います。 ありがとうございました。
MFC+DirectXでプログラムしてるのですが. ピクチャーコントロールのサイズを変更しても,DirectXの描画のアスペクトなり座標系なりを適応したいときって pic = (CStatic*)GetDlgItem(IDC_MAINPIC); pic->MoveWindow(x, y, wide, height); pD3DDevice->GetViewport(&ViewPort); ViewPort.Height = height; ViewPort.Width = wide; pD3DDevice->SetViewport( &ViewPort ); こうすれば良いと思ってたんだけど,うまくいかない どうやれば良いのでしょうか?
かーーめーーーらーーーー
571 :
569 :2006/06/27(火) 19:53:32
>>570 遅レスすみません.
カメラって座標と注視点,画角以外要素があるのでしょうか?
アスペクト比などは後でビューポートから算出しています.
ちなみに,ピクチャーコントロールと一致しない領域で描画されている状態です...
キー入力で【 ^ 】を使うにはDIK_ のなにを使えばいいんでしょうか?
DirectX9の最新版のSDKは Windows2000+VC6 ではどうやっても使えないのですか? あと Windows2000+VC2005 ではどうでしょうか?
初心者丸出しですみません。 全画面でBMP画像を数枚表示してパラパラアニメにしたいのですが、 似たようなサンプルコードは無いでしょうか?
>>573 使えないなんてことないでしょ。
>>574 今、どんな状況なの?
もう、ゲーム1本作れるレベル?
ヘルプのチュートリアルは終わらした?
576 :
573 :2006/07/01(土) 11:27:21
>>575 やっぱだめみたいですね
最新版のSDKwin2000に入れようとしたら
not supportと蹴られました
はぁぁ、Vista出るの待つかなぁ
最新版にこだわる必要は無いでしょ。 素直にSDK(Octorber 2004)を使うべし。
578 :
574 :2006/07/01(土) 19:16:26
>>575 ゲーム屋さんではないのでアレですが、HTTPサーバとかMPEGエンコーダは書けます。
DirectXに精通しようとは思ってません。目的の機能の実装が達成できればよいと
思っています。すみません。
パラパラアニメならDirectXなんて使う必要ないと思うけど。 BitBltで十分でしょ。
580 :
デフォルトの名無しさん :2006/07/01(土) 20:12:26
Animation Control
パラパラアニメならBitBltなんて使う必要ないと思うけど。 Flashで十分でしょ。
パラパラアニメならFlashなんて使う必要ないと思うけど。 Gifで十分でしょ。
GIFじゃ色数に問題あるかも
パラパラアニメならGifなんて使う必要ないと思うけど。 ノートで十分でしょ。
585 :
デフォルトの名無しさん :2006/07/01(土) 20:21:18
仕事なんて必要ない ニートで十分
BitBltで、1280x1024の画面内に320x240の画像を縦横4つづつ計16枚、 30fpsとは言わなくても、秒数コマ程度のパラパラアニメができますか? これで低い負荷で実用に耐えるなら何も問題ありません。 BitBltよりかはDirectXのほうがいいかな、と思ったので…。
余裕でできるはずだが 下手なコード書くと負荷激増パフォーマンス激落ちる
だがGDI使うよりはDirectDrawでハードウェアBLT使うほうが圧倒的に速い気がする。
DirectXのほうが早いのはまあ仕方ないとして、実際やってみたら?
DirectDrawで速度的な優位が発生するのは、カラーマスクを使う場合やVRAM上の画像を使い回す場合、 クリッピングを切って転送の負荷を軽量化、もしくはオーバーレイを使用した場合だけ。 Win32APIの方でもビデオカードのアクセラレーションは普通に使われるし、 メインメモリー上の動的なデータを転送するだけならどちらでも差はない。 3Dの場合と違って2Dのベタデータは、ほとんどメインメモリからVRAMまでの転送速度に依存する。
パラパラアニメなんだから全部VRAM上の載せちゃえばいいんでね
592 :
デフォルトの名無しさん :2006/07/01(土) 23:04:51
CALL OF DUTYというゲームを起動すると、DirectXに回避不能エラーが発生したとのメッセージが出ました dxdiagで診断しましたが、問題は見つかりませんでした 一体、何が原因なんでしょうか…? ちなみに9.0cです
板違い。
594 :
デフォルトの名無しさん :2006/07/01(土) 23:29:07
f
595 :
デフォルトの名無しさん :2006/07/01(土) 23:31:01
scsaaa ol
断末魔が
598 :
デフォルトの名無しさん :2006/07/02(日) 06:53:18
>>578 あー、そういう意味じゃなくてどんなフレームワーク使ってるのかを知りたかった。
DirectXみたいなのを使って全画面書き換えを使ってるのとWin32APIのDCを使ってるのとではパラパラアニメのやり方が違う。
(いや、Win32APIでもエロゲとかはそうやってるなぁ・・・そういやw)
前者と後者の違いはそれ用の画面を用意してもうほんとアニメアニメした画面をこさえてしまうのか?
それともGIFアニメみたいなのを想像してるか?の違いなんだけど・・・。
まあ、認識レベルで聞きたいのが
ただ、絵を動かしたいからゲームスレに聞きにきたのか?
それともホントにゲームのシステム上でのパラパラアニメが作りたいのか?
って話。
ゲームってゲーム用の画面作って、ゲームにしてるのよ。
でも、ウィンドウズ上でアイコンっぽいのがちょろちょろ動くっていうのだと
用意する土台が違うっていうかなんていうか・・・。システムが違うっていうかなんていうか・・・。
いや、同じっちゃそうなんだけど、そこまでする必要ないっつーかなんつーか。
まあ、用は別物なんですよ。やり方も得られる結果も。
class Tyousyukoriki { private: DWORD dwNext,dwPeriod; int ThisSprite, MaxSprite; public: void Start(DWORD period, int maxSprite) { dwNext = dwPeriod = period; ThisSprite = 0; MaxSprite = maxSprite } void Draw(int x,int y) { DrawSprite( Sprites[ThisSprite], x, y ); // DrawSprite( Sprite, x, y, sprite_x + SPRITE_X_*ThisSprite, 0 ); } void Do() { dwNext--; if(dwNext <= 0 ) dwNext = dwPeriod; ThisSprite++; if( ThisSprite == MaxSprite ) ThisSprite = 0; } };
>>574 一応詳しく説明しておくけど、CreateCompatibleBitmapに
ディスプレイデバイスコンテキストを渡して作ったビットマップは
VRAM上に確保される場合が多く(ドライバによる)、そのときの
BitBltの転送速度はDirectDrawのBltとほとんど変わらない。
ピクセル単位での描画や、カラーキーが必要なければDirectXを
使用する必要はない。
>>598 ここはゲームスレではないと思うがw
601 :
デフォルトの名無しさん :2006/07/02(日) 19:28:12
>>600 いや、でも、DirectXのスレじゃん。
Win32APIのBitBltだとちょっと違うじゃん。
DirectXをどういうものとして認識してるかで扱い変わってくるじゃん。
DirectXってもうほんとゲームシステムを作るモン向きであって
ちょっとしたパラパラアニメ動かすもんには向いてないじゃん。
じゃんじゃんうるせーよ。
603 :
デフォルトの名無しさん :2006/07/02(日) 21:16:34
ワロータ
604 :
初心者名無し :2006/07/02(日) 21:17:07
Failed creating the Direct3D device. って出た場合、これはどう対処したらいいのですか?
原因を探る
606 :
初心者名無し :2006/07/02(日) 21:22:14
ぇっと、どうやって??
>604 とりあえずHALにするとかソフトウェア頂点処理にするとか D3DPRESENT_PARAMETERSの設定をデバイスに合ってるものにするとか 色々。
608 :
初心者名無し :2006/07/02(日) 21:24:18
D3DPRESENT_PARAMETERSの設定はどこでするんですか? …すみません;本当に初心者なんで、、。
あ?DirectX生で使ってるんじゃねーの? なんかのライブラリ?
610 :
初心者名無し :2006/07/02(日) 21:27:20
なんかのライブラリっていうか、パソコンゲームをインストールしたんですけど、 インストール後にそれをはじめようとしたら↑の表示がでるんです;
どっかのライブラリっぽいな。 何のライブラリ使ってるか言ってもらわんと何もいえん。 言ってもらっても何か言える訳じゃないがね。
サポセンに問い合わせろ。
613 :
初心者名無し :2006/07/02(日) 21:30:03
ライブラリ、、、どこを答えたらいいのかがわからない; あぁ、、こんなん話にならないですね;すみません、、
>>613 それはここで聞くよりはゲームの作者とかに聞くほうがいいよ。
もしくはそのゲームのスレとか。
平たく言ってしまうと、 そのゲームを作った人間にしか原因はわからない。 PCゲームならどっちみちサポセンに問い合わせるしかない。 ここで聞いたところで意味はまったくないっつーか邪魔。
616 :
初心者名無し :2006/07/02(日) 21:35:29
……すみません。 というか、Direct3Dってのをどうしたらいいのかがわからないんです。 一応ここはそれをいくとこっぽいし。。
ここはプログラムを作る人間が利用する板であって、使う奴は完璧に板違い。 自分でプログラムの勉強をして出直せ。
DirectX9で質問です。 フルスクリーンの時ウィンドウキーを押すとプッチンてなるじゃないですか。 その後の復帰のさせ方がいまいちわからないのです。 レンダーターゲットテクスチャを作るとデバイスのリセットが失敗してしまうのです。 どなたかわかるかたいますか?
レンダリングターゲットテクスチャはデバイスリセット前に解放汁。 つーかVRAM上に作成したデータはデバイスリセット前に全部解放汁。
DX10に期待汁
>>619 解放したデータを解放前の状態に戻すにはどうすればいいでしょうか。
>>620 探してみます。
>>623 たとえば3D空間を散歩して写真を撮るように風景をテクスチャに置いておく場合は
そのときのデータを全て記憶しておいて、また描画し直さなければならないのでしょうか。
VRAMに入っているデータは、使用者の責任で全て元に復元する。 最初にやっている処理なんだから、大した問題ではない。
一瞬止まってもいいならシステムに保存しておけば復帰はラクだがの
レンダリングターゲットと同じサイズのテクスチャをシステムに作る。 StrechRectでシステムのテクスチャに転送する。 デバイスがロストした。 レンダリングターゲットテクスチャを作り直す。 システムのテクスチャをレンダリングターゲットにStrechRectする。 おしまい。
>>628 ありがとうございます。
試してみます。
DirectX3Dで巨大な画像(800×600とか)を表示するにはどうすればいいんですか? 256×256のテクスチャー何個かに分割して表示するしかない?
何度見ただろう、この質問・・・
漏れには「質問」には見えない
>>630 よりデカイテクスチャを用意してUVで調節するんだ!
634 :
デフォルトの名無しさん :2006/07/03(月) 23:52:04
質問です。XP、.NET 2005、DirectX 9.0c です。 DirectPlay において、プロシージャに届いたメッセージを全て独自のキューに保存しようとしています。 ですが、例えば DPN_MSGID_CREATE_PLAYER メッセージでは DPNMSG_CREATE_PLAY 構造体、など メッセージの種類によって、データ長が異なります。 これらの構造体を見る限り、どれも先頭に DWORD で構造体のサイズが格納されているようですので、 受け取ったメッセージを pMessage として、 DWORD messageSize = *(DWORD *)pMessage; と行っているのですが、どうも自信がもてません。 他に、自然なデータ長の受け取り方はありますでしょうか? よろしくお願いします。
>>635 全てのメッセージデータを保存したいのですが、
どのメッセージに対しても、データサイズを取得して、そのサイズ分の領域を確保し、データをコピーし、キューに入れる、という共通の処理にも関わらず、
switch(messageType)
{
case DPN_MSGID_CREATE_PLAYER:
dataSize = ((DPNMSG_CREATE_PLAY *)pMessage)->dwSize;
// キューに追加
break;
case DPN_MSGID_SEND_COMPLETE:
……
}
と、全てのメッセージタイプに対して記述するのは冗長だと思ったからです。
>>636 unionでキューに持たせればいいじゃん。
638 :
デフォルトの名無しさん :2006/07/04(火) 00:32:25
>>637 すみません、union でキューに持たせる、とは? 何と何を共有するのでしょうか。
データサイズが分からないと、キュー以前に、データを保存しておく領域の確保すらできません・・・。
>>638 使うメッセージの種類全部をunionにすれば
最長のメッセージ構造体の分だけメモリを確保できる。
もちろんメモリ効率はそれぞれに対してやるよりは効率悪いけど
たいした問題じゃない
そもそも、いまさらDirectPlayっていうのが。 それ、捨てられた機能だから使わない方がいいよ。
WinSock叩く方がはるかに楽だしなぁ・・・
それはない
そうか? 俺は最初DirectPlayでTCP/IPの通信やろうとしたけど 挫折してWinSockでやった口なんだが・・・。 通信相手がPS2だったからかもしれんが。
>>643 そりゃ困難だろw
↓コピペ
>DirectPlay は、基本となるネットワークからアプリケーションを大きく隔離するレイヤを提供する。
適材適所って奴だな ただDirectPlayはサポート外になってしまったので Socket使ったほうがいいと思うよ。 (でもDirectPlayとほぼ同等層を自分で作る羽目になる)
NVPerfHUD4をインスコしてもビデオカードのドライバを認識してくれん。 GeForce6600で使えてる人いる?
DirectXの描画って 性能のいいPCではスムーズに表示されて そうでないPCでは描画オブジェクトを省いたりとか そんなことってありえる? 同じexeでもオブジェクトが欠落してたりするんだが... そんな風に書き分けた覚えはないのに...
古い世代のGPUだと全く対応していないコードを書いたらそうなるんじゃないか
>648 いや,あるときは描画されてたり,あるときは描画されなかったり. でも性能の良いほうだと常に描画されているという... よくわからんです..
・ドライバのバグ ・精度割れ まあ、色々考えられる罠。 あるか無いかと言えば、無いわけじゃない。
基本的にハード側ってことですよね... どうしようもないってことかな... とにかくありがとうございました
>>651 それはわからない。
俺も本当はバグっているのに
性能のいいマシンで開発してたからなんか動いてしまっていて、
いざスペックの低いマシンで動かしてみたらバグバグだったことはある。
そんときはαテストとかZテストとか設定がめちゃくちゃで正常に動くはずもないのに
開発マシンではなんか上手くいってるように見えたな。
>>651 GPUによってステートなどの初期値が異なるから注意。
自分で使うものは全部自分で初期化したほうがいい。
こちらで質問していいのか迷いましたが一応DirectXを使っているのでこちらで質問します スレ違いでしたら誘導お願いします C++とDirectX9で開発してます ゲームを作ろうと思っているのですがまだ経験不足のようで、 プログラムの構造をどうすればいいのかで迷っています 前に読んだ本に、描画処理とメッセージ処理は分離してスレッド化するほうがいい その程度は書いてあったのですが、ほんの数行で終わってしまい 構造はどうなるのかなどがいまいちわかりません。 作ろうとしているプログラムは、 ユーザーが1対1でネットワークごしに接続しあって、 キャラクターを操作したり、送られてきたデータからオブジェクトを同期したりするだけで、 RPG程度のものと考えてもらって結構です よろしければ、皆さんのプログラムの流れを書いていただけると助かります 参考になりそうなHPなどでもいいのでよろしくお願いします
655 :
デフォルトの名無しさん :2006/07/06(木) 07:13:49
>>654 >ユーザーが1対1でネットワークごしに接続しあって、
>キャラクターを操作したり、送られてきたデータからオブジェクトを同期したりするだけで、
自分の実力と不釣合いなもん作ろうとするなw
無理だってわかるだろw
一歩一歩刻んでいくしかねぇんだよ。
すみません。基本的な質問なのですが、3Dの座標で、右手座標の行列を習得した後、 それを左手座標の行列にに変換する方法を教えてもらえないでしょうか?
z = -z
>>658 ベクトルの変換ではなく、マトリクスの変換でお願いします。
1 0 0 0 1 0 0 0 -1
文系なのかゆとり教育の成果なのか知らないが、 線形代数の基礎くらいは習得してからプログラミングとか始めた方がいいんじゃないのか。
663 :
デフォルトの名無しさん :2006/07/06(木) 22:22:20
ゆとり教育ってなんですか
ググれよ
665 :
デフォルトの名無しさん :2006/07/06(木) 23:30:08
ググれとは?
, イ)ィ -─ ──- 、ミヽ ノ /,.-‐'"´ `ヾj ii / Λ ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{ ノ/,/ミ三ニヲ´ ゙、ノi! {V /ミ三二,イ , /, ,\ Yソ レ'/三二彡イ .:ィこラ ;:こラ j{ V;;;::. ;ヲヾ!V ー '′ i ー ' ソ Vニミ( 入 、 r j ,′ ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ ヽ ヽ -''ニニ‐ / | `、 ⌒ ,/ | >┻━┻'r‐'´ ヽ_ | ヽ _ _ 」 ググレカス [ Gugurecus ] ( 2006 〜 没年不明 )
ゲルググのこと。
あんでプレイはサポ外になってしまったん? 小柔らかの人達セキュリティー対策に嫌気がさした?
ゲルググってなんですか。
つかってなかったけど なんでかなあとおもって
そういやセキュリティー対策ってどのくらいやってますか? おれはヘボだからぜんぜんやってないけど(データ生のまま垂れ流して受け取る)、 プレイならそのへんちゃんとしてくれてたのかな
XboxLiveとかと同じなら、かなり入念な暗号化なんかをサポートしてくれるはずだけど 実際にはどーなんだろね。詳しい人解説プリーズ。
というか手頃な代替ライブラリがないってのが凄いな 僕らはみんなwinsock大好き
675 :
デフォルトの名無しさん :2006/07/07(金) 15:51:08
唐突に質問なのですが、 C++とDirectShowでビデオキャプチャ+圧縮保存のコードを書いております。 ボタンクリック時に、圧縮に使用するコーディックのプロパティ画面を開くようにしたいのですが、方法が検討つきません。 WindowMediaVideo9とMEPG4 ご存知の方、いらっしゃいましたらご助力願います。 宜しくお願い致します。
96*96で頂点のレンダリングをしたらテクスチャが崩れてしまったのですが これは回避できますか?
日本語でおk
チュートリアル2で 256ドット*256ドットのbmpから96ドット*96ドット分だけレンダリングしたら 画像が綺麗に表示されないのです。
君のミスでしょう
モニタが汚れてるんじゃないのか?
683 :
デフォルトの名無しさん :2006/07/08(土) 23:02:45
目が悪いんじゃないの?
2のn乗ドットでやるときはきちんと表示されるのですが、 それ以外の数値でやると変な表示になるんです。
テクスチャのサイズが96x96なわけじゃないなら設定ミス
いくつかのパソコンで同じ物を起動させたら出来るのと出来ないのがありました。
ビデオカードによる挙動の違いの吸収は君がやりましょう。
九州するためにいるのがDirectXなのですが いっぱい漏れちゃいます
OpenGLなら遅いけど互換はばっちりみたいになるのかね? 遅いけど互換もまちまちとかだったら最悪だ
GLには各社専用の拡張APIが存在する。 あとはわかるな?
もう聖域なんてないってことだね
結論:拡張使わなきゃおk
拡張するのはよくねーよ。がばまんはダメ。
それいったらDirectXも固定機能だけでやってりゃほとんど差なんてないぞ
( ゚ρ゚)ポカーン
696 :
デフォルトの名無しさん :2006/07/09(日) 02:02:06
/ ( ゚ρ゚)パカーン
けっこう大口開けてプログラミングする奴いるよな
>>697 それ漏れだ。
口あけてるか、ぶつぶつ言ってるかの二択。なんて怪しい。
俺漏れも。
俺はいつも半開きらしい。 同僚に指摘されて気付いた。
701 :
デフォルトの名無しさん :2006/07/09(日) 13:06:17
俺は彼女に。 うそです。
つまんないことですみません。 スクリーンセーバーで画面全体を使っている状態と、DirectXで画面全体を 使っている状態って、2Dのアクセラレーションとか関係ありますか? マウスのup/down/ドラッグのイベントを拾ったり拾えなかったりするので しょうか?
DirectXを使う使わないにかかわらずウィンドウは生成するよな? ウィンドウを生成するってことはメッセージが(ry そういうことだ。
>>702 もしかしてパラパラ漫画の人かな?
ビデオカードの仕事が追いつかない状況下だと、イベント拾って画面に変化を与えようとしても
残ってる仕事が先だからラグが発生する。
それが「拾ったり拾えなかったり」と関係あるのかは不明だけど。
>>704 キュー方式だから来ないって事はないと思う。
大幅に遅延してくることは普通にあるが。
>>702 DirectInputを使っていなければ、何も変わらないよ。
メッセージループに問題があるんじゃない?
1フレーム描画する毎に1メッセージしか処理しないような
書き方をする人がいるけど、それだと問題がある。
これかな。 MSG msg; while(true) { while(::PeekMessage(&msg, hWindowHandle, 0, 0, PM_REMOVE)) { if(WM_QUIT == msg.message) goto Exit; ::TranslateMessage(&msg); ::DispatchMessage(&msg); } ::Sleep(0); } Exit: PeekMessage()、TranslateMessage()とDispatchMessage()が 1ループ1セットしか呼ばれないとかだと遅延が起こりまくるな。
酷いなこりゃ。
>>707 は普通じゃね?
while(PeekMessage())
のところが
if(PeekMessage())
になっちゃって、1更新ループごとに1回しか呼ばれないとかになるのが問題なんじゃ
710 :
デフォルトの名無しさん :2006/07/09(日) 22:10:28
なんでGotoなんて使ってんの?
今、流行ってるから
PostQuitMessageでいいんじゃね?
goto毛嫌いするやつってどこの会社にも居るよな
while-goto句なんざJavaですら残された定型コードじゃないか
つーか、このループで if(WM_QUIT == msg.message) goto Exit; のコードっているの? goto云々じゃなくて・・・。
break一個じゃ抜けれないからそうしてんだろ
APIの使い方が根本的に間違っているから、無駄にメッセージの確認をしてCPU使用率100%になるぞ。
718 :
デフォルトの名無しさん :2006/07/09(日) 23:30:18
DirectX勉強するまえにWinAPI勉強しろよ
719 :
デフォルトの名無しさん :2006/07/09(日) 23:39:12
>>718 いや、そこまでするのは無駄だ。
もっとサンプルをたくさんみて該当箇所だけ色々みるだけでいいっしょ?
ここでWin32APIの勉強はじめるような奴は目的を見失ってる奴にしかみえない。
印象悪いよ。
720 :
荒らし希望 :2006/07/09(日) 23:44:00
用は既存のライブラリ使えってこったな
>>717 メッセージループをどこに置くか次第だとは思うが、
そのコード自体はペトゾルトでも同じだったぞ。
GetMessageで済むならそっちのがいいんだろうが。
ここではSleepしてる部分に更新コードを書く感じかな。
>>715 PeekMessageを使ってる場合は要る。
GetMessageとは返り値が違うから。
Win32APIの知識はなんだかんだで地味に必要じゃね?
ほとんどの処理がDirectXだけで完結するとは言え、
せめてWindow作ったりループ回したりの理屈はわかってないと
色々と立ち行かないと思う。
まあ、スレ違いだって言ったらそれまでだけどね。
>>722 いや、だから、すでに公開されて動いてるサンプルもその辺にたくさんあるのに
いまから、Win32APIの勉強をするのはハズレじゃね?
もっといえば、別にWin32APIを知らなくてもDirectXのサンプル通りにやれば正常にいくのにだよ?
こんなんでいちいちちょっと関わるだけのライブラリをいちいち習得してたら目的のモンに中々辿り付けない
と、俺は思うんだけどね。
DirectX勉強するのに、まず、COMの知識が必要とかいいだしかねない勢いで怖いね。
724 :
デフォルトの名無しさん :2006/07/10(月) 02:19:51
C++・DirectXでゲームシステムみたいなものを作っているものです。 今あることで悩んでいます。 1. グローバル・Systemクラス(シングルトン) Graphicクラスのポインタ Inputクラスのポインタ Audioクラスのポインタ 中でnewで確保して中の3つの各public宣言関数はSystemクラスの関数の中で呼び出される。 Systemクラスの関数で上の3つのクラスで提供される処理は全て行う。 ・思うこと Systemという区切りで3つのクラスをまとめたことでグローバルに置くクラスを1個にできた。 Systemクラスの関数でしか中のクラスの関数にアクセスできないので少し遅くなってない? 2. 上の3つのクラスをシングルトンでグローバルにおいてアクセスする C++の設計の問題だと思うのですが皆様アドバイスよろしくお願いいたします。
>>724 おめー、設計下手糞だからわかんねぇんだろうけど、
ゲーム部分とデバイス部分でわけとかないと大変だぞ。
そんなもんグローバルにしてもってゲームのソース中に散りばめたら大惨事よw
結局さ、それをグローバルにしてどっからでもアクセスできるようにしようなんて
いうのはゲームのどこでどうそのクラスが必要になるかわからないからだべ?
なんかどこでも必要になる気がするんだよなw
正直、アホだ。アフォまるだし。でも、いまはそれでいいと思う。
誰かの言葉に説得させられるんじゃなくて、自分でやってみて理解したほうがいいと思う。
今はたくさんゲームを作るとき。百万の言葉より1つの経験。
ゲームを作らないでライブラリを作ってもそれは独りよがりなもんにしかならない。
知識だけでも駄目だし、経験だけでも駄目。バランスが大事。
それとプログラムの基本は
グローバル変数・関数は駄目だ。
どっかからとってきたインスタンスへのポインタをメンバ変数に保持するのも駄目だ。(Alt+Tabで問題になるな)
gotoも駄目だ。
ってのはわすれないようにw
>>723 言葉遊びだと思うな。
サンプルの中にも鵜呑みにしていいものと悪いものがあるし、
見分けるにはやっぱり基礎知識はある程度あった方がいいし。
なんだかんだでタイマー周りの制御とか、デバイスのロスト時の処理なんかを
ちゃんと実装するには、それなりにWinの知識が必要だよ。
それこそ既存のサンプルからコードぱくってくりゃ済む話だけどさ。
どこまで踏み込むかは、程度問題でしかないだろうけどね。
まあ、好き好きで。
>グローバル変数・関数は駄目だ。 でもクラスのstaticメンバは良かったりするんだよなw
>>727 それはかまわねぇと思うけど。
目的がはっきりしてれば。
ただ、あんまりやらないな。
>>726 >それこそ既存のサンプルからコードぱくってくりゃ済む話だけどさ
なんでぇ。文句ねーじゃねーかw
>>728 namespaceと一緒で、変数や機能の所有者がはっきりするから
いわゆるグローバル変数だだ並べに比べれば格段に危険度は減るんだよな。
でも、実際には忌避される理由の大半は宗教上の問題だと思う。
プログラマって信心深い人多いから。
どーでもいいけどスレ違いですねそうですね。
>725 グローバルアレルギーか? >724 >Systemという区切りで3つのクラスをまとめたことでグローバルに置くクラスを1個にできた。 まとめることに何の意味があるのか? むしろ機能の独立性が下がるほうが気になる。
このスレにサッカー観てる奴が3人はいる!
733 :
デフォルトの名無しさん :2006/07/10(月) 06:35:32
>>730 勝手な解釈して逃げてるけど、そりゃお前がなにも学んで無いから、
ちゃんとグローバル変数・関数の問題と向き合ってとことん考えなきゃ次のステップには進めないぞ。
てか、グローバル変数・関数の問題を諦めた時点で設計を語る資格は無い。
もう、どうにだって組めるじゃん。こんなもんちょっとでも許した時点ですべてが崩れちまう。
何が悪くて、何が良いのかも判断できないっしょ。
プログラマなら誰しも一度は、グローバル、gotoを鬼のように毛嫌いする時期があるんだよなw
グローバルは在ったけど、gotoは無かったなぁ。 まさか、これからくるニカ!
ゲームのライブラリ作るときにstaticを毛嫌いする理由がわからんな。 ウィンドウの管理とかD3Dデバイスの管理なんて普通はstaticでいいと思うが? 安全性と可読性が保障されてるならグローバルもgotoもぜんぜんありだと思うがなぁ。
>>733 問題なのはグローバル変数剥き出しそのものじゃなくって
管理権限がはっきりしない変数が改変可能な状態で
放り出されていては、何処で何が起きても責任が取れないってだけのこと。
これはたかだかカプセル化の問題に過ぎない。
正しくOOPが適用されれば自ずと無闇なグローバル変数云々なんぞは消えていくが、
そこを経験則上の解釈だけで止めてしまってる人も結構多いって言いたいだけなんだけど、
俺、そんなに間違ってること言ってるか?
>>734 某所にコード貼り付けたら、以降のレスが多重ループを抜けるのに使ってた
gotoにだけ集中してて吹いたよ。
おまいらそこ争点違うからとw
>>737 おめー、設計下手糞だからわかんねぇんだろうけど、
ゲーム部分とデバイス部分でわけとかないと大変だぞ。
そんなもんグローバルにしてもってゲームのソース中に散りばめたら大惨事よw
>736 マルチウインドウ、マルチモニタに対応出来ないじゃないか。
743 :
デフォルトの名無しさん :2006/07/11(火) 13:54:48
レンダリングした映像のデプスバッファにアクセスして 指定した座標の値を取得する方法ありませんか?
システムに落としてきてロックする以外にあったっけ? ピクセルシェーダー3.0なら出来んのかな。
do{ if (えらー1) break; if (えらー2) break; ... // 正常な処理 return; } while (0); .. // エラー処理 return;
747 :
デフォルトの名無しさん :2006/07/11(火) 21:51:07
do{ if (えらー1) //7月11日 今日はハンバーグを食べた break; if (えらー2) break; ... // 正常な処理 return; } while (0); .. // エラー処理 return;
うなぎイメージ悪いから最近は食ってないけど、 つまりgotoいらないよな
正直、無理やりループ作ってbreakで抜けさせているのが美しいとはとても思えない。
〜第1回美コード選手権 開始〜
〜終了〜
〜まさかの再開〜
−−−−−−−−−− 再開 −−−−−−−−−−−
来週をお楽しみに☆
int main(void) { return 0; } 文句つけようが無いってことで 〜終了〜
int main(){return 0;} 美しい
void main(){} これこそ究極。なにせこれ書くだけで数レス消費しはじめる魔法のコード。
〜完〜
main(){}
DirectXスレなのにWinMainじゃない点について
D3DデバイスはWindowの数だけインスタンス作るよね? デバイスの生成元のD3Dインターフェイスは1つでOK? 脊髄反射でシングルトンにしちゃって、とりあえず問題なさそうなんで そのままにしてるんだけど、誰かにゴルァされない?
>D3DデバイスはWindowの数だけインスタンス作るよね? 作らない
CreateD3DDeviceってウインドウハンドルを引数に取らなかったっけ?
生成時に渡すのはデフォルトのウィンドウのハンドル。 画面のPresent時には描画対象のウィンドウのハンドル渡せる。
>>765 PresentParameter と CreateDevice 時の FocusWindow にハンドル渡す必要があるね。
これも最初に作るときだけぶちこめば、あとは使いまわせる理屈?
個々の Window にフルスクリーン化を仕込むとか(そんなのがどの程度必要かはわかんない)だと
引っかかりそうな気がするんだけど…。
使わない機能のことを考えてる暇があるなら その無駄な時間で使う機能を練りこんだ方がいいと思うお。 まぁ2ch見てる時間が無駄なんだがorz
そうずらそうずら
ワラタ
誰にも使われない完璧なライブラリは世界にどれだけ死蔵されているのだろう。
少なくともここに一つ! バーン
俺のライブラリは完璧なんだが、それを動かすOSに欠陥がある
あるあるw
ボーンの概念がわかりません フレームとどう違うんでしょうか?
>>775 スキニングでググってみれば、解説が見つかるかもしれない。
778 :
デフォルトの名無しさん :2006/07/14(金) 21:01:55
丁度スキニング話なんで便乗を capsでしっかりvs1.1と返すビデオカードでシェーダを使用した所、異常なく表示できました。ハードウェア頂点処理です。 そのHLSLに、SDKサンプル通りのスキニング処理だけを加えたら動かなくなりました。 しょうがないので同じHLSLを、ソフトウェア頂点処理に変えて実行してみたら、問題なく動きました。 サンプル通りですし、吐かせたアセンブラみても、使っている命令は1.1以内だと思います(そもそもcompile vs_1_1ですし)。 どの辺でひっかかってソフトウェア頂点処理が必要になったのでしょうか。分かる方いらしたら是非。
具体的なビデオカードの名前とか、どう動かないのかとか、そういった情報を流すと殺されてしまうんだね。 そういう守秘義務を課せられている奴は、危険だから二度とこのスレに書き込まない方がいいよ。
レジスタ数か命令数じゃね? げふぉ3だとUBYTE4が使えないとかいうたわけた仕様があったきもするけど。
781 :
778 :2006/07/14(金) 21:48:56
>>780 ビンゴっす!見事にレジスタ絡みでした。いやはや、行列を取りすぎてたようで。
一体何時間悩んでいたんだろ・・・適確な助言ありがとうございました。感謝っす。
500ギルいただきます
DirectX初心者でゲーム製作を目的にしているものですが、 ネット上ってあんまり参考になるサイトないですよね?(あれば教えてくださいm(__)m) そこで本を買おうと思って家が田舎なものでネットで買おうと検索してみたところ はじめての3Dゲーム開発―「DirextX9」の使い方から「1人称3Dフィールド・ゲーム」の制作まで DirectXゲームグラフィックスプログラミング Ver. 2.0 DirectX 9実践プログラミング―「グラフィック」「オーディオ」「ネットワーク」「入力」--ゲーム作りに役立つ機能の基礎から応用まで (単行本) この辺がよさそうかなぁ、と思いましたがどうでしょうか。 また、このほかにオススメの本などありましたら教えてください、よろしくお願いします。
>>783 一番上のは俺はもってない。
下の2つはもってるけどいい本だよ。
はじめとしてはいいんじゃないだろうか?
できれば見比べて勉強するのに2つともほしいが・・・どっちか選ばないと駄目なんだろうか?
>>784 そうですか〜。いいんですね。
お金に余裕が・・・(笑)
でもがんばって買ってみましょうかね〜。
>>783 一番上は、筆者の自分語りが少しうざいけど、内容は
悪くはない。
お薦めの本は特にないけれど、入門書は1〜2冊に
しておいて、さっさと本物の専門書に挑戦すべき。
一番上の本は同じ著者の「DirectX逆引き大全500の極意」を買った方が良い
>>784 2つとも買っちゃいました(^_^;)
アドバイスありがとうございます。
>>787 なるほどー。
検討してみます。
そうですね、買った2冊をマスターしたら専門書に挑戦してみます。
どーいうのがいいですかねー。
>>788 なかなか使い勝手のよさそうな本ですが初心者より上が対象って感じですね。
基礎ができてきたら検討します。
図書館で借りればいいのに
>>791 あー、考えもしませんでした。
でもまぁ期限付きだとすきなときにみれませんしね。
それにこの田舎の県の図書館にそんな本があるかどうか・・・w
田舎だとC言語入門とかFORTRAN入門しか無さそうだな ていうか俺の最寄り図書館
>>703 そうそう!
県で一番おっきい図書館でもしょっぼいですからね!
勉強するにも買い物するにも就職するにも不利な田舎・・・(T_T)
そこで投書しまくりですよ。 バイトして買いあさった方が早そうだなあ。 学校の図書館とかは駄目なの? 大学なり専門なりの図書館なら、多少はマシだと思うんだけど。
>>790 いや、逆引き大全は初心者対象だよ?
ソースコード付きで500のTIPSが載ってるから
うちの図書館無駄に初心者向けの入門書ばかり揃ってるよ
まぁ需要が高いのは確かだと思うけどさ
>>795 専門学校で図書館開放してるとことかあるの?kwsk
前に大学の図書館を調べたら、なぜか岐阜には図書館を 一般解放している学校が多かった。 あと、市内の住民なら利用できるってところもあったよ。 例えば千代田区民で18歳以上なら日大理工の図書館が使える。
>>793 勝った、俺の所はコアJAVAがあるぜ
初版の
スキンメッシュについて聞きたいのですが、 各フレームが一つ持つ、TransformationMatrixは 子である自分の座標系から、親の座標系に変換するための行列なのか、 自分の親の座標系から、子である自分の座標系に変換する行列なのか どちらが正しいのでしょうか? あと、オフセット行列は、ローカル座標におかれている頂点の座標を 特定のボーンの座標系に変換するためのモノであるという認識でよろしいのでしょうか? よろしくおねがいします。
>>801 TransformationMatrixは、子の座標系から親の座標系に変換する行列。
オフセット行列についてはその通りだったかと。
D3Dの結合法則なら最終的にこうなる
BoneMatrix = OffsetMatrix * Frame::TransformationMatrix
>>802 なんか紛らわしくね?
BoneMatrix = OffsetMatrix * Frame::TransformationMatrix
このFrame::TransformationMatrixってボーンの行列でしょ。
>>803 ごめんややこしいどころか間違ってた…
Frame::CombinedTransformationMatrixだった(SkinnedMeshサンプルの場合)
805 :
801 :2006/07/17(月) 12:26:08
>>802-804 回答サンクス
あやふやな所だったけど、これではっきりしました。
確かに、数式をみれば
TransformationMatrixは「子の座標系から親の座標系に変換する行列」
ですね。
806 :
デフォルトの名無しさん :2006/07/17(月) 15:40:46
アルファブレディングっぽい事について質問なのですが 縁取りをした文字のテクスチャを用意したのですが (透明色にしたい部分を紫、縁取りの色は黒、文字色は白、紫と黒の部分がアンチエイリアスがかかっています) これを出力するのに困っています。 ただの縁取り文字(アンチエイリアス無しの境界線)はD3DXCreateTextureFromFileExで透明色(紫)を指定すると出来ますが アンチエイリアスがかかっているテスクチャなのでこの場合紫と黒の混合の色が出てしまいます・・ なのでアルファブレディングを使えばいけるかな?と思ったので色々やってみたのですが、 白か黒しか透明色に出来ないみたいで、透明色を紫にしたいので(縁取りが黒で文字本体が白にするので) どうやっても縁取りか文字も透けてしまいます そもそもアンチエイリアスをかけたテクスチャを出力するには上記の方法以外に普通なやり方があるのでしょうか よろしくお願いします。
807 :
デフォルトの名無しさん :2006/07/17(月) 16:02:37
無理。アルファ使ったテクスチャを作り直せ。
次はαの入った画像の作り方についての質問がくると思われ。 開発現場だと普通にフォトショップがあるけど、ないところってどうすんだろな。
フリーのだと1色指定してやるから色数が1つ減るんだよな 既存画像をそうするんだから他の方法も無いわけだが
813 :
806 :2006/07/17(月) 16:28:42
>>807-812 アルファチャンネルなんてものがあるなんて今知りました・・
アルファデータを持ってる画像が使えるんならプログラム側でごちゃごちゃする必要ないですね
アルファ使ったテクスチャを用意する事にします
SetRenderStateでSrcとDestに適当な値を入れて透明化を実装していたのですが
これがカラーキーなのかは知りませんが
ありがとうございました
ウンコメモ カラーキー 画像の中の色の一色だけ透過色として指定してその色の箇所を描画しないことで抜き色とする方法。 行われる計算は Color = if(srcRGB == colorKey)destRGB else srcRGB アルファブレンド 画像の1ピクセルの成分をRGBAとして、描画時にA成分を掛け合わせることで描画する方法。 行われる計算は Color = srcRGB X A + destRGB X (1-A) srcRGBは貼り付けたい絵の色 destRGBは背景の絵の色
アルファチャンネル知らないって・・・ 理解できるできないは別として、Directxのヘルプぐらい目を通しとけよ。
うるさい豚だなぁ
>>806 の発言と
>>813 の発言に違和感を感じるんだが、この人は本当に理解していったのだろうか?
>>813 ではアルファブレンドを使ったみたいなこと言ってるような気がするが、じゃあ、
>>806 のレスってなんだったんだろ?
とか思ったり思わなかったり、まあ、アルファブレンドを知ればすべてがわかることだ。
おまえらこういう簡単な質問となると食いつき良いんだよなw
ぶひぶひ
>>818 なんか聞きたいことあるのかね?
でも、俺の知識はスキンメッシュ、バンプ、反射、屈折あたりで止まってるので
それぐらいまでで頼むw
821 :
806 :2006/07/17(月) 17:05:28
>>817 806は最初にカラーキー同等の処理をD3DXCreateTextureFromFileExで読み込む際に透明色を指定する方法から入ったのですが
この場合紫しか透明化されないので、外の紫と文字本体の縁取りの黒との境目の黒と紫が混ざった色は
灰色のような透明化がされないので、アルファブレンドについての質問に移行しんです。
アルファチャンネルが無い画像でも黒地か白地にグラデーションのような描き方をすると
適当なSrc、Destの値により黒か白が透明化されるんです。
その場合透明化されたのが黒だとして、濃い赤などの黒い要素も少し透けるようになるんです・・(言葉で説明するより実際やってみると判ります
この延長線上の手法でやるのかと思っていたのです・・。
それただの加算合成じゃね?
>>821 なるほど。
仕組みを理解せずに実装するのはやっぱり怖いな。
>>822 多分そうっていうかめちゃくちゃなステータスだろうな。
勘で
>>814 の形にもってくのははっきりいって神でも宿らないと無理だね。
>>820 丁度、「隙間無く閉じているポリの集合」と、「ある一つの頂点」との、"厳密な"当たり判定で悩んでいたんだけど、どうすかね
頂点がポリにめり込んじゃ駄目なの
「隙間無く閉じているポリの集合」が凸型なら簡単なんだけどねえ
826 :
825 :2006/07/17(月) 17:16:27
いや分かりづらいな 「隙間無く閉じているポリの集合」は、まぁt-potみたいな一般的なポリっす
827 :
デフォルトの名無しさん :2006/07/17(月) 17:18:16
xファイルを,テキスト,バイナリ,圧縮それぞれ相互変換させるプログラムを作成してます. DirectXのAPI使ってます. テキスト,バイナリファイルの書き出しは可能なのですが,圧縮ファイルの書き出しがうまくいきませぬ. APIリファレンスによると, CreateSaveObject(LPCSTR szFileName,DXFILEFORMAT dwFileFormat,LPDIRECTXFILESAVEOBJECT* ppSaveObj) 関数を使用して,第2引数をァイルフォーマットの値を論理和,つまり,テキスト圧縮なら3, バイナリ圧縮なら2を与えているのですが, 通常のテキストファイル,バイナリファイルが書き出されてしまいます.原因がまったくわかりません.
>>825 そんなの実装しねぇw
企画段階で自分のできる範囲の仕様になるようにごねる。
829 :
825 :2006/07/17(月) 17:31:34
>>827 定義見る限り、ビットフラグじゃ無い気が
試しに0と2でファイルサイズ比べるとどうなんだろ
>>828 たのむよ、とっつぁ〜ん
流れが止まった(ノД`)
>>825 単に点の内外判定なら、
点から任意の方向にレイを飛ばして、衝突回数が奇数なら中よね。
831 :
827 :2006/07/17(月) 17:34:06
>>829 ファイルサイズ変化ナッシングです.
ちなみに,ヘッダも"bin"と通常のバイナリファイルになっとります.
>>826 t-potが止まってて頂点が動いてて、
衝突する時間と衝突地点を調べるとかいう奴かい?
Dx8からカラーキー自体なくなったけどな。 Dx8からはαチャンネルとアルファテストで カラーキーと等価な処理する自前でするようになったってだけで。 αチャンネルサポートしてないグラフィックツールでも、 グレースケールのα用画像とカラー画像を分けて作成して、 合成してTGAあたりを吐き出すコンバーターを作ればいいと思われ。
834 :
825 :2006/07/17(月) 17:43:31
>>830 ちょ、神現る!俺なんか今凄いドキドキしてる。
断面取って2Dにし、テッセレの応用で…とかやってましたよ。ええーこれで出来ちゃうの。
マジでありがとやんした!
>>832 仰るとおりっす。おかげで判定できそうなので、後は時間と地点まで持って行けるか頑張ってみるっす。レス感謝です。
>>831 冷静になってヘルプ見たら…もの凄い適当な事言ってごめんよ
変換自体が目的なら、SDK\Utilities\mview.exeで3通りに変換できるね。実装自体が目的ならすまんです
836 :
827 :2006/07/17(月) 18:44:09
>>835 いえいえ.どうもです.でも実装が目的です.
同じように,圧縮ファイルの作成に手間取った人はいないですか‥
ヘルプ願います.
これはひどい
mixiでもやってるな。
俺は最近マルチに寛容だぞ。 何せ各地の掲示板を見歩くのを辞めた。 ここしか見てないからな。
自作のツールでツールバーのツールチップを出すときに、 Diret3Dのウィンドウにかぶるとフレームレートが60→3くらいに激しく重くなるんだけど、 こういうものなんですか?
作り方
>>842 そういうもの。
MSNメッセンジャーは「自分の連絡先カードを表示」っていうツールチップが
しばらく出っ放しになるバグ(?)があるけど、それがゲームのウィンドウに
重なると悲惨なことになる。
質問募集中
彼女ができません。 DirectXの力でどうにかできませんか? (男性・27歳・無職)
2007FebからDirect彼女が正式コンポーネントになるらしいが
日本語版も出ますか?
Xモデルのアニメーションって関数一発で出来ないの?
出来ないよ
既存のライブラリもってくるのが一番早い
自分で関数一発で済む関数を作ればいいんだよ。
このままだとコミケも落とすし就職も決まってないんですが
ですが何?
ですが、この思いを鳥に託して私は空に旅立ちます 歌います いい日旅立ち
いま〜船出が〜近づく〜この時〜に〜
857 :
789 :2006/07/19(水) 22:11:02
本がきました。 ゲームグラフィックスプログラミングのほうは丁寧でわかりやすくていいですね〜。 ただDirectX9実践プログラミングのほうはサンプルソースがコンパイルできない・・。 Spriteとかその辺でひっかかってるから仕様変更に対応してないんだろうけど・・・。 かなりがっかりです。どうしよう。
>>857 そんなのちっと勉強すりゃすぐ動かせるようになるだろ。
どうしようも糞もないでしょ。
まあ、著者のほうもなげっぱなしじゃなくてサポートしてほしいもんだけど・・・。
3ヶ月おきにリリースされるSDKに対応するっていうのも 無理な話だ
>>859 いや、サンプルを動かせるようにしてくれるだけでもいいんじゃね?
できる人間にとっちゃものの10分かからん作業なわけだし、
初めて触る初心者にとっちゃちょっと困るっちゃ困るだろ。
Visual Studio 2005のwizardはなくなったの?
意味がわからない
>>862 最新のSDKにWizardは付いてない
DirectX Sample BrowserからEmptyProjectを開け
WizardとかD3DXって思いつきで作ってんの?
思いつかなきゃ作れないだろ。 何をアホなことを言っているんだ?
いや、普通は無意識に作るものだと思うが。
意識下の深遠には全ての魂が創造主と接続された大領域があるのだよ。
アカシックレコードを検索したいのですが問い合わせはSQLでできまつか?
>>861 なるほど、旧バージョンを入れるしかないんですね。
DirectXって同じ9の中でもライブラリが減ったり増えたりするだけじゃなくて
関数の仕様が変わったりするんですね。
もうちょっとどうにかならないのかな〜。
本にあわせて複数のバージョンをインストールしないといけないのが腑に落ちない・・・。
ま、そんなことしなくても書き換えられるくらい勉強しろってことかな。
勉強するために本を買うのにおかしいね
D3DXのSpriteとか使う必要性が皆無な無駄機能を使わなければ問題はないよ。
返して私のお友達。 あなたを封印する!
しょっぱなからエフェクトを自前で読み込めれば問題は無いな
D3DMATERIAL9mMaterial; // マテリアル情報を取り出す D3DXMATERIAL*mD3DXMaterials = (D3DXMATERIAL*)m_pD3DXMtrlBuffer->GetBufferPointer(); for( DWORD i =0; i<m_numMesh; i++){ // マテリアルのコピー mMaterial = mD3DXMaterials[i].MatD3D; // マテリアルのセット pD3DDevice->SetMaterial( &mMaterial); // 分割されたメッシュの描画 m_pMesh->DrawSubset( i ); } と表示してるのですが、表示されるのは白いオブジェクトでマテリアルが効果を発揮してません。 何が原因かわかる人いませんか?
ライトの設定は?
>>876 いやそんなことは当たり前の話であって、このソースで効果ないのはなぜなのか聞いてるんですけど?
ヒント:DrawSubsetが呼び出しているのはDrawPrimitiveだけではない
と思ったらマテリアルの設定も手動で行わせる仕様だったっけ。 やっぱりライティングじゃね?
「当たり前の話であって」とかほざくやつに限ってミスしてるんだよな。
ええ、あなた程度でも思いつくような事はさすがにやってます^^;;;
えーとここは初心者「しかいない」質問スレのようなので、他で聞くことにします。 マルチになるんでここでは返答を求めません。
884 :
875 :2006/07/22(土) 16:39:13
ライトなんですけど、onにしてもoffにしてもどっちにしても白く表示されます。 書いた部分じゃないところでなにかやってない設定が有るような気もするのですが、 ちゃんとできてるソースと見比べてもどこがおかしいのか見つからなくて。 何かやっちゃいけないこととかあるんですかね?
オナニーは禁止
自己発光の設定が変なんじゃね?
環境光が強すぎると思われ
環境光だな。間違いない。
ライトとかは本のまんまの設定でやっていて、本のプログラムではちゃんと動いてます。 そこからいろいろといじったやつで白くなるので、何かやっちゃいけないことをやっちゃったのかなと。 ちなみに、本のプログラムの方でライトをオフにしたら同じ感じになりました。 んで、非常に私事なのですが、そろそろ期末テストの勉強を開始しますので、 テストが終わり次第またやってみたいと思います。 またお世話になるかと思いますがその時はよろしくお願いします。
俺が送ったウィルスのせいだと思うけど。 すべてのDirect3Dでポリゴンの描画を強制的に白一色にする機能がある。 ただしOpenGLは許すのだという。
ディレクショナルライトが ど真ん中向いてるとか。
だから自己発光だって。
後光だよ。 ポリゴンモデルに神が宿って、後光を発してる。
流石ちゅうさはいいことをいう。
クォータニオンの関数D3DXQuaternionMultiplyについての質問なんですが この関数にA*Bを行うつもりで D3DXQuaternionMultiply(OUT, A, B) とすると、出てくる結果がB*Aになってるんですが、これって仕様なんですか? なぜ、この関数は積の順序を逆にしてるんでしょうか? よろしくお願いします
>>897 なんか同じ質問を1年くらい前にBBXあたりで見た記憶がw
>>897 なぜかと聞かれたらゲイツだからとしか答えようがない
>>899 ありがとうございます
紛らわしい仕様になってるんですね。
そもそもDXの行列自体が数学の行列と別物じゃん
>>890 はっきりいってソースを晒さない限り原因が特定しない。つーか、できない。
それが固定機能を使ったときにでる意味不明な現象。(ほとんどステートの設定不備だと思うけどね)
それが嫌だからみんな頂点シェーダ使うし、固定機能もそのうち廃止になる。
ただでさえ、ライトOFFなのにアンビエントだけ有効なままとかわけわかんねーし。
もうね。固定機能作った奴はゴミ。これは確定。
904 :
デフォルトの名無しさん :2006/07/23(日) 11:07:47
902は昨日授業で行列を習ったばかりなんです。 許してあげてください。
>>902 「数学の本とかOpenGLの行列が右作用(ベクトルを右から掛けて使う)なのに
DirectXは左作用(転置ベクトルを左から掛ける)で実装してややこしいねん、別物やん」
と脳内補完しとくわね。
え、でもシェーダを使わず湖底機能で実装することに血道を上げてる人はどうするの? CreateDeviceでMIXEDを選ぶ人は残らずそういうタイプでしょ
SDKでオススメのバージョンはどれ? いい加減 2003 Summer から脱却したいのだが。
October 2004
DirectXを作ったのは韓国人技術者
コンピュータの基礎を築いたのは韓国人
Komputerの国に帰れ
とりあえず903は自分が固定機能で嵌ったからって こんなとこで恨みつらみ書くな、な?
>>913 じゃあ、大好きな固定機能死ぬまでいじってれば?
俺はこんなんで苦労するのは嫌だけどね。
なんのステートが何に影響するのか一つ一つ表にでもまとめないととてもじゃないけど使えないよ。
使いたい機能を知っていれば十分でしょ
俺、固定機能しか使ったこと無くて、ピクセルシェーダーはまた後で勉強しようと 思って全然分からないんだけど、対応しないハードウェアの場合ソフトウェアで エミュレートするって、極端に遅くならない? DirectX10はXPには対応しないという話があるから、DirectX9はかなり長く 使いそうだし、当分は固定機能でいいかなぁと思ってる。
固定機能で苦労する奴ってなんなの?
>>914 はあれか、エフェクトのステート保存/変更機能のことを言ってるのか。
それ使わないとやってられないとかひょっとしてDrawPrimitiveが各所に
散らばってるんだろうか
>>916 頂点シェーダーはHWT&Lが使えなくなるけどそこそこは動く。
ピクセルは糞重い。
>>918 ありがとう。
だったら、後で勉強するってことでいいかな。
まぁ固定機能が(というか座標変換が)しっかり分かっていれば、シェーダなんてすぐ書けるしな 固定機能のクセで悩むか、シェーダでグラボの対応具合で悩むか、結局どっちでも悩むわけか そういや、固定機能っぽいのが復活するなんて記事をどこかで読んだけど、あれは何だったかな
>>907 VerexShader2.0までしかサポートしてないビデオカードで
3.0の機能も使うアプリを動かすときにMIXEDにして切り替えないで、
「動きません」で終わらせるのか?
対応していないシェーダを使うときは、MIXEDじゃなくてSOFTWAREにしないと動かないが、 お前は何を言っているんだ?
シェーダーでぼかし処理は見たことあるけど 固定機能でぼかし処理とか出来んのかいな?
しなきゃいらないって話だな
926 :
923 :2006/07/23(日) 21:12:53
>>925 やり方は、知らないが
兎に角、出来るのですなぁ
ありがとう。
>>922 ハードウェアがVS2.0対応のとしてMIXEDにした場合
VS3.0のシェーダーを使う場合:頂点バッファをD3DUSAGE_SOFTWAREPROCESSINGでつくり、SetSoftwareVertexProcessingをTRUEにすればソフトで処理される。
VS2.0のシェーダーを使う場合:頂点バッファを作り、SetSoftwareVertexProcessingをFALSEにすることでハードウェアで処理される。
つまり使うシェーダー毎に頂点バッファの作成フラグも切り替えてソフト/ハード処理を分別するということではないのか?
LunaライブラリとかそうやってたしそのためのMIXEDじゃあないの?
ようはVS2.0のハードでVS3.0も使うときにSOFTWAREデバイス作成したら VS2.0以下を使うときまでソフトになっちまうじゃねーかって事ね。
固定機能云々関係あるの?
ないっす。
907がMIXED使うやつは固定機能云々っていってたからじゃね?
933 :
デフォルトの名無しさん :2006/07/24(月) 10:30:23
DirectX2004SDKと2006SDKって共存させられますか?
934 :
デフォルトの名無しさん :2006/07/24(月) 10:59:54
すみません、教えて下さい。 GDIで円を書いたり消したり15ミリセカンドでやってますが、 ディスプレイの書き込みとプログラムの書き込みが干渉するのか、 シマのようなものがチラチラします。 GDI描画をDirectXに差し替えると、 シマを消すことは出来るのでしょうか?
画面と同期とかそれ以前に、GDIでのやり方が悪いんじゃね 円は裏バッファに書いてから、まとめてbitbltするんだ
シマパン
取り合えず15ミリ秒じゃなくて16ミリ秒に変更しる まぁそれでもチラつきは避けられないが DirectXはフルスクリーンでなら垂直同期取れるから チラつきは根絶できる
938 :
934 :2006/07/24(月) 11:32:02
>取り合えず15ミリ秒じゃなくて16ミリ秒に変更しる おk、でつ。 これは16ミリセカンドの仕様と聞いていたのを、自分が質問するときに15に丸めて書いてしまっただけです。 >DirectXはフルスクリーンでなら垂直同期取れるから >チラつきは根絶できる え”−−−−。 まさに知りたい内容でつ。KWSK。 説明サイトでも説明本でも何でも良いから教えて下さい!!!
939 :
デフォルトの名無しさん :2006/07/24(月) 11:32:13
勉強すればレスの内容を 理解出来るようになりますか?
940 :
934 :2006/07/24(月) 11:36:18
>DirectXはフルスクリーンでなら垂直同期取れるから >チラつきは根絶できる 特にハッキリ知りたいのは、 GDI描画をDirectX描画に差し替えるだけで、DirectAPIの中の人が垂直同期を自動でやってくれるのか、 ということと、 フルスクリーンというのはDirectAPIで、 フルスクリーンモードみたいなものにするってことでしょうか(質問初歩杉?)?
自分で調べなくても全部ここで教えてもらえますか?
942 :
934 :2006/07/24(月) 11:54:07
DirectXの基礎を解説しているサイトか本教えて下さい(><)
>>940 そのまえに最低限ダブルバッファはやっているのかぐらい答えろよ。
やってないなら同期以前の問題だぞ。
ダブルバッファってなんですか?
945 :
934 :2006/07/24(月) 13:23:17
ちなみに垂直同期はフルスクリーンならとれるが、 ウインドウモードではタイマーを使ってエミュレーションされるだけ。 ウインドウモードでちらつきを抑えるならFPSを合わせるよりも、逆に落とした方が効果的。 んで、フルスクリーン専用でいいの?
947 :
934 :2006/07/24(月) 13:34:17
仕様的にはフルスクリーン専用で問題ありません。 あえて問題とすれば、BCBで作成していますので、 TFormを使うのをやめるのか、 TFormのボタンを押すとフルスクリーンモード(DirectAPIで?)切り替えにするか、 検討が必要ということです。
今時GDIでちらつきってあり得ない気がするんだが
949 :
934 :2006/07/24(月) 13:40:43
ちらつくというより、ディスプレイの書き込みとプログラムの書き込みが干渉して、 シマができます。 >一旦裏でデバイスコンテキスト画像作って、それをCopyRectでコピーしています。 やっぱり、BitBltの方が速いでしょうか? あと、グローバルでデバイスコンテキスト画像をコピー直前に作ってますが、 あらかじめ作ってプールしておいた方が良いのかな?
CopyRect は違うんじゃまいか? # BitBlt() & SRCCOPY なら、ダブルバッファっぽいが # WNDCLASS で hbrBackground にブラシ設定してたりして… # さらに InvalidateRect() で再描画要求してたりして…
どちらにしろスレ違い
スレ違いってなんですか?
954 :
934 :2006/07/24(月) 14:38:33
↑ 上サイトみると2000〜1年になってますが、最近のリフレッシュレート論争はどうなってるんでしょうか? 論争に決着が付いて解決方法がDirectXということですか?
DirectXのAPIのリファレンスはどこにあるのでしょうか?
SDK (June 2006)使用してDirectX8使用したプログラム組もうと思っているのですが #define DIRECT3D_VERSION 0x0800 #include <D3D8.h> or #include <D3D9.h> #include <D3DX9.h> とするとd3dx9math.h等でエラーが出てしまいます。 古いSDKと併用するしかないのでしょうか?
DirectX8を使うんだろう? #include <D3DX9.h> ↓ #include <D3DX8.h>
GetViewportが失敗するのはどういう状況ですか?
960 :
959 :2006/07/24(月) 16:26:39
すみませんわかりました。D3DCREATE_PUREDEVICEのセイでした。
ヽ(・ω・)/ ズコー \(.\ ノ
>>958 そもそも併用というのがわからん。
DirectX8で作るならDirectX9のSDK入れておく必要ないし。
963 :
デフォルトの名無しさん :2006/07/24(月) 19:39:20
DirectXと直接は関係ないんですけど、クォータニオンについて質問させてください。 ある回転クォータニオンがあって、そのクォータニオンの半分の回転角を持つ クォータニオンを作りたいんですが、どのような計算をすればいいんでしょうか?
球面補間で半分にしてやれば?
>>964 いや、ですからやり方とかを聞いているのではなくて、
どのような計算をすればいいのかソースとかを書いてほしいんです。
966 :
963 :2006/07/24(月) 20:59:49
>>964 ありがとうございます。球面補間で検索して調べてみます。
>>965 勝手にレスしないでください。
google
どっちかっていうと、球面線形補間だけどな。 線形であることがクォータニオンの最大の長所。 D3Dだと、D3DXQuaternionSlerpがまさにそれ。
>>968 ありがとう!これなら出来そうです!まさにもとめていた答えです。
>>966 どちらさんですか?
970 :
964 :2006/07/24(月) 22:16:37
まあここまで俺の自演なわけだが
そろそろ次のスレを
>>962 3Dの勉強も兼ねているので9のサンプルをビルドする事もあるので・・
9のSDK入れても互換があるので9,8,7…のSDKとして使えるとどこかで見た気がするんです。
>>542 さんもそう言ってますし
実際d3d8.hとかは含まれてますし・・
DirectInputのバッファって使うのと使わないのどちらがいいの?
>>972 そもそも
#define DIRECT3D_VERSION 0x0800
#include <D3D9.h>
#include <D3DX9.h>
で、よかったはずだぜ。
これで動かないなら動かない仕様になっちゃったんじゃないか?
もしかしてw
>>973 なんだ?バッファって?
遥か前にDirectInputを弄ったことがあるが覚えが無いな。
>>974 動きません・・
そういう仕様になっちゃったんでしょうか;
あるだろ
>>973 どっちでも
PushやDownのキー状態知りたいならBuffer
>>976 ヘッダ見た感じだと
#include <D3D9.h>
#include <D3DX9.h>
共に、
#define DIRECT3D_VERSION 0x0900
以上で無いと拒否るようにできてやがんな。
おお、なんか思いだしてきたぞ。
やっぱりヘッダは
#include <D3D8.h>
じゃないと駄目だな。
で、バージョン定数は0x0800で無いと駄目。だな。
と、いうわけで
>>974 は大嘘だ。スマン。
で、肝心のD3DX8.hは無いな。確かにない。
でもハードディスク検索してみたら、どうやら
C:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include\prerelease
に入ってるっぽい謎w
とりあえず、これで通せない?w
Dx8のSDK落としてきてIncludeとLibの中だけ適当な場所においてパス通せばいいだけだろ。 別にSDKインスコする必要はねぇ。
>>978 うちのHDDには眠ってませんでした;
>>979 納得いきませんがそうします
皆さんお騒がせしました
D3DX9だって、古いD3DX9使いたかったら、古いSDKから持ってくるしかないじゃん。
982 :
デフォルトの名無しさん :2006/07/25(火) 02:33:35
デバッグをするとプリコンパイル済みのヘッダーの検索中に 予期しないEOFというのが出るのですが 対処法わかりませんか?
>>982 EOFといわれるとファイルIO周りぐらいしか思いつきませんわ
984 :
982 :2006/07/25(火) 02:44:16
すみません間違えました ビルドをすると このメッセージがでます デバッグをすると 〜exeファイルが見つかりませんて出ます。 対処法どなたかしりませんか?
>>982 それはプリコンパイルヘッダをincludeしてないと出るエラーだったかな?
>>982 俺あまり詳しくないから的外れな事言ってるかもしれんが
以前同じような事になったが、VSで同じミスしてるなら多分
ソースファイル中に、プリコンパイル用ヘッダがincludeされていないと予想
そうするとexeファイルが見つからないのはビルド失敗してるから実行できませんって意味
#include "stdafx.h"
全てのcpp(c/cxx)にこれ追加してもダメ?
987 :
986 :2006/07/25(火) 02:58:56
被ったか、スマソ
>>973 GetDeviceState/GetDeviceDataの話?
即時データを取得したいのか変化イベントを取得したいのか
開発の要求に合わせて選択すりゃいいんじゃね
989 :
デフォルトの名無しさん :2006/07/25(火) 19:31:08
頂点バッファのLockについて質問です。 ポリゴン1つ分の領域(頂点3つ分)をLockして、DrawPrimitiveで描画するとうまくいくのですが、 メッシュ全部のポリゴンを一度にLockして描画すると、うまくいきません。 IDirect3DVertexBuffer9::Lock()はD3D_OKを返しているのですが、 確保した領域に書き込もうとするとなぜか落ちてしまいます。 VRAMもメインメモリも十分にあると思うんですが、 何か原因に心当たりのある方いましたらレスください。
私のプログラミングのことを聞きたいわけじゃないんです!
992 :
989 :2006/07/25(火) 21:06:45
自己解決です。
CreateVertexBufferでサイズの指定をポリゴン1つ分しかしてなかっただけでした。
>>991 勝手にレスしないでください。
だったら、トリップつけれ
原因はなんとなく分かるが、いま答えてもスレが埋まってしまうので 次スレでまた聞いてくれ。
梅
おいお前ら 5月2日 は何の日だか知ってるか?
お前との結婚記念日だろ
5 ごー 2 つー ごーつー GOTOの日
1000 :
デフォルトの名無しさん :2006/07/25(火) 22:32:20
10000000000000000000000000000000000000000000000000000000000000000000000 バーか死ねクズ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。