[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 11/06 20:19 / Filesize : 173 KB / Number-of Response : 683
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【C++】 DirectX初心者質問スレ Part13 【C】



1 名前:デフォルトの名無しさん [2007/06/21(木) 00:03:46 ]
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。


207 名前:やっくん [2007/07/05(木) 21:52:58 ]
学校の課題を家でしようと思ったのですが、DirectDrawの設定がうまくいきません!!
ディレクトリの所で「c:\mssdk\include」「c:\mssdk\lib」をちゃんと入れたのに、なぜかDirectDrawSurfaceが使えないのです(泣)
誰でもいいので、アドバイスをくださいお願いします!!

208 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:59:25 ]
>>207
開発環境とエラーコード

209 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:13:31 ]
>>206
アニメーションする時は座標を直接書き換えorポリゴンを作り直しでしょうか?

210 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:15:54 ]
UVでアニメーションじゃないの

211 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:37:29 ]
>>210
ありがとうございました

212 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:43:00 ]
>>207
そのフォルダに目的のものは入っているのか?

213 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:06:14 ]
合成なし
SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE,integer(false));

通常合成
SetRenderState(D3DRENDERSTATE_SRCBLEND,integer(D3DBLEND_SRCALPHA));
SetRenderState(D3DRENDERSTATE_DESTBLEND,integer(D3DBLEND_INVSRCALPHA));

加算合成
SetRenderState(D3DRENDERSTATE_SRCBLEND,integer(D3DBLEND_ONE));
SetRenderState(D3DRENDERSTATE_DESTBLEND,integer(D3DBLEND_ONE));

減算合成
SetRenderState(D3DRENDERSTATE_SRCBLEND,integer(D3DBLEND_ZERO));
SetRenderState(D3DRENDERSTATE_DESTBLEND,integer(D3DBLEND_INVSRCCOLOR));

乗算合成
SetRenderState(D3DRENDERSTATE_SRCBLEND, integer(D3DBLEND_DESTCOLOR));
SetRenderState(D3DRENDERSTATE_DESTBLEND, integer(D3DBLEND_ZERO));

//モノクロでしか調べてませんが合成すると加算合成+減算合成の効果が
SetRenderState(D3DRENDERSTATE_SRCBLEND,integer(D3DBLEND_INVDESTCOLOR));
SetRenderState(D3DRENDERSTATE_DESTBLEND,integer(D3DBLEND_ONE));

//反転
SetRenderState(D3DRENDERSTATE_SRCBLEND, integer(D3DBLEND_INVDESTCOLOR));
SetRenderState(D3DRENDERSTATE_DESTBLEND, integer(D3DBLEND_ZERO));


214 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:27:14 ]
>>213
なんか変じゃね?
それと実際使うには全部アルファでブレンド率調節できないと面倒じゃん

215 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:28:38 ]
>>213
なんだよ・・・通常って・・・w
加重平均っていうんだ



216 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:51:13 ]
自作ライブラリのサンプルプログラムでしか使わないので
実用には興味がありません。



217 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:21:58 ]
>>216
だったらなおさら加算ブレンドは客寄せになるからマスターしておけ

218 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:40:46 ]
>>213
減算合成がおかしい。
減算は1パスではSRCBLENDとDESTBLENDだけでは設定不可能。
BLENDOPで減算合成が可能になる。
(BLENDOP無しだと3パスで可能)

219 名前:デフォルトの名無しさん [2007/07/06(金) 21:29:38 ]
Microsoft Visual C++ 6.0を使っていて、エラーコードが

error C2065: 'LPDIRECTDRAWSURFACE7' : 定義されていない識別子です。

で、ディレクトリのインクルードに「c:\mssdk\include」ライブラリに「c:\mssdk\lib」を入れたのですが、DirectDrawが使えません・・・・・・(泣)
初心者な質問ですいません。でも、どうしても課題を家でやりたくて、お願いします教えてください。

220 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:42:02 ]
>>219
リストの一番上に入れた?

221 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:47:54 ]
DirectX7かよw

222 名前:デフォルトの名無しさん [2007/07/06(金) 21:50:57 ]
>>220

はい、入れました。学校では普通にできたんですけど、何度やってもエラーが出るばかりで・・・・・・(泣)
何かコンピューターに至らない所でもあるのでしょうか?



223 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:54:51 ]
一番上に入れても駄目なら分からんな。
一番下に入れるとVC6ではデフォのライブラリ(DX3かな?)が
先に検索にヒットしてしまうから、駄目だったりするが。

224 名前:デフォルトの名無しさん [2007/07/06(金) 21:56:53 ]
>>223
お答えありがとうございます。
一つ質問なんですが、実はVC6は海賊版でそれは関係あるのでしょうか?


225 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:59:36 ]
SDKが入っていなかったりして



226 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:05:09 ]
>>224
そういう事をここで書くなよ・・・

ていうかVC++2005落としてくれば

227 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 23:44:36 ]
学生ってこんなのばっかりか。折角学生証があるならアカデミック版買えよ

228 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 04:00:54 ]
>>224
とんでもねえカミングアウトだなオイ

229 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 06:24:24 ]
>>224
師ね泥棒


230 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 07:26:10 ]
>>224
DirectX7を無料でやりたかったら、Migwでも入れろ、ボケ。

231 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 13:12:55 ]
>>224
とりあえず、通報はしといたから。

232 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 13:45:03 ]
>>224
諸々の事情でVC6を使わざるを得ない、ってのなら理解できるが、
諸々の事情で海賊版、ってのはどう弁明したところで違法以外何者でもないぞ

233 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 18:25:15 ]
DirectX Texture Tool でDDSファイルを作りたいのですがうまくいきません。
白黒のhoge_a.jpgを同ディレクトリに作ってhoge.jpgをオープンしてるのですが、
アルファチャンネルを読み込みません。
画像を変えても同じでした。
どこがおかしいのでしょうか?

234 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 19:51:48 ]
憶測ですまんが、JPEG形式が駄目なんじゃね。
PNGかBMPで試したらどだろ。


235 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 20:13:24 ]
>>234
bmpでいけました、ありがとう。



236 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 03:25:42 ]
Expressっていう無料版じゃだめなん?

237 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 12:43:20 ]
アンカくらい付けれ

238 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 19:26:27 ]
DirectShowの質問もここでいいですか?

239 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 19:37:53 ]
悪くはないが、同じム版に専用スレがあって
詳しい住人が多いから、そっちの方がいい。

まあみんな似たようなスレ巡回してんだけどね


240 名前:デフォルトの名無しさん [2007/07/10(火) 17:22:09 ]
横170×縦250の
テクスチャー読み込んで、スプライトで表示したら、
勝手に255×255にされたんだけど、これは仕様なのかな?


241 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 17:42:19 ]
仕様でつ 170*250→256*256

242 名前:デフォルトの名無しさん [2007/07/10(火) 18:43:12 ]
DirectX8の時は自由なサイズ使えたんだけどなあ。
グラボとかによるのかな


243 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 19:53:59 ]
DX8から今でもスプライトなんか使い続けるなよな。
なんで重くて汎用性の無いものを何年も使うのか分からん。

244 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 20:44:10 ]
そもそもDirectXにスプライトなど無い。

245 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 20:51:00 ]
あるにはあるけど着飾ったものだからね。
だから重いし汎用性も薄い。



246 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 21:10:37 ]
だから無いって。

247 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 21:10:51 ]
スプライトで十分な用途ならわざわざポリゴン使うより生産性高くていいじゃん

248 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 21:17:07 ]
ポリゴンに最適化されてるGPUにそりゃないべ

つうか板ポリの方が汎用性たかくね

249 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 21:18:43 ]
無いものをどうやって使うつもりなんだ?

250 名前:デフォルトの名無しさん [2007/07/10(火) 21:23:25 ]
JPEGファイルで抜き色(透明にする色)を指定したいのですが、上手くできません。

現在、D3DXCreateTextureFromFileExを用いています。
BITMAPファイルなら上手くできるのですが・・・

どうしたらJPEGで抜き色を指定できますか?教えてください。

251 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 21:53:41 ]
マスクを作るとか、jpgなら思い切ってddsにするとか

252 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:11:14 ]
そういう用途にjpegは向いていない。
というわけで、jpegについて調べてみると勉強になると思う。

"jpeg ノイズ" とかで調べてみると情報が引っかかるだろう。

253 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:25:46 ]
でも別にしたい奴向けにできるようにしておいてもよさそうなもんだけどな
てか、むしろjpegだけ弾くとか器用だよなw
まあ、できるようにしておくとQ&Aで聞いてくる奴がいることを予想できるからあえて切ってるんだろうな

まあ、jpegなんかマスクにしたら結果はあきらかだがな

254 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 00:04:50 ]
>>250
テクスチャをロックして自分で該当部分のα値をセットすれば良いだけ。
悩む所など微塵もない。

255 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 00:09:30 ]
SDKのテクスチャツールで頑張ってるとみた



256 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 06:17:12 ]
このスレでスプライトっつったらD3DXのSpriteのことだべ。
誰も、厳密なスプライトアーキテクチャを指してなんてしゃべってないでしょ。

257 名前:デフォルトの名無しさん [2007/07/11(水) 09:30:50 ]
D3DXのスプライト関数あるの知ってるくせに、自分の知識をひけらかしたいのか、したり顔で
          ____   
       / \  /\ キリッ
.     / (ー)  (ー)\      
    /   ⌒(__人__)⌒ \    <DirectXにスプライトはない!
    |      |r┬-|    |     
     \     `ー'´   /     
    ノ            \
  /´               ヽ              
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.    
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))


          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)
| / / /     |r┬-|    | (⌒)/ / / //   だっておwwwwwwwwwwwwwwwww
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー'´      ヽ /    / 


プログラマーってこういう空気読めない奴多いよなあ・・・


258 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 09:45:47 ]
>>244>>257も十分言いたい事は分かるから・・・
お互い空気読みつつ穏やかにいこうよぜ

259 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 09:47:13 ]
間投助詞ダブった、スマソ

260 名前:デフォルトの名無しさん [2007/07/11(水) 09:57:01 ]
>>258
でも、マイクロソフト自らスプライトっていう表現使ってるのに、わざわざ
「スプライトじゃない!!」って言う奴は馬鹿じゃん

しかも、質問に答えるわけでもなく聞いてもいない事を偉そうに言ってさ

ま、俺もD3DXのスプライト機能は使ってないけど


261 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 10:37:04 ]
そもそもID3DXSpriteをスプライトとか言っちゃうから、
スプライトとポリゴンを比較する>>247みたいな馬鹿が出てくるんだよ。

262 名前:デフォルトの名無しさん [2007/07/11(水) 11:21:01 ]
>>247 だって別に間違えた事言ってないでしょ

スプライト関数用意されてて、それを使ってすぐ表示出来るんだから生産性は高いでしょ
インフォメーション程度に2D表示するだけなら、スピードなんて遅くたっていいし。

2DゲーでID3DXSprite使うのはどうかと思うけど、ID3DXSpriteをスプライトと言うのは間違いではないよ

昔のゲーム機についてた所謂”スプライト”なんて、過去の遺物なんだから2Dとして表示する物を”スプライト”と言ってもなんの問題もないじゃん

どうして、どーでもいい細かい事にこだわる奴が多いのかなあ・・・
こだわってるというよりは、知ってるくせに認めたくないと言うか・・


263 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 11:35:36 ]
ポリゴンを使うID3DXSpriteとポリゴンを比較している時点で大間違いなんだよ。
そうやって間違いを認めずに繰り返すから、それを見た初心者が勘違いをして意味不明な質問をすることになる。

264 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 20:46:00 ]
もしかするとID3DXSpriteの中身がDrawPrimitiveだということを
分かってない奴がいるのかもしれん。

265 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 22:47:09 ]
D3DXってソース公開されてんの?



266 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 22:59:01 ]
ねえよ

267 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 02:58:17 ]
ソースが公開されていなくてもPIX使えば必要な情報は十分わかるからなぁ。
頂点バッファ作成時の設定や更新頻度、DrawIndexedPrimitiveを呼ぶときのレンダーステート等。

「高レベル描画APIで十分ならわざわざプリミティブ描画APIを使うより生産性高くていいじゃん」
なら別に異論はないけど、元々スプライトってハードウェアのプリミティブ機能だっただけに、
「スプライトで十分な用途ならわざわざポリゴン使うより生産性高くていいじゃん」には違和感がある。

てか実際にDirect3DにはPoint Spriteって名のハードウェアスプライトが存在するし。
やっぱ誤解招きやすいと思うよ。

268 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 06:33:52 ]
まあ、荒れるの承知で書くけど、PointSpriteはポリだぜ。
現在、ハードウェアスプライトを実装するメリットは無いし。
DirectXにはポリしかない。名前だけスプライト。

ただ、そんな事は100も承知で
このスレでスプライト=DirectXの機能 or 自前の板ポリ
の事なのは自明。
イチイチ「スプライトじゃない」とか言う意味は無い。

269 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 07:00:16 ]
>>268
同意。
いちいちハードウェアスプライトの話をもってくる奴ウザスギ
いくらなんでも空気読め無いにもほどがある

270 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 08:29:32 ]
間違っていることは明白なのに、素直に認められないのがプログラマのプライド。

271 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 12:58:13 ]
>>268
>DirectXにはポリしかない。名前だけスプライト。

そういう意味で言ってるんじゃなくて、
「ポリゴンかスプライトか」という表現は、
プリミティブタイプにどっちを使うべきかみたいな議論でもありうるんだけど、
とにかく情報が欠落しまくりのネット上の議論だと
「スプライトってD3DXとプリミティブタイプのどっちのこと言ってる?」
と聞き直す羽目になることが多いという話。
・点 + (ポイントスプライト)
・線分
・三角形
のどれよ? と。まあ線分はありえんけど。
別に聞き直されるのがうざくなければD3DXのをスプライトと呼ぶのを止めはせんよ。

てか、ポイントスプライトって帯域圧縮効果はそこそこあると思うだけどな。
デモ用のパーティクルシステムとか結構ポイントスプライト使ってない?
あれをハードウェアスプライトと呼びたくないなら別に構わんが。

272 名前:デフォルトの名無しさん [2007/07/12(木) 16:07:48 ]
ここで
「DirectXのはスプライトじゃない」って言い張ってる馬鹿は、スプライトを狭義の意味で捉えてるだけなんだよね。
よーするに「ハードウェア機能としてのスプライトしかスプライト」しか認めないって言ってるだけ。

そもそも、スプライトって”表示画面のイメージパターン”っていう意味だから、DirectXでの表示もスプライトって言って構わない
古くさい考え方しか出来ない奴はファミコンとかX68000のゲームでも作ってろww


273 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 16:33:58 ]
誤解される表現をわざわざ意地になって使う奴って、何が楽しくてやってるんだろう?

274 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 16:37:51 ]
いちいちスプライトという言葉に反応するやつは
FM-TOWNSで「これはスプライトぢゃないっ!!!」とか言ってたやつだな

275 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 16:45:59 ]
どうせ「スプライトっていうなー」言ってもみんな言うんだし、
ならD3DXのはスプライトでいいじゃんと思うんだけど、
>>268のみたいに「ポイントスプライトはハードウェアスプライトじゃない」は違和感ある。
ドライバレベルで定義されてるんだしハードウェアでいいんじゃね?
何でそこだけやたら狭い定義を採用するんだと。



276 名前:デフォルトの名無しさん [2007/07/12(木) 16:48:34 ]
>>273
だからさ・・・どう誤解するの?

今、ハードウェア機能のスプライト使っての開発なんてないだろ。板ポリかバッファにイメージデータの転送だろ。
2Dをスプライトって言って誰が困るのよ?

くだらないこだわりしてる奴はただの老害


277 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 16:54:07 ]
もう全部スプライトってことでいいよ。
DrawPrimitive使った板ポリ描画もスプライト。
BitBlt使った矩形転送もスプライト。
これで満足だろ?

278 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 17:08:46 ]
>>275
そういやD3D10からポイントスプライト廃止だっけ。
まあGeometry Shaderでエミュレートできるからこその廃止とはいえ
パフォーマンス大丈夫なんかいな。

279 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 17:17:00 ]
アルファテストもシェーダで書けるからという理由でD3D10から廃止だしなぁ。
リセット感がすげえ。

【消えたもの】
・固定機能頂点処理
・アルファテスト
・ユーザークリッププレーン
・フォグ
・シェーダモードのGouraudとFlat
・D3DFILL_POINT
・TLVERTEX描画

280 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 17:29:56 ]
>>277
背景と別レイヤーに見せかければソフトウエアスプライトと呼べるが、
単純に描画するだけではスプライトとは呼べない。
よって大間違い。

281 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 17:35:24 ]
初心者が関数とかインタフェイスをカタカナで書いて、
訳の分からない内容の質問をしているのを見かけるが、
結局こうやって勝手なカタカナ表記を使う奴がいるから真似をするんだろうな。

普通にインタフェイスの名前をそのまま書けばいいだけで、綴りに自信がなければ確認すれば済むのに。

282 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 17:54:33 ]
>>280
あーBitBltでD3D9のStretchRectみたいなのを連想したんだな。

すまんね。
DirectDraw(+カラーキー)とかGDIのマスク描画みたいなのを想像してた。
当時もスプライト論争あったから。

GDIのBitBltでソフトウエアスプライトを実現する方法とか
もはや古代技術になりつつあるけど。

でもこいつらも多分君の定義だとソフトウエアスプライトに入るはずなんで
広い心で入れてやってくれ。

283 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 19:40:36 ]
おまえらスプライトの定義はよそでやれよ

284 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 20:36:16 ]
初心者が落とし穴にはまって騒いで本当うるさくて
うざくてたまらないのがスプライトとカラーキーだ。




285 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 20:45:14 ]
カラーキーはDirectX以前の問題な気もするが。
いくら初心者スレでもC(C++)をある程度理解してたら途中に画像描画も通ってそうだけどな。



286 名前:デフォルトの名無しさん [2007/07/12(木) 21:52:30 ]
質問失礼します。

ビルド時に
error C3861: 'D3DX_SKIP_DDS_MIP_LEVELS': 識別子が見つかりませんでした
と言われ、ビルドが通りません。

D3DX_SKIP_DDS_MIP_LEVELS の定義場所が知りたいです。
分かる方いらっしゃいますでしょうか?

XP SP2
VS2005
DirectX 2007 April
です。
よろしくお願いします。

287 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 01:21:28 ]
>>274
なつかしいw


288 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 01:41:06 ]
質問失礼します。

新たに社内用開発ツールを作成したく、
そのツールにて高速な2Dの描画(アニメーション)を行いたいのですが、
現在まで使用していたAPI関数では表示が追いつかない可能性がある為
新たに高速に描画を行える物を学びたいを思っております。

現行の開発環境がVS2005

ツールを配布したいPCは
OS:XP(SP2)
.NexFramework2.0インストール済み

なのですが、DirectX10はVista専用
2D描画は9.0以降WindowsSDKに引っ越したとのこと
どれを学ぶのが賢いのか分かりかねています。

できるなら容易に関連書籍が購入できるとありがたいのですが
学ぶのに何が好ましいかどなたか教えていただけませんでしょうか。
言語はB,C/C++ができますがWindows上にてのプログラム経験は浅い為、
勉強する覚悟はできています。

宜しくお願い致します。


289 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 02:05:00 ]
2Dのあぬめーひょんって具体的にどんなーん?
単純にスプライトを大量に表示する必要があるってんなら兎も角、
ピクセルをゴリゴリ弄るような処理ではDirect3Dはなんの力にもなれないよー。

290 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 02:48:35 ]
抜き色無しのアニメーションならGDIでも十分高速。

291 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 06:57:00 ]
Direct3D
○:抜き色有・無描画、拡縮、回転、それらの同時掛け
X:ピクセル単位の処理
その他
グラフィックボードによって動作が違うことがある(大抵は大丈夫、ただ客が馬鹿だと苦労する)
1ドットに対して正確に色をおかなきゃいけないときに拘ると最悪(できないわけじゃないだろうけど・・・)
デバイスのロスト等描画以外でかなり手間がかかる、復旧方法を全部知っておかないと苦労する

GDI
○:抜き色有・無描画、拡縮、回転、ピクセル単位の処理
X:抜き色有・無描画、拡縮、回転の同時掛け
その他
Direct3Dと比べるとかなり遅い、環境による差が少ない、面倒が少ない

292 名前:286 mailto:sage [2007/07/13(金) 11:52:44 ]
解決しました。

SDK 2007 April の d3dx9tex.h に

//-----------------------------------------------------------------------------
// D3DX_SKIP_DDS_MIP_LEVELS is used to skip mip levels when loading a DDS file:
//-----------------------------------------------------------------------------

#define D3DX_SKIP_DDS_MIP_LEVELS_MASK 0x1F
#define D3DX_SKIP_DDS_MIP_LEVELS_SHIFT 26
#define D3DX_SKIP_DDS_MIP_LEVELS(levels, filter) ((((levels) & D3DX_SKIP_DDS_MIP_LEVELS_MASK) << D3DX_SKIP_DDS_MIP_LEVELS_SHIFT) | ((filter) == D3DX_DEFAULT ? D3DX_FILTER_BOX : (filter)))

と定義してありました。

よって、SDKバージョンの相違でした。

293 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 12:59:54 ]
質問失礼します。
よくXFileを使うくらいなら独自形式を使え、といった話になるのですが
独自形式に変換するためには何のファイルから変換するのが分かりやすいでしょうか?
アニメーション情報もキーフレームでファイル内に含むことが出来るように
したいのですがよい方法はありませんか?

294 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 13:06:12 ]
自分が使っているモデリングソフト用のプラグインを作るだけ。
余計な形式から変換する必用は微塵もない。

295 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 13:34:43 ]
なるほど、ではMax用のプラグインを制作してみます。
ありがとうございました。



296 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 23:42:23 ]
Maxってフォーマット公開されてたっけ?

297 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 01:11:07 ]
プラグインを作るのにフォーマットなんて関係ないだろ。

298 名前:デフォルトの名無しさん [2007/07/14(土) 15:30:59 ]
m_pMesh->Release() ←こういうような
Releaseし忘れを警告してもらえる方法ってありますか?
自分の環境だとリリースしなくても何にも警告でないんです…

299 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 15:40:01 ]
テクスチャについて質問なのですが
フォーマットD3DFMT_D24S8で生成されたIDirect3DTexture9を
状況によってD3DFMT_A8R8G8B8で扱うといったようなことはできないのでしょうか?

なぜこんなことを、というとシェーダー内でサンプリングする際に
D3DFMT_D24S8でセットされたテクスチャはtex2Dを使ったときに
深度比較としてあつかわれてしまうのですが、
(通常shadow mapとかであればそれを意図しているので問題ないのですが)
あくまで通常のARGBとして扱いたい場合どうすればいいんですかね。
テクスチャは毎フレーム更新されるので、
あまりコストのかかる処理は避けたいです。


300 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 18:25:33 ]
上司か先輩か知らないが、デバッガ気取りのそのクソ野郎のPCを起動し、
コンパネのDirectXを開き、Direct3DのタブのUse Retail Version of Direct3Dのチェックを入れろ


301 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 18:30:59 ]
>>299
Direct3DではデプスバッファをARGBとして読むことは不可能。
代替処理として、深度をカラー情報に格納するシェーダを書く必要がある。

302 名前:299 mailto:sage [2007/07/14(土) 20:00:03 ]
>>301
ありがとう、
なるほど、じゃあ
通常レンダリング時に
通常ピクセル>COLOR0
深度値>COLOR1

みたいにマルチレンダーターゲットとかにして2枚つくるしかないのかな?

303 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 21:43:11 ]
テクスチャについて質問なのですが
Zオーダー指定の違うテクスチャを重ねると、上になったテクスチャの周りに、デバイスクリア色で縁が付きます。
これは、SetRenderState(D3DRS_ZENABLE, TRUE)でZオーダー指定すると回避できないのでしょうか?
それとも、なにか他の指定方法で回避可能でしょうか?

よろしくお願いします。

304 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 22:10:53 ]
アルファブレンド(透過)がされていない訳じゃなくて?

305 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 22:45:24 ]
>>304
透過されますが、絵の透明色と非透明色の境界にデバイスクリア色がでます。
文字のテクスチャを表示すると、縁取り文字みたいに表示されます。
他の透明色付きテクスチャも同じ現象が出ます。
Zオーダが同じならでません。
Zオーダーとアルファブレンドが相性の悪いのはわかってるのですが、
透過色を使用していない(上位ビットが0xFF000000)データでも出ます。
透明色側に縁が出ているような感じで、ずれているような表示ではなく
周りにデバイスクリア色が付いているような感じになります。



306 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 22:54:16 ]
>>305
現象が何かも確認できていないうちに回避策もあったもんじゃないんだが。

1) 拡大表示か何かでアルファ値が補間されて、境界部分が半透明状態になる
2) サーフェイスクリア直後のサーフェイスに1)を描画したところ
  サーフェイスクリア色とブレンドされるようなレンダーステートになっていた。
  さらにアルファテストもやっていたので、完全透明なところ以外はZ値が更新される
3) その上から背景(推測)を描画したところ、Z値が更新されていないところのみ描画された。

という状況なのかね?


307 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 23:26:28 ]
>>306
まず、拡大縮小はしていません。
きっちりした透明色(0x00000000)と非透明色(0xFF??????)の境界、透明色側に
デバイスクリア色がでます。
描画順番にかかわらず出ます。(あきらかに後から上書きしたZが0.0の画像にも縁が付く)

テクスチャは手前も後ろもD3DXCreateTextureFromFile()で読み込んだpngファイル。
縁に半透明処理等はしていません。

背景Zオーダー1.0 前景Zオーダー0.0 → 縁が付く
背景Zオーダー0.0 前景Zオーダー0.0 → 縁が付かない

普通にDrawで描いてるんですけどね。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<173KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef