トップページgamedev
987コメント302KB

DirectX総合スレ (Part9)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2009/02/11(水) 05:00:58ID:viN0kzG2
言語はC++

■過去スレ

DirectX総合スレ
Part 8: http://pc11.2ch.net/test/read.cgi/gamedev/1205306118/
Part 7: http://pc11.2ch.net/test/read.cgi/gamedev/1179516297/
Part 6: http://pc11.2ch.net/test/read.cgi/gamedev/1163691532/
Part 5: http://pc8.2ch.net/test/read.cgi/gamedev/1157727402/
Part 4: http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
Part 3: http://pc5.2ch.net/test/read.cgi/gamedev/1105333209/
Part 2: http://pc5.2ch.net/test/read.cgi/gamedev/1095863432/
Part 1: http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
06946892009/09/17(木) 23:06:24ID:4awen6sw
>>693
ソートのフラグのほうは設定していなかったので追加してみましたが、結果は変化なしでした。

試しにDrawごとにBegin, Endを呼ぶようにしてみても変化なし。
0695名前は開発中のものです。2009/09/17(木) 23:21:48ID:COE3+ZrI
最初から半透明(0xC0FFFFFF)を使わなきゃどうなる?
何かしら不透明で表示されるか?
0696名前は開発中のものです。2009/09/17(木) 23:34:04ID:Cm0Wo+Cv
>>ID3DXSpriteのインスタンスは複数のテクスチャで同じものを共有して
ここがあやしい。スプライトのドローは実際、その時点で描画はしなくて、
g_lpd3dSprite->End();

g_lpd3dDevice->EndScene();
}

g_lpd3dDevice->Present( NULL, NULL, NULL, NULL );
まできて、ここで描画されるから、インスタンスが共有してるのがくさい。
0697名前は開発中のものです。2009/09/17(木) 23:49:33ID:COE3+ZrI
俺はテクスチャ自体のアルファチャネルを疑ってるよ。
使ったことがないので、確証はないが
元のアルファが半透明だと、問答無用で半透明描画されるように見える。
0698名前は開発中のものです。2009/09/17(木) 23:54:43ID:DMWsPm3W
テクスチャ画像うpはできない?
全体うpがあれならデータの一部だけでも
0699名前は開発中のものです。2009/09/17(木) 23:58:55ID:4awen6sw
>>695
不透明(0xFFFFFFFF)の場合 ttp://dl5.getuploader.com/g/1|toollove/302/WS000001.JPG
正しく不透明で表示される。

透明(0x00FFFFFF)の場合 ttp://dl5.getuploader.com/g/1|toollove/303/WS000002.JPG
正しく表示される(カットイン背景の黒も意図通り不透明で表示)。
(アルファ値が0x00のときは最初から描画しない仕様になっているのか?)

>>696
処理の流れを書き出してみました。どこか問題点があるでしょうか?
レンダーターゲットをサーフェスに設定してるのでPresent は呼んでいません。

device_->SetRenderTarget(0, surface_);
device_->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0x00, 0x00, 0x00, 0x00), 0, 0);
device_->BeginScene();
sprite_->SetWorldViewRH(NULL, NULL);
sprite_->Begin(D3DXSPRITE_ALPHABLEND | D3DXSPRITE_SORT_DEPTH_FRONTTOBACK);
//ここでまとめてDraw
BOOST_FOREACH(value_type const& drawer, container_) {
drawer->draw(sprite_); //内部で sprite->SetTransform(...) と sprite_->Draw(...) を呼んでいる。
}
sprite_->End();
device_->EndScene();
//この後、GetRenderTargetData してCPUに転送
07006892009/09/18(金) 00:15:40ID:sY/rjaFg
>>698
うpしてみました。 ttp://www.dotup.org/uploda/www.dotup.org152838.zip

>>697
半透明アルファ(抜き用)を持ったテクスチャは
上記のうち Cutin-fg-Char.png(キャラクター画像) と Char.png(カットイン画像) の二つです。
なぜか一緒に半透明で表示されるカットイン背景などは、もともと完全に不透明です。
07016892009/09/18(金) 00:18:26ID:sY/rjaFg
誤記失礼。
× Cutin-fg-Char.png(キャラクター画像) と Char.png(カットイン画像) の二つ
○ Cutin-fg-Char.png(カットイン画像) と Char.png(キャラクター画像) の二つ

なんか長々とすみません。
0702名前は開発中のものです。2009/09/18(金) 00:38:40ID:svVZT8ru
>>device_->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0x00, 0x00, 0x00, 0x00), 0, 0);
ここだな。
->Clear( 0, NULL, D3DCLEAR_TARGET && D3DCLEAR_ZBUFFER && D3DCLEAR_STENCIL, D3DCOLOR_ARGB(0xFF,0x00,0x00,0x00), 1.0f, 0 );
で、ステンシルは無視してくれ。俺はこれで半透明の表示で問題は出てないな。
0703名前は開発中のものです。2009/09/18(金) 00:41:43ID:NpRsNZ/U
フラグのBit指定なのに&&はおかしいだろ
0704名前は開発中のものです。2009/09/18(金) 01:04:28ID:svVZT8ru
そうなんだ。勉強になりました。ども。
->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER | D3DCLEAR_STENCIL, D3DCOLOR_ARGB(0xFF,0x00,0x00,0x00), 1.0f, 0 );
これでいいよな。
0705名前は開発中のものです。2009/09/18(金) 01:07:47ID:NpRsNZ/U
指定の仕方はあってるけどステンシルバッファと
Zバッファ作ってセットしてないとエラーで乙るぞソレ。
0706名前は開発中のものです。2009/09/18(金) 01:21:18ID:svVZT8ru
ステンシルはいらねぇな。
->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER , D3DCOLOR_ARGB(0xFF,0x00,0x00,0x00), 1.0f, 0 );
これで、>>689も解決だ!直ったか?
0707名前は開発中のものです。2009/09/18(金) 09:05:05ID:NpRsNZ/U
つかー画面のクリアとポリゴン描画の半透明はまったく関係ねぇとおもうぞ
0708名前は開発中のものです。2009/09/18(金) 23:14:54ID:svVZT8ru
そうか。最初から考えよう。

アルファ値付きPNGとアルファ値なしの画像という点で考えると、
最初の意図した描画を実現するには、
もや画像だけアルファ値付きのPNGにする。
他は通常のPNGにする。
ドローでのカラー指定はすべて、D3DCOLOR_ARGB(0xFF,0xFF,0xFF,0xFF)にする。
こうすれば、意図通りになるはず。
抜き色は普通、(0,0,0)だよな。キャラクター矩形で透明にしたいところはこれで塗りつぶしておけばいいんだよね。
07096892009/09/19(土) 00:06:43ID:u6/AjfDD
昨日はありがとうございました。
あれからいろいろ試した結果、
・アルファチャネルのブレンディングを有効にし、
・不透明度が大きい方を結果のアルファ値とする
このように設定すると期待通りの動作になりました。
device_->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, TRUE);
device_->SetRenderState(D3DRS_BLENDOPALPHA, D3DBLENDOP_MAX);

ttp://dl6.getuploader.com/g/1|toollove/308/WS000003.JPG
例のごとくわかりづらいですが、
「不透明なカットイン背景が半透明になって、全体背景の街が透けて見える」
という現象が無くなりました。
0710名前は開発中のものです。2009/09/19(土) 00:50:01ID:FpikGG53
>>709
なんか、もやの白が強くなって不透明に見えてるだけだね。>>692の画像と
表示のされ方は変化してないように見える。

07116892009/09/19(土) 01:29:44ID:u6/AjfDD
ではものすごくわかりやすい例を。
旧 ttp://dl3.getuploader.com/g/1|toollove/310/WS000005.JPG
新 ttp://dl3.getuploader.com/g/1|toollove/309/WS000004.JPG

どちらもR50%, G50%, B50% の3つのテクスチャ(不透明)をこの順に
color = D3DCOLOR_ARGB(0xFF, 0xFF, 0xFF, 0xFF);
color = D3DCOLOR_ARGB(0xC0, 0xFF, 0xFF, 0xFF);
color = D3DCOLOR_ARGB(0x80, 0xFF, 0xFF, 0xFF);
でそれぞれ重ねたものです。
ソースはSetRenderStateの部分以外差異なしです。

新版では不透明(0xFF)で描画したR50%のテクスチャが
正しく不透明で表示されてるのがわかると思います。
0712名前は開発中のものです。2009/09/19(土) 01:39:52ID:ujIvvLBv
つーか単にステート関連の設定をちゃんと理解してなかっただけじゃねえの
0713名前は開発中のものです。2009/09/19(土) 08:02:04ID:k3VoAMfC
ちゃんと理解してたら質問にこないわな
お前本当にコミュニケ−ションとか理解できないじゃねえの
0714名前は開発中のものです。2009/09/19(土) 08:29:04ID:FpikGG53
>>711
分かった。意図どおりになってよかったね。謎は残されたままだが。
旧タイプは重ねるごとに透明になってるのか、不思議だね。先に
不透明で描いてるのに後から重ねると透明になっていくという謎。
最終的に合成段階でピクセルの色が決められるから、そういうことも
できるのかね。加算合成?減算合成?
g_lpd3dDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
g_lpd3dDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
こうやって普通の半透明じゃ、旧タイプみたいに不思議状態にはならないよな。
謎だ。
0715名前は開発中のものです。2009/09/19(土) 08:45:39ID:T/T+IHq2
っていうか、ID3DXSpriteの描画の為に
レンダーステートをいぢるっておかしくねーか?
何だかなー
0716名前は開発中のものです。2009/09/19(土) 08:49:26ID:Wmk2Wipy
素直にD3DXSpriteを捨てるとか
0717名前は開発中のものです。2009/09/19(土) 10:14:11ID:hPS4eY5I
D3DXSpriteなんて使ったこと無い。
あれ、いらないと思う。
0718名前は開発中のものです。2009/09/19(土) 10:45:14ID:wVuVk5OI
すみません。
画像保管専用用のテクスチャから、表示用のテクスチャに一部画像を送りたくて
双方をLockRect()→FillMemory()→1ピクセルずつ転送
としようとしているのですが上手く行きません。

もしかして両方LockRect()する必要なんて無かったりしますか?
BMP→テクスチャなら正しく書き込めるんですが、テクスチャ同士の書き込みは初めてなもので・・ orz
0719名前は開発中のものです。2009/09/19(土) 10:49:27ID:ujIvvLBv
なんでFillMemory?
システムのサーフェイスからVRAMサーフェイスへDMA転送するメソッドあるだろ。
0720名前は開発中のものです。2009/09/19(土) 11:09:55ID:wVuVk5OI
FillMemory・・pBits Pitchの準備でもする関数と思い込んでた。全域書き込みだったのか・・。(´・ω・`)
DMA転送の意味はググっておおよそわかったけど
システムのサーフェイス VRAMサーフェイス・・色々理解してない事が多い悪寒。
DirectX勉強続けるならこれくらい読んでおけ 的なWebや書籍あったら何か教えて下さい(・ω・`)
0721名前は開発中のものです。2009/09/19(土) 11:09:57ID:8SLts9QF
「ウマクイカナイ」という奴は、その言葉を発することで、
どれだけ解決を先送りにしているか理解していないんだろうな。

「ウマクイカナイ」と言えば、どうなってほしいのかという希望と、
現状が具体的にどうなっているのかということを説明した気になっているんだから。
0722名前は開発中のものです。2009/09/19(土) 11:33:38ID:T/T+IHq2
Direct3D9は、日本語ヘルプだけ読んでればいいよ。
D3Dのみならず、3Dグラの基本を学ぶにはとても良い資料なんで。

まずはここを全ページ読む
http://msdn.microsoft.com/ja-jp/library/bb173466(VS.85).aspx
0723名前は開発中のものです。2009/09/19(土) 11:46:24ID:wVuVk5OI
>>722
ありがとうございます。早速読み始めました。
書籍でも一応学んだ部分も有るので、知らないワードはググりながら読み進めて行こうと思います(`・ω・´)
0724名前は開発中のものです。2009/09/19(土) 14:50:51ID:8FaGBwcO
ヘルプは細かい事を調べるにはいいけど、
一連の流れをつかみにくいから
DirectX実践プログラミング読みなよ。
事実上、これから始めるのがスタンダードだと思うんだけど。
0725名前は開発中のものです。2009/09/19(土) 17:22:47ID:AvRxeaE8
helpが教科書
googleが先生
0726名前は開発中のものです。2009/09/20(日) 10:01:57ID:3Ar764Br
Googleは実際はただの仲介業者で、Google含めたWeb全体が先生
0727名前は開発中のものです。2009/09/20(日) 17:22:38ID:ZCm9dBJK
>>726
検索ヒットの末尾の方とか読まんだろ?
0728名前は開発中のものです。2009/09/20(日) 19:11:34ID:X77D+Jte
いやいや、実際の学校の先生も仲介役だろう
先生を含めた世の中全体が先生って解釈もあるが
0729名前は開発中のものです。2009/09/20(日) 21:48:19ID:c7TwYnTe
http://ranobe.com/up/src/up397377.jpg
http://ranobe.com/up/src/up397378.jpg

DirectInputの勉強をしています。一応、入力した値の取得は出来たのですが、
「アナログ→デジタル」に切り替えると、なぜか「-8」が入力され続けてしまいます。
これはどうしてでしょうか?
0730名前は開発中のものです。2009/09/20(日) 23:27:42ID:r4ZVigLq
>>729
アナログは細かい誤差が出るのである程度遊びをもって入力処理するのが基本。
0731名前は開発中のものです。2009/09/21(月) 00:39:52ID:4AGk9N1+
>>730
そうなんですね、ありがとうございます
0732名前は開発中のものです。2009/09/23(水) 12:50:50ID:V8wqdYIK
すみませんテクスチャまわりについて2点の質問なのですが、

SetTexture関数を多用すると処理がどんどん重くなると聞き、
「連続して使う256x256のテクスチャ9枚」を切り替えまわるより
「連続ならば768x768(3個x3個)のテクスチャ1枚にした方が早い」という意味だと思うのですが
テクスチャのサイズが上がると切り替えの負担は増えるのでしょうか?
(例えば途中で1/9枚だけアクセスしたくて切り替えると無駄に重い など)

あと、水面を表現する時は「フレーム毎に別のテクスチャ」を使って表現しようと思っているのですが、
滝など流動的なものを表現する場合、テクスチャは1枚のままで
「UV座標を操作する事で表現する」なんて出来れば負荷も下がり滑らかなアニメーションが出来るかも
と思うのですが、UV座標の操作(というか抜き取りと再設定)は非現実的だったりしますでしょうか?
0733名前は開発中のものです。2009/09/23(水) 15:25:12ID:3gqevorR
やってみて遅かったら考えろ
0734名前は開発中のものです。2009/09/23(水) 15:45:24ID:nTo6CkVE
ハード次第なとこもあるから全て実測って訳にもいかないのがあれだけどな
0735名前は開発中のものです。2009/09/23(水) 16:11:35ID:m/YblDRh
昔のイメージだと256x256に出来るだけ収めて
それの切り替え回数を出来るだけ少ないようにするってのが速かったと思うんだが
今でも底辺に合わせるならそれなんじゃねーのかな

256x256にして切り替え回数をまったく減らせないのであれば大きい方1枚がいいんじゃね?
0736名前は開発中のものです。2009/09/23(水) 18:37:56ID:6iJxx7kT
キャッシュに入っちゃったときとキャッシュで出し入れしてるかでも違うだろ
単純に切り替えて「ああ、そうか」とか結論を出すのも駄目
つまり、シーン毎にやってみるしかない
0737名前は開発中のものです。2009/09/25(金) 15:12:54ID:jyLx60BE
>>733-736
色々と知らなかった事情も知れて勉強になりました。
テクスチャを展開する場所も重要な訳ですね。
ありがとうございます。
0738名前は開発中のものです。2009/09/25(金) 21:50:39ID:CaKKOxxc
展開する場所?
0739名前は開発中のものです。2009/09/26(土) 18:16:15ID:aslwUzky
>>732
UVを変化させて水流などを表現する方法は、昔から標準的に使われていますよ。
(UVスクロールなどと呼ばれています。)
単純な技法ゆえに、一枚板ポリゴン上でおこなった場合は見た目があまり面白くありません。
しかし、グラフィックデザイナーの手によるポリゴンの繋ぎ合わせ・重ね合わせの妙のおかげで、
かなり見映えのする川や炎の表現になります。
0740名前は開発中のものです。2009/09/27(日) 01:34:23ID:V6ttYBA5
少し疑問があったので質問を。初心者ですいません。
皆さんテクスチャの画像形式は何を使っていますか?
今のところ最初読んだ本に従ってbmpを毎回dds形式に統一して読み込んでいるのですが、容量ばかり多くてメモリを喰うもので。。
ついでにddsファイルの利点も教えていただけるとありがたいです。
0741名前は開発中のものです。2009/09/27(日) 03:23:24ID:gpJIcbqR
多少色の再現度が落ちてもいいテクスチャーはJPGにしてる。
0742名前は開発中のものです。2009/09/27(日) 04:12:58ID:jhWyqA9G
ファイル形式変わっても、メモリを食う量は一緒じゃないの?
テクスチャ圧縮とか使うならともかく。
0743名前は開発中のものです。2009/09/27(日) 05:12:13ID:+LiXIQ5c
しかも読み込みの時間も延びる(ほんのわずかだけど)
0744名前は開発中のものです。2009/09/27(日) 10:38:58ID:syUY7XWv
DXT、ミップマップ、キューブマップ、アルファチャンネル
このへんの機能を使うならDDSオンリーになるとおもうんだけど。
0745名前は開発中のものです。2009/09/27(日) 12:25:33ID:ErInkGhk
>740
今のところddsで問題無いからddsでやってる。
まあ、テクスチャ合計で10MBくらいだから大丈夫なんだけど。
でも、圧縮かけてメモリ上に置いておくと、描画の度に展開すると速度が
犠牲になりそう。
シーンごとに必要なテクスチャを分けておいて、シーソ移動ごとに必要なものだけ
展開してメモリに置いとくとかすれば良さそう。面倒になるけど。
0746名前は開発中のものです。2009/09/27(日) 12:29:36ID:cIkrjluV
っつか普通そうするだろ
0747名前は開発中のものです。2009/09/27(日) 14:50:35ID:syUY7XWv
そもそも今時のGPUがつんでるメモリ量を考えての発言なのだろうか・・・。
0748名前は開発中のものです。2009/09/27(日) 15:09:16ID:gpJIcbqR
困ったことに「フリゲは非力なマシンで動いて当たり前」と考えてるユーザーは少なく無い。
0749名前は開発中のものです。2009/09/27(日) 15:09:58ID:gpJIcbqR
(JPGはあくまで配布の都合なんで関係ないけど)
0750名前は開発中のものです。2009/09/27(日) 15:18:47ID:hp5UHszX
WindowsMeで動かないんですけど?
0751名前は開発中のものです。2009/09/27(日) 15:19:38ID:syUY7XWv
WindowsMEとかサポートするのはただのオナニーだろ
0752名前は開発中のものです。2009/09/27(日) 15:25:52ID:hp5UHszX
http://ja.wikipedia.org/wiki/NScripter
フリーゲームや同人の現実
0753名前は開発中のものです。2009/09/27(日) 15:50:21ID:YaqXlW2n
フリゲや同人全般だと非力なスペックで動くゲームが一番人気あるからな、
その層を対象にするから中々スペック上げるのは難しい。
にしてもさすがにVRAM32ぐらいあれば家庭用ゲーには比べ物にならないぐらい潤沢ではあると思う。
よくある新しいPCなのに重いってのはノートだったりオンボだったりするのが原因だが、
これらの場合でもVRAMだけは多く取れると思う。
0754名前は開発中のものです。2009/09/27(日) 16:07:57ID:HWAanpbA
極限までのメモリ節約を考えないマはただの生ゴミ
0755名前は開発中のものです。2009/09/27(日) 16:20:30ID:PoOE52xi
すみません
D3DXLoadMeshFromX で読み込んだXファイルから
「法線情報」「頂点座標」「UV座標」「マテリアルNo」
にアクセス(読み書き)する方法
を解説しているサイトをどなたかご存知ではないでしょうか?
0756名前は開発中のものです。2009/09/27(日) 16:36:43ID:syUY7XWv
>>754
節約するのとサポートが打ち切られているようなOSで
動くようにするのは話が違う。
0757名前は開発中のものです。2009/09/27(日) 16:46:12ID:gs3GrlUZ
いやお前こそ何の話してるんだといいたい
ファイルの容量を上手く扱うための流れから勝手にズラしてるようにしか見えん
0758名前は開発中のものです。2009/09/27(日) 17:15:04ID:6supplBE
あまりに非力なスペックまで相手にするのは不毛だと思う
0759名前は開発中のものです。2009/09/27(日) 18:12:24ID:GCjoC8mm
内容の割に不自然に重いって感じさせなきゃいいんじゃね?
たいした事やってないのに、異様に重かったり
異常にハイスペックを要求したり、こういうのこそオナニーだよね。
0760名前は開発中のものです。2009/09/27(日) 18:33:23ID:+LiXIQ5c
メッシュの頂点フォーマットを設定して頂点バッファを取得すればいい
マテリアルNoはたぶんアトリビュートテーブル
0761名前は開発中のものです。2009/09/27(日) 18:34:46ID:+LiXIQ5c
あ、760は>>755へのレスです
07627402009/09/27(日) 19:28:26ID:V6ttYBA5
なるほど。参考になりました。
やはりメモリ量を増やさないよう地道に努力するほかなさそうですね。。
とりあえずはddsで進めていこうと思います。

メモリ消費量に見合う処理を実現させたいですね。
0763名前は開発中のものです。2009/09/27(日) 20:05:19ID:sIMIl1Dj
DirectXがダウンロード出来なくなっちまったが、どうしたの?
0764名前は開発中のものです。2009/09/28(月) 00:41:50ID:PJwvbzf0
DirectXは終了しました。あしからず
0765名前は開発中のものです。2009/09/28(月) 10:24:06ID:moqSVWKN
DirectXってなかなかインパクトや説得力があってイカす名前だよな
誰が考えたのか知らんけど
0766名前は開発中のものです。2009/09/28(月) 13:18:55ID:XG0JgWN6
Xファイルはドラマだか未知の謎だかで
バッドネーミングかと
0767名前は開発中のものです。2009/09/28(月) 13:27:20ID:1dxmQUI2
Directダメ、必ずデバイスドライバを通せってことだよな
0768名前は開発中のものです。2009/09/28(月) 15:48:36ID:iNj0Bwp/
マイクロソフトのX好きはMSXの昔の頃かららしいよ
0769名前は開発中のものです。2009/09/28(月) 15:53:43ID:kBbiwz2h
XWindow
0770名前は開発中のものです。2009/09/28(月) 16:25:24ID:dKxmzM/8
XNA使ったらあれほど手が出なかったゲームループが一瞬でできました
0771名前は開発中のものです。2009/09/28(月) 17:51:23ID:moqSVWKN
Xファイルからメッシュを読み込んでDirectional Lightで照らそうとしているのですが、
なぜかライトが反映されません。
アンビエントライトおよびDirectionLightのAmbient値だけは反映されますが、Diffuseはチュートリアル通りに設定しても適用されません。
ライトの方向が間違っているのかと思い、ためしにライトの方向ベクトルを回してみても変化がありませんでした。
何が悪いんでしょうか。

DXViewerでは正常にグローシェーディングで陰影がつく形で表示されました。
0772名前は開発中のものです。2009/09/28(月) 18:53:02ID:AKxVarcw
Attenuation とかの値は設定したかい?
0773名前は開発中のものです。2009/09/28(月) 18:55:49ID:xoHW67fY
>>771
そのxファイルに法線ついてる?
法線無い場合はD3DXComputeNormalsとか使わないと駄目
0774名前は開発中のものです。2009/09/28(月) 21:58:30ID:moqSVWKN
>>772
>>773
解決しました。
今回DXUTILのDXUTMeshクラスを初めて使ってみましたが、
SetFVFだけでなくSetVertexDeclで頂点データを定義することを知りませんでした。
設定すると無事ライティングが機能しましたが、DXUTMeshを使っていたことを記述するべきでしたね。
すみませんでした。
0775名前は開発中のものです。2009/09/28(月) 22:15:42ID:MVcbCkFc
>>760
ありがとうございます。情報を探してみます。
0776名前は開発中のものです。2009/09/28(月) 22:45:30ID:iTnMmDRC
今現在、3Dオブジェクトとスプライトの2つの当たり判定を取りたいと思っています。

そこで3Dオブジェクトのワールド座標をスクリーン座標に変換したいのですが、そういう変換関数ありますか?
0777名前は開発中のものです。2009/09/28(月) 23:17:59ID:RzfBxwC3
D3DXVec3Project
0778名前は開発中のものです。2009/09/29(火) 00:44:24ID:dMyVg2nC
>>777

ありがとうございます。
なんとかさっきその関数を見つけることができ、実現することが出来ました。
07797552009/09/29(火) 17:40:07ID:jAN25eYD
すみません。
D3DXLoadMeshFromX関数 から頂点/法線/マテリアル関連 の情報を取り出す為に
「ID3DXMesh インターフェイス」http://msdn.microsoft.com/ja-jp/library/cc372520.aspx
これを利用したいのですが

ID3DXMesh型の変数(?)を宣言しようとすると
>'ID3DXMesh' : 抽象クラスをインスタンス化できません。
とゴッソリエラーと警告が出てしまいます。

D3DXLoadMeshFromX関数の第8引数に渡したLPD3DXMESH型では当然「ID3DXMesh インターフェイス」は
使う事が出来ないのですが・・・どうすれば良いのでしょうか。

私はどこら辺を勉強して来ればこの辺の仕組みが解るのでしょうか orz
0780名前は開発中のものです。2009/09/29(火) 18:57:23ID:dqeDC0z0
インスタンスはポインタのアドレスを生成してくれる関数に渡してもらうんだよ。
07817552009/09/30(水) 03:34:42ID:Bg91gg+z
>>780
ありがとうございました。

すみません、メンバって言葉に反応してピリオドを使ったミスでした orz
すぐ下でOptimize()でアロー演算子使って動いてるのに気付かず;
失礼しました orz
0782名前は開発中のものです。2009/10/01(木) 23:58:42ID:LIkPTtwl
すみません、3D地面とキャラクターの衝突判定についてなのですが、
距離計算(内積)と反映までは出来たのですが、
1.衝突判定の処理軽減(判定対象の絞込み)にはどういうパターンが有るのか?
2.頂点と法線 どちらで判定すべきなのか?
3.内側にめり込む事の回避方法(尖っているポリゴンの境目からや処理落ちで等の)

これらの疑問でどう作れば良いかイメージができず困っています。
基本地面を歩きまわる軽いアクションゲーなのですが、
定番の方法などが有れば教えて頂けると幸いです。
0783名前は開発中のものです。2009/10/02(金) 00:11:29ID:xaTOFVmz
どういう地面かによるけど
当たり判定取りたいキャラの真下の高さを取得してそれと当たりを取るのが最低限だろう
0784名前は開発中のものです。2009/10/02(金) 00:18:49ID:z1JLtZk6
>>782
絞込みには、そっちには4分木が有効だろう。ちょっと敷居は高いが。
http://marupeke296.com/COL_2D_No8_QuadTree.html

後は境界球の作成から始めればいいんじゃない?
0785名前は開発中のものです。2009/10/02(金) 09:26:28ID:/niBMC9g
>>783
そうですね、今は数段階の判定対象の絞り込みで軽減をしてみようかと思います。
ありがとうございます。

>>784
ありがとうございます。4分木・・今はキツいですが、いずれは勉強して取り込みたいと思います。
>境界球
なるほど。点じゃなくて立体で判定すればめり込み難そうですね。 試してみようと思います。
0786名前は開発中のものです。2009/10/07(水) 22:53:27ID:1OGUvk7S
すみません
プレイヤーの数倍のサイズの敵への攻撃の衝突判定をする場合
1.円柱やボックスを大まかに中心座標から置いてそれを判定する
2.頂点数を減らした透明モデルを一緒に動かして、その面から外積(?)で判定する
この2つが思いつくのですが、
「低負担でそこそこの衝突判定」をする方法や理論が有れば助言頂けませんでしょうか?
0787名前は開発中のものです。2009/10/07(水) 22:56:56ID:GxNoKgMb
当たり用の小さい球をたくさん敵につける
0788名前は開発中のものです。2009/10/07(水) 23:06:45ID:1OGUvk7S
>>787
なるほど・・低負担でそこそこを楽に実現できそうですね。 ありがとうございましたっ
0789名前は開発中のものです。2009/10/12(月) 14:26:14ID:puTlDpxR
WindowsへDirectX 9 と10を両方インストールして
場合に応じて切り替えることはできますか?
0790名前は開発中のものです。2009/10/12(月) 16:22:18ID:hQMoF6vn
DirectXには下位互換があるんだから10をインストールすれば9も使える
0791名前は開発中のものです。2009/10/12(月) 17:21:34ID:YdYmTdmP
それを言うなら上位互換
0792名前は開発中のものです。2009/10/12(月) 21:22:38ID:rJ16+euJ
_ASSERT と assertって同じ?別物?
定義を見ると違うっぽいので違うのだろうけど、どう使い分けるの?
0793名前は開発中のものです。2009/10/12(月) 21:34:24ID:AjxFbh57
>>789
そもそもOSに標準搭載されているのでインストールする必要性が無い。
■ このスレッドは過去ログ倉庫に格納されています