【C++】 DirectX初心者質問スレ Part17 【C】at TECH
【C++】 DirectX初心者質問スレ Part17 【C】 - 暇つぶし2ch441:デフォルトの名無しさん
08/05/13 18:29:35
URLリンク(www.kohgakusha.co.jp)
これとかか?

ただし、DXUTの仕様はSDKのバージョンごとに変わってたりするんで
そのまま使えるかどうかはしらね

442:デフォルトの名無しさん
08/05/13 19:48:34
>>441

ありがとうございます。早速、購入してみます。

443:デフォルトの名無しさん
08/05/13 20:05:47
ID3DXLineって便利だけど
遅いの?

444:デフォルトの名無しさん
08/05/13 23:29:46
>>439
例えば、自分が固定パイプラインと同じ機能をシェーダ使って実装するとしてどうなる?って話じゃねぇの

445:デフォルトの名無しさん
08/05/14 23:19:22
シェーダの質問なのですが、
D3DFMT_R16FやD3DFMT_A8のように4要素のないテクスチャで
float4でtex2Dを取得した場合zやwはどんな値になるのでしょうか?
不定なのか、0が入るのか、前の値が保持されたままなのか、など教えていただけると助かります。

446:デフォルトの名無しさん
08/05/15 00:14:53
ドキュメントくらいはちゃんと嫁。
float4(0, 0, 0, 1)に対して渡された要素が上書きされるイメージ。

447:デフォルトの名無しさん
08/05/15 00:28:16
>>446
ありがとうございます。
ドキュメントの探し方が甘かったようです。申し訳ありません。

448:デフォルトの名無しさん
08/05/15 18:07:18
URLリンク(www.geocities.co.jp)
のexeを実行するとちゃんと動くんだけど、ソースをVC++2008で、コンパイルするとうまく動かない。

どうも、lpDIJoyDev->QueryInterface でfalseが返ってるみたいだけど、どこ修正すればよい?



449:デフォルトの名無しさん
08/05/15 19:39:30
>>448
PCに入ってるSDKのバージョンがそのソースの想定したSDKの
バージョンとあってないとコンパイルできないよ

450:デフォルトの名無しさん
08/05/15 20:46:38
ごめん、コンパイルは通るけどオリジナルと挙動が違うってこと。。

451:デフォルトの名無しさん
08/05/15 20:50:07
引数とかも違うだろ?

452:デフォルトの名無しさん
08/05/16 12:45:26
>>450
exeがなかったので違いがわからないけどソースからビルドしたやつも普通に動作してるよ
挙動が違うとは具体的に何が違うの

453:デフォルトの名無しさん
08/05/16 16:21:26
質問です。
Radeon 9600 series AGP 128MB(ドライバは URLリンク(ati.amd.com) )の環境にて、かなりおかしな挙動をしています。(OSはWindows2000)
何か情報ありませんでしょうか。
なお、その他の環境3個所くらいで試してみましたが、特に問題は見られませんでした。

・テクスチャーの表示がおかしい
256x256サイズのテクスチャーを10枚程度読み込んだあたりから、一部のテクスチャーの表示がおかしくなります。
テクスチャはD3DXCreateTextureFromFileで読んでいます。
テクスチャーが張られているモデルは、Xファイルで読み込んだ板ポリや、立方体などの単純なものです。

テクスチャーが張られているところが全体的にRGB(0,255,0)な感じに色になり、ほんのちょっとだけ元のテクスチャーの名残が見られるような、なんともバグった感じになります。
読み込むテクスチャーの数を減らすと、さっきバグって表示されていたものも綺麗に表示されます。
描画はプログラマブルシェーダを使わず、固定機能のものです。

・固定シェーダの挙動がおかしい
pDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_CURRENT);
pDev->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TEXTURE);
pDev->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
pDev->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_CURRENT);
pDev->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_TEXTURE);
pDev->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE);

と設定しているのですが、
pDev->SetTexture(0, NULL);
pDev->SetTexture(1, pTexture1);
としたとき、pTexture1の色が乗算されません。

pDev->SetTexture(0, pTexture0);
pDev->SetTexture(1, pTexture1);
ではきちんと両方の色が反映されるようです。

Radeon 9600は比較的新しいボードですし、むしろ超古いGeForce2MX400とかではまともに表示されます。何か原因が思い当たる方いらっしゃいますでしょうか。

454:デフォルトの名無しさん
08/05/16 16:37:56
伝説巨人RADEON

455:デフォルトの名無しさん
08/05/16 16:52:15
使い方がおかしい

456:デフォルトの名無しさん
08/05/16 17:01:16
>>455
どこか、>>453の中に使い方がおかしいことを示す情報があったでしょうか?
ご教示願えればありがたいです

457:デフォルトの名無しさん
08/05/16 17:14:54
ATIとnVIDIAの違いなんじゃね

458:デフォルトの名無しさん
08/05/16 17:43:47
>>453の追加情報です。

pIDirect3D9->CreateDevice(adapter, D3DDEVTYPE_REF, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, ¶m, &pDevice);
REFモードならバグりようがあるまい。と思って試してみようとしたのですが、
RADEON環境だとこの生成に失敗しました。

…RADEONというものは、思いのほかDirect3Dと相性が悪いのでしょうか?

459:デフォルトの名無しさん
08/05/16 19:18:00
>>453
SetTexture(0, NULL)してるのに、ステージ0でテクスチャ参照したら駄目だろう。

When a texture stage has D3DTSS_COLORARG1 equal to D3DTA_TEXTURE and
the texture pointer for the stage is NULL, this stage and all stages after it are not processed.

ARG1にD3DTA_TEXTUREをしておいて、テクスチャにNULLを設定するとそのステージ
以降が無効になる仕様だが、ARG2については何も書かれていないので未定義かも。

460:デフォルトの名無しさん
08/05/16 19:27:31
>>459
なるほど。ARG2がテクスチャ、かつNULLなときに後のテクスチャを参照してくれていたのは
GeForceが「たまたま」そう定義していたからであったわけですね。
気をつけます。

ちなみにそこに気をつけるよう改良してみましたが、1番目の「・テクスチャーの表示がおかしい」は相変わらずです。


461:デフォルトの名無しさん
08/05/16 20:04:30
>>460
それもなんかおかしいんじゃねぇの?w
基本的にnVidiaのボードは確かに未定義や
おかしな部分を変な風に救っちゃう設定だからRADEONで開発したほうがいいぜ
俺も開発のときにnVidiaのボード使ってて苦労した

462:デフォルトの名無しさん
08/05/16 20:16:19
>>459
知らなかったw

463:デフォルトの名無しさん
08/05/16 20:24:29
固定シェーダの恐怖だな
nVidiaとその他一部のボードでは動くんだけど
それ以外ではうんともすんとも言わないとかいう状況がありえる恐怖
(納期まで一週間とかいう状況ではじめてRADEONで動かして画面真っ黒になったときは血の気が引いたw)
HLSL使うようになってからそういう苦労は一応消えた

固定シェーダ止めるとこの辺はグッと楽になる

464:デフォルトの名無しさん
08/05/16 20:27:22
>(納期まで一週間とかいう状況ではじめてRADEONで動かして画面真っ黒になったときは血の気が引いたw) >
いやあああああああ

465:デフォルトの名無しさん
08/05/16 21:05:12
>>461
なるほど、とりあえずRADEONの購入は検討してみます

>>463
それは血の気が引きそうですね
私も公開するゲームを作っているので、なるべくRADEONにも対応したいところです
全てHLSLで書くのも検討していますが、「・テクスチャーの表示がおかしい」の件は、HLSLを使った描画の部分でも発症しているので困ったものです…

466:デフォルトの名無しさん
08/05/16 21:47:12
DirectXの勉強をはじめたいのですがもう固定機能パイプライン?は無視してHLSLとかプログラマブルな
シェーダーの勉強を始めたほうがいいのでしょうか?

467:デフォルトの名無しさん
08/05/16 21:55:47
自分の開発環境がプログラマブルシェーダに対応しているなら、そっちのみでいいと思われる。
VertexShaderは最低でもソフトウェアエミュレートができるし、
PixelShaderにしてももう対応していないグラボなんて存在しないと思っていい。




でもオンボは対応してねーんだよなぁ('A`)

468:466
08/05/16 21:58:34
MSのカンファレンスでもらったVS2008スタンダードにGe7900gs、OSはXPです。
固定機能はさすがにいいですかね。

469:466
08/05/16 21:59:39
ありがとうございました。

470:デフォルトの名無しさん
08/05/16 22:03:59
皆さんノートPCのことも考えてあげてください
もしくはこの世から全てのオンボードPCを破壊してくださいマジでもう

471:デフォルトの名無しさん
08/05/16 22:15:54
>>452
vc++2008ではまんまではコンパイルとおらなかったので、DInput.cppの

63行目 ret = DirectInput8Create(hinst,DIRECTINPUT_VERSION,IID_IDirectInput8,(void**)&lpDInput,NULL);
115行目 ret=lpDInput->EnumDevices(DI8DEVCLASS_GAMECTRL,InitJoystickInput,lpDInput,DIEDFL_ATTACHEDONLY);

に修正してコンパイルとおしたんだけど、126行目がfalseを返してくるの。


472:453
08/05/16 22:29:39
色々アドバイスありがとうございました。

>・固定シェーダの挙動がおかしい
この件ですが、RADEON上だけでなく、GF上でもREFモードだとうまく表示できませんでした。
>>459さんのアドバイスがクリーンヒットだったようで、気をつけながら直したところ、REFでも綺麗に表示されるようになりました。
RADEON上でpTexture1が乗算されるようになったようです。
(ただし、pTexuter1自体がバグっているため、乗算はされたものの、おかしなテクスチャが乗算されています)

今後はREFモードでちょくちょくチェックしながらやっていきます。


現在は、RADEON使いと連絡がとれなくなってしまったため、
「・テクスチャーの表示がおかしい」については後日また調査して、報告します。
どうしても治らない場合はまた相談させていただくかと思いますが、その時はよろしくお願いします。

473:デフォルトの名無しさん
08/05/16 22:36:29
お疲れさん
ちゃんと報告してくれる質問者は歓迎だぜ

474:デフォルトの名無しさん
08/05/16 23:08:47
ウホッここを覗いててよかった
ラデオン買ってくる

475:デフォルトの名無しさん
08/05/17 07:41:55
>>471
DIrectX 7以下じゃないと動かないよ
8にするなら全部書き換えろ

476:デフォルトの名無しさん
08/05/17 07:49:36
>>448
Dinput.hに
#define DIRECTINPUT_VERSION 0x0700
を追加


477:デフォルトの名無しさん
08/05/17 20:09:42
関係ないけど、DirectInputってウイルスバスターが不正変更で~って怒るとない?
お兄さんたちはどうしてるのかな?

478:デフォルトの名無しさん
08/05/17 20:12:54
あ、あれってDirectInputのせいなんだ。。。

僕の作ったソフトも怒られるから気になってたけど。。。

479:デフォルトの名無しさん
08/05/18 16:32:53
ウイルスバスターはDirectInput使うと怒るのね
友人にテストしてもらったら
「不正な変更とか出る ウイルスだろこれ?」
とか言われたお

ネットワーク対応ゲームでも作ろうかと思うんだが、
DirectPlay使うのとWinSock使うのとどっちがいいんだろ
DirectPlyaはWinSockに比べるとダメだという話をよく聞くけど
どこがどうだめだかよくわかんね
手軽に実装するならDirectPlayのほうが楽そうにも感じる
そこら辺詳しい人いませんか?

480:デフォルトの名無しさん
08/05/18 17:25:02
あんま詳しくないが、TCP使えないらしいお。
そういった制限があるから、やっぱ「お手軽通信」なイメージはある。
Winsockは、アプリケーションが使うTCP/IPの基本かつ全てだから
DirectPlayに出来てWinsockに出来ないことはない。
そういう意味だとオモ<Winsockに比べるとダメ

本当にTCPが使えないのなら、オンラインRPGには無理なだ。

481:デフォルトの名無しさん
08/05/18 18:00:21
今右ドラッグで3Dオブジェクトを回転させるのをやっていて、とりあえず
D3DXQuaternionRotationYawPitchRoll(&q,マウスのX変移,マウスのY変移,0);
とやってそれっぽい動きにはなってるんですが、どうもメタセコとかと操作感が違うんですよね。
ドラッグ開始時にXYの回転軸を作って、それに対する回転てやりたいんですが
何使ったらいいですか?

482:デフォルトの名無しさん
08/05/18 18:11:10
>>481
RotationYawPitchRollは角度が非常に小さければ任意軸周りの回転に
近い動きをするが、本来は全く違うもの。
マウスの移動量とZ軸で外積を取って、その軸周りの回転を使う。

483:デフォルトの名無しさん
08/05/18 18:20:19
>>482
親切にありがとうございます。意味はなんとなく分かるんですが、頭がついて来れなくて・・・
で、それはZ回転が起こらない場合にのみ使えるんですよね?多分(今回はそれでもいいですが)

484:デフォルトの名無しさん
08/05/18 19:57:07
>>479
色んな通信に対応しすぎてて、初期化が遅いのが一番の不満かな<Play
といってもPlay使ってたのはDirectX7の頃だから、改善されてるかもしれんが。

WinSockなら全ての通信を自分で把握できるのが強み。

485:デフォルトの名無しさん
08/05/18 20:27:13
>>484
DirectPlayは廃止されて久しい。
WinSockを叩くのが一番無難で楽しい。

486:デフォルトの名無しさん
08/05/18 20:32:54
WinSockだとセッションとかのゲーム的な概念がないから
そこらへんも全部自分で実装しなきゃならないんだよね?
WinSockのネットゲームで使えそうなお手ごろサンプルがあるといいんだけど

487:デフォルトの名無しさん
08/05/19 03:08:12
質問です。
DirectXを使って2Dゲームを作ってみようと思ってMSDNのリファレンスを見ていたところ、
CreateVertexBuffer()で頂点バッファを作ってLockとUnLockの中で頂点を処理していました。
ですが、別のホームページにはこれらを使わずに描画してるページもありました。

2Dの場合はCreateVertexBufferを使わずに描画したほうがいいのでしょうか?
それともCreateVertexBufferを使わなくても描画出来るという解釈でいいのでしょうか?

488:デフォルトの名無しさん
08/05/19 03:22:35
別にどういうやり方しても構わないよ。
ただ、
・頂点バッファをビデオメモリ上、AGPメモリ上に作ると描画が速い
・が、そういう場所に作った頂点バッファをLockするのは重い(ビデオカードの処理を止めるから)
・システムメモリ上に作った頂点バッファのロックなら遅くない(多分。)が、
 それは頂点バッファ作らない方法と同じこと。ビデオカードから遠いので描画は遅い

毎フレーム書き換えるような頂点配列なら、システムメモリに置くか
頂点バッファ使わずにやるのがのがいいんじゃないかと。
検証とかしたことないので間違ってたら指摘ヨロ

489:デフォルトの名無しさん
08/05/19 03:26:37
チラシの裏にでも書いてろ

490:487
08/05/19 03:43:14
>>488
なるほど、どっちの処理が重いかで使い分けるといいみたいですね。
ありがとうございます。

491:デフォルトの名無しさん
08/05/19 10:26:00
>>488
追加⇒DYNAMICとDISCARDフラグを組み合わせると描画もLockも速いがメモリを食う。

492:デフォルトの名無しさん
08/05/19 13:56:52
>>489
なるほど、チラシの裏ですね
よくわかりました

493:472
08/05/19 19:22:45
色々アドバイスいただいた>>453です。
>>459さんのアドバイスによる修正のおかげか、RADEON上でも綺麗に表示されたそうです。
ありがとうございました。

D3DTSS_COLORARG1 にTEXTURE
D3DTSS_COLORARG2 にCURRENT
なるべくこうするのが吉。というわけですね。
大抵の初心者サイトがこうしている一方、時々は逆も見かけるようです。
他の人が同じ失敗しませんように…。

494:デフォルトの名無しさん
08/05/19 19:35:23
チェックしたら見事に失敗してたわ
SDKをもう一回全部読み直したほうがいいかもなー・・・

495:デフォルトの名無しさん
08/05/19 20:06:53
演出について質問
キャラが地面に着地した際、演出として着地点のまわりに衝撃波を立てたいと思っています
例えるなら、牛乳の入ったコップに牛乳を一滴おとした時にできる、王冠のようなものです

こういう演出はどのようにして実装するのが良いでしょうか?
今まではボーンアニメまでしかやったことがないのですが、モーフィングという技術のほうがより良さそうな気がしています

496:デフォルトの名無しさん
08/05/19 23:56:15
>>495
スケーリングで十分

497:487
08/05/20 00:09:01
>>492
調べてみたら動的に確保したメモリを静的に確保したように見せるとのことだったんですが、
これはVRAMとAGPメモリに確保して同期させるという解釈でいいのでしょうか?

498:487
08/05/20 00:09:52
すいません>>492ではなく>>491でした

499:デフォルトの名無しさん
08/05/20 01:53:49
>>497
昔はそうなんだが、現在のVGAだと諸々の理由でシステムメモリを介したコピーを
行っているものが多いので、動的な頂点バッファはほとんど意味を成さなくなっている。
経験で言うならシステムメモリよりも頂点バッファを使う方がパフォーマンスが高くなる
傾向があるのは確かだが、大半は大した性能差があるわけでもないし、
そもそも適切に扱うためのフラグ設定が頂点バッファはわかりにくいので、
個人的にはシステムメモリ(DrawIndexPrimitiveUP等)で実装することをお勧めする。

2Dスプライトの実装なんぞDrawPrimitiveのバッチ処理さえしておけば
それ以上は深く考えんでも良いと思うぞ。

500:デフォルトの名無しさん
08/05/20 08:28:59
AGPメモリを使うか否かで動的なデータは速度に大差が出るぞ

501:デフォルトの名無しさん
08/05/20 12:44:39
非同期で処理させるかの違い

502:デフォルトの名無しさん
08/05/20 19:02:00
まあ、自分のゲームでやってみるのが一番
つーのは想定している状況によりけりって感じだから
なんでも使える汎用ルーチンなんて作ろうと考えないで状況に応じて対処したほ


503:487
08/05/20 20:53:38
>>499-502
2Dの処理にそこまで考える必要はないけど、
詳しく知りたい場合は自分のゲームで実装して調べたほうが早い、とのことなので、
時間に余裕があるときに調べてみたいと思います。
色々ありがとうございます!

504:デフォルトの名無しさん
08/05/20 21:17:01
環境にもよるんじゃないか

505:デフォルトの名無しさん
08/05/20 21:49:34
WinSockだとポート空けるのをユーザー側に頼まなければならないので
UPnP対応してるDirectPlayつかうことにしたぽ

506:デフォルトの名無しさん
08/05/20 22:42:13
UPnPの対応はDirectPlayに頼らなくても簡単に出来るぞ

507:デフォルトの名無しさん
08/05/20 22:55:18
>>506
URLリンク(www.bosuke.mine.nu)
これためしてみたけどルータがふるくてだめだった
しかしDirectPlayだとポート開放しなくても通信できる

もっといい方法があるならおしえてくださいませ

508:デフォルトの名無しさん
08/05/20 22:56:06
Direct3D9.0のデバイスロストからの復帰で
・D3DPOOL_DEFAULTのテクスチャ解放
・D3DXFONTのOnLostDevice()呼び出し     この2つは順番適当
・D3DXSpriteのOnLostDevice()呼び出し

   pDevice -> Reset(&Param);

・D3DXSpriteのOnResetDevice()呼び出し
・D3DPOOL_DEFAULTのテクスチャ確保
・D3DXFONTのOnResetDevice()呼び出し     この2つは順番適当
・レンダーステートの回復

てやってるんだけど、画面真っ暗です。これ以外に何やるんでしょう?
あと順番に決まりはあるんでしょうか?

509:デフォルトの名無しさん
08/05/20 23:03:40
>>508
確保したリソースの解放をちゃんとしましょう。
Debug Runtimeでエラーメッセージの確認をしましょう。

510:デフォルトの名無しさん
08/05/21 20:30:26
>>506
ひょっとして upnp.h とか使うの?
ネット探しても具体的なやりかたが乗ってるところがないのが困る

511:デフォルトの名無しさん
08/05/21 23:15:17
>>510
URLリンク(www.bosuke.mine.nu)
おもくそ有名なサイトがあるわけで
ぐぐろうよ

512:デフォルトの名無しさん
08/05/22 00:12:19
お前は空気読め

513:デフォルトの名無しさん
08/05/22 02:01:13
「頂点ベースの描画」という言葉の意味がよく分かりません
対になるものは何でしょうか?

514:デフォルトの名無しさん
08/05/22 16:48:56
ポリゴンで描画(3つの頂点)で描画と思ったらいいんじゃね?
ポリゴン2個で四角形になるお

515:513
08/05/22 16:53:09
>>514
知識不足ですみませんが、そうでない描画の方法があるのでしょうか?

516:デフォルトの名無しさん
08/05/22 16:56:14
つーか、「ポリゴンで描画で描画」ってなんだよ。

517:デフォルトの名無しさん
08/05/22 17:25:02
そもそも
「頂点ベースの描画」なんて聞いたことがない

518:デフォルトの名無しさん
08/05/22 17:28:55
>"ポリゴンで描画で描画"との一致はありません。
>"頂点ベースの描画"の検索結果 1 件中 1 - 1 件目 (0.14 秒)
>"頂点ベース" の検索結果 約 148 件中 1 - 10 件目 (0.24 秒)

519:デフォルトの名無しさん
08/05/22 17:59:10
頂点シェーダーでライト当てるかピクセルシェーダーでライト当てるかって事でないん?
そのくらいしかない気がするんだが。

520:デフォルトの名無しさん
08/05/22 19:50:11
>>513
どこで頂点ベースって聞いたんだよ?

>そうでない
DirectDrawのスプライト描画のことじゃね?

さいきんのゆとりはDirectX7以前を知らんのか

521:デフォルトの名無しさん
08/05/22 19:50:44
ポリゴンで描画の間違い

522:デフォルトの名無しさん
08/05/22 22:30:57
そもそもDirectXにスプライトなど存在しない

523:デフォルトの名無しさん
08/05/22 22:39:14
ジオメトリベースド
イメージベースド

524:508
08/05/22 23:22:56
バックバッファの解放と確保
ステンシルの解放と確保も付けたんですが、まだPresent(0,0,0,0)がD3DERR_DEVICELOSTを
出してきます。何が足りないんでしょうかT-T

525:デフォルトの名無しさん
08/05/22 23:27:27
それは作った本人にしかワカリマセン。

526:デフォルトの名無しさん
08/05/22 23:29:53
POOL以外で作ったテクスチャとか頂点とか全部削除する

527:デフォルトの名無しさん
08/05/22 23:32:30
>>526
StateBlockとかもだな。

EffecとかFontとかSpriteも中でStateBlock作ってるからロスト対策が要るけどなー

528:508
08/05/22 23:45:28
フロントバッファは何もしなくていいんでしょうか?StateBlockは作ってるつもり
はないんですが・・・何か他に暗黙的なものがあったら教えていただけないでしょうか?

529:デフォルトの名無しさん
08/05/22 23:52:57
スレ住人が超能力に目覚めるよりはソースを出す方が解決は早い思います。

530:デフォルトの名無しさん
08/05/22 23:53:04
D3DX~系のLostDevice()は全部やってる?

531:デフォルトの名無しさん
08/05/23 00:16:03
DX10で作ればおk

532:デフォルトの名無しさん
08/05/23 00:17:15
Resetしてないんだろwww

533:508
08/05/23 00:43:08
>>528ソースのみですか?関係ないクラスを除いた抜粋でいいですか?
>>530フォントとスプライトなら呼んでます。
>>532Resetからの返り値も出力してるので多分大丈夫だと思います・・・

534:デフォルトの名無しさん
08/05/23 00:53:32
ResetはPresenがD3DERR_DEVICELOST以外を返した後の話だから関係なくね?

535:508
08/05/23 00:58:54
URLリンク(ccfa.info)
なんかいろいろ言われそうで怖い・・・よろしくお願いします。

536:デフォルトの名無しさん
08/05/23 12:09:02
現在、大学3年でシェーダーの勉強をしています。
それで、データの可視化の研究をしてみたいと思うようになったのですが、シェーダーの出番ってありますか?
無駄になるのもなあと思っているのですが。
OpenGLも少し勉強したことはあったのですが、可視化の分野はどちらを使ったほうがいいでしょうか?
また、仮にシェーダーを使う場合、どのような研究のネタがあるでしょうか?

537:デフォルトの名無しさん
08/05/23 13:04:30
どう可視化したいのかも書かずに質問とな?

538:デフォルトの名無しさん
08/05/23 13:10:17
と言うか、綺麗に見せたきゃ使うような物だからあんまり意味なくね?

539:デフォルトの名無しさん
08/05/23 14:29:49
>>535
common.h無いいわれるお
できればプロジェクトもあげてほすぃ
デバッグしやすい

540:デフォルトの名無しさん
08/05/23 15:47:51
関係ないが Graphics::drawSprite のBegin End の対応がおかしい

541:508
08/05/23 19:03:13
>>539
URLリンク(ccfa.info)
プロジェクトはBCCのしかなかったので、ついてません。申し訳ないです。
>>540
多分治ってると思います(?
C++と窓とDirectX同時に勉強してたんで、拙いところがたくさんありますが

542:デフォルトの名無しさん
08/05/23 23:08:12
現在ブロック崩しを製作中なのですが、もし「20個あるブロックがなくなったら」という状況を表現するために下記のように打ったら、「error C2106: '=' : 左のオペランドが、左辺値になっていません」とエラーが出ました。
どうすればいいのでしょうか。

if(block1==0&&block2==0&&block3==0&&block4==0&&block5==0&&block6==0&&block7==0&&block8==0&&
block9==0&&block10==0&&block11=0&&block12==0&&block13==0&&block14==0&&block15==0&&
block16==0&&block17==0&&block18==0&&block19==0&&block20==0)

543:デフォルトの名無しさん
08/05/23 23:12:19
すいません、正式に言うと「ブロックがなくなったら」ではなく、「ブロック変数がゼロになったら」でしたね

544:デフォルトの名無しさん
08/05/23 23:25:17
block11=0

545:508
08/05/23 23:26:17
よくこの釣り間違い探しをやるな

546:デフォルトの名無しさん
08/05/23 23:26:42
>>544
intした名前が「block11」だったのがまずかったってことですか?

547:デフォルトの名無しさん
08/05/23 23:40:00
>>546
マジで言っているならプログラミングなんてやめて旅にでも出ることをお勧めしておく。

548:デフォルトの名無しさん
08/05/23 23:42:28
>>547
今気がつきました=が一つしかありませんでしたね
初歩的なミスでした

549:デフォルトの名無しさん
08/05/23 23:43:40
もっと根本的に変数使いすぎ
配列など、別のアプローチを考えれ

550:デフォルトの名無しさん
08/05/23 23:46:02
いやあ、恥ずかしいです…

551:デフォルトの名無しさん
08/05/23 23:48:11
配列はおろか、ブロックの数をカウントするカウンター作ったほうがいいだろ…。あとここDirectXスレ…

552:デフォルトの名無しさん
08/05/23 23:51:29
おっとここはDirectXスレだったな
釣られちまったぜ

553:デフォルトの名無しさん
08/05/24 01:25:59
>>545
誰もやってない悪寒。
少なくとも俺はソースがあまりにひどかったので1度動かして消した。

554:デフォルトの名無しさん
08/05/24 11:40:55
この前RADEONだと色々厳密という話しがでたので、RADEON買って来て試してみた
今まで遊びで作ってたほとんどのゲーム、まともにうごかねえw
色々見直そう

555:デフォルトの名無しさん
08/05/24 12:02:08
Radeon、Geforce両方をDebugRuntimeでチェックするのがベスト。
nVidiaのドライバーは空気を読見すぎるのが困る。
しいていうならタグが変でも一応見れちゃうIEと手厳しいネスケの違いみたいなもんか。

556:508
08/05/24 12:18:10
>>553
545のは直上の人に言った言葉です
ていうか、特に何がやばそうでしたか?

557:デフォルトの名無しさん
08/05/24 13:05:57
>>556
まずアプリの終了時にバックバッファ解放してないだろ。
Getしたものは全部Releaseしろ。

あとSDKいれてるならDebugRuntimeで試せ。
それなら終了時に解放してなかったりD3Dエラーが出たときにデバッガで落ちるようになる。

558:デフォルトの名無しさん
08/05/24 14:31:53
CComPtrマンセー

559:デフォルトの名無しさん
08/05/24 16:51:30
俺はこんな感じでやってるわ

class ICallbackDeviceReset
{
public:
ICallbackDeviceReset();// std::setでつくられたグローバルリストに登録
virtual ~ICallbackDeviceReset();// std::setでつくられたグローバルリストから解除

virtual OnLostDevice()=0;
virtual OnResetDevice()=0;
};

デバイスのロスト>リセット時に呼び出されたいクラスは、このクラスを継承するようにすれば
自動的に呼び出されるようになる。

560:508
08/05/24 16:59:16
>>557
バックバッファの解放とはGraphicsオブジェクトにセットしたポインタをリリースしろということでしょうか?
それならばGraphicsオブジェクト終了時に自動解放されています。
ところが、デバッグモードで見たらMemory still allocated! Alloc count = 94の文字がorz
しかもAllocIDが出ないので、何がまずいのか分かりませんでした・・・
CreateDeviceの際にパラメータに書いてあるバックバッファやステンシルバッファといった物は
明示的な解放はいらないですよね?

>>559std::setがstd::listなだけでまったく同じことしてます。

561:デフォルトの名無しさん
08/05/24 17:06:50
>>560
listに入ってないリソースを疑うか
listの処理そのものを疑え。

562:508
08/05/24 17:27:19
リリース忘れはどうやらスプライトのようでした・・・
これで先のエラーは出なくなったんですが、Ctrl+Del+Altを押した時に
Direct3D9: (ERROR) :Device is in an invalid state. Only Reset, TestCooperativeLevel or Release could be called
がひたすら出てしまいました。デバイスロストからの復帰に失敗してるんでしょうが、なにぶんメッセージの意味が分かりません

>>561どうやらlistが怪しいようです・・・。ここをもうちょい詰めてみます。

563:デフォルトの名無しさん
08/05/24 17:54:12
>>562
listだと、アドレスを登録する時に
・重複が怖い(コンストラクタでのみ自動登録されるなら心配ないが)
・解放時の検索速度が、setのほうが圧倒的に速い
って利点があるぜ。

ソース見ようとしたけど404だったんで突っ込んだアドバイスしてあげられないな。
もう一回UPする気ない?(スプライト修正版を)

564:デフォルトの名無しさん
08/05/24 17:54:58
なんか日本語があからさまにおかしいが、脳内補完してくれ。
setのほうがいいよってことで(;´Д`)

565:デフォルトの名無しさん
08/05/24 17:58:53
メッセージの意味は、

デバイスが不正な状態になってます。
この場合、Reset、TestCooperativeLevel、Releaseのどれかのメソッドしか呼び出せません。

つまり、まぁデバイスがロストしてるよと。復帰させるか、あきらめろと。

566:508
08/05/24 18:01:32
>>563
リストどうやら間違ってませんでした。
URLリンク(ccfa.info)
よろしくお願いします。

567:デフォルトの名無しさん
08/05/24 18:16:31
oggがどこで生成されるのか謎だからあくまで予測なんだが

デバイスを作成したスレッドと、デバイスをリセットしようとするスレッド。
違うスレッドになってね?
全部リソース解放してても、スレッドが違うと失敗するんだが。

568:デフォルトの名無しさん
08/05/24 18:26:22
すまん、oggの作成場所発見したわ。
同じスレッド上だな。

しかし綺麗なソースだな。
うちの部下どもに爪の垢を煎じて飲ませてやりたいわ

パッと見問題はなさそうな分、とりあえずD3D関連の生成物を全部カットしてリセットして、問題なければ一部だけ生成するようにしてリセットしてみて…
ってやっていくしかないなぁ

569:デフォルトの名無しさん
08/05/24 18:47:42

Graphics& GameWindow::getGraphics(){
if(device != NULL && g.target->target == NULL){
device->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&(g.target->target));
}
return g;
}

ここのバックバッファをReleaseしてないのが原因じゃねーか?

570:508
08/05/24 19:03:26
>>569できたお
ありがとうございました。

ところでテクスチャからサーフェイスをGetしていた場合Releaseの順番てどちらからでも問題ないですか?

571:デフォルトの名無しさん
08/05/24 19:07:54
作ったのと逆の順で解放するのが良い。
そうしなかった場合不具合が起きるかは未検証だが、プログラムでは逆順解放が基本。

サーフェイスは描画前に取得して、描画終わったらさっさとReleaseしちゃいな。
取得にほとんど時間かからないから。

572:デフォルトの名無しさん
08/05/24 19:42:45
CComPtrとか使えって言ってんだろ。初歩的なミスが綺麗さっぱりなくなるぜ?

573:508
08/05/24 19:50:08
>>572
CComPtrってデバイスロストでもリリースとかしてくれるんですか?
なんか話のポイントが違う気が・・・

574:デフォルトの名無しさん
08/05/24 19:50:52
>>572
確保しっぱなしだったから、結局はデバイスリセットの時に正しく解放できなかったと思うぜw

そういや508よ。
「ベース メンバ初期化リストで使用されました」
のワーニング出てたぞ。直しておけよ。

575:デフォルトの名無しさん
08/05/24 20:04:05
warningをちゃんと潰す、DebugRuntimeでエラーがない事を確認する、
nVidiaのドライバはATiに比べるとかなりエラーに甘いのでちゃんと
nVidiaとATiの両方で動作確認をしっかり行なう。

576:508
08/05/24 20:39:35
>>574マジすか・・・BCCでは出なかったのに、工夫してみます。
本当に親切にありがとうございました。ノシ


577:デフォルトの名無しさん
08/05/24 21:13:16
デバッグの警告レベルを最大にしたら
(WARN) :Ignoring redundant SetTextureStageState
が出まくるんだけど・・・
かといって、デフォルト値使われるのかと思ってコメントアウトしたら全然違う動作しやがる

578:デフォルトの名無しさん
08/05/24 21:42:26
同じのを何度も設定してるんでないの?
最大レベルだとどうでもいいwarningが大量にでるから1レベル下がいいよ。

579:デフォルトの名無しさん
08/05/24 21:50:56
あるねー>どうでもいいwarning
なんか最近のVCで昔ながらのstr~関数を使うだけで
警告出しやがるようになりやがったし
VC作った奴の感性がちょっとわからなくなった
リソースわけられないとかそっちの方をどうにかしてほしいのに
余計なもんばっかり増えていくな

580:577
08/05/24 21:52:09
何度も設定はしていないけど、
一番最初に描画される時にも出てるから、そこで警告出るんならデフォルト値使われてるのかな、と思ったんだけど、
ちゃんと設定しないときちんと描画されない。
余計な警告は無視する方が吉みたいですね

581:デフォルトの名無しさん
08/05/24 21:59:51
警告でウザイのは、例外を使ったときのだな。
わかって使ってるのに

582:デフォルトの名無しさん
08/05/24 22:25:58
>>580
それはデフォルト値が使われているという警告じゃなくて、
Aという値を前回セットしたにも関わらず、同じ値をセットしたときに起きる。
フレームをまたいでもチェックされる。

583:577
08/05/24 22:36:24
いやだから、一番初めにセットした時に出るってことは、デフォルト値とかぶってるんじゃないのか、
と思ってたってこと

584:デフォルトの名無しさん
08/05/25 00:22:38
DirectXで両面ポリゴンは、描画可能なのでしょうか?

585:デフォルトの名無しさん
08/05/25 00:26:38
可能です!

586:デフォルトの名無しさん
08/05/25 00:41:07
ありがと。
エクスポートがうまくいかなかったのかな…。

もしかして、なにか設定が必要ですか?

587:デフォルトの名無しさん
08/05/25 00:47:21
自己レスです。
LW使ってたのですが、付属プラグインは片面になってしまうそうで・・・。
LWからのエクスポートで、何か方法を知っていたら教えてください。

588:デフォルトの名無しさん
08/05/25 01:13:55
実行時のD3DのSetRenderState()の設定次第なんだが・・・

589:デフォルトの名無しさん
08/05/25 01:23:46
LWでダブルサイド指定じゃなく、
ちゃんと倍の頂点使って裏のポリゴンを作っておく

エクスポート時に、ダブルサイド指定のポリゴンを
裏ポリ用頂点を作ってくれるエクスポーターなんて知らんね…

UVやらマテリアルやら関係なく、ただ両面描画しれてば良いだけなら
>588の言う通り

590:デフォルトの名無しさん
08/05/25 01:45:51
とりあえずD3DRS_CULLMODE(ですよね?)を指定しておき、
あとで裏にポリゴンを作ろうと思います。
ありがとうございました。

591:デフォルトの名無しさん
08/05/25 06:32:23
Xファイルを出力、編集するソフトって何がありますか?

592:デフォルトの名無しさん
08/05/25 09:44:08
メタセコイア
有料版でもインポート・エクスポート以外は使える。
その.mqoをLEで読み込めば・・・・

593:デフォルトの名無しさん
08/05/25 10:23:25
現状、メタセコでモデル作成。POSERでBVH作成。LWで合成してXファイルで出力
ってやってるわ

594:デフォルトの名無しさん
08/05/25 11:26:51
DLL_APIってなんですか?DLLを作る命令?

595:デフォルトの名無しさん
08/05/25 12:04:04
>>594
マルチすなや。

596:デフォルトの名無しさん
08/05/25 16:40:33
デバイスロスト時ってもしかしてSetTextureStageStateで設定した情報も失われてる!?

597:デフォルトの名無しさん
08/05/25 18:53:43
Presentしたらステート必ずセットし直すか、ステートブロックでも使え。


598:デフォルトの名無しさん
08/05/25 18:57:10
Xファイルに出力したカメラのアニメーションを利用したいのですが、どうすればいいのでしょうか?

599:デフォルトの名無しさん
08/05/25 19:06:22
>>597
ステートブロックはデバイスロストしたら一緒にロストすんぞ。

>>598
どうもこうもアニメーション情報を読んで再生する。

600:デフォルトの名無しさん
08/05/28 03:43:28
フルスクリーンのときにスクリーンサイズを600×400にするとCreateDeviceに失敗し、
640×480などのサイズにすると成功するんですが、どういった理由でこうなるのですか?

LPDIRECT3D9 p_d3d;
D3DPRESENT_PARAMETERS d3dpp;
D3DDISPLAYMODE d3ddm;

p_d3d = Direct3DCreate9(D3D_SDK_VERSION);
m_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);

ZeroMemory(&m_D3Dpp, sizeof(D3DPRESENT_PARAMETERS));
d3dpp.BackBufferCount = 1;
m_D3Dpp.Windowed = TRUE;
m_D3Dpp.BackBufferFormat = d3ddm.Format;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
// ここまで同じ設定

d3dpp.BackBufferWidth = 600;
d3dpp.BackBufferHeight = 400;
// これをCreateDeviceに指定すると失敗する

d3dpp.BackBufferWidth = 640;
d3dpp.BackBufferHeight = 480;
// これをCreateDeviceに指定すると成功する

601:デフォルトの名無しさん
08/05/28 05:26:43
600x400のモードをデバイスがサポートしてないだけじゃないの?
関数の戻り値とか調べてください

602:デフォルトの名無しさん
08/05/28 08:55:42
600x400なんて画面モード、存在するのか?

603:デフォルトの名無しさん
08/05/28 12:36:49
>>600
グラフィックボードで使える解像度じゃないからだよ
EnumAdapterModes( )でそのデバイスで使える解像度を列挙できるからその中から選べ

604:デフォルトの名無しさん
08/05/28 17:09:35
>>602
PC-98時代の遺産だな。仕事で出会う確立はもはやレアだろ。

605:デフォルトの名無しさん
08/05/28 17:31:36
PC-98でも横は640だし・・・

606:604
08/05/28 17:54:34
をや??・・・640×400と見間違えた。

607:600
08/05/28 20:59:35
>>601-606
なるほど、使用出来る解像度の問題だったんですね。
ありがとうございます。

ついでに質問なんですが、解像度は現在のディスプレイの解像度を使ったほうがいいのでしょうか?
それとも各ディスプレイごとに使用出来る解像度を調べて、自分のプログラムにあった解像度を選んだほうがいいのでしょうか?


608:デフォルトの名無しさん
08/05/28 21:09:54
>>607
他のゲームを参考に汁
どっちのタイプもあるよ
自分の合う方法を探せ

609:デフォルトの名無しさん
08/05/28 21:18:53
320×240,640×480,800×600,1024×768のどれかなら、
必要な解像度を動作環境に明記しとけば大丈夫。
一般的な解像度はこの辺だからな。

610:デフォルトの名無しさん
08/05/28 21:21:45
そういや、2Dゲーは解像度固定が、3Dゲーは解像度可変が多いよな。

611:デフォルトの名無しさん
08/05/28 21:30:33
ポリゴンは解像度に依存しにくいからな

612:600
08/05/29 01:10:37
>>608-611
他のゲームの解像度と一般的な解像度と開発環境などと相談して決めるのがよさそうなので、
そこらへんを考慮しつつ可変か固定か決めてみたいと思います。
ありがとうございました。

613:デフォルトの名無しさん
08/05/29 12:25:43
>>609
320×240
↑はWindowsではぜんぜん一般的じゃないっぽ

614:デフォルトの名無しさん
08/05/29 12:37:57
320x240でスクリーンショット撮ってみた
URLリンク(neko-loader.net)


615:デフォルトの名無しさん
08/05/29 12:55:35
出来ないとはいってないってw
オンボードとかだとこけるやつが結構あるって話
無理に使う必要もないしね

616:デフォルトの名無しさん
08/05/29 12:56:04
>>614
快適にWindowsライフが過ごせそうですね

617:デフォルトの名無しさん
08/05/29 13:37:54
せっかくだからVisualStudioとかでやってほしかったぜ

618:デフォルトの名無しさん
08/05/29 14:14:49
320x240は画面プロパティからは選べなくても、内部的にサポートしてる場合が多いよ。
というか、サポートしてないのみたことないな…。
同人ゲームで恐縮だが、EFZという格闘ゲームがフルスク320x240固定なんだが、動作しないって人聞いた事ない

619:デフォルトの名無しさん
08/05/29 15:31:40
256色を使えないXPが無いのと同じだよな

620:デフォルトの名無しさん
08/05/29 15:43:50
>>618
ゲーム画面が320x240でも、
640x480で画面作って拡大して描画してる場合もあると思う。

グラフィックボードがしょぼくてソフトウェアレンダリングな同人が流行ってた頃、
このサポートはどこでもやってたような気がする。


621:デフォルトの名無しさん
08/05/29 17:32:40
URLリンク(www.tasofro.net)

[1832] 【技術サポート】 起動できません-

■親トピック/記事引用■

□投稿者/ ミステイク -(2007/01/03(Wed) 21:22:48)

はじめまして、本日EFZを買ったのですが、インストールした後、起動できませんでした。
起動させると、画面が真っ暗になって「320※240の解像度の設定に失敗しました」と表示されます。
どうすれば起動できるのでしょうか?
もしかすると、解像度に問題があるのかもしれませんが・・・。

OSはXp、解像度は最低でも800×600です。


EFZワロス

622:デフォルトの名無しさん
08/05/29 17:33:40
と思ってたが、640x480もサポートしないディスプレイとかあるのか。
引き延ばしできないノートとかでありそうだな。
レアすぎるから、
これは無視してもいいか。

623:デフォルトの名無しさん
08/05/29 17:43:20
>>609
明記が必須かも試練。w

624:デフォルトの名無しさん
08/05/29 18:11:11
>>622
EeePCがダメだった希ガス>640*480
あと、Pivot使っていると480*640は選択できるが640*480は選択できなくなる。

625:デフォルトの名無しさん
08/05/29 18:14:37
まぁ、最近のビデオチップはハードウェア的にはどんな解像度でもいけるが、
ドライバで制限してるだけなんだけどね。

626:デフォルトの名無しさん
08/05/29 18:41:46
サポートするのは、最近だけじゃねえよ

627:デフォルトの名無しさん
08/05/29 20:17:09
>>621
そうそうそうそう
解像度の最低ラインが800x600になったおかげで
昔のフルスクリーンのゲームが起動できなくなったのな
後、256色のゲームも起動不可

628:デフォルトの名無しさん
08/05/29 20:56:57
つかWindowsXPは640x480を正式サポート対象外にしてた憶えがあるぞ
あやふやだけど

629:デフォルトの名無しさん
08/05/30 10:24:06
うっそ、640x480+16色 はハードが絶対サポートしてるんじゃねーのかよw
ドライバいれてない時や、セーフモード時はどうなってんだそれ

630:デフォルトの名無しさん
08/05/30 10:26:33
winならMSの標準ドライバがインストールされてるしょ

631:デフォルトの名無しさん
08/05/30 11:20:48
XP以降は画面のプロパティで選択できないように制限かけてるだけで
640*480が使えないわけじゃないよ。8bitカラーだって使える。

632:デフォルトの名無しさん
08/05/30 12:18:09
>>627
間違っています。
以上。
はい次の方。

633:デフォルトの名無しさん
08/05/30 14:48:58
uzeeeeeeeeeee
結局、普通に640x480使えねーのがあるってことでいいじゃないか


634:デフォルトの名無しさん
08/05/30 14:55:07
あるの?

635:デフォルトの名無しさん
08/05/30 15:10:35
>>633
いや、ほんとに640x480が動かないPCなんてあるの?って話なんだが。
確たるソースある?

636:デフォルトの名無しさん
08/05/30 15:23:53
>>621

637:デフォルトの名無しさん
08/05/30 15:28:23
640x480の解像度にできない -OKWave
URLリンク(okwave.jp)

638:デフォルトの名無しさん
08/05/30 15:33:46
>>637
思いっきり9x系からXPに移ったPC初心者の書き込みじゃねーかw

639:デフォルトの名無しさん
08/05/30 15:35:56
DirectXで640x480に設定できないのかという話じゃないのかね

640:デフォルトの名無しさん
08/05/30 15:50:10
URLリンク(blog-imgs-40.fc2.com)

641:デフォルトの名無しさん
08/05/30 16:33:11
>>635
動く、動かない、という話じゃなくXPで640x480はサポートできないだろって話
WinXPの通常使用のシステム要件に、「800x600以上対応のVGAが必要」というのがある以上、
640x480でWinXPが動かなくても、XPで800x600未満が選択できないPCがあったとしても
「それは残念でした。640x480を使うので、Win2000とかで動かしてみてください」と
返すのが正常、という話。

642:デフォルトの名無しさん
08/05/30 17:36:35
>>641
意味わからん

「XPの動作には800x600以上対応のVGAが必要」であることと、
XPで640x480でフルスクリーンモードのデバイスが作れないこと。
これらはイコールではないでしょ。

「XP用のドライバでは640x480をサポートしなくても構いません」と規定されているのかという話をしてるの。

643:デフォルトの名無しさん
08/05/30 17:56:37
おまえらもういいだろうw

644:デフォルトの名無しさん
08/05/30 19:02:55
ところで本当は何について話していたの?

645:デフォルトの名無しさん
08/05/30 19:16:22
2Dゲーの解像度のサポートを何処までやるか?だったっけ?

646:デフォルトの名無しさん
08/05/30 21:04:30
古いエロゲーがどこまで動くかですよあやよさん

647:デフォルトの名無しさん
08/05/30 21:30:02
>>641
OS的に選べないようにしてるだけで、グラボのプロパティからなら
余裕で320x240とか選べるようになってる。

つまりDirectX利用可能。

648:デフォルトの名無しさん
08/05/30 21:44:09
ちょっとまて、俺、今普通に640x480解像度のDirectXつかったゲームしてるんだが、XP64bitで。

649:デフォルトの名無しさん
08/05/30 21:45:56
もういいよお前ら
自重しろ

650:デフォルトの名無しさん
08/05/30 21:53:47
>>635
インクレティブマシーンが動かなくなってる
まず256色に変更できない
ディスプレイはサポートしてる

いま、こんな状況

651:デフォルトの名無しさん
08/05/30 22:29:32
256はわかったから、640はどうなんだよ

652:デフォルトの名無しさん
08/05/30 23:49:00
>>650
だから、変更できないってなんだよ…
画面プロパティからは変更できないだろ、XPとか使ってれば。

ここはDirectXスレだっての

653:デフォルトの名無しさん
08/05/31 04:02:15
DirectXのスレで画面プロパティとかアホですか

654:デフォルトの名無しさん
08/05/31 04:37:37
>>652
だから、アプリの方でエラーがでちまって起動できないっての

655:デフォルトの名無しさん
08/05/31 06:30:42
256はわかったから、640はどうなんだよ!

656:デフォルトの名無しさん
08/05/31 06:36:12
>>651,655
うるせー

657:デフォルトの名無しさん
08/05/31 07:03:44
どうなんだと聞いている
答えろ

658:デフォルトの名無しさん
08/05/31 07:31:58
今日はここに沸いてるのか

659:デフォルトの名無しさん
08/05/31 10:06:09
640×480は256色しかサポートしてないってメーカーPCも昔あったな

まぁ結局の所解像度決め打ちにしてるなら動く解像度を動作環境内に書いておけってことだ。
Windowsなんてタダででもいろんな環境がありすぎるんだから全部テストなんて出来ん。
解像度くらいはプロパティから数値が見えるんだから環境限定でいいだろ。
グラボのDXサポート状況に比べればどうと言うことはない

660:デフォルトの名無しさん
08/05/31 10:08:28
フルスクリーンじゃなくて窓を開いて640×480の256色モードとかなら
XPもサポートしてるよ

Delphi Graphic Secretsという本を持っているんだがここでいろいろな
画面モードを実験している

661:デフォルトの名無しさん
08/05/31 22:20:22
LPD3DXSPRITE::DrawとLPDIRECT3DDEVICE9::DrawPrimitiveを両方使ってるのですが
前者より手前に後者を描画するにはどうすればいいですか?
描画の順番変えても必ずスプライトが前になってしまいます

662:デフォルトの名無しさん
08/05/31 22:23:07
Z

663:661
08/05/31 22:59:42
解決しました
位置のZ座標指定してもうまく処理されないと思ったらClearするときにZバッファ指定してなかっただけでした。
スプライトのZ座標は描画順だけらしいので交錯させる等複雑な描画をしたい時は完全にDrawPrimitiveの方に統一するしかないですか?

664:デフォルトの名無しさん
08/06/02 15:22:51
SetRenderState( D3DRS_ZENABLE , FALSE );
3DやらないならZバッファ使わんだろ
使ってもいいけど
使わん方が早いだろ
ついでにステンシルバッファも作らなくていいし
クリア時もZ消さなくていいし

665:デフォルトの名無しさん
08/06/02 20:16:47
>>664
Zテストの前から描画って2Dだとそんな効果ねぇっけ?

666:デフォルトの名無しさん
08/06/02 21:18:21
>>665
半透明や加算合成を一切使わず、抜き色で使うアルファ値も
エッジにAA効果を持たせない二値限定のスプライトが前面に多く
描画されると仮定できる状況なら、大幅にフィルレートを稼げるかもね

でなけりゃただの逆効果

667:デフォルトの名無しさん
08/06/03 01:02:57
>>666
α値が0%(不透過)のところだけZバッファだけ書き込んでなんとかならんかったっけ?

668:デフォルトの名無しさん
08/06/03 02:25:36
>>667
だからカラーキー目的で二値しかアルファ値使ってなけりゃ、アルファテストでいけるよ

でもエッジにアンチェリ(段階的なアルファ値の適用)使った時点で駄目だし、
当然アルファブレンドも使えないしで、2Dスプライトの描画において深度バッファで
速度が稼げるってのは結構レアケースだと思うよ

669:デフォルトの名無しさん
08/06/03 03:29:40
>>668
α値が1のときだけ~って処理いけんかったっけ?
まあ、いけたとしてもそんなに早くないか・・・

670:デフォルトの名無しさん
08/06/03 09:54:29
かなり重いピクセルシェーダーを使わない限り深度バッファでの高速化って恩恵ないだろ

671:デフォルトの名無しさん
08/06/03 13:21:37
もしくは、点を打つのが激重なグラボ

672:デフォルトの名無しさん
08/06/03 19:07:07
俺のディスプレイ
最低解像度800x600だった
でも、640x480できたお

673:デフォルトの名無しさん
08/06/03 20:03:27
>>671
なんだその存在価値のなさげなグラボは

674:デフォルトの名無しさん
08/06/04 00:19:51
自分で定義した頂点情報をDrawPrimitiveで表示するときや、
読み込んだXファイルをDrawSubSet()で表示するときなどにmaterialを設定しても描画に反映されません

D3DXCreateSphere()等で取得したメッシュをDrawSubSet()する場合は反映されます
materialを有効にするにはSetMaterial()以外に何か設定が必要なのでしょうか?

675:674
08/06/04 01:53:23
すいません、自己解決しました
D3DRS_DIFFUSEMATERIALSOURCEでマテリアルを参照するよう設定するのを忘れていました

676:デフォルトの名無しさん
08/06/04 19:25:36
ビルドは上手くいくのに実行するとすぐに終了されてしまいます
DirectX 9.0 SDK Update (Summer 2003)
に変えてからこうなりました
以前はSummer 2004を使っていたのですが不具合が色々あったので変えました

もしかしたらDirectXの設定がおかしいのかもしれませんわかる方いたら教えていただきたく思います

677:デフォルトの名無しさん
08/06/04 19:36:42
ブレークポイントしかけて、ステップ実行してみれば?

678:676
08/06/04 19:58:37
すみません
BCC Developerを使っているのですがブレークポイントの設定の仕方がわかりません…

679:デフォルトの名無しさん
08/06/04 20:01:10
>>678
VC(正規OSならタダでダウンロード可能)にしてやってみるか
printfをおきまくれ

680:676
08/06/04 20:10:01
VCは以前インストールしようとしたのですが
「サーバとの接続を再度確立します」と表示されてインストールできなかったのでやめました

自分で組んだプログラムではなく、サンプルをダウンロードして実行しようとしただけなのでコードに問題は無いと思います
Summer 2004で実行したときは大丈夫でしたが
Summer 2003に変えてからおかしくなりました

おそらくDirectXの設定を間違えていると思うのですが…


681:デフォルトの名無しさん
08/06/04 20:14:09
なんだバージョンダウンかよ
DX関数に必要なDLLがないんじゃね?

682:676
08/06/04 20:29:59
診断ツールではsystem.dlがないとありましたが
調べてみるとそこまで必要なものではないようでした

サンプルがSummer 2003を対称にしているのでDLLが足りないわけでもないと思います

683:デフォルトの名無しさん
08/06/04 20:34:51
>>680
IE7か割れOSだろ?

684:デフォルトの名無しさん
08/06/04 20:35:37
BCCはVCといろいろ違いがあるんで
BCC対応のライブラリを作るなり取ってくるなり手間が必要だったような気がするが

685:676
08/06/04 20:38:01
firefoxですがIE6が入ってます
OSはノートの正規品です

もともと古いPCなのでグラボの性能が低いのが原因かもしれませんが
Summer 2004で実行できたので…

686:デフォルトの名無しさん
08/06/04 20:57:38
>>685
いくつか関数の仕様が変わったもんがあったような気がするけどそこは直した?
ビルド通らないと思うけど

687:デフォルトの名無しさん
08/06/04 21:01:17
2004のサンプルを2003で動かそうとしてんだろ?
足りないもんとかあるんじゃね?
変なコントロールまわりなんかやけに9.0初版のときより豪勢になってるし
バージョンダウンで動かそうとするのなんて時間の無駄じゃね?

688:676
08/06/04 21:06:24
ビルドは通ります
エラーもありません

サンプルは2003用のです
2004からコンパネでDirectXが設定できなくなっていたので
2003にしました

689:デフォルトの名無しさん
08/06/04 21:21:30
最終奥義「クリーンインストール」

690:デフォルトの名無しさん
08/06/05 01:07:03
実行してすぐに落ちてるんなら普通に戻り値調べたらなんか出てそうだけどな
ちゃんとエラーチェックしてる?w

691:デフォルトの名無しさん
08/06/05 01:33:17
CとC++ってどう違うの?

692:デフォルトの名無しさん
08/06/05 01:33:50
CのインクリメントがC++

693:デフォルトの名無しさん
08/06/05 02:47:21
サンプルは環境によって落ちるものは落ちる、市販のゲームとは違うよ
サンプルの実行に拘る理由がよく分からない

694:デフォルトの名無しさん
08/06/05 03:34:04
質問です.
MPEG-2を取り扱うアプリケーションを作成したいんですが.
Directshow()で可能だとは思うんですが.
マニュアルはありますか?


695:デフォルトの名無しさん
08/06/05 03:38:32
>>693
言ってることも割れ臭いし
目的もなく2003だしで正直胡散臭いよねw

696:デフォルトの名無しさん
08/06/05 04:39:25
>>694
英語で良いならWindows SDKのドキュメントにある
日本語ならDirectX9 SDKの古いドキュメントがまだMSからダウンロードできたはず
場所の検索は自分でやってネ

697:デフォルトの名無しさん
08/06/05 19:21:39
DirecctX SDK(Mar 2008)とVS2005を使っています。
使っている参考書は
URLリンク(www.amazon.co.jp)
です。
この本ではDirectXのアプリケーションウイザードがVSに追加されているのですが、私の環境では追加されませんでした。
VS→SDKの順にインストールしました。
最近のバージョンだとDiretctXのアプリケーションウイザードは削除されたのでしょうか?

698:676
08/06/05 19:38:46
2004 Summerにしたら実行できました
2003にしようと思ったのもコンパネから設定変えたかっただけなのでこのまま2004でいこうと思います

DirectX勉強してるサイトのサンプルだったんで何とか実行したかったんです
原因はわかりませんでしたが色々とありがとうございました

699:デフォルトの名無しさん
08/06/05 19:47:21
>>697
結構前に廃止された
たぶん2004年のどっか

>>698
最近のは確かにコンパネに設定が追加されなくなったが
DirectX UtilitiesのなかにDirectX Control Panelってものがあってだな
昔コンパネから設定できたことと同じことができるんだぜ?

700:676
08/06/05 19:55:53
>>699
教えていただきありがとうございます
ただ、2004にはないようです
最新のはPCの性能的に難しそうなのでこのまま我慢することにします

ちなみに5年くらい前のpentiumⅢです

701:デフォルトの名無しさん
08/06/05 23:15:42
シェーダーを使ってトゥーンシェード(逆引き500に載ってる方法)をやろうとしているのですが、
一部を除き真っ黒になってしまいます。
どういう時にこうなるのでしょうか?

702:デフォルトの名無しさん
08/06/05 23:35:18
ごめんオレエスパーじゃないし

703:デフォルトの名無しさん
08/06/05 23:45:32
DirectPlayがサポート打ち切られたとかマジですか

704:デフォルトの名無しさん
08/06/05 23:56:33
DirectX SDKドキュメントのなんと1ページ目にDirectPlay is deprecatedの一文がッ!

705:デフォルトの名無しさん
08/06/06 00:00:11
2007年6月あたりのSDKがサポートラスト。
ランタイムは当分のこるだろうけど。

706:デフォルトの名無しさん
08/06/06 00:18:28
9cはもう終わりか?

10の時代なのか?

707:デフォルトの名無しさん
08/06/06 00:55:02
9cの時代のままです

708:デフォルトの名無しさん
08/06/06 03:23:42
10はVISTA限定という暴挙にMSが出たからね
おかげで10の普及は相当に遅れるだろうね

709:デフォルトの名無しさん
08/06/06 20:22:26
XPみたいに皆にブーブー文句言われながら8年後位には普及してるよ

710:デフォルトの名無しさん
08/06/06 20:28:15
そう思っていた時期がMeにもありました

711:デフォルトの名無しさん
08/06/06 20:30:34
細かいバージョンを見れば、MSは失敗作をけっこう出してるよ
そしてすぐに無かったことにしている
SEとかCEとか3.0とかMMCとか、NTとか
Vistaもそんな感じ

712:デフォルトの名無しさん
08/06/06 20:34:44
そりゃXPよりブーブーいうだろ
基本的に全てのアプリはDirectXで組んでくださいっていうスタンスなんだから

713:デフォルトの名無しさん
08/06/06 20:38:04
              __
           ,...-‐:"´:.:.::.:.::.:.``:‐,,、
      ,.-..,、/:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:`、  _
     /:.:.:./:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:';;´::.:.l
    l:.:.:.:.:.l:.:.:.:.:.:.:.:.:.:/|:.:.:.:.:.:.:.:.::l、:.:.:.:.::.:.:.:.:l:.:.:.::|
.    |:.:.:.:.:l:.:.:.:.:.:.:.::.::/ |:.;:.:.:.:.:.:.;l:l l:.::l;:.:.:.:.:.:l:.:.:.:;l,
    |:.:.:.:.:.|:.:.:.:.:.::l:.:/ |:|.l:.:.:::.:.:l|l  |:.:ll:.:.:::.::.ll:.:.:.::|i
.   |:.:.:.:.:l|:.:.:.::.::l.|/` 、|l l:.:::./l _,,.-l:j´l:.:.:.:.:| l:.:.:.:lii
   l:.:.:.::.:l i/l:.:.:l |l‐ェ-ュ,` l:://´ェ--,-,.l:.:.:lヽ l:.:.::.l.ii
.   l:.:.:.:.:;l l (l:.:.:.lヽゝ_ノ  '"  ゝ_ノノ.l:.::l,l l .|;:.:.:.l.ij 
   l:.:.:.::.lij `ゞ::.:l ,、,       ∧/l:.:.l/ j|:.:.:.:l.ii
.  |:.:.:.:.:|.ii   ';:.:l、     '   .  ,l::/   l.l:.:.:.l.i|
.  |:.:.::;.;| ii   ヾl >、.   0   , イl:/、   | |:.:.:.l li
.  |:.:.:.|i| ji,.-ィ'´l `l ` ‐-‐ '´  l  l``l‐-l、|:.:.:.l ij
  |:.:.:.:|i|'´/ l  ヽ `、      /  /  l  .l |:.:.:.| i|
 すとーっぷ。>>712は素早く変な空気を作るねぇ…
 >>709より不安な子を見つけたよ。

714:デフォルトの名無しさん
08/06/07 02:02:40
DX9、C++でのテクスチャに関する質問です。
テクスチャのクラス(CTexture)を作り、コンストラクタに画像ファイルのパスを渡してクラス内でテクスチャ(Texture)を生成しています。
CTextureのデストラクタでTextureを削除するようにし(delete Texture)、メモリの解放を試みているのですが
その状態でCTexture* で作ったオブジェクトを削除すると、ヒープが壊れているというエラーが出ます。
多重deleteでエラーが出ることは調べてわかったのですが、
if(Texture) delete Texture;
としているにも関わらずエラーが出るので困っています。
どのようにしてテクスチャが占有したメモリを解放すればよいのでしょうか?

715:デフォルトの名無しさん
08/06/07 02:18:42
>>714
見事にスレ違いだ。
そして君のやりたいことは多分こうだ。

if (Texture) { delete Texture; Texture = NULL; }

716:デフォルトの名無しさん
08/06/07 02:40:27
>>715
できました、ありがとうございます!!そしてごめんなさいでしたァ!!

717:デフォルトの名無しさん
08/06/07 05:40:52
delete Texture;
Texture = NULL;

これでおk
delete NULL;は合法
ま、どのみちスレチ

718:デフォルトの名無しさん
08/06/07 12:22:05
URLリンク(www.h2.dion.ne.jp)
のサンプルプログラムを参考にお勉強しているのですが
画面の頂点情報を動的に変えるために
頂点バッファを確保する箇所

VOID* pVertices;
if( FAILED( g_pVB->Lock( 0, sizeof(g_Vertices), (BYTE**)&pVertices, 0 ) ) )
return E_FAIL;
memcpy( pVertices, g_Vertices, sizeof(g_Vertices) );
g_pVB->Unlock();

を処理で何回も経由させる場合
以前に確保したメモリはどのように解放してあげれば良いのでしょうか?
よろしくお願い致します。

719:デフォルトの名無しさん
08/06/07 12:33:41
確保も何もそれはロックしてるだけだと思うが・・・。
あと頻繁にロックするならDYNAMICで作ってDISCARDでロックしろ

720:デフォルトの名無しさん
08/06/07 12:53:13
なるほど、メモリのロックという概念をよく分かってませんでした
動的に確保してるわけでは無いんですね
同じところに何度も上書きしてる感じなのかな?
DYNAMIC と DISCARD は調べてみます
ありがとうございました

721:デフォルトの名無しさん
08/06/07 14:07:06
Direct3DのX-ファイルとテクスチャに関しての質問なんですが。
Xファイルのモデルを作って、それにプログラムでテクスチャ座標を設定して一つのアイテムを作成するのではなく。
モデリングソフトでモデルを作ってる段階で、視覚的にテクスチャを設定して、その情報が入ったXファイルとテクスチャを読みこませて
テクスチャ座標をいちいち設定しなくてもアイテムを表示させたりって出来ないんですかね?

なんだか大体の本はモデルの読み込みと表示は説明してても、モデルの作成からテクスチャの設定部分が余り説明されてないので分かり辛い…
DirectXで使うことを前提とした3Dの本とかってないですかね?

長々と読み辛い文章スマソ。

722:デフォルトの名無しさん
08/06/07 15:58:36
メタセコイアとかで普通にやればそうなると思うんだけど

723:デフォルトの名無しさん
08/06/07 16:02:06
>>721
キミが求めている情報を知りたいのならプログラムの本ではなくデザインの本を買うべきだよ。
DirectXだのOpenGLだと自前レンダラーだの関係なくそれはグラフィックデータの話だ。

724:デフォルトの名無しさん
08/06/07 16:28:31
>>721
普通にモデリングソフト触ればわかるだろが

ちなみにXファイルの中にマテリアルってもんがあって
そのなかにたくさんテクスチャ設定できるようになってるじゃん

構造でいうと

Xファイルx1
  メッシュxN
   マテリアルx1
     テクスチャx1
   モデルのUVx1

な感じになってるのか?(バンプ(マルチテクスチャ2枚以上考慮外)とか考えないと)
Xファイル1つにメッシュがたくさんあって
メッシュ1つにつきマテリアルとUVが1つずつあって
マテリアル1つにつきテクスチャが1つあると・・・

だから、Xファイル1つにテクスチャは複数ある構造がいまのXファイルなわけよ

725:デフォルトの名無しさん
08/06/07 16:38:42
メッシュに対するマテリアルの数に制限はないぞ

726:デフォルトの名無しさん
08/06/07 16:45:35
>>725
そうだっけ?
あーでもそうなってる気もするな

でも実用性なくね?
どの頂点がどのマテリアルか決定しなきゃいけないから
読み込むときにマテリアル単位でメッシュわけなきゃいけないな
この辺はモデリングソフト次第って感じ?

727:デフォルトの名無しさん
08/06/07 17:12:08
モデリングの段階でテクスチャやマテリアル毎に
わざわざメッシュを分けて作る方が現実的じゃないだろ。

実際D3DXMeshでも属性テーブルって形式でマテリアル毎に分割して描画するようになってる。


728:デフォルトの名無しさん
08/06/07 17:25:37
XFileに組み込んだマテリアルやテクスチャって1回XFileから読み込んで
デバイスにセットする方法しかないの?

729:デフォルトの名無しさん
08/06/07 18:27:13
デバイスにセットしないでどうやってレンダリングするのかと

730:デフォルトの名無しさん
08/06/07 18:50:41
>>727
メッシュ1つのマテリアル毎にテクスチャが違うって状況か?
あんまり違いがないならメッシュ1つに付きテクスチャ1枚な
俺の経験だとそんなモデルは重過ぎて動かねぇ

まあ、いまソースみたら俺もできるように組んであるけどなw
スキンメッシュでかなり苦労してた記述がみられるw

スキンメッシュのデータはマテリアルごと描画できるデータになってねぇのなw
抜けてんだな>Xファイルの担当者

731:デフォルトの名無しさん
08/06/07 19:00:24
>>730
何を言ってるかわからねえがスキンメッシュだろうなかろうが同じように描画できるが・・・。
顔の表情とかをテクスチャ差し替えでやろうと思ったら顔だけテクスチャ別にするだろjk

732:デフォルトの名無しさん
08/06/07 19:31:24
>>731
ボーンと頂点を結びつけるインデックスがそうはなってないと思ったが

>>731
メッシュで分けちゃってるな俺んとこのデザイナさん
もちろんプログラムではなんでもできるようにしてあるが

733:デフォルトの名無しさん
08/06/07 20:42:08
>>731
インデックスとマテリアルは関係ないじゃろ。
最終的にはポリゴン1つ1つにマテリアルのインデックスが振られているんだから
それを使ってマテリアル毎に分解して再構成するだけ。
っていうかD3DXで読み込めば全部やってくれるけんど。

734:デフォルトの名無しさん
08/06/07 20:42:37
>>733
>>731じゃねえ>>732だ。

735:デフォルトの名無しさん
08/06/07 21:14:17
>>733
>それを使ってマテリアル毎に分解して再構成するだけ
この作業が面倒臭いって話だな
インデックスがメッシュごとだから、自前で読み込むときは
1回マテリアルごとに直す必要があるな

736:デフォルトの名無しさん
08/06/07 22:22:43
DirectX End-User Runtime Web Installer
URLリンク(www.microsoft.com)
DirectX End-User Runtimes (June 2008)
URLリンク(www.microsoft.com)
DirectX Software Development Kit
URLリンク(www.microsoft.com)


737:デフォルトの名無しさん
08/06/07 22:52:14
>>736
そんなの貼っても割れ厨にはどうせ見れないぞw

738:デフォルトの名無しさん
08/06/07 22:54:40


739:デフォルトの名無しさん
08/06/07 22:59:26
ああ、そういう事か。
犯罪者の都合は考慮しないよ。

740:デフォルトの名無しさん
08/06/07 23:07:03
>>738
ランタイムのウェブインストーラーや開発キット、ヘルプなんかは
ウィンドウズの正規OSでないと落とせなくなった
なのでたまにこのスレで「落とせません」とか「見れません」とか
「わかりません」とかいう奴はほぼすべて割れ厨

741:デフォルトの名無しさん
08/06/07 23:11:28
PC買えばOS付いてくるのに割れ厨って意外と多いのな

742:デフォルトの名無しさん
08/06/08 04:24:44
オンラインゲームをやってるんですが
directxを前のverに戻したらパフォーマンスって下がりますか?

743:デフォルトの名無しさん
08/06/08 04:51:37


744:デフォルトの名無しさん
08/06/08 15:05:13
安全に Release メソッドを呼ぶマクロとして
SAFE_RELEASE のようなものを見かけますが、

// safe release
#define RELEASE(p) ( (p) ? ( (p)->Release(), (p)=NULL ) : (0) )

このマクロで何か問題ありますか?
参照を使った関数だと BCC に注意されたので

745:デフォルトの名無しさん
08/06/08 16:17:37
>>744
翻訳しないで原文ママのエラーメッセージを。

746:デフォルトの名無しさん
08/06/08 17:35:36
DirectShowを使ってGUIのメディアプレイヤーを作っているのですが、
IMediaSeeking::GetDurationで再生時間を取得すると、
3分33秒より長いファイルはオーバーフローして負の値になってしまいます。
IMediaPosition::get_Durationで取得しようとすると、E_NOTIMPL(実装されていない)が帰ってきます。
3分33秒より長いファイルの再生時間を取得するにはどうすればいいのでしょうか?

開発環境はVisual Studio 2005 Pro、言語はCです。

747:デフォルトの名無しさん
08/06/08 17:37:54
最小のコードくらい出せカス

748:デフォルトの名無しさん
08/06/08 17:38:00
CComPtr使いなさい

749:746
08/06/08 17:49:53
>>747
IGraphBuilder *pGraph;
IMediaControl *pMediaControl;
IMediaSeeking *pSeek;
IMediaPosition *pMediaPosition;
REFTIME length;
REFERENCE_TIME TotalTime;

CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC,
   IID_IGraphBuilder, (void **)&pGraph);
pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
pGraph->QueryInterface(IID_IMediaSeeking, (void **)&pSeek);
pGraph->QueryInterface(IID_IMediaPosition, (void **)&pMediaPosition);

pGraph->RenderFile(FileName, NULL);

pMediaPosition->get_Duration(&length);
pSeek->GetDuration(&TotalTime);

こんな感じです。

750:デフォルトの名無しさん
08/06/08 20:43:53
REFERENCE_TIME は普通に使ってる分にはオーバーフローしないが
どこかで int にキャストされてるんじゃね
SetTimeFormat 指定しておいたほうがいいんじゃねえ

751:デフォルトの名無しさん
08/06/08 23:34:30
DirectMusicを最近扱っているのですが、
GetGlobalParam(GUID_PerfMasterVolume, reinterpret_cast<void*>(&V), sizeof(V))で
何故かE_INVALIDARGが返ってきて音量の取得ができません。
不正な引数とありますが、どれが不正な引数なのでしょうか?(Vはlong型です)

ちなみに、この処理を行う前にパフォーマンスの作成、パフォーマンスとシンセサイザーの初期化、
ローダーの作成を行っています。

752:デフォルトの名無しさん
08/06/08 23:41:48
>>751
msdnによると以下のようにあるけど、SetGlobalParamは使用済み?

>SetGlobalParam が rguidType について一度も呼び出されたことがない場合、このパフォーマンスが現在処理している
>グローバル データ リストの中に、rguidType がない可能性がある。その場合、このメソッドは E_INVALIDARG を返す。
>つまり、どのパラメータにも、GetGlobalParam を使って取得できるデフォルト値があると想定しないこと。



753:デフォルトの名無しさん
08/06/08 23:47:46
質問です
URLリンク(richa850.hp.infoseek.co.jp)
ここを参考に、後述のプログラムを書いたのですが、少なくともRADEON9600SEで画面がおかしくなります。
正しい方法はどうやればいいのでしょうか?
・APIリファレンスを読んだところ、MultiSampleTypeなどは以前のものと一緒でなければならないとあったので、上記ページでは決め撃ちになっているのを修正しました
・画面がおかしくなるを具体的に言うと、テクスチャが壊れていたり(正しいテクスチャの一部が緑や白のペンキでラクガキでもされたように塗りつぶされてる)、まったく描画されなかったりです
・old.Widthが中途半端な値(672とか)だったりすると、OSごと巻き込んで落ちます。(PC再起動がかかります)


D3DSURFACE_DESC old;
CComPtr< IDirect3DSurface9 > pCurrentDepthStencil;
pDev->GetDepthStencilSurface(&pCurrentDepthStencil);
pCurrentDepthStencil->GetDesc(&old);

//  新しく作ったテクスチャーの大きさと、現在の深度ステンシルの大きさを比較.
if ((old.Width < descNewTexture.Width) || (old.Height < descNewTexture.Height))
{
  // 深度ステンシルを作り直す。
  CComPtr< IDirect3DSurface9 > pNewDepthStencil;
  pDev->CreateDepthStencilSurface
  (
    __max(descNewTexture.Width, old.Width),
    __max(descNewTexture.Height, old.Height),
    old.Format, old.MultiSampleType, old.MultiSampleQuality, TRUE, &pNewDepthStencil, NULL
  );
  pDev->SetDepthStencilSurface(pNewDepthStencil);
}
// 上記を行なっただけではまだ問題はおこらず、下記を行なうと発症します。
// 上記だけ、もしくは下記だけだと問題はおきません。
pDev->GetSwapChain(0, &pSwapChain)
pSwapChain->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &pRenderTarget);
pDev->SetRenderTarget(0, pRenderTarget);

754:デフォルトの名無しさん
08/06/08 23:56:19
>>752
ありがとうございます、使用しておりませんでしたorz
デフォルト値がないのですね、なぜこんな仕様になっているのやら…orz

755:デフォルトの名無しさん
08/06/09 08:10:40
変数でも何でもとりあえず初期化しやがれとしか言い様が無い

756:デフォルトの名無しさん
08/06/11 18:45:36
Ver9あたりからボタンとかテキストボックスのような
コントロールのようなものが使えるようになってるみたいなんだが
あれってなんて名前でしょうか?

使い方書いてあるHP検索したいわけだが
なんて検索したらいいかわからんのです


757:デフォルトの名無しさん
08/06/12 01:16:45
DXUT

758:デフォルトの名無しさん
08/06/12 19:35:52
dxutに未来はあるのでしょうか?

759:デフォルトの名無しさん
08/06/12 19:50:35
モデルの、パーツだけ別のモデルに差し替えることって
なんという言葉でしたっけ

760:デフォルトの名無しさん
08/06/13 09:36:07
void PartsDakeSashikae_to_OtherModel(void) { return; }

761:デフォルトの名無しさん
08/06/13 11:24:56
#define PDtoOM PartsDakeSashikae_to_OtherModel
PDtoOM();

762:デフォルトの名無しさん
08/06/13 14:05:08
>>760-761
面白いと思ってやってるのか?

763:デフォルトの名無しさん
08/06/13 16:35:41
自前の画像を使ってボタンを作るとき、レスポンス(押しっぱなし)
の頻度をループ数とタイマーのどちらで制御すべきだと思いますか?

764:デフォルトの名無しさん
08/06/13 16:48:27
タイマー
ループにして何か良いこと有るの?

765:デフォルトの名無しさん
08/06/13 17:38:24
ループだとFPSに依存するから怖いよ

766:763
08/06/14 03:46:37
thx
やっぱりそうなんだ。
処理落ちすることって前提なのね。

767:デフォルトの名無しさん
08/06/14 04:33:41
メッセージで処理しろよ。つーかwinプログラミング覚えろよ。

768:デフォルトの名無しさん
08/06/14 10:52:37
軽いゲームならfps依存でかまわんと思うよ。
ただ、その処理をカウンタで実装したところで
タイマーと比べて簡単になるとは思わんが。

769:767
08/06/14 20:46:38
>>767
プロシージャのタイマーより
クラス内でtimeGetTime()使ったほうがいいだろ?

770:デフォルトの名無しさん
08/06/14 20:56:25
変な人がおる・・・

771:デフォルトの名無しさん
08/06/16 21:19:24
IDirect3DBaseTexture9から画像サイズって取れますか?
IDirect3DTexture9じゃないです

772:デフォルトの名無しさん
08/06/16 21:41:00
取れないよ。
取れないけど・・・どういう状況でその要求が出てくるんだ?
まともな設計してりゃありえないと思うんだが。

773:デフォルトの名無しさん
08/06/16 22:01:16
シェーダークラスで
GetTextureで0のテクスチャの幅と高さを
シェーダーに渡したかったのです。

Textureは、普通のテクスチャだったり、RENDER_TARGETだったりするし、
サイズを別に持たせたくなかった(メモリけちった)のです
無理っぽいので、別個に渡すようにします。


774:デフォルトの名無しさん
08/06/16 22:24:40
あぁ、GetTextureからという話ならIDirect3DResource9::GetTypeで判別して
各継承クラスにキャストすりゃいいだけだよ。


775:デフォルトの名無しさん
08/06/16 22:44:20
普通のテクスチャもRENDER_TARGETも同じIDirect3DTexture9だとおもうけんど

776:デフォルトの名無しさん
08/06/16 23:35:37
ボ、ボリュームテクスチャも作るつもりだもん

777:デフォルトの名無しさん
08/06/16 23:44:20
お前かわいいな
ちょっとこっち来いよ

778:デフォルトの名無しさん
08/06/18 16:26:38
LPDIRECT3DDEVICE9から
ライトのポジションは、GetLightから取れるのですが、
カメラのポジション取得は、できるのでしょうか?
無理ですか?



779:デフォルトの名無しさん
08/06/18 22:23:47
カメラのポジションも当然取得できる。
つか出来ないわけねーだろ。

780:デフォルトの名無しさん
08/06/18 23:08:03
カメラの「位置じゃなくビュー行列が取れるだけだから
そっからカメラの位置は計算しないといかんけどな

781:デフォルトの名無しさん
08/06/18 23:16:51


782:デフォルトの名無しさん
08/06/19 03:55:17
やっぱ、シェーダでカメラの位置が必要になるので
カメラ行列生成情報は、グローバルで持っておくべき?
あと、ビルボード行列も

783:デフォルトの名無しさん
08/06/19 04:27:29
>>782
同じことで悩んでる人発見
カメラのクラスってどこに配置すればいいんでしょうね


784:デフォルトの名無しさん
08/06/19 10:01:29
カメラを管理するクラスをワールドを管理するクラスが持つだろJK

785:デフォルトの名無しさん
08/06/19 13:49:00
カメラはワールドに複数配置できて、
アクティブな奴を切り替え出来るように作っておくとデバッグにも便利

786:デフォルトの名無しさん
08/06/19 15:43:47
その発想は無かった

787:デフォルトの名無しさん
08/06/19 18:54:51
>>786
素人乙

788:デフォルトの名無しさん
08/06/20 00:22:34
いろいろ3Dツールを使って試しているのですが
分からないことがあるので質問です。

例えばメタセコイアでpng形式のアルファ付きテクスチャをポリゴンに張ると
レンダリング結果はテクスチャの透明部分はポリゴンも透明になりますが
xファイルに出力してビューワで見ると透明部分は白色表示になってしまいます
これはxファイルにはテクスチャのアルファは無視(白と認識)されるという事なのでしょうか?

789:デフォルトの名無しさん
08/06/20 00:32:36
1) メタセコにおいて、テクスチャマップとアルファマップの両方を指定している場合、
xファイルはマルチテクスチャをサポートしていないので、xファイルに保存した段階で
アルファマップの情報は失われる。

2) そのビューワ(何のビューワか知らんが)がテクスチャのアルファ値を無視しているだけ。

790:デフォルトの名無しさん
08/06/20 01:07:04
>>789
1に関してはテクスチャは1枚しか使用していません。
メタセコイアの材質設定で「模様」のテクスチャにアルファ付きのpng画像を指定した場合と
材質設定の「透明」に白黒のbmp画像を指定した場合の両方を試しましたが
どちらもメタセコイア上で透明に見えていた部分はxファイルで白になっていました。

2に関してはSDK付属のMeshViewerを使って見ていました。
一応自作のプログラム上でも表示を試しましたが
ビューワと同様でアルファの影響は見られませんでした
(DirectX初心者な自分が作ったプログラムなので
それ自体にアルファに関する抜けがある可能性もありますが)

透過効果を使ったxファイルのサンプルでもあればいいのですが
現状では表示するプログラム側に誤りがあるのか
3Dツール側の設定が足りてないのか分からずなんとも・・・

791:デフォルトの名無しさん
08/06/20 01:22:24
PNGのアルファってかなり怪しかった気がするんだけど。
素直にDDSを使う方がいいと思われ。

792:デフォルトの名無しさん
08/06/20 01:29:36
失敗しているとしたら、テクスチャの読み込み段階でアルファ値をわざわざ削ってしまっているか、
レンダーステートおよびテクスチャステージステートの設定が適切でないか、だ。

後者の方が圧倒的に多いパターンなんだけど、
このへん実はピクセルシェーダ使った方が余程わかりやすかったりするんだよねぇ。

793:デフォルトの名無しさん
08/06/20 03:02:14
>>785
おまえ頭いいな

794:デフォルトの名無しさん
08/06/20 03:09:58
なんだかんだで
DirectGraphicsのほとんどの要素をラッピングしたクラスが必要なんですね。
たいへんですね

795:790
08/06/20 08:34:24
>>791
DDS形式使っても無理でした(つД`)

>>792
レンダーステートとテクスチャステージステートは
特に設定していなかったので、レンダーステートに
D3DRS_ALPHABLENDENABLE設定してみたのですが
結果は変わらず。
テクスチャステージステートはデフォルトでイイと思うのですが
この辺の設定も自信無いので違ってたらご指摘お願いします orz

ちなみに使用してるSDKのバージョンは2004/Oct

796:デフォルトの名無しさん
08/06/20 09:31:11
>>795
半透明描画はSRCBLENDとDSTBLENDの設定とCOLOR_OPの設定もちゃんとやらないと話が始まらないぞ。

797:デフォルトの名無しさん
08/06/20 09:40:18
>>795
まずはテクスチャのα値をちゃんと参照する方法を覚えろ。

しかしコンパイル済みMeshViewはテクスチャのα値無視するのは確かに不適切だよな
ソース入ってるから自分でリコンパイルすりゃいいんだけど、メニューでON/OFFくらいつけといてほしかったわw

798:790
08/06/20 10:18:37
>>796,797
㌧、やっと出来ました!ヽ(`Д´)ノ

pD3DDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
pD3DDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );

この二行が抜けてました、ってか
D3DRS_SRCBLENDALPHAとD3DRS_DESTBLENDALPHAの定数と勘違いして使って混乱してました(つД`)ゴメンナサイ
テクスチャステージステートはとりあえずデフォルトでも大丈夫でした。
それにしてもMeshViewerはα反映しないんですね
お陰でデータの方に問題があるのかと勘違いして無駄な時間を・・・orz

799:デフォルトの名無しさん
08/06/20 13:04:01
今さっき、テクスチャのαを適用するようにしたMeshViewを作ったわ
2008だとそのままじゃコンパイル通らなくて、いろいろめんどかった

てか、存在しないヘッダファイルをincludeするなよサンプルなのにって思った

800:790
08/06/20 20:58:27
昼に解決したと思って放置してたものを弄ってて
背景透けたと思ってたら、バックグラウンド(クリア色)は
透明ポリゴン越しに透けて見えたけどすぐ後ろに別ポリゴン置いたら
そのポリゴン無視してバックグラウンドの色が表示されてることに気づいた・・・orz

801:790
08/06/20 22:44:21
ぁぁ・・・Zバッファ有効にしてたら透過が上手くいかず
Zバッファ無効にすると前後関係を自動処理してくれないから
自前で描画順序を制御しなけりゃいけないって事かな(;´-`)

802:デフォルトの名無しさん
08/06/20 22:45:39
半透明 Zバッファ
でぐぐりまくりんぐ

803:790
08/06/20 22:52:38
つい先ほどからぐぐりまくりんぐです。
初歩の初歩みたいな疑問をグダグダ書き連ねて申し訳なさ爆発です。

804:デフォルトの名無しさん
08/06/20 22:55:09
昨今の事情を鑑みるからには、半透明でモデルを書くな。
使うなら見た目は諦めるか深度ピーリングでもしろ。

頂点処理なんてアホほど浮いてるんだしアルファで抜くより全部
ポリゴンのほうが圧倒的に最近の主流だったりはする。

805:デフォルトの名無しさん
08/06/20 23:01:57
あおりじゃなく、深度ピーリングってなんのことだ?
あと、「半」透明じゃなくて、アルファ値を使った「透過」がやりたいだけなら、アルファテスト使えばよくね?

806:デフォルトの名無しさん
08/06/20 23:04:45
>>804
頂点処理が浮いてるっていうのは、
大抵の場合ピクセルシェーダが忙しくて、頂点シェーダが遊んでるってことですか?
どうやったらコアの稼働率?を調べることが出来るんでしょうか?

807:デフォルトの名無しさん
08/06/20 23:09:24
>>806
まだそんなことを気にするレベルに至って無い
順番にやっていけ

半透明とZバッファの相性の悪さは昔からの命題
一般的には半透明の描画だけリストに登録しておいて、完全不透明の描画が全て終わった後、カメラから遠い順に描画していく
std::multimap<float, IAlphaDraw*> でリストつくると楽だよ
floatがカメラからの距離
IAlphaDrawは半透明描画の描画インターフェースを提供するインターフェースクラス


808:デフォルトの名無しさん
08/06/20 23:16:35
>>806
NV PerfHUD

809:デフォルトの名無しさん
08/06/21 00:41:46
なんか2度書きってなかったっけ?

810:デフォルトの名無しさん
08/06/21 00:43:03
不透過の物体を描画するときはZバッファをONにしてカメラに近いほうから描いていくと速いぞ

811:デフォルトの名無しさん
08/06/21 00:53:12
エフェクトやパーティクルなんかは別として、
モデル自体の半透明処理はかなりの例外扱いだからなぁ。

被写界深度やモーションブラーなんかもやれないし
特殊な条件以外で使うようなものじゃない。

812:デフォルトの名無しさん
08/06/21 07:11:37
2Dゲーでかなりの枚数を重ねようとしてるなら
正直、PCのグラボではフィルレートがまったく足りてないと思う

813:デフォルトの名無しさん
08/06/21 09:28:27
3Dでもハイレゾで普通にバンプ、スペキュラ、シャドウとかやってると
普通にピクセルシェーダーカツカツになるよ。

逆に頂点は数百万クラスになってきてるけど、今は統合型アーキテクチャが主流だしどうなることやら。

814:デフォルトの名無しさん
08/06/21 09:56:02
うんうん頂点シェーダはなにやっても落ちないわ
でもピクセルシェーダはα物をちょっと拡大して表示するだけでもう処理落ちはじめやがんの

これってなんで?
PS2とかだとそんなことなかった気がすんだけっちょ

815:デフォルトの名無しさん
08/06/21 10:02:18
PS2はフィルレートバカじゃん。
使うテクスチャも16色や256色のパレットが殆どだし。
そもそも解像度も640x480より小さいしなー。

816:デフォルトの名無しさん
08/06/21 10:14:13
頂点毎に呼ばれるVSと違ってPSはピクセル毎に呼んでるはずだから
解像度あげたらエライ負担になるだろ

817:デフォルトの名無しさん
08/06/21 11:29:23
DirectXについて料金のことですが
これって無料でダウンロードできるんですか?

818:デフォルトの名無しさん
08/06/21 11:48:48
いいえ。MicrosoftとNDA契約を結んだあと
利用目的に応じたライセンス料を支払う必要がありますん。

819:デフォルトの名無しさん
08/06/21 11:55:28
初心者質問スレなんだから意地悪しないでググレカスでいいじゃないか・・・

820:デフォルトの名無しさん
08/06/21 12:13:01
ダウンロードセンター行けば無料か有料化は一瞬で分かるだろ

821:デフォルトの名無しさん
08/06/21 13:48:25
やべ、俺NDAのサインしてねぇ。

あれ、誰かきた。

822:デフォルトの名無しさん
08/06/21 13:51:09
DrawPrimitiveを使った描画で消失点を画面中央以外にするにはどうすればいいですか?

823:デフォルトの名無しさん
08/06/21 13:54:02
>>822
Projection 行列をいじる

824:デフォルトの名無しさん
08/06/21 14:28:40
>>823
即レスありがとうございます。
色々調べてみたのですがよくわかりません。
D3DXMatrixPerspectiveFovLHの他に座標変換するのですか?

825:デフォルトの名無しさん
08/06/21 14:31:09
>>824
D3DXMatrixPerspectiveOffCenterLHとか使うといい。

826:デフォルトの名無しさん
08/06/21 15:19:14
>>825
できました。ありがとうございました。

827:デフォルトの名無しさん
08/06/21 18:38:44
boost::intrusive_ptr<IDirect3DVertexBuffer9> spVB;
とVBを確保したのですが、
pd3dDevice->CreateVertexBuffer(sizeof(D3DTLVERTEX)*4, 0, D3DFVF_2DVERTEX, D3DPOOL_DEFAULT, m_pVB.get(), NULL );
と、作るときにダブルポインタに出来ません・・・
IDirect3DVertexBuffer9* buf=spVB.get();
pd3dDevice->CreateVertexBuffer(sizeof(D3DTLVERTEX)*4, 0, D3DFVF_2DVERTEX, D3DPOOL_DEFAULT, &buf, NULL );
と渡す以外の方法で良い方法ありませんか?
intrusive_ptrを使うのが悪いのだろうか・・・

828:デフォルトの名無しさん
08/06/21 18:44:15
CComPtr使えよ

829:デフォルトの名無しさん
08/06/21 18:50:29
>>828
ありがとうございます。
DXUTを使ってるので、
atlbase.hをインクルードするときに
Need to include strsafe.h after tchar.h
って言われるのでIntrusiveに逃げようかと思ったんですが、
やはりDXUT.hの中に入れ込んででもCComPtrのほうが良いのでしょうか。。

830:デフォルトの名無しさん
08/06/21 19:12:50
その程度のリソースは余計な事せずにそのまま管理すりゃいいだろ・・・

831:デフォルトの名無しさん
08/06/21 19:19:23
>>827
&(spVB.get())じゃダメなのか?

832:デフォルトの名無しさん
08/06/21 19:38:10
>>829
何を嫌がってるのか理解できんが、だったらintrusive_ptrをそのまんまぱくって

T** ptr_ptr() { return &px_; }

みたいなのを付け足したのを自前でこしらえたらいいじゃん。

>>831
こらこらw


833:デフォルトの名無しさん
08/06/21 19:44:39
>>830-832
ありがとうございます。
やはり普通にCComPtrを使うことにしました。
>>832
の意見は大変参考になりました。
ありがとうございました。

834:デフォルトの名無しさん
08/06/21 19:52:30
>>827
CreateVertexBufferに渡すのは素のIDirect3DVertexBuffer9*で、
それを使ってintrusive_ptrを初期化すればいいかと。

835:デフォルトの名無しさん
08/06/21 20:51:57
>>829
その警告だったら、DXUT.hの中でATLのヘッダ読み込めば出ないけどね。
ATL使うのがデフォなら、DXUT.hに追加してプリコンパイル済みヘッダと
使用するのもありだと思うけど。

836:835
08/06/21 21:00:56
ああ、すまん。上のレス読んでなかった。
DXUT.hの中で読み込めばいいのは知ってたのか。
typoしたんだが直すまでもないな。


837:デフォルトの名無しさん
08/06/21 21:21:45
>>833
CComPtrはかなり独立したテンプレートクラスだから、コピペでパクるのもいいぜ?
ってか俺はそうしてる。
なぜならVS2008にはatlbase.hが入ってないからだ;;

838:デフォルトの名無しさん
08/06/22 00:05:48
スマートポインタって不必要になったら自動で削除っていうけど
不必要になったときっていつなんだ?
スタティックで参照されると一生消えないんだろうか?もしかして

839:デフォルトの名無しさん
08/06/22 00:08:19
俺はデータを管理するクラス経由でアクセスするようにしてるから
vector、list、set、map、stringくらいしか使ってないな・・・。

840:デフォルトの名無しさん
08/06/22 00:09:51
>>839
setとmapってどういうときに使うの?

841:デフォルトの名無しさん
08/06/22 00:26:04
>>838
参照がなくなった時だろ。

842:デフォルトの名無しさん
08/06/22 00:57:07
>>838
普通はプログラムの終了時だと思うぞ

843:デフォルトの名無しさん
08/06/22 02:27:49
>>840
mapは外部ファイルから読み込みするリソース(シェーダー、テクスチャ、モデル)なんかを
二重に読まないようにファイル名をキーにインターフェイス突っ込んどいて参照カウンタで管理に。

multimapとかmultisetなんかはパーティクルとかの挿入ソート代わりに。

844:デフォルトの名無しさん
08/06/22 07:02:25
>>837
入ってないのExpress Editionだけだろ

845:デフォルトの名無しさん
08/06/22 10:15:19
しかも2008に限らず無料版でATLが入っていたことなどないはず・・・・あ、2003(コンパイラのみ提供)はATLありだったっけ?

846:デフォルトの名無しさん
08/06/22 11:05:11
>>842
じゃあ、うっかりスタティックで参照しやがった馬鹿が開発チームにいたら
デフォでリークし続けるってこと?
参照あってもこっちが削除したいっていったら強制的に削除してほしいときは
どうしたらいいだろうか?

847:デフォルトの名無しさん
08/06/22 11:14:10
参照があるのに削除したらスマートポインタの意味がないじゃん。

848:デフォルトの名無しさん
08/06/22 11:18:44
プライオリティ設定できないの?
優先度高の奴が残ってるときだけ参照あったら削除しないで
優先度低の奴は残ってても強制執行・・・みたいな

849:デフォルトの名無しさん
08/06/22 11:44:55
weak_ptrみたいなの?

850:デフォルトの名無しさん
08/06/22 12:17:08
>>846
言ってることがよく分からんが
その「スタティックな参照」を行ってるスコープから出れば解放されるんじゃないの
一番大きいスコープ=プログラム(プロセス)
スコープから出る=プログラムの終了

851:デフォルトの名無しさん
08/06/22 12:52:04
>>850
スコープから出る時にデストラクタが呼ばれるならそれはLocal変数であってStatic変数ではない罠。

852:デフォルトの名無しさん
08/06/22 14:54:23
>>851
スコープは例えただけで、関数内スタティック変数が関数抜けると
解放されるとかそういう意味で言ったんじゃないんだ
分かりづらい例えですまんかった

「プログラム終了時に消えると思う」に対して「スタティック参照したらリークするんじゃ」
って話だったから終了時に消えるって事を押したんだが
関数内スタティックが関数抜けても消えないっていうのを問題にしているのかね>>846

853:デフォルトの名無しさん
08/06/22 16:32:05
>>846
参照カウンタの概念は理解してるか?
それとグローバルスコープ(プログラム終了)を抜ける時に
グローバル変数やスタティック変数のデストラクタが呼び出されて
解放されることも。


854:デフォルトの名無しさん
08/06/22 17:30:45
その辺りは実際に書いて試してみたほうが早いよね

855:デフォルトの名無しさん
08/06/22 18:06:10
要はバッサリ削除したいのに
使いもしないスタティック参照がインスタンスを消させなくしているから
どーでもいいような優先度の参照に関してはつかんでても無視して強制的に削除したいということだよ

856:デフォルトの名無しさん
08/06/22 18:57:20
普通に管理クラスつくって自分でマネージメントした方がいいと思うけど。
DirectX関係のインターフェイスは余計な事しないでシンプルに扱ったほうがいい。

857:デフォルトの名無しさん
08/06/22 20:19:39
>>855
weak_ptr

858:デフォルトの名無しさん
08/06/22 23:01:47
そもそも使いもしないスタティック参照がいて
かつ参照がいるのに強制削除って状況がおかしいよ。



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch