鬱だ氏のう DirectX (Part 8)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
03/03/03 16:25ID:bb2JYtGF初心者用相談室では扱わないような少し高度な話題も受け持つ。
■ 過去スレ
Part 1 http://piza.2ch.net/tech/kako/966/966655286.html (プログラム板)
Part 2 http://pc3.2ch.net/test/read.cgi/tech/997101556/ (プログラム板)
Part 3 http://game.2ch.net/gamedev/kako/1005/10051/1005119775.html
Part 4 http://game.2ch.net/gamedev/kako/1016/10162/1016276254.html
Part 5 http://game.2ch.net/test/read.cgi/gamedev/1027351925/
Part 6 http://game.2ch.net/test/read.cgi/gamedev/1033920036/
Part 7 http://pc2.2ch.net/test/read.cgi/gamedev/1039509250/
00021
03/03/03 16:28ID:bb2JYtGFMSのDirectX関連ページ
DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.asp
MSDN>DirectX
http://www.microsoft.com/japan/msdn/directx/default.asp
個人サイトはあんまり知らない・・・
DirectX Info Lib (デバイス情報のデータベース。すばらしい!)
http://www.netsphere.jp/dxinfo/
BBX(掲示板)
http://isweb8.infoseek.co.jp/computer/bbx/
spin
http://spin.s2c.ne.jp/
宇治社中改(3D基礎講座)
http://www.cc.rim.or.jp/~devilman/
0003名前は開発中のものです。
03/03/03 16:53ID:aZrofejA ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
0004名前は開発中のものです。
03/03/03 16:56ID:1NsvQPOm0005あぼーん
NGNG0006名前は開発中のものです。
03/03/03 18:55ID:qbQXxNnTm_lpD3DDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); //加算
m_lpD3DDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
上は、うまく描画出来るんですが、
m_lpD3DDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_DESTCOLOR); //減算
m_lpD3DDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCALPHA);
とか、
m_lpD3DDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); //乗算
m_lpD3DDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR);
とか、の場合が画像のα値が無視されて描画されます。
上の2つのレンダリングステートで画像のα値も有効にして描画する方法はないですか?
0007名前は開発中のものです。
03/03/03 22:26ID:r4B7DOte0008あぼーん
NGNG0009あぼーん
NGNG00106
03/03/04 00:04ID:j6RF6bWD間違いがわからないっす・・・
具体的に αチャンネル付き画像を、
減算合成で描画するコードを書いて下さい。
それとも、うまく逝かないのは 単なるハード環境の問題っすか?
0011名前は開発中のものです。
03/03/04 00:08ID:d6l7qWOu0012あぼーん
NGNG0013名前は開発中のものです。
03/03/04 00:35ID:mWLi3NtvD3DBLEND_SRCALPHA?
D3DBLEND_SRCCOLORじゃないの?
D3DBLEND_SRCALPHA
ブレンディング係数は、(As, As, As, As)。
D3DBLEND_SRCCOLOR
ブレンディング係数は、(Rs,Gs,Bs,As)。
0014名前は開発中のものです。
03/03/04 02:10ID:xgzJo+TSそれのどこが減算なのか具体的に説明して欲しい。
加算や乗算もαを掛ける意味が分からんし。
掛けるとしても頂点カラーか頂点αだろ。
0015あぼーん
NGNG0016名前は開発中のものです。
03/03/05 00:52ID:5Lz6pLX5描画を開始する頂点の位置をしていってあるけど、これって意味あるんですか?
インデックスの最小値を参照すればわかると思うのですが
0017名前は開発中のものです。
03/03/05 01:29ID:MVcdhL32IDirectSound3DListener9* pDSListener;
...
if(FAILED(hr = g_pDS->CreateSoundBuffer( &dsbd, &pDSBPrimary, NULL )))
return hr;
if(FAILED(hr = pDSBPrimary->QueryInterface(IID_IDirectSound3DListener9,
(LPVOID *)&pDSListener)))
return hr;
pDSListenerは、CreateSoundBufferのような関数がないから、
QueryInterfaceを使わなくてはいけないのでしょうか?
00186
03/03/05 03:07ID:E3cAoA2Sう〜む・・
減算の意味を勘違いしてたみたいです・・
m_lpD3DDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_DESTCOLOR);
m_lpD3DDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCALPHA);
これは何になるのかな?
まぁ、αチャンネルを有効化(カラーキーみたく)して、
各種ブレンド出来ればよい分けですが・・
やっぱ自分のハードが対応してないだけかな?
0019名前は開発中のものです。
03/03/05 04:48ID:DekEFUPOうん
0020名前は開発中のものです。
03/03/05 05:08ID:AQmYgEjjあまりサイズの小さいVertexBufferをたくさん作ると効率が悪いから、
同じ頂点フォーマットは1つにまとめて使うと効率がいい。
そのときVertexBufferの先頭からの位置をそれで指定する。
>>18
何になるかと言われても、乗算にDEST*αを足した物としか言いようがない。
それと、αを使うならSetTextureStageStateも書かないと合ってるのか
間違ってるのかも答えようがないよ。
0021あぼーん
NGNG0022名前は開発中のものです。
03/03/05 14:45ID:DervyizkWin2000で何故か表示されなくなってしまいました。
Win2000でも他のPCでは映ったり映らなかったり。
フルスクリ−ン、ウインドウモード切り替え式で、
裏描画用サーフェスから、bltでプライマリサーフェスに書き込んでいますが、
全然転送(描画)されません・・・
プライマリ
.dwFlags = DDSD_CAPS
.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE
CreateSurface(...)
描画サーフェス
.dwFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN
.dwWidth = 640
.dwHeight = 480
CreateSurface(...);
何か心当たりがある方は、教えてくださると嬉しいです。
OS以外は全て同じなのですが。
グラフィックボードはGeForce4MX440です。
0023名前は開発中のものです。
03/03/05 21:00ID:hdC/bTIn教えてください。
0024名前は開発中のものです。
03/03/05 23:14ID:TGsKNhuu0025名前は開発中のものです。
03/03/05 23:19ID:E5a7SxY/なんていう関数でしたっけ?
関数名が分からないのでヘルプでも調べられないのですが…
0026名前は開発中のものです。
03/03/05 23:22ID:XfqyZmeX00276
03/03/05 23:31ID:kOxycZ9vm_lpD3DDev->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
m_lpD3DDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_lpD3DDev->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
m_lpD3DDev->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
m_lpD3DDev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
m_lpD3DDev->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
こんな感じですね。
0028名前は開発中のものです。
03/03/06 01:19ID:05ZvYttE0029あぼーん
NGNG0030名前は開発中のものです。
03/03/06 06:27ID:RTTjbCjBまず、基本的な確認ですが
SRC〜=転送元=テクスチャの色データ
DEST〜=転送先=フレームバッファ等の描画先の色データ
って事はご存知ですよね?
デフォルトのBLENDOPはD3DBLENDOP_ADD、つまり加算合成で
結果は転送元+転送先なわけです
よってそれぞれの効果を実現するには以下のブレンディング係数を
指定してみて下さい
加算:爆発や発光のエフェクトなど
転送元の色は転送元アルファでスケーリング
SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA)
転送先の色はそのまま残す
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_DESTCOLOR)
乗算:普通のアルファブレンド
転送元の色は転送元アルファでスケーリング
SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA)
転送先の色は転送元アルファを反転させてスケーリング
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA)
減算合成はBLENDOPを変更しなければなりません
SetRenderState(D3DRS_BLENDOP,D3DBLENDOP_REVSUBTRACT)で変更し
結果が転送先−転送元になるようにして
加算と同じブレンディング係数を指定すれば可能ですが
ハードが減算合成をサポートしていないといけないので注意
では、頑張って下さい
0031名前は開発中のものです。
03/03/06 11:29ID:h3GlfAzL人物の影などは真っ黒いテクスチャを半透明で描画したほうが
RenderState変更に伴うオーバーヘッドが少なかったりする場合もあります
0032名前は開発中のものです。
03/03/06 12:00ID:BJivuhpjこれって良く聞くけど、実際のところはどんなもんなんでしょ。
0033名前は開発中のものです。
03/03/06 13:16ID:lM/JL7UP引数にもよるんじゃないかな?
0034あぼーん
NGNG0035名前は開発中のものです。
03/03/07 01:15ID:wFwfmvGJD3DXCreateSkinMeshFromMeshで生成されるスキンメッシュから
GenerateSkinnedMeshでメッシュを生成すると頂点座標がメチャクチャな
メッシュが出来てしまいます。D3DXMESH_DYNAMIC でGenerateSkinnedMeshしています。
これ以外でも同じ結果となりました。
スキンメッシュ自体やオリジナルポーズのメッシュにはちゃんと頂点座標が書かれている
のですがGenerateSkinnedMeshで出来るメッシュだけがおかしくなっています。
このおかしなメッシュですがちゃんと頂点バッファは確保されていて頂点数を取得すると
正しい数を持っています。
メチャクチャな数値=-1.#NOD00で全ての頂点のXYZがこの数値です。(デバッグモード)
ボーンも設定してあるのですが全く反映されません。UpdateSkinnedMeshしても
変化無しです。ちゃんと生成できてるよ、という方がいたら生成方法等教えて下さい。
お願いします。ちなみにスキンメッシュの生成元のメッシュは別のスキンメッシュの
オリジナルポーズのものです。エラーはどこにも出ていません。
003635
03/03/07 09:20ID:wFwfmvGJ手違いでボーンを設定するのを忘れていただけでした。
ボーンを設定するとちゃんと正常にスキニングされたメッシュが生成されました。m(_ _)m
00376
03/03/07 15:07ID:8XxoUWtE>デフォルトのBLENDOPはD3DBLENDOP_ADD
ver7にはBLENDOPなる物は無いので、良く確かめてみたら、
間違った事を書いてました・・ すいません・・
自分が書いたコードは、ver8以降ぽっくなってますが、
実際はver7のつもりで書いてました・・
人のコードをコピペしてたので、間違ってました。
0038あぼーん
NGNG0039名前は開発中のものです。
03/03/07 23:12ID:aNy7TxdKfx ファイル内で頂点シェーダの入力データのセマンティクスに
DIFFUSE や AMBIENT を設定してもシェーダのコンパイル時に
エラーが出てしまうんですが
設定されている拡散反射率や環境光反射率を使用して
シェーダ内で陰影付けするにはどうしたらよいのでしょうか。
コンパイルする際の頂点シェーダのバージョンは 1.1 を指定しています。
バージョンをあげてもコンパイル時にエラーが出てました。
0040あぼーん
NGNG0041名前は開発中のものです。
03/03/08 13:34ID:24L/tAoJコンパイラのエラーメッセージ見ても分からない?
0042名前は開発中のものです。
03/03/08 14:10ID:9j4cZmX0IDirectDraw7とかの
プリフィックスIの意味って何ですか?
0043あぼーん
NGNG0044名前は開発中のものです。
03/03/08 14:38ID:0FO+pqbb私
0045名前は開発中のものです。
03/03/08 15:24ID:RziCQlYR0046あぼーん
NGNG0047名前は開発中のものです。
03/03/08 16:54ID:hAjPSSBg頂点シェーダ入力セマンティクスにAMBIENTなんてないぞ
004939
03/03/08 20:49ID:GVG6S9Fbすいません、ボケてました。AMBIENT はありません。
>>41
コンパイラのエラーメッセージを見ると「COLOR0 を使え」って言うようなことを
言われている気がするのですが
COLOR0 のセマンティクスを付けた引数から値を参照して計算しても
拡散反射を求めることができませんでした。
何か根本的な勘違いをしているのでしょうか?
0050名前は開発中のものです。
03/03/08 23:08ID:zYElf+9k個人的にX5のやつが一番面白かったなぁ。
0051名前は開発中のものです。
03/03/09 04:16ID:yWCDN1Mshttp://qb.2ch.net/test/read.cgi/sec2ch/1045674530/8
8 :2ちゃんねる ★ :03/03/09 04:09
http://pc2.2ch.net/test/read.cgi/gamedev/1046676308/43
p29f3c0.ntkyac00.ap.so-net.ne.jp
http://pc2.2ch.net/test/read.cgi/gamedev/1014389313/285
pd33aa3.ntkyac00.ap.so-net.ne.jp
http://pc2.2ch.net/test/read.cgi/gamedev/1045559601/
03/02/18 22:37:p29bce6.ntkyac00.ap.so-net.ne.jp
03/02/19 05:16:pd31388.ntkyac00.ap.so-net.ne.jp
03/02/19 16:47:p29f068.ntkyac00.ap.so-net.ne.jp
03/02/20 02:47:p29e2c9.ntkyac00.ap.so-net.ne.jp
03/02/20 17:48:p8bce7d.ntkyac00.ap.so-net.ne.jp
03/02/21 03:20:pd31309.ntkyac00.ap.so-net.ne.jp
03/02/22 01:03:p29da60.ntkyac00.ap.so-net.ne.jp
03/02/22 01:04:p29da60.ntkyac00.ap.so-net.ne.jp
03/02/23 03:07:p29dbd5.ntkyac00.ap.so-net.ne.jp
[以下略]
0052あぼーん
NGNG0053名前は開発中のものです。
03/03/09 18:11ID:EC4hGkEE四角い箱が、フレーム2つで曲がるようなのがあれば、十分なのですが
tinyちゃん、おっきくて辛いです(´・ω・`)
005453
03/03/09 18:23ID:EC4hGkEEキーワード変えて検索したら、結構ゴロゴロしてました(*´∀`)シャーワセー
0055あぼーん
NGNG005653
03/03/09 18:35ID:EC4hGkEE引き続き情報お待ちしてます。申し訳ないです。
新しいバイト先みつけたから、古い方のバイトをかっこよく辞めたら、
新しい方に不採用でコソコソ戻ってきた気分_| ̄|○
0057名前は開発中のものです。
03/03/09 19:11ID:uhqHb7Bnupローだ指定してくれたupするよ
005853
03/03/09 19:19ID:EC4hGkEEうはー恐縮であります。
予想もしてなかったので、あたふたと検索、うう、怪しいのしかない…。
こちらのFTPサービスなどまともそうですが、うーむブラウザからできないのか…。
ttp://kimagure.dyndns.info/
無理でしたら本当に構いませんので…。
ご好意には深く感謝を。
0059名前は開発中のものです。
03/03/09 19:27ID:uhqHb7Bnおっけ。ワンピみたあと何個かupするよ。
0060あぼーん
NGNG0061名前は開発中のものです。
03/03/09 20:26ID:EC4hGkEEhttp://pc2.2ch.net/test/read.cgi/gamedev/1046676308/
連続投稿規制で、向こうに書き込めなくなってしましました(´Д⊂
このまま、ほったらかしで去るのはあまりに寝覚めが悪く…。
どなたか親切な方、向こうに↓貼ってきていただけないでしょうか。
>>59
連続投稿規制に引っかかってしまい、書き込めなくなってしまいました。
こちらの不手際でグダグダになってしまい、申し訳ないです。
アップはもう構いませんので…本当にありがとうございました。
0062あぼーん
NGNG0063名前は開発中のものです。
03/03/09 20:30ID:vnoqzyo0どこかええところさがしてくれたら、アプしてあげたいんだが…。
0064名前は開発中のものです。
03/03/09 21:07ID:uhqHb7Bn3665にアップしたよ。とりあえず2つ。
ちょっと今作れないから前テストに使った奴。
ご要望のよりちょっと複雑カモ
0065あぼーん
NGNG006653
03/03/09 22:27ID:EC4hGkEEうう、スクリプト荒らしは書き込めて何故オレは(´Д⊂
>>64
無事にいただけました。本当にありがとうございます。
規制で礼を尽くせず申し訳ないです。頂いたデータは大事に活用させて頂きます。
>>63さんも、お気遣いありがとうございました。
気軽に質問したのに…皆さんの善意に頭が下がります。感謝多謝です。
0067あぼーん
NGNG0068名前は開発中のものです。
03/03/10 11:24ID:cR45lP51どうしたらよいのでしょうか?
0069名前は開発中のものです。
03/03/10 11:27ID:tZLDCpzG0070名前は開発中のものです。
03/03/10 13:36ID:cR45lP51D3DSWAPEFFECT_COPYをウィンドウ スワップ チェーンで使うと、かなりのビデオメモリの
オーバーヘッドや処理のオーバーヘッドを伴うことがある。
ってヘルプファイルには書いてあった。
0071名前は開発中のものです。
03/03/10 15:12ID:kvxfP2mg0072あぼーん
NGNG0073名前は開発中のものです。
03/03/10 23:30ID:Q2chtoZBそりゃ仕方が無いだろ
Direct Drawをやってるとこの辺りすごくよくわかるんだが・・・
隠蔽された分だけわかりにくくなってるんだな
0074名前は開発中のものです。
03/03/11 00:10ID:GSTN6i2pスクリーンセイバーのプレビュー画面みたいのだったら、
子ウインドウを作って描画したほうが確実だと思う。
0075名前は開発中のものです。
03/03/11 00:38ID:NTMUpZKBフレーム無しのスタティックウインドウを子フレームとして持てば簡単だね。
0076あぼーん
NGNG0077名前は開発中のものです。
03/03/11 06:02ID:di3kynWg8の頂点データ、12面×3のフェースデータ(最大三角形プリミティブ)、
そして各頂点にuvデータを12×3個持つ立方体のデータがあります。
これをFVFがXYZとUVの頂点バッファ、及びインデックスバッファ(D3DXMeshなので必須)に
納めたいのですが、この場合、uvを基準に頂点データを展開するしかないのでしょうか?
馬鹿正直にやったら、頂点データ36、1234…と順番に並ぶだけのインデックスバッファが
出来てしまい・・・さすがに無駄が多そうです。
おまけに期待してたD3DXMesh::Optimizeも、データを減らしてはくれなくて・・・。
0078名前は開発中のものです。
03/03/11 07:06ID:jK6WixU/007977
03/03/11 07:22ID:di3kynWg朝もはよから、レスありがとうございます。
そーゆーもんでしたかぁ。おかげでホッとしました<(*´Д`)
いやぁ、あまりにインデックスの並びが無意味になるので、ドキドキしてたもんですから・・・。
それにしても、自前データでD3DXMesh使うのは面倒ですねぇ・・・。
そんなに難しくないとはいえ、Attributeセットに関する資料なんかwebにひとつもないとは_| ̄|○
0080名前は開発中のものです。
03/03/11 07:56ID:kBGOIwNh0081あぼーん
NGNG0082名前は開発中のものです。
03/03/11 08:50ID:PTH/PMsZ自前データならD3DX使わなくていいじゃんよ
0083あぼーん
NGNG0084名前は開発中のものです。
03/03/11 12:44ID:1oP06HA3DirectPlayで転送するときには8bitもあれば充分だからBYTEに落としたい・・・。
けど、そうするとキャストが転送時のボルトネックになる・・・。
こんな時お前らならどうします?
0085名前は開発中のものです。
03/03/11 13:32ID:VdHk5beIお前はやる前から頓珍漢なことを理由に実践しない怠け者
ベンチマークもとらずに速度がどうこう言うのは十年早い
0086名前は開発中のものです。
03/03/11 14:01ID:qWTVQCsbリトルエンディアンならDWORD→BYTEなんて0クロックで変換できるぞ。
ところで、まさか毎フレームフィールドデータを送る気なんだろうか…
0087名前は開発中のものです。
03/03/11 15:02ID:Bahtpq57俺も初心者だから詳しくないけど、
それだとインデックスバッファにする意味ないんじゃないの?
前スレの>912 >913 >923 >930でファイナルアンサー!
0088名前は開発中のものです。
03/03/11 15:07ID:erqaZPIuベンチマーク以前の比較かも。
ネットワーク上でそのまま転送するのと
メモリ上で編集して縮めて転送するのとでは
どっちが早いかなんて言うまでも無い。
0089名前は開発中のものです。
03/03/11 16:19ID:DEXRCllxつまり、「どこに何を置いたか」だけを転送すればよろし
これだけだとかなりヒマになるので、
ブロックの移動(ユーザーの入力)をUDPの優先度最低かなんかで送ればよろし
0090あぼーん
NGNG0091名前は開発中のものです。
03/03/11 23:38ID:izzJqt42冗談きついZE!
転送リクエスト一回のほうがよっぽどでかいYO!
0092名前は開発中のものです。
03/03/12 01:52ID:34R3W5QaS,T,SXTの求め方がわからずこまってたら
凶弾ってゆうゲーム作ってる人のところ辿り着いたけどあんな複雑になるのはしょうがないの?
0093あぼーん
NGNG0094名前は開発中のものです。
03/03/12 08:04ID:EJtJSjyGD3DXComputeTangentがあるじゃないですか。
0095名前は開発中のものです。
03/03/12 08:28ID:YryHEYdfあれ?おわっ!DirectX8にはないのか。
くそーくそーくそーうわーん
0096あぼーん
NGNG0097名前は開発中のものです。
03/03/12 08:32ID:EJtJSjyG0098名前は開発中のものです。
03/03/12 08:44ID:PnhUwZmn0099あぼーん
NGNG0100名前は開発中のものです。
03/03/12 10:12ID:n9W18Flh以前、VB6 + DirectX8 で航空写真を立体表示するシステムを作成しました。
無事に動作していたのですが、先日、ユーザーから「DirectX9のランタイムを
入れたらエラーが出るようになった」と言われ、こちらでも調査してみたところ、
確かにエラーが発生しました。
具体的にはDirectX9を入れると、D3DX8 の ComputeNormals メソッドの引数が
D3DXMesh だったのが D3DXBaseMesh に変更されてしまい、
「型が一致しない」というエラーが出るようになってしまいます。
D3DXMesh から D3DXBaseMesh に変換するような関数があるのかと探してみた
のですが見つかりません。
エラーが出ないように修正する方法をご存知の方がいらっしゃいましたら、
よろしくご教授お願いいたします m(__)m
0101あぼーん
NGNG■ このスレッドは過去ログ倉庫に格納されています