■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

【C++】 DirectX初心者質問スレ Part9 【C】
251 名前:デフォルトの名無しさん :2006/05/02(火) 18:22:21
自己紹介・・・

252 名前:デフォルトの名無しさん :2006/05/02(火) 18:23:54
そんな奴が常駐してて、質問者が萎縮している質問スレ
もっとも245みたいに、質問スレに愚痴書く奴も馬鹿だけど

253 名前:デフォルトの名無しさん :2006/05/02(火) 18:32:47
と、馬鹿が何か言ってます

254 名前:デフォルトの名無しさん :2006/05/02(火) 19:06:28 ?
 VS2005とdirectX9(april2006)を使ってます。
今は、VS2005でdirectX9の本がなかったので
著者がVC++6.0 or .netとdirectX9を使っている本を参考にしています。
 その本にはdirectXをインストールすれば新しいプロジェクトの作成のとき
directX 9 AppWirardというのが出てくると書いてあるのですが
私の環境では出てきません。これはVS2005とVC++6.0の違いでしょうか?
それとも何かしらの操作をすれば使えるようになるのでしょうか?

255 名前:デフォルトの名無しさん :2006/05/02(火) 19:13:23
たしかDirectXのバージョンにも関係してた希ガス

256 名前:デフォルトの名無しさん :2006/05/02(火) 19:27:52
>>254
(Summer 2004)でウィザードは廃止

257 名前:デフォルトの名無しさん :2006/05/02(火) 19:55:12 ?
なるほど。わかりました。
その本はappwizardをベースに作ってく本だったので
ちょっと困りますが、サンプルCDもあるのでそっちだけを参考にすることにします。

本当にありがとうございました。

258 名前:デフォルトの名無しさん :2006/05/03(水) 02:51:58
ウィザードを使わないで、サンプルを参考に作れってことなんですか?

259 名前:258 :2006/05/03(水) 03:58:04
自己解決。サンプルブラウザに入ってるEmptyProjectを使うのですね。


260 名前:デフォルトの名無しさん :2006/05/04(木) 09:11:45
質問です。
Direct3DはHWNDを引数にしてデバイスの作成をするのですが、
それはつまり「沢山のWindow」があるアプリケーションでは
Windowごとにデバイスを作成し、それに関連付けしたテクスチャーをロードする必要があるのでしょうか。

1回テクスチャーをロードし、それを複数のWindowに表示したいのですが…。

261 名前:デフォルトの名無しさん :2006/05/04(木) 09:40:51
デバイスは1個。
複数のウィンドウへのレンダリングは、日本語SDKヘルプで「スワップチェーン」で検索

262 名前:デフォルトの名無しさん :2006/05/04(木) 10:16:09
ありがとうございます。試してみます

263 名前:デフォルトの名無しさん :2006/05/04(木) 11:19:20
試すなら俺を倒してからにしろ

264 名前:デフォルトの名無しさん :2006/05/04(木) 12:25:27
やめておじいちゃんその体じゃ

265 名前:デフォルトの名無しさん :2006/05/04(木) 14:31:23
スワップチェーン成功しました。
ありがとうございました。

ただ、Direct3D8でやろうとがんばっていたのですが、結局9でしかできませんでした。
プログラムはほっとんど同じなのに…。

266 名前:デフォルトの名無しさん :2006/05/04(木) 19:09:20
ヘルプ眺めただけでやったこと無いけど、表示するだけなら、
IDirect3DDevice8::Present()の引数でHWNDを指定するだけじゃ駄目?

267 名前:デフォルトの名無しさん :2006/05/04(木) 19:17:54
8なんかいじるなよ・・・

268 名前:デフォルトの名無しさん :2006/05/04(木) 19:57:57
いきなりDirectXのプログラムから始めようとしたけど無理だった

269 名前:デフォルトの名無しさん :2006/05/05(金) 11:43:04
>>268
すでにいきなりではなくなったのでこれから頑張れ

270 名前:デフォルトの名無しさん :2006/05/05(金) 11:47:45
>>266
ダメでした。9のサンプルとはほっとんど変わらずに作りましたが
何故か真っ黒に変な色のドットがちょびっと。といういわゆる「VRAMの予期しないところを参照している」状態。
原因はわかりません

>>267
8だめですか…。
基本的にがなるべく古いもので作るのが良いと思うのですが…。(動作環境が多い)


271 名前:デフォルトの名無しさん :2006/05/05(金) 12:46:57
現在、DirectX9のドライバがないようなハードウェアは
メーカーでさえ製造はもちろんサポートを打ち切ったようなものだってことだ。
ドライバにバグが残っていても更新の見込みもない。
そんなものを君は全力でサポートしようとしようというのか。
プロでもつらいのに初心者には無謀。ゾンビに墓穴に引きずり込まれるだけだ。
世界は、美しくなんかない。

272 名前:デフォルトの名無しさん :2006/05/05(金) 13:02:20
何をアホなことを言っているんだ?
3D系の機能にしてもDirect3Dが使えれば、ドライバそのものにDirectXのバージョンは関係ない。
どの機能に対応しているかどうかの違いでしかない。
それにDirectX9のフル機能に対応していないビデオカードは、
現在サポートが続いているものでも山のようにある。

273 名前:デフォルトの名無しさん :2006/05/05(金) 13:08:22
7で作れるんだったら7で作っとけ
7で作れないんだったら8でも9でも大した違いは無いから9にしとけ

274 名前:デフォルトの名無しさん :2006/05/05(金) 13:37:00
DirectX9.0ってどうしたら使えるんですか?orz

275 名前:デフォルトの名無しさん :2006/05/05(金) 14:09:09
>>272
書籍やヘルプもないのに頑張れとかすげー無責任にもほどがある。

276 名前:デフォルトの名無しさん :2006/05/05(金) 14:24:43
DXライブラリでフォトショップで描いた透過PNG画像を表示したいんだけどどうすればいいんだろう・・・
水面の波とかを透過して描いたんだけどDrawGraph関数じゃ表示できないみたいです・・・
RPGツクールXPすごいな・・・

277 名前:デフォルトの名無しさん :2006/05/05(金) 14:48:20
ttp://www.functiont.info/programing/



278 名前:デフォルトの名無しさん :2006/05/05(金) 14:51:18
PNGにアルフ入ってるならそのまま出せば透過されるはずだが。
むろんステート関係はちゃんと設定した上での話。

279 名前:デフォルトの名無しさん :2006/05/05(金) 15:17:03
278>>
アルファチャンネル入ってる。ステートはまだいじってません・・・
Windows画像とFAXビューアではしっかりと透過表示されてるのに・・・

勉強しよ

280 名前:デフォルトの名無しさん :2006/05/05(金) 16:34:42
せめてチュートリアルぐらいは終わらせろ。

281 名前:デフォルトの名無しさん :2006/05/05(金) 19:28:03
>276
DXライブラリはスレ違い。スレ無いけど。

SetDrawBlendModeを使え。

282 名前:デフォルトの名無しさん :2006/05/05(金) 19:39:13


ちらし〜


OBBついにできたーーーーーー!!!(BOX表示だけですが・・)
あとは、当たり判定をつければウハウハです!
しかし、BOXに無駄がかなりあなるな、 う〜〜ん

283 名前:デフォルトの名無しさん :2006/05/05(金) 19:48:36
ちらしうざい

284 名前:デフォルトの名無しさん :2006/05/05(金) 20:48:36
>>281
感謝感激家事親父

285 名前:デフォルトの名無しさん :2006/05/05(金) 21:35:28
>>283
サブちゃんに謝れ

286 名前:デフォルトの名無しさん :2006/05/05(金) 22:06:50
>>276
ツクールXPってDirectXで描画してるにしては描画えらく遅いな。
透過はハードウェアでやってないんじゃないのか・・・?

287 名前:デフォルトの名無しさん :2006/05/05(金) 22:59:41
計算も出力も全部ハードウエアですが?

288 名前:デフォルトの名無しさん :2006/05/05(金) 23:34:54
なんで知ってるんだ。

289 名前:デフォルトの名無しさん :2006/05/06(土) 00:03:47
ツクールXPの製品概要によればDirectDrawも使ってない。

2001年の頃にはDirectDrawのハードウェアなどあてにせず、
システムメモリ内で全画面のイメージを作ってから全体を転送するのが当たり前だった。
透過もソフトウェアでやる。それで60FPS出てたよ。

ツクールXPの描画は30FPSが上限でティアリング上等という設計なんだと思う。
DirectDraw全盛の時代の市販ゲームのRPGを思い出せば、
VSyncに同期したなめらかなスクロールより、そういうタイプが多かった。

290 名前:デフォルトの名無しさん :2006/05/06(土) 06:28:53
>>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音を出す練習をしてみたいと思っている。

292 名前:デフォルトの名無しさん :2006/05/06(土) 16:21:16
勉強する気なんてさらさら無いように見える。

293 名前:デフォルトの名無しさん :2006/05/06(土) 16:33:54
>>291
ここからサンプルプログラムと日本語のドキュメントを入手できる
日本語ドキュメントは (October 2004) 日本語ドキュメントが最新版
http://www.microsoft.com/japan/msdn/directx/downloads.aspx

294 名前:デフォルトの名無しさん :2006/05/06(土) 16:33:58
工工エエエ(´д`)エエエ工工

295 名前:291 :2006/05/06(土) 17:50:12
>>293
ありがとう。今からドキュメント入れてみるわ。

が、その前にいきなりつまずいた。

> Microsoft DirectX 9.0 SDK (April 2006)
> http://www.microsoft.com/japan/msdn/directx/downloads.aspx

これWindows2000サポートしてないのかよorz・・・

296 名前:291 :2006/05/06(土) 17:54:45
>>293
結局日本語ドキュメントの最新版、October2004までさかのぼらなければ
Windows2000はサポートされてなかったorz・・・

DirectX 9.0 SDK Update - (December 2004)

297 名前:デフォルトの名無しさん :2006/05/06(土) 17:55:27
>>295
落武者落合処 | DirectX SDKをWindows2000にインストールする?
http://blog.ochimusha.org/log/eid342.html

298 名前:デフォルトの名無しさん :2006/05/06(土) 17:57:11
.libと.hだけあればインストールする必用はないし、それだけで十分開発できる
少しは頭を使って考えろ。

299 名前:デフォルトの名無しさん :2006/05/06(土) 18:00:35
>>296
Windows2000サポートの最新版は(December 2004)

300 名前:291 :2006/05/06(土) 18:01:03
>>297-298
なるほど。そういう裏技もあるのか。
でも慎重派の俺はDecember 2004に甘んじることにしよう(´・ω・`)

301 名前:デフォルトの名無しさん :2006/05/06(土) 19:19:15
二℃とくるなボケ

302 名前:デフォルトの名無しさん :2006/05/06(土) 22:27:34
>>298
>>301
市ねよ てめえは

303 名前:デフォルトの名無しさん :2006/05/06(土) 22:41:22
>>302
てめえがしんでおれもしぬ

304 名前:デフォルトの名無しさん :2006/05/06(土) 22:44:13
オブジェクトはデータでそ?
データが自ら描画するわけないって思うんだけど。
シーンを管理するクラスなどがデータをいじくって、描画クラスがデータを元に表現する。
こう思ってるんだけど、どうよ?あってんのかな?

305 名前:デフォルトの名無しさん :2006/05/06(土) 22:50:20
>>304
え?オブジェクトを描画されるものとみれば
描画は1メソッドにしかならないんじゃない?
オブジェクト指向っていうんだから実際に実体の認識できるものをクラスに反映しようよ。
それすらやらずに抽象クラスを先にだしちゃうのはなんかセンスなさげじゃない?

306 名前:デフォルトの名無しさん :2006/05/06(土) 22:53:01
この世界のオブジェクトは描画クラスが存在を表現しているわけではない。

307 名前:デフォルトの名無しさん :2006/05/06(土) 23:09:19
描写してくれって頼みにいく相手はキャラクタ等のオブジェクトではなく
ウィンドウクラスなり何なりだと思うがね。

308 名前:デフォルトの名無しさん :2006/05/06(土) 23:11:40
obbの境界BOXがうまく作れないorz
一個一個頂点を調べて
近い座標をある一定間隔でまとめてそれを囲む箱作ればいいのかな・・・
うーん、OBB専用モデル作成とかした方が簡単かも

309 名前:デフォルトの名無しさん :2006/05/06(土) 23:24:26
>>308

つ 主成分分析

専用モデルもありだけど。

310 名前:デフォルトの名無しさん :2006/05/06(土) 23:40:30
sdk8のサンプルでdirect3dのスキンメッシュにdirectinputの
ジョイステックのサンプルを結合して人間を動かすプログラムを
書いても正常にビルドできたことが無いんですが、
((関数%45&)〜〜は未解決です。みたいなエラー)
それは置いといて、

例えばdirect3d + directinput + directmusicのように
サンプルを組み合わせるときの注意点はありますか?

311 名前:デフォルトの名無しさん :2006/05/07(日) 00:11:55
必用なものを必用なところに入れる。

312 名前:デフォルトの名無しさん :2006/05/07(日) 00:14:09
>>309
> つ 主成分分析

そういう難しいことをいわれても実に困る。

313 名前:デフォルトの名無しさん :2006/05/07(日) 00:41:57
カルシウムのことだよバカ

314 名前:デフォルトの名無しさん :2006/05/07(日) 01:02:11
専属のCGデザイナーがいるなら専用モデル
プロの自覚があるなら主成分分析より良いモノが出る。


315 名前:304 :2006/05/07(日) 01:25:21
>>305
ごめん、オブジェクトってのがおかしいのかも?
抽象クラスでなく、何かメッシュやら画像やらを持ったクラスっす。

なんて表現すればいいか解らない俺は、バカ・・・。

みなさんは、そうゆうクラスにDrawメソッドを与えてるの?

316 名前:デフォルトの名無しさん :2006/05/07(日) 01:31:41
ここにいる人たちって絶対にカルシウム不足だよねー

317 名前:デフォルトの名無しさん :2006/05/07(日) 01:35:00
2ちゃん全体、ひいては全日本

318 名前:デフォルトの名無しさん :2006/05/07(日) 01:35:01
なんか、頭の固いコンパイラといつも対話しているから、自分の頭も固くなるらしい。

319 名前:デフォルトの名無しさん :2006/05/07(日) 01:37:10
>>314
今後の参考のために、主成分分析より良い物を教えてくれ。

320 名前:デフォルトの名無しさん :2006/05/07(日) 01:41:04
   __(^^) <ペイピッポォ みんな仲良くするピー
  /__ \
  | |   |  |
  (_) (__)
愛用ツール:ツクール

321 名前:319 :2006/05/07(日) 01:59:18
CGデザイナーに「プロの自覚があれば」って意味か。
プロのプログラマーなら、主成分分析よりいいアルゴリズムが出る
という意味かと思った。

>312
主成分分析 OBB でググれ。

322 名前:デフォルトの名無しさん :2006/05/07(日) 08:48:35
DX10って何が凄いんやろ、
噂によればまた初期化が難しきなってるとか・・・orz



323 名前:デフォルトの名無しさん :2006/05/07(日) 09:07:09
ああ、難しき。

324 名前:デフォルトの名無しさん :2006/05/07(日) 09:28:16
>>308
DirectXには
D3DXComputeBoundingBoxってのあるだろ?
車輪の再発明でもしてるのか

325 名前:324 :2006/05/07(日) 09:34:22
俺勘違いしちゃってるな
モデルにフィットしたOBBを作ってるのか

326 名前:デフォルトの名無しさん :2006/05/07(日) 12:29:58
俺は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の方だけで
やれば済むことなんだけどね。

328 名前:デフォルトの名無しさん :2006/05/07(日) 14:07:27
クエスト受けていないと手に入らないアイテムは
クエストに必要な分が揃うとそれ以上出なくなるね。

それはいいんだけど、同じアイテムが必要なクエストを
複数受けていても、1回分しか出ないね。
清浄水のクエを3つ受けて行ったら無駄になった。

329 名前:デフォルトの名無しさん :2006/05/07(日) 14:08:01
超誤爆ったw
スレ違いどころか板違いorz

330 名前:デフォルトの名無しさん :2006/05/07(日) 17:37:40
メッシュが閉じた形状か判定するには
どうすればよいでしょうか

331 名前:デフォルトの名無しさん :2006/05/07(日) 17:45:52
すべてのポリゴンの辺に他のポリゴンが隣接していれば閉じている。
クラインの壷みたいなのはどう扱うんだっけ

332 名前:291 :2006/05/07(日) 19:34:34
今DirectSoundの勉強しているんだけど静的バッファとストリーミングバッファの扱いって難しいのぅ。

要は静的バッファに収まりきらないくらい長いwaveファイルはストリーミングバッファに
格納するらしいんだけど、具体的にどのくらいのサイズまで静的バッファは格納する
ことができるんだろう?

333 名前:デフォルトの名無しさん :2006/05/07(日) 19:36:03
>>331
レスありがとうございます。
クラインのツボみたいなの使われてるゲームってあるのかな...。
プログラムの仕方は分からないです。スミマセン。

334 名前:デフォルトの名無しさん :2006/05/07(日) 19:37:56
ややこしい書き方してしまいました。
分からないってのはクラインの方です。
閉じた形状の方は分かりました。
ありがとうございました。

335 名前:デフォルトの名無しさん :2006/05/09(火) 09:37:47 ?#
>>333
ゲームじゃないが、DirectXでレンダリングした人はいるみたいだ。
http://www2.neweb.ne.jp/wc/morikawa/sya.html

336 名前:デフォルトの名無しさん :2006/05/10(水) 00:09:27
>>335
お、俺ん家の玄関においてあるのと同じだ>クラインの壺

337 名前:デフォルトの名無しさん :2006/05/12(金) 22:45:33
クラインの壺の中ってどれくらい暗いん?

338 名前:デフォルトの名無しさん :2006/05/13(土) 03:57:23
12ルクスくらい。

339 名前:デフォルトの名無しさん :2006/05/13(土) 07:06:52
もう閉経してるから

340 名前:デフォルトの名無しさん :2006/05/20(土) 22:59:56
急にレスがなくなったけど何かあったのかい?

341 名前:デフォルトの名無しさん :2006/05/21(日) 02:32:22
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行が表示されました。

何が原因か分かりません。
怪しい個所など教えていただけると助かります。


343 名前:デフォルトの名無しさん :2006/05/22(月) 13:35:56
メモリ開放箇所を全て確認しる
(というより丸っきり開放してないように思えるが・・・)

344 名前:342 :2006/05/22(月) 17:55:29
返答ありがとうございます。
まだ駄目です。。。解決しないです(;_;

解放は全部見ましたが特に怪しい所はありませんでした。
43712 と 699392 の数値が毎回激しく変わるのですが、プレイは毎回正常に行えます。

メッシュ(テクスチャー?)を作り過ぎると出る印象があるのですが、分かる方お願いします。
メッシュは104個程作ってます。


345 名前:デフォルトの名無しさん :2006/05/22(月) 17:59:53
見落としてるに100メッシュ

346 名前:デフォルトの名無しさん :2006/05/22(月) 18:22:04
メッセージにメモリリークって出てるんだからどっか解放忘れてるんだろ。
自分のプログラムの腕を信じないで素直にエラーメッセージを信じろ。

347 名前:デフォルトの名無しさん :2006/05/22(月) 18:40:55
未解放のポインタに、新しくテクスチャを突っ込んでいるに
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

349 名前:デフォルトの名無しさん :2006/05/22(月) 19:40:56
×辛い
○面倒

350 名前:デフォルトの名無しさん :2006/05/22(月) 20:07:50
>>342
バグが見つからないならプログラムを小分けに走らせればいいのさ
必要最低限の部分だけ抜き出して走らせるのさ
問題ないなら少しずつ大きくしていくのさ

351 名前:342 :2006/05/22(月) 20:17:14
返答ありがとうございます。

>>350
まずそれやったですよ。

Aクラスを止めました -> リーク表示が消えました
Aクラスの中のものが解放されていないのかと思い、調べましたが結局分からず。
Aクラスを止めていたのを元に戻し、今度はBクラスを止めました -> リーク表示が消えました

もうね。
DirectXが人間だったら殴ってます。
なんだよ。。。こんなリーク初めてだよ。。。orz

352 名前:デフォルトの名無しさん :2006/05/22(月) 20:23:58
短気な人はプログラミングに向かないよ。
とっととやめちまえ

353 名前:デフォルトの名無しさん :2006/05/22(月) 20:35:29
クラスAとBで共有しているオブジェクトがあるとして
それをAddRef()してるのに片方でしかRelease()してなかったりするってところか。


354 名前:デフォルトの名無しさん :2006/05/22(月) 20:53:44
>>351
それならばAとかBとか関係なくどこか壊してんじゃないのか
>>344でメッシュ作りすぎると出るとか言ってるから
メッシュ作るところを一部分ずつ何度も回すしかないだろ

355 名前:デフォルトの名無しさん :2006/05/25(木) 12:13:25
640x480のウィンドウを作って640x480のbmpをSprite->Drawで表示させたのですが、
縦横に激しく間延びしてしまってウィンドウに収まらないのですが
どのような原因が考えられますでしょうか?

スプライトは下のように描画したのですが、、、
Sprite->Draw(texture, NULL, NULL, NULL, 0, NULL, 0xffffffff);

356 名前:デフォルトの名無しさん :2006/05/25(木) 12:34:09
自己レスです。テクスチャを作る時にフィルタリングされてしまっていたようでした。
D3DX_FILTER_NONEにしたら解決しました。失礼しました

357 名前:デフォルトの名無しさん :2006/05/26(金) 22:23:24
なんでこんなことを聞くのかについては気にしない方向で…


・共通のメッシュとボーン構造を持つ、複数のXファイルがあります。

・D3DXLoadMeshHierarchyFromX()云々を使用して、個々のモデルとモーションの再生が可能になりました。

・が、実は目的としたいのは、同一のメッシュ上で、複数のモーションを切り替えて再生することだったのです。

・モデル情報(Xファイル)はバイナリで編集不可、製作者は現在多忙で、テキスト化->編集で複数モーションを
もたせる手が使えません。

・仕方ないので、各モデル情報から

358 名前:デフォルトの名無しさん :2006/05/26(金) 22:25:14
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 を回収することにしました。

359 名前:デフォルトの名無しさん :2006/05/26(金) 22:36:26
で、モーションのつなぎ。
ここでは補間とかは考えず、単に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();
}


360 名前:デフォルトの名無しさん :2006/05/26(金) 22:40:06
…ぶっちゃけ、
あるモデルのアニメーションセットの差し替えって、アニメーションコントロールから

GetTrackAnimationSet()
UnregisterAnimationSet()

でアニメを外して、

RegisterAnimationSet()
SetTrackAnimationSet()

で再登録って流れを踏めばいいんでしょうか?

ある程度はちゃんとうごくっぽいんだけど、一部のスキンに
妙なスケールがかかっちゃったりして、元データの問題なのか
プログラム側が強引過ぎるのか、問題が掴めずにぼーぜんとしております。

どなたか詳しい方、ご教授くださいぃ。

361 名前:デフォルトの名無しさん :2006/05/27(土) 00:30:29
>>357-360

自己解決してしまいました

っつーか、上のやり方で普通に正しかったみたい。
m_aSkinMesh[0].GetAnimeCtrl()->GetMaxNumTracks();
m_aSkinMesh[0].GetAnimeCtrl()->GetNumAnimationSets();
はいらないけど。

モデルデータの問題だったーよ…
少し構造の違うモデルが紛れ込んでただけだった。

お騒がせしましたー。

362 名前:デフォルトの名無しさん :2006/05/27(土) 09:47:06
つ [熊さんのぬいぐるみ]

363 名前:デフォルトの名無しさん :2006/05/27(土) 13:00:45
DirectMusicを使おうと思ったのですが、CoCreateInstanceでエラーが出て使うことができません。
「0x80040154 クラスが登録されていません」とのことですが、よくわかりません。
CoInitializeもやっています。

364 名前:デフォルトの名無しさん :2006/05/27(土) 21:58:15
Managed DirectXって未来無いのかな・・・
使ってるよって話を全く聞いたことがない。

365 名前:デフォルトの名無しさん :2006/05/27(土) 22:14:35
>>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)から動きません。
どうすればワールド座標で座標を変えられますか?



367 名前:デフォルトの名無しさん :2006/05/27(土) 23:14:28
SDKのサンプルじゃなく、市販か同人でひとつの作品まで仕上がったレベルで、
skinnedmeshを固定機能で実装してる奴って存在しないんじゃないかと思うが
どうだろう

368 名前:デフォルトの名無しさん :2006/05/28(日) 00:44:36
>>367
腐るほどあると思うが。

369 名前:デフォルトの名無しさん :2006/05/28(日) 00:56:41
開発用の、ノートの方がシェーダ使えなくて、やむなく固定も使用してるね

>>366
skinned meshの場合(インデックス付き頂点ブレンディングが有効の場合)は、
ボーンごとにワールド(ローカル)行列をセットする必要があるよ

例えば0番目のボーンのワールド行列をセットするには
device->SetTransform( D3DTS_WORLDMATRIX( 0 ), &matrix_world );

370 名前:デフォルトの名無しさん :2006/05/28(日) 02:50:05
>>367
FFXI

371 名前:デフォルトの名無しさん :2006/05/28(日) 13:03:06
初心者ですけどVisualStudio2005でビルドしたらunicode形式にしろって警告がでるんですけど
どうしたらいいんでしょう?

372 名前:371 :2006/05/28(日) 14:06:12
自己解決しました。
どうもすいませんでした

373 名前:デフォルトの名無しさん :2006/05/28(日) 14:34:30
>>369 ワールド座標でできました。ありがとうございました。

374 名前:デフォルトの名無しさん :2006/05/28(日) 15:40:27
すいません質問です。
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"」


375 名前:デフォルトの名無しさん :2006/05/28(日) 15:43:30
>プロジェクトのプロパティ[リンカ]→[入力]→[追加の依存ファイル]設定しているファイル
>「"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"

377 名前:デフォルトの名無しさん :2006/05/29(月) 00:43:05
質問ですが、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;
};

378 名前:デフォルトの名無しさん :2006/05/29(月) 01:19:02
デバッグ汁

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);
で毎フレームフォントの設定をしなおしているからなのですが、
このような方法以外に、フォントの大きさを別々に設定する方法はないでしょうか?

381 名前:デフォルトの名無しさん :2006/05/31(水) 06:49:58
またか・・・
もう見飽きた質問だな

382 名前:デフォルトの名無しさん :2006/05/31(水) 20:11:28
>>380
GetGlyphOutline でググってみるといいかも。

383 名前:デフォルトの名無しさん :2006/06/01(木) 00:15:48
初心者なんで根本的に勘違いしてたらすいません。
Xファイルを読み込んで表示した所、奥に隠れて見えないはずの部分も表示されてしまいました。
深度テストとやらが上手くいってなさそうな雰囲気なのですが・・・
EnableAutoDepthStencil = TRUE;
AutoDepthStencilFormat = D3DFMT_D16;
の後にデバイスを作っていてSetRenderStateで深度バッファを有効にしています。
もう何が原因なのやらさっぱり。D3DRS_ZFUNCを色々いじった結果、全部同じ深度にある事になってるっぽいです。
SetRenderState深度バッファ書き込みを有効にしてみたり色々やったんですが解決しませんです。。。
なんか他に原因があるんでしょうか?

ちなみに使ってるのは2003summer C++6.0です

384 名前:デフォルトの名無しさん :2006/06/01(木) 01:08:02
>>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);
で毎フレームフォントの設定をしなおしているからなのですが、
このような方法以外に、フォントの大きさを別々に設定する方法はないでしょうか?

386 名前:デフォルトの名無しさん :2006/06/01(木) 01:38:22
>>385
2種類のフォントをあらかじめ生成しておけばいいんじゃないの?
(g_pFont1とg_pFont2とか)
というか"設定"じゃなくて"生成"だから、それだと生成されまくりよ。

387 名前:デフォルトの名無しさん :2006/06/01(木) 04:47:23
>>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

391 名前:デフォルトの名無しさん :2006/06/01(木) 14:29:45
質問失礼します。

OS:WindowsXP
IDE:VisualStudio2002
SDK:DirectX9(December 2005)
言語:C++

上記の環境で開発しています。
DirectXでSurfaceなどを取得して、Releaseせずに終了した際に、メモリリークが発生しますよね。
その時に、デバッグモードだと出力ウィンドウに下記のような表示がされるんですが、

Direct3D9: (ERROR) : [0] : Address 0047A3A5
Direct3D9: (ERROR) : [1] : Address 0047A3A5

開発マシンによって出たり出なかったりするんですよね。
適当に設定したので、なにを設定したらメモリリークなどのエラー表示をするのか分かりません。
どなたかご教授願いませんか?
よろしくお願いします。

392 名前:デフォルトの名無しさん :2006/06/01(木) 14:33:59
>>391
コンパネ>DirectX>Direct3D>

Debug Output Level
Use Debug Version


393 名前:デフォルトの名無しさん :2006/06/01(木) 14:38:46
>>392
設定してみたら出来ました、
色々みてみます。
ありがとうございました!

394 名前:デフォルトの名無しさん :2006/06/01(木) 20:14:10
そういえば最近、「DirectX逆引き大全」が出たね。
重大な誤りとかが無ければ買おうと思ってるけど、
どんなもん?

395 名前:デフォルトの名無しさん :2006/06/01(木) 20:19:42
レポよろ

396 名前:デフォルトの名無しさん :2006/06/02(金) 22:31:43
立ち読みした限りでは浅く広くって感じ
恥ずかしくて今更人に聞けないような事もきちんと書かれていていいんじゃね

397 名前:デフォルトの名無しさん :2006/06/02(金) 22:40:22
恥ずかしい とは性的な意味でしょうか

398 名前:デフォルトの名無しさん :2006/06/03(土) 02:03:23
カメラの位置から、2Dマウスの場所に向かってレイを飛ばしたいのですが、どうやれば良いのでしょうか?

399 名前:デフォルトの名無しさん :2006/06/03(土) 02:20:08
そのようにせい。

400 名前:デフォルトの名無しさん :2006/06/03(土) 06:08:05
クリックしたスクリーン座標をワールド座標に変換してみ

401 名前:デフォルトの名無しさん :2006/06/03(土) 11:05:06
日本語のドキュメントをインストールしたのですが
どうやったら見られるのかがわかりません
フォルダをみると得体のしれない拡張子のファイルはいくつかあるのですが

402 名前:デフォルトの名無しさん :2006/06/03(土) 15:21:42
連結ヘルプコレクション

403 名前:デフォルトの名無しさん :2006/06/03(土) 16:01:57
スカートの中は見通せるのにヘルプファイルは見通せないのか

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のバッファにだけ
書き込む方法とかない?


407 名前:デフォルトの名無しさん :2006/06/04(日) 16:34:27
>>406
D3DRS_COLORWRITEENABLE

408 名前:406 :2006/06/04(日) 16:39:12
>>407 サンクス。調べてみる。


409 名前:デフォルトの名無しさん :2006/06/05(月) 00:39:52
正直に白状するとヘルプ読んでも判らなかったのでここで質問
正しいレンダーターゲットの「戻し方」を教えて下さい。
SetRenderTarget()で描画先を変えた後で元に戻したい場合にどう戻せばよいのか判りませぬ。

SetRenderTarget()で変える前に元々のレンダーターゲットをGetRenderTarget()で取得しておいて、
用が済んだらこの値を使ってSetRenderTarget(0,元の値)とかするのかと思ったけど、GetRenderStateって
参照カウント上がるし、使った(SetRender…で戻した)後は解放するしなきゃならんのでちょっと違和感。

この辺の作法について教えて下さい。
コノトオリ orz

410 名前:デフォルトの名無しさん :2006/06/05(月) 00:46:54
そもそも"戻す"ってのがおかしい。

411 名前:デフォルトの名無しさん :2006/06/05(月) 00:48:57
どうおかしいのかがワカランのですが

412 名前:デフォルトの名無しさん :2006/06/05(月) 06:08:08
>>411
再設定すりゃいいだけじゃね?

413 名前:デフォルトの名無しさん :2006/06/05(月) 06:13:36
ここは不親切な回答しかないインターネッツですね

414 名前:デフォルトの名無しさん :2006/06/05(月) 06:20:03
別に「元」なんてとっておかないでバックバッファ指定すりゃいいじゃん。

415 名前:デフォルトの名無しさん :2006/06/05(月) 10:52:50
これの
http://www.c3.club.kyutech.ac.jp/~sukiyaki/index.php?%A5%C6%A5%AF%A5%B9%A5%C1%A5%E3

void DeEncry(char *pcIn,char *pcOut,int iSize){(略)}
void Init(){
(略)
   g_pd3dTexture = CreateTextureInMemory(pBuffer,size);
(略)
}
LPDIRECT3DTEXTURE9 CreateTextureInMemory(void *pBuffer,int size){(略)}

これって、Initよりも前に、CreateTextureInMemory作っておかなきゃマズくないですか?
それとも、DirectXの仕様で、後に置いても大丈夫だったりするんですか?

416 名前:デフォルトの名無しさん :2006/06/05(月) 11:16:18
>>415
「作っておく」ってなんだよ。
関数の宣言のことなら、プロトタイプ宣言でググれ。
プロトタイプ宣言さえしてあれば、関数の定義の順番なんてどうでもいい。
DirectXは関係なく、C言語の話。

417 名前:デフォルトの名無しさん :2006/06/05(月) 14:59:25
directmusicで曲を再生すると、なぜか音飛びや音ブレが起きます
容量に関係なく曲によってそういった現象がおこるものとそうでないものがあります
いったい何がおかしいのでしょうか 助けてくださいm(_ _)m

418 名前:デフォルトの名無しさん :2006/06/05(月) 15:55:45
ところで

419 名前:デフォルトの名無しさん :2006/06/05(月) 15:59:05


420 名前:デフォルトの名無しさん :2006/06/05(月) 17:47:44
すいません 手の施しようが無くて困っているのですが教えていただけませんか

DirectShow Filter Toolでロクに考えもせずにフィルタ登録を解除していったら、
DirectShow Filter Tool自体が機能しない上に、
メディアプレイヤーも全く機能しなくなってしまいました
起動はするのですが、メディアファイルを読み込む時点でエラーが起きます

・WMP→不明なエラー

・リアルプレイヤー→エラー報告すらなし

・GOMプレイヤー
→「ダイレクトシヨーを初期化できません。
このソフトウェアはダイレクトX 7.0以上が
インストールされていないと動作しません。」

と出ます。

DirectXは9.0Cがインストールしてあるので、
あとは認識させることが必要だと思うんですが…方法が分かりません。

どなたか分かる方、ご教授お願いします…。

421 名前:デフォルトの名無しさん :2006/06/05(月) 17:59:45
たとえば

422 名前:デフォルトの名無しさん :2006/06/05(月) 21:20:55
なんつーか、回答者も初心者だよな

423 名前:420 :2006/06/06(火) 00:40:43
なんかスレ違いだったみたいですね…お目汚し大変失礼しました。
他を当たってみます…。

424 名前:デフォルトの名無しさん :2006/06/06(火) 15:40:04
ああこのスレ大好きだ・・・過去ログ漁ったら知りたかった事即解決された(;´Д`)
うっひょーー

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
なるほどたしかにメモリは食いますね・・・画像カット以外に手はないのでしょうか?

>そんなでかい画像を使う必要あんのか?
まぁ、そうなんですけどチト仕事上で必要なので
元画像を複数枚に分けてってのはできるだけ避けたいのです。


428 名前:デフォルトの名無しさん :2006/06/07(水) 15:58:00
なぜ避けたいのか理由を明確にせよ。

429 名前:デフォルトの名無しさん :2006/06/07(水) 16:15:06
3000x3000のテクスチャを作成すればいーじゃん。

430 名前:425 :2006/06/07(水) 16:32:03
>>428
ようは会社間の力関係です。
上から頂戴した画像素材様をこちらの都合で切り分けたりすることはもってのほか。
自分はひ孫以下の階層に位置しますので、もちろん画像の仕様について口を出せません。
またプログラム作成後も画像がさし変わるので、切り分けの手間も入れたくないのです。
・・・という理由です。 orz

431 名前:デフォルトの名無しさん :2006/06/07(水) 16:37:42
昔から孫の頼むことにじいさんばあさんは弱くてだな…

432 名前:デフォルトの名無しさん :2006/06/07(水) 16:38:35
ファイルを分割しなくても、プログラム側で切り分ければいい。

433 名前:デフォルトの名無しさん :2006/06/07(水) 16:44:52
>>430
>>432が正解。ファイルを一気に読む必要などない。分割して読み込めばいいだけ。

434 名前:デフォルトの名無しさん :2006/06/07(水) 16:44:57
理由と画像を切り分ける事が全然繋がらないな。
読み込む時に内部でバラせばいーじゃないの?

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)
 }
}

こんな感じでどーよ。

435 名前:デフォルトの名無しさん :2006/06/07(水) 16:46:38
>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です

438 名前:デフォルトの名無しさん :2006/06/08(木) 19:28:32
D3DXMatrixOrthoLH

DirectXだとかOpenGLだとかは関係ない。
透視変換時のマトリックスの違いだけだ。

439 名前:デフォルトの名無しさん :2006/06/09(金) 01:06:57
そういえば、普段は正常なシーンでも、射影変換だけ正射影に切り替えると
Zバッファの比較がぐちゃぐちゃになるのですが、
そういうものなんですか?

まあ、ツールのワイヤーフレーム画面ならそれでも問題なく動きそうではあるけど。


440 名前:デフォルトの名無しさん :2006/06/09(金) 08:27:22
アホなことを言う前に自分で計算してみろ。

441 名前:デフォルトの名無しさん :2006/06/09(金) 14:03:57
すみません。スキンメッシュモデルでのピクセルシェーダの
使い方について質問です。
今まで頂点シェーダのみで描画していたモデルにピクセルシェーダを
適用してみようと思って以下のコードを書いてみたのですが…。
(頂点シェーダの内容は省きます)

// ピクセルシェーダ
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 にて開発をしています。

442 名前:デフォルトの名無しさん :2006/06/09(金) 14:18:31
シェーダーにちゃんとテクスチャ送ってる?
IDirect3DDevice9::SetTexture()じゃシェーダーにはテクスチャ送られないぞ?

443 名前:デフォルトの名無しさん :2006/06/09(金) 15:14:11
すんません、質問させてください。
DirectX9で円や矩形といった基本的な図形を描画するにはどうすればよいのでしょうか?
ID3DXLineというのは見つけたのですが、四角や円を描く方法が分かりません。

多分ものすごく初心者質問だと思うんですが、ヘルプやGoogleで調べても分かりませんでした。
ご存知の方いらしたら、よろしくお願いします。

444 名前:デフォルトの名無しさん :2006/06/09(金) 15:19:16
線分を4本組み合わせれば矩形になります。
三角関数を使って座標を計算しながら1周つなげれば円になります。

445 名前:デフォルトの名無しさん :2006/06/09(金) 15:23:29
あう・・・それはもしかすると
「そんなのねぇよ!板ポリで描けや。」
ということでしょうか・・・(´;ω;`)

446 名前:デフォルトの名無しさん :2006/06/09(金) 15:33:59
ポリゴン以外に画面描画する方法はない。

と思っておけばよい。

447 名前:デフォルトの名無しさん :2006/06/09(金) 15:34:46
いや目的によりけりでしょ。
事前に円や矩形のテクスチャ用意してそれを表示するだけで済む場合もあるし・・・
でも DrawPrimitive の類を使って自前で描くのが全ての基本。
GetDC 使えばデバイスコンテクストもゲットできるから GDI の描画関数も使えるけど、
それだと DirectX 使う意味があまりないかもね。

448 名前:デフォルトの名無しさん :2006/06/10(土) 17:45:31
C# + DirectSoundについては、ここで質問してもかまわない?

449 名前:デフォルトの名無しさん :2006/06/10(土) 18:19:06
C#でDirectX9 初心者の館 2頂点目
http://pc8.2ch.net/test/read.cgi/tech/1103998649/

ここでお願いします

450 名前:デフォルトの名無しさん :2006/06/10(土) 18:25:50
>>449
URLまで貼ってくれて・・・丁寧な案内さんくすです。

451 名前:デフォルトの名無しさん :2006/06/11(日) 05:57:02
誰かNVperfHUDの2.0ベータもってない?
徹夜で検索したけどどこにもないよ・・・

452 名前:デフォルトの名無しさん :2006/06/12(月) 13:10:42
どこか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 名前:デフォルトの名無しさん :2006/06/14(水) 11:47:12
>>453
D3DX_FILTER_NONE

456 名前:デフォルトの名無しさん :2006/06/14(水) 11:56:28
>>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と十分に余っているのになぜ作成できないのでしょうか?
同じような症状で困った方や、解決した方がおられましたら、教えていただければ助かります。


458 名前:デフォルトの名無しさん :2006/06/14(水) 15:23:59
DirectDrawSurfaceは縦長サーフェイスはビデオカードの気分次第です。
素直に縦長のサーフェイスは分割しましょう。

459 名前:デフォルトの名無しさん :2006/06/14(水) 18:02:09
417です
事故解決しましたので僕と同じ症状が出ている方はためしてくださいな
DirectAudio初期化の際のCoInitialize(NULL);を呼びますが、私はこれを
ウィンドウの設計図
こんなやつ
WNDCLASSwndclass;
memset( &wndclass, 0, sizeof( WNDCLASS ) );

// ウィンドウの設計図
wndclass.hInstance= hInstance;
     以下続く

の前呼んでいたから音飛びなどが出ていたようです。
なぜだろう・・バグが直る要因がわからないのってすっきりしませんね
バグ直ったからとりあえず良しとしますが、今後調査します


460 名前:デフォルトの名無しさん :2006/06/14(水) 21:58:59
なんで初心者がDirectX7に手を出すんですか?
それにハードウェアblitって今でもやるメリットあるんですか?
普通の2Dゲームなら、ソフトウェアでも滅多に処理落ちしないんじゃないですか?


461 名前:デフォルトの名無しさん :2006/06/14(水) 22:02:10
>>460
半年ロムってろ

462 名前:デフォルトの名無しさん :2006/06/14(水) 23:33:32
2Dアクションゲーム(スーパーマリオみたいなの)でDirectX使う場合ってDirectInputとかDirectSoundを使うくらいですか?

全く見当違いのこと聞いてたらごめんなさいorz

463 名前:デフォルトの名無しさん :2006/06/14(水) 23:46:00
>>462
マジレスするとそんなことも調べられないようじゃ2Dなんかに手をださないほうがいい。
はっきりいって2Dゲームってのは鬼門だ。
鬼門であることを理解するのもまたそれなりの期間がいる。

464 名前:デフォルトの名無しさん :2006/06/15(木) 01:10:07
>>463
んなこたーねえだろw
>>462みたいなことを聞いてくるやつには、
3Dのリソースを簡単に作れねえ以上、2Dゲームの方がまだ作りやすい。

>>462
今時2Dでも、DirectDrawは使うやついないとして、、
Direct3D+DirectInput+DirectMusic(DirectSound)じゃね?

465 名前:デフォルトの名無しさん :2006/06/15(木) 01:18:17
>>464
メタセコでも使えば一発で作れるじゃん>XFile
別にアニメーション(3D的な)しなくてもいいっしょ?
2Dだから単純なポリ板作ってテクスチャ貼り付けるだけだし。

466 名前:デフォルトの名無しさん :2006/06/15(木) 02:48:29
質問です。

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 が戻ってきた時点で
改めてリセットをかけることで、問題なく復元はできました。

とはいえ、これが本当に正しい復元方法なのかは判断つきかねるところです。

引き続き、どなたか詳しい方のアドバイスをいただけたらと思います。

468 名前:デフォルトの名無しさん :2006/06/15(木) 04:28:55
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)をつかっております

471 名前:デフォルトの名無しさん :2006/06/15(木) 16:00:00
>469
どうでもいいことだけど
ここでのorzって挫折じゃなくてお辞儀の意味か?
礼というより土下座で謝ってるように見えるが。

472 名前:デフォルトの名無しさん :2006/06/15(木) 17:26:44
DirectX風に謝れよ

473 名前:デフォルトの名無しさん :2006/06/15(木) 19:27:10
D3DXorzLH()

474 名前:デフォルトの名無しさん :2006/06/15(木) 20:44:27
orz
三跪九叩頭の礼

475 名前:デフォルトの名無しさん :2006/06/15(木) 20:53:23
orzを使いたがるのは腐女子のようなセンスの人間
馴れ合いが好きで、鬱スレのウナギとかつまらないことに興じ、
同じ嗜好を持たない者がめについたら、罵倒でたたみ掛け
村八分にして喜ぶ。


476 名前:デフォルトの名無しさん :2006/06/15(木) 21:07:33
orzを使いたがるのは腐女子のようなセンスの人間
馴れ合いが好きで、鬱スレのウナギとかつまらないことに興じ、
同じ嗜好を持たない者がめについたら、罵倒でたたみ掛け
村八分にして喜ぶ。


477 名前:デフォルトの名無しさん :2006/06/15(木) 21:58:33
('A`)

478 名前:デフォルトの名無しさん :2006/06/15(木) 22:01:49
('A`)

479 名前:デフォルトの名無しさん :2006/06/15(木) 23:29:03
// 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

480 名前:デフォルトの名無しさん :2006/06/16(金) 02:13:27
VC++6.0使ってるんですけどDIRECTXSDKのバージョンによっては(最新?)
SDKが使えないようなことをどっかで見たようなきがするんですけど
最新のやつでも問題ないですか?MSのページ見たけどよくわからん

481 名前:デフォルトの名無しさん :2006/06/16(金) 02:17:05
わからんままでいいじゃん

482 名前:デフォルトの名無しさん :2006/06/16(金) 02:20:54
October 2004

483 名前:480 :2006/06/16(金) 02:52:59
>>482ありがと
それだとおけですよね?
あと今最新版のランタイム入れてるんですけど古いSDK入れてもおけ?

484 名前:デフォルトの名無しさん :2006/06/16(金) 03:20:46
<わからない五大理由>
1. 読まない ・・・説明書などを読まない。読む気などさらさらない。
2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。
5. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする

485 名前:デフォルトの名無しさん :2006/06/16(金) 08:13:05
次は質問スレで484みたいのを書く五大理由
480は態度で損しているが

486 名前:デフォルトの名無しさん :2006/06/16(金) 08:18:21
次は、質問スレを教えてクンスレと勘違してる>>485みたいな奴が発生する五大理由

487 名前:デフォルトの名無しさん :2006/06/16(金) 09:39:20
何言ってるんだ、質問スレは教えてクンスレだろw

488 名前:デフォルトの名無しさん :2006/06/16(金) 18:52:24
そりゃそうだよな。
しかも初心者質問スレだし。

489 名前:デフォルトの名無しさん :2006/06/17(土) 00:09:22
じゃあいつもの流れに復帰。

490 名前:デフォルトの名無しさん :2006/06/17(土) 02:32:29
お前ら彼女いる?

491 名前:デフォルトの名無しさん :2006/06/17(土) 02:39:54
いたけどリリースされてしまった。
慰めてくれ。

492 名前:デフォルトの名無しさん :2006/06/17(土) 03:05:09
>>490
童貞暦27年です

493 名前:デフォルトの名無しさん :2006/06/18(日) 14:53:58
質問です。XP、.NET 2005、DirectX 9.0c です。

Direct3D を用いて 2D の描画を行っています。
あるテクスチャの貼られた 2D ポリゴンがフェードアウトする
(α値が 255->0 に変化する)様子を描きたいのですが、いい方法が思いつきません。

1.CreateVertexBuffer 時に得られた頂点バッファのインターフェイスをロックし、ディフューズ色を書き換える
 →ロックに時間がかかってしまう
2.SetTextureStageState でα値の計算方法を、テクスチャの値×自分で計算した透明度に設定
 →「特定の値との乗算」という方法が見つからない
3.ライト/マテリアル/法線を FVF に追加し、ライティング処理を利用する
 →透明になるわけではないので、後ろが透けるわけではない

このような処理は、何を使って行うものなのでしょうか?
よろしくお願いします。


494 名前:デフォルトの名無しさん :2006/06/18(日) 14:59:57
三次元テクスチャを使えw

495 名前:493 :2006/06/18(日) 15:03:10
肝心なことを書き忘れていました。

2D ポリゴンと言うのは、FVF にD3DFVF_XYZRHW を指定しているということです。
そもそもライトは効きませんね・・・。

>>494
2D ポリゴンでは上手く行かないのでしょうか?

496 名前:デフォルトの名無しさん :2006/06/18(日) 16:42:58
DrawPrimitiveUP系でいいじゃん

497 名前:デフォルトの名無しさん :2006/06/18(日) 16:46:44
>>493
全部用意して切り替えるでFA

498 名前:デフォルトの名無しさん :2006/06/18(日) 18:18:19
>1.CreateVertexBuffer 時に得られた頂点バッファのインターフェイスをロックし、ディフューズ色を書き換える
> →ロックに時間がかかってしまう
どのくらい時間がかかったのか、測定条件と結果を言ってみ。

499 名前:デフォルトの名無しさん :2006/06/18(日) 18:25:14
だから、全部用意して切り替えるでいいじゃん。
α値やなんかは頂点シェーダで渡せばいいんじゃん。
頂点シェーダってのは別にハードでサポートしてなくても勝手に動かしてくれんだよ。
その辺は心配すんな。
ロックしてなにやらする必要も無いぞ。
俺は矩形の描画でも頂点バッファなんかいちいち弄らずにシェーダにマトリクス情報渡してサイズも確定させちゃうけどね。

500 名前:デフォルトの名無しさん :2006/06/18(日) 21:08:36
>>493
>1.CreateVertexBuffer 時に得られた頂点バッファのインターフェイスをロックし、ディフューズ色を書き換える
> →ロックに時間がかかってしまう
Lockに大して時間なんてかからない。
そんなにLockが嫌ならDrawPrimitiveUPを使う。

>2.SetTextureStageState でα値の計算方法を、テクスチャの値×自分で計算した透明度に設定
> →「特定の値との乗算」という方法が見つからない
D3DRS_TEXTUREFACTOR

>3.ライト/マテリアル/法線を FVF に追加し、ライティング処理を利用する
> →透明になるわけではないので、後ろが透けるわけではない
???
透明になるけど?


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.