トップページ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/
0611名前は開発中のものです。2009/08/06(木) 19:16:24ID:kbTc/fkt
まずは実装してみて、速度的な問題が発生してから聞きにきなさい。
0612名前は開発中のものです。2009/08/06(木) 19:41:06ID:kfzgiW63
ですね
0613名前は開発中のものです。2009/08/06(木) 23:45:20ID:IVl+GlW6
>>610
5年前のCPUとGPUで数百の3Dオブジェクトに数千のパーティクルを
バカ正直にDrawIndexedPrimitiveで描いてたが余裕で60fps出てたな
画面がゴチャゴチャしてわけわかんなかったけどな

数千の3Dオブジェクトに数万のパーティクルを描きたいとかで
なおかつSM3.0使っていいならgeometry instancingでググってみるといいかもな

ネットブックを除けば大半のPCはノートでもSM3.0対応だから問題はない
0614名前は開発中のものです。2009/08/07(金) 00:07:02ID:0qw70YNq
>>613
なるほど…なんか余裕に出来そうな気がしてきました。
まずは普通にやってみようと思います。
0615名前は開発中のものです。2009/08/07(金) 00:15:27ID:DBT6Hp/H
シェーダーインスタンスを試してみたけどそれ程速度速いとは思えないのですが
ハードウェアインスタンスは劇的に効果ありました
ハードウェアインスタンス対応してるボード前提ならも凄い数出しても大丈夫そうです
もっともそのボードであるならローポリといわず複雑なジオメトリ持ったモデルたくさん出せるのでしょうけど

このスレというか板にいる人がどういう理由でゲーム作っててそういうPCで遊ぶのと想定してるか次第なんですかね
同人、フリゲ、学校の課題などなど
0616名前は開発中のものです。2009/08/07(金) 09:32:48ID:eDy2XJnM
ハードウェアインスタンスなんて
GeForceなら6000番台、
RadeonならXシリーズから普通に対応してるぞ。
何年前からの技術だとおもってるだ。
0617名前は開発中のものです。2009/08/07(金) 10:09:20ID:XMny16vo
幅広く対応しつつ極力パフォーマンスを引き出したいなら、描画設定を選べるように
するのが単純明快じゃね?
凝りたいなら、オートで最適な描画設定を選ぶ機能か何かを追加してもいいし。
0618名前は開発中のものです。2009/08/07(金) 11:35:31ID:LGjL6ivx
デバイスロストからの復旧に関してつまってしまった。
ライティングありでロストからリセットすると、Vista環境ではメッシュが真っ黒になってしまう(Lightsが有効にならない?)。

リセットまでの手順は、
1、プロジェクションやカメラの位置、Lighting、Lights、RenderState等をnewしたりコピー。
2、リセット
3、デバイスに先ほど保持した状態群を再設定し、実際に更新。

誰か分かる方いますでしょうか?
0619名前は開発中のものです。2009/08/07(金) 16:00:58ID:DBT6Hp/H
>>616
6000番台以降だと6200、7050、7300等の廉価ボード?とかも対応してるのでしょうか?
2003年頃から対応ってことになるので、さすがにそれ以前の環境は考慮する必要なさそうですね

>>617
所詮はフリゲ作ってるだけなのでそこまではなかなか・・・
基本自分の作りたいゲーム作るなのでよくわからないままにハードウェアインスタンス前提で作ってます
0620名前は開発中のものです。2009/08/07(金) 19:50:56ID:ChsCMQWy
>>618

ロスト時リセット前にライティングをいったん無効にしてみる。
0621名前は開発中のものです。2009/08/08(土) 12:26:33ID:HIJEgu9i
板ポリゴンにテクスチャを貼って2Dの表示をやってるんだが
テクスチャの画像が元ファイルのものと比べるとぼやけた感じになる
これはちゃんと設定すれば高画質にできるものなのかな?
0622名前は開発中のものです。2009/08/08(土) 12:55:09ID:wNE2Ntgl
ドライバや描画設定変更するアプリがおかしな事になってないなら出るかと
まずはフィルターの設定
表示サイズがテクスチャのサイズと合ってるか確認
フレームバッファサイズと表示サイズが合ってるか確認
0623名前は開発中のものです。2009/08/08(土) 13:12:35ID:VZIInWJO
まぁたぶんフィルタの選択ミスだろうな
0624名前は開発中のものです。2009/08/08(土) 23:24:31ID:HIJEgu9i
フィルターか・・・
調べてみる
06256182009/08/08(土) 23:59:30ID:3chv5U+J
>>620
ビンゴでした。ありがとうございます!
lights[i]のEnabledが単純なbool値ではなく、リセットを行うと内部的にはFalseになるのに表面上Trueになったりするっぽいです。
一度リセットの直前にEnabledをFalseにしてからリセット、再設定することで解決しました。

xpではおきませんが、余計なLights[i].Updateをリセットの直前等に挟むと場合によってはvistaでは強制終了することもあるっぽいです。
0626名前は開発中のものです。2009/08/10(月) 10:43:18ID:Pixoe723
自前のプログラムでXファイル読み込んで
頂点データからモデルを表示させる方法と

モデルデータをDirectXに表示させる
みたいな方法の

2つの方法があるみたいなんですが
違いはあるんですか?
0627名前は開発中のものです。2009/08/10(月) 11:03:24ID:eRuOyKno
お前は何を言っているんだ…。
0628名前は開発中のものです。2009/08/11(火) 03:50:59ID:aqDLxLoV
違ってるかもしれないが、質問の内容はこうだと思う

3Dモデルデータを読み込んで、表示して、モーションさせる。
この時に、モデルデータのモーション形式に2種類あって、
@ボーン組込みのモーション付きモデル
A頂点データによる静止モデルデータの連続によるモーション付きモデル

@は、良く使われるボーンタイプ。データ量はモーションデータだけで少ない。
だから小さいデータ量でメモリ消費が少ないが、実行時に計算が必要なのでCPU負荷が増える。
一般的にはこちらが設計時の自由度が高い。

Aは、フレーム毎にモデルデータ(頂点データ)があるので、データ量が多くメモリ消費が大きい。
つまり、静止モデルのデータをフレーム数だけ用意する。
その代わりに実行時に計算が無いので、CPU負荷が少ない。大きさを調節しなければならない。

メモリ消費と実行速度の兼ね合いになるだろう。
0629名前は開発中のものです。2009/08/11(火) 17:45:49ID:e+6O1TbS
Windows 7 RCでDirectX 10を使いたいんだけど、ひょっとして最初から入ってたりするの?
DirectX 10単体で落とそうと思って公式のダウンロードページに行くとDirectX 9のページに強制的に飛ばされてしまうorz
0630名前は開発中のものです。2009/08/11(火) 17:46:57ID:OG4YlpWq
標準装備だお
0631名前は開発中のものです。2009/08/12(水) 01:27:51ID:gyYxJrA3
つか最新のDirectXSDKには9も10も入ってるだろ。
DirectX9SDKじゃなくなってんぞ。
0632名前は開発中のものです。2009/08/12(水) 02:10:31ID:HRcEcaa0
DirectX9のSDKやランタイムってあったっけ
DirectX SDK、DirectX エンドユーザーランタイムにリネームされて久しいけど
0633名前は開発中のものです。2009/08/13(木) 19:03:13ID:uEYnMuOo
GEMS1のCDの中身をハードディクスにコピーしたら
avastさんがトロイの木馬を発見したらしい
0634名前は開発中のものです。2009/08/13(木) 19:16:53ID:62dxPxFG
誤検知だろ
神聖なるNVIDIA様がウイルスを保持しているはずがない
0635名前は開発中のものです。2009/08/13(木) 22:20:52ID:uEYnMuOo
>>634
いやGAME PROGRAMMING GEMS
0636名前は開発中のものです。2009/08/14(金) 04:52:21ID:mHMjoFWf
UPXか、それ系のexe packerでも使ってたんじゃないの?
0637名前は開発中のものです。2009/08/14(金) 08:39:32ID:lmqZJXeH
武器(剣とか)と本体が一緒になってるXファイルのワンスキンモデルで
武器と敵の当たり判定を取ろうとしてるんですが、なにかいい方法はないでしょうか

メッシュ情報から武器のテクスチャが割り当てられてる頂点だけ取ってくる・・・
とかは考えたんですが、かなり邪道な気がするんで。。

モデル内における特定ボーンの抽出や、ボーンの当たり判定あたりがサッパリなんで、
丁度良い説明サイトとかあれば教えてくだしぃ
0638名前は開発中のものです。2009/08/14(金) 09:50:11ID:oqgkNhus
まずは高レベル関数に頼らずモデルデータを自前で読み込むところから始めろ。
0639名前は開発中のものです。2009/08/14(金) 09:57:36ID:mm0Clj/8
邪道じゃないと思うけど
0640名前は開発中のものです。2009/08/15(土) 21:29:39ID:nUVtD6WR
すみません、多くのゲームで見られる
RGB各256段階のカラースライダで、プレイヤーが自由に色を設定できるものの
実装方法を記したサイト等を、どなたかご存知ではないでしょうか?

バーテックスカラーとテクスチャでやってみたんですが
色相変換のように綺麗に混ざってくれず、どうしたら良いものか。
0641名前は開発中のものです。2009/08/15(土) 21:35:46ID:sOewXk0w
テクスチャかバーテックスのどちらかをほぼ白か黒にして
もう一方にユーザーが設定したRGBをセットして、乗算なり加算なりであわせればいいんじゃないの?
0642名前は開発中のものです。2009/08/15(土) 21:44:45ID:rY2ujQOy
頂点カラーを使うのかテクスチャ自体の色を使うのかをまず明確にしろ。
それが決まったら、スライダーの設定と色を混ぜた結果を明確に定義しろ。
以上が決まったら、頂点カラーなりテクスチャなりにそれを書き込めば終わりだ。

混ざってくれないんじゃない、あやふやにやっているからその通りの結果になっているだけだ。
0643名前は開発中のものです。2009/08/15(土) 21:51:20ID:sOewXk0w
多くのゲームで見られるって部分から察するに
服の青とか赤とか特定部分の色を変えたり
肌色の部分だけの色を変えたり
とかそういうのをやりたいってことなんかな?
でテクスチャーは元の色のまま、バーテックスカラーにユーザー設定RGBを入れて
それで色々とブレンドしてみたけど、どうブレンドしても思うような色が出ないと

こういうこと?
06446402009/08/15(土) 22:29:49ID:nUVtD6WR
>>641-642
ご回答ありがとうございます。
頂点カラーの合成に乗算や加算モードが有ったのですね、
モデリングツール上のビューの方式のみと勝手に思い込んでいました。
ちょっとレンダリングパイプラインのその辺りを調べなおしてみようと思います;

>>643
特定部分の色を変えるのは頂点色では無理だと学んだので
そういうものは諦めるか、2枚の画像を使って抜き色で合成でもしようかと。
もっとシンプルな方法が有れば良いのですが、今の技量ではこれが限界そうで。

ご回答ありがとうございます! orz
0645名前は開発中のものです。2009/08/15(土) 23:40:26ID:rY2ujQOy
だからデバイス任せの合成なんて考えるから出来ないんだよ。
テクスチャそのものを自分の必要な色に置き換えるだけで終わりだろ。
06466402009/08/16(日) 02:52:33ID:jZle4683
>>645
多数のキャラに使うので出来るだけテクスチャデータはそのままにしたくてつい。
その手も要所要所考えて使うようにしますね。
0647名前は開発中のものです。2009/08/16(日) 05:45:45ID:mPskDLhG
テクスチャーを操作しない前提で人型モデルを作るとして
例えばシェーダーで特定のテクスチャーカラーを任意の色に置き換えるとかも出来るわけでしょ
肌色箇所を抽出してユーザー設定の肌色に置き換え
髪色を抽出してユーザー設定の髪の色に置き換え
ってやっていくとか
これらにしたってグラデーション付けること考えると一工夫必要だけど
絶対にこうってやり方は無い気がする
どういう方法とってもモデルやテクスチャーの作り方に工夫が必要になると思う
0648名前は開発中のものです。2009/08/16(日) 10:06:05ID:x4vwWfc/
で、例えば3Dモデルのスライムとスライムベスを表現するなら
どういう技術が一般的なの?

@テクスチャ取替え(塗り替え)
Aパレット変更

ほかなんかある?
0649名前は開発中のものです。2009/08/16(日) 10:23:54ID:mPskDLhG
>>648
シェーダー
0650名前は開発中のものです。2009/08/16(日) 10:26:16ID:dscceYaE
別々のモデルを用意しておく。

   終了
0651名前は開発中のものです。2009/08/16(日) 10:50:59ID:x4vwWfc/
>>649
シェーダで何をどうするんだよ
それを聞いているだよバカ

>>650
モデルって何だよ
D3Dにモデルというリソースはねえぞノータリン
0652名前は開発中のものです。2009/08/16(日) 10:55:45ID:mPskDLhG
>>651
>>647に書いただろハゲ
0653名前は開発中のものです。2009/08/16(日) 11:18:33ID:4sFhpOh7
夏か・・・orz
0654名前は開発中のものです。2009/08/16(日) 12:33:22ID:4e0B6aFr
>>651
俺はお前みたいな奴好きだぜ
0655名前は開発中のものです。2009/08/16(日) 22:57:31ID:QVMxTMsz
バーチャファイターの1のイメージ?
0656名前は開発中のものです。2009/08/20(木) 19:30:43ID:rN0vwUH9
directXで表示されてる3Dモデリングのデータを抜き出すことができるツールがあるらしいんですが
何て名称かわかる人いませんか?
0657名前は開発中のものです。2009/08/20(木) 21:03:10ID:LJPa56Cu
スレ違いどころか板違い
0658名前は開発中のものです。2009/08/21(金) 16:26:35ID:NIDvhpCP
Pix for windowsの事を知らない男の人って…
0659名前は開発中のものです。2009/08/22(土) 14:49:30ID:qDjMgetj
すみません
3Dソフト(xsi)で出力したモーション付きXファイルを
DirectX Viewerで見ると形状が破綻して見えるのですが、

Viewer上で壊れて見えてもプログラム上では正しく表示される事って
有るでしょうか?
Viewer上で壊れていれば絶対そのまま表示されると思うべきなのでしょうか?
0660名前は開発中のものです。2009/08/22(土) 18:18:58ID:DxEzBRM+
プログラムは自分で作るんだから自分次第。
06616592009/08/22(土) 21:14:19ID:qDjMgetj
>>660
なるほど。絶対ではないのですね。ありがとうございました。
0662名前は開発中のものです。2009/08/26(水) 04:13:11ID:Tspzk4Z1
カメラのズームイン/アウト、キャラを中心とした上下左右の回転移動を作りたいのですが、
正しい計算式がわからず変な挙動をしてしまい困っています。
D3DXMatrixLookAtLHを使っているのですが、妥当な計算式の乗っているサイトや書籍を
となたかご存知ではないでしょうか?
0663名前は開発中のものです。2009/08/26(水) 04:21:23ID:Tspzk4Z1
下げ忘れすいません;
0664名前は開発中のものです。2009/08/26(水) 07:17:31ID:Qs0NWeEt
大前提としてsin、cosの使い方は理解しているのか?
06656622009/08/26(水) 14:58:06ID:o676OPLC
>>664
すみません、サンプルコードを漁り回っていたら計算式を見つける事が出来、解決できました。
Math.hからsin() cos()はちゃんと使っていたのですが、数学的な理解をしてない所為で変な回転を続けていました;

ありがとうございました orz
06666622009/08/26(水) 16:05:54ID:o676OPLC
また下げ忘れ; 度々すいません;
0667名前は開発中のものです。2009/09/02(水) 22:00:28ID:RtR61rHB
迷いまくった挙句、解決策が見つからずここにたどり着いてしまった。。

あのですね。DirectMusicってマトモに使ったことある方、
今使っている方、いらっしゃいますか?
DirectMusicを使って作ったゲームって普通に動きますか?

というのは、今新しいDierctXでは既にDirectSoundと一緒に
XAudioなるものに統廃合されたと言うではありませんか。

そんなのつゆ知らず(アホかと)DirectMusicの機能を多用したゲームを
作ってたんですが、VC++上ではデバッグできるんですがexeファイルを起動すると
DirectMusic関連のものがまったく初期化されず動かせないんです。

ちなみに当方Windows7使ってますが、XP入れてるノートに移しても
起動できませんでしたが原因は違うかもしれません。
どちらにせよこれから作っていくゲームなんでvista,7で動いてもらわないと
困るという事です。

まだ説明不足な所が多くありますが、何かヒントになるような
経験だけでもよいのでお聞かせいただけると幸いです。
0668名前は開発中のものです。2009/09/02(水) 22:33:03ID:TVVEdJHk
大昔にDirectSound使ったでけで、今は全く違うところ書いてるからノーチェックだったw
今ググッた。
ttp://mainori-se.sakura.ne.jp/slimdxwiki/wiki.cgi?page=DirectSound+%A4%C8+XAudio+%A4%CE%B0%E3%A4%A4
7はしょうがないとして、
XPのノートはHALが使えないからかねぇ?
想像だけどww

で、大昔の経験で言うと、Vistaどころかオンボードグラフィックまで動作対象外にしてる。

そのうち、Windows7について聞かれたら、当然動作対象外に追加するだろう。
って言っても、大して機能を使いこなしていないので、
開発環境が整えば乗り換えなり対応する可能性は否定しないけど。
0669名前は開発中のものです。2009/09/02(水) 22:47:10ID:KMVfriqU
昔XAudio2が実装されたときに、これは使い勝手良い最高だ
とか思って組み込んでみたんだが、そのときエンドユーザーライブラリの方には含まれてないので
使えなかったんだけど、これはいつになれば使えるようになるんですかね?
0670名前は開発中のものです。2009/09/02(水) 23:02:27ID:k0T54E11
PS3薄型と旧型の違い

旧型PS3:
Linuxインストール機能内蔵でPS3をPCとして使うことができる。
PPC Linux用の無料のソフトがいっぱい動く。
また、Cellの開発ツールも無料で入手できるので自分でCellのプログラムを作って実行させることができる。
ドルビーTrueHD、DTS-HDMAはリニアPCM変換で対応。
HDD〜80G。実勢価格30000円程度

薄型PS3:
Linuxインストール機能は除去された。
ブラビアリンク機能でブラビアと連動した電源のON OFFができる。
ドルビーTrueHD、DTS-HDMAのビットストリーム出力対応。
HDD120G。低騒音・発熱・消費電力。実勢価格29980円
0671名前は開発中のものです。2009/09/02(水) 23:22:25ID:TVVEdJHk
そういえばそんなハードもあったっけ?
公式覗いてみたら読みにくい色彩&必要な情報に辿り着けない構成等、
色々逝かれてるw
0672名前は開発中のものです。2009/09/02(水) 23:28:59ID:kz+foxpq
Windows7使ってるというが・・・
DirectMusicは64Bit環境サポートしてないがそれじゃないかね?

所詮は見捨てられた技術だよ。
0673名前は開発中のものです。2009/09/03(木) 01:28:24ID:H7ahptUL
>>669
いつの話してんのか知らんがとっくに使えんぞ
0674名前は開発中のものです。2009/09/03(木) 14:42:21ID:19jN2Lgf
>>673
SDK2008MarchについてるXAudio2系サンプルをSDK入ってない環境だと実行できないのですが、
これってまだエンドユーザーライブラリ側は対応してないってことでは無いのでしょうか?
0675名前は開発中のものです。2009/09/03(木) 16:11:06ID:qXOSpEld
対応デバイスが無いだけじゃないの?
0676名前は開発中のものです。2009/09/03(木) 17:05:37ID:H7ahptUL
>>674
DirectXランタイムちゃんと入れてる? COM登録必要だから
d3dx9_xx.dllみたいに実行ファイルの隣に置いておくだけじゃなくて(どのみちやっちゃ駄目だが)
インストーラーもしくはDirectSetup使わんと駄目だぞ
0677名前は開発中のものです。2009/09/03(木) 17:16:17ID:19jN2Lgf
サンプルが古かったようです、SDK無い環境でも再生できました
お手数かけて申し訳ないです
0678名前は開発中のものです。2009/09/09(水) 10:48:25ID:v7IiPmTs
DirectMusicはバリバリ使ってる
もし、初期化できなかったらDirectShowかmciで再生すればいいだけだし
それぐらいはプログラムで自動切り替えしなよ
0679名前は開発中のものです。2009/09/09(水) 13:36:10ID:GBpQxbjt
>>678
短調を長調に切り替えるとか、シーンに合わせて動的に音楽を変調している場合
mciでそれをやるのは大変じゃないの。てかそれなら全部mciでやればいいんじゃ……

0680名前は開発中のものです。2009/09/10(木) 07:26:11ID:Ui0pocdX
Download details: DirectX SDK - (August 2009)
http://www.microsoft.com/downloads/details.aspx?FamilyID=b66e14b8-8505-4b17-bf80-edb2df5abad4&DisplayLang=en
Download details: DirectX Redist (August 2009)
http://www.microsoft.com/downloads/details.aspx?FamilyID=04ac064b-00d1-474e-b7b1-442d8712d553&DisplayLang=en
0681名前は開発中のものです。2009/09/13(日) 02:08:23ID:jPLwTUqF
げえっ、新バージョン!
0682名前は開発中のものです。2009/09/13(日) 07:31:11ID:lU9yP7G9
ひいい。
0683名前は開発中のものです。2009/09/13(日) 13:38:09ID:gcZTroRJ
うぇ
0684名前は開発中のものです。2009/09/13(日) 16:10:48ID:uy2iXAkI
PCリカバリ後(XPsp3)DirectX更新で
DirectX SDK Update 2006で止まってエラーになる

正常にインストール出来ませんでしたと出る
0685名前は開発中のものです。2009/09/13(日) 16:15:40ID:uy2iXAkI
ここでダウンロードしてインストールするとエラーになる OSクリーンインストでXPSP3
http://www.microsoft.com/downloads/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&DisplayLang=ja

DirectX SDK Update 2006 はってき覚えてないけどここから進まなくて止まったまま1分ほどでエラー画面正常に
インストール出来ませんでしたと出る

PC2台で確認
0686名前は開発中のものです。2009/09/14(月) 12:39:55ID:dhFuSjOF
DirectXの描画処理をウィンドウプロシージャのWM_PAINTのところに書くのってダメなのかな
真っ白になって何も描画されなくなった上にボタンとかの子ウィンドウも表示がおかしくなった
0687名前は開発中のものです。2009/09/14(月) 16:51:40ID:PPxuWEf+
描画メッセージで無限ループにハマることがある、らしい
詳しくはググれ
0688名前は開発中のものです。2009/09/14(月) 20:31:09ID:dhFuSjOF
ググってみた
DirectXで描画しても無効領域のままだからハマッてたんだね
描画処理の後でValidateRectを呼んだらすんなり動いたよ
0689名前は開発中のものです。2009/09/17(木) 20:24:38ID:4awen6sw
D3DXSpriteのアルファブレンドの挙動について質問です。
DrawメソッドのColor引数に半透明(0x33FFFFFFなど)を指定すると
それより奥に描画されるテクスチャ(不透明)まで半透明に表示されてしまいます。
これは意図された挙動なのでしょうか。
奥に描画されるテクスチャは不透明のまま表示させたい場合、どのような方法があるでしょうか。
環境はWinXPHome SP3/SDK Nov2008です。
06906892009/09/17(木) 20:42:50ID:4awen6sw
追記です。
ID3DXSpriteのインスタンスは複数のテクスチャで同じものを共有して、
Begin, EndメソッドはそれぞれDrawを複数回呼ぶ部分の最初と最後のみ呼んでいます。
0691名前は開発中のものです。2009/09/17(木) 21:44:54ID:Cm0Wo+Cv
画像ウプれよ。わかんねーよ。
06926892009/09/17(木) 22:16:54ID:4awen6sw
画像です。 ttp://dl6.getuploader.com/g/1|toollove/301/WS000000.JPG

わかりにくくてすみません。
描画順は、奥から [キャラクター画像]->[カットイン背景(黒一色)]->[もや画像]->[カットイン画像]

[もや画像]のみ半透明(0xC0FFFFFF)にしていますが、
(不透明なはずの)奥の[カットイン背景]や[キャラクター画像]まで半透明になっているせいで
背景(街)が透けて見えています。
(背景のみID3DXSpriteによる描画とは別になっています)

※エンジンが吉里吉里ですが描画はDirectXに丸投げしているので問題とは無関係です。
0693名前は開発中のものです。2009/09/17(木) 22:46:12ID:Cm0Wo+Cv
g_lpd3dSprite->SetWorldViewRH(NULL,NULL);
g_lpd3dSprite->Begin(D3DXSPRITE_ALPHABLEND | D3DXSPRITE_SORT_DEPTH_FRONTTOBACK);

フラグの詳細はいま分からないけど、これは入れてある?
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の画像と
表示のされ方は変化してないように見える。

■ このスレッドは過去ログ倉庫に格納されています