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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:55:56 ]
※回答する人も、質問する人も必ず読んでください

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

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

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

【C++】 DirectX初心者質問スレ Part16 【C】
pc11.2ch.net/test/read.cgi/tech/1202634347/

761 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:24:56 ]
#define PDtoOM PartsDakeSashikae_to_OtherModel
PDtoOM();

762 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:05:08 ]
>>760-761
面白いと思ってやってるのか?

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

764 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:48:27 ]
タイマー
ループにして何か良いこと有るの?

765 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:38:24 ]
ループだとFPSに依存するから怖いよ

766 名前:763 mailto:sage [2008/06/14(土) 03:46:37 ]
thx
やっぱりそうなんだ。
処理落ちすることって前提なのね。

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

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

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



770 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 20:56:25 ]
変な人がおる・・・

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

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

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

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


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


775 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:44:20 ]
普通のテクスチャもRENDER_TARGETも同じIDirect3DTexture9だとおもうけんど

776 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:35:37 ]
ボ、ボリュームテクスチャも作るつもりだもん

777 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:44:20 ]
お前かわいいな
ちょっとこっち来いよ

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



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



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

781 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:16:51 ]


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

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


784 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 10:01:29 ]
カメラを管理するクラスをワールドを管理するクラスが持つだろJK

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

786 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 15:43:47 ]
その発想は無かった

787 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 18:54:51 ]
>>786
素人乙

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

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

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

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



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

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

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

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

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

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

793 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:02:14 ]
>>785
おまえ頭いいな

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

795 名前:790 mailto:sage [2008/06/20(金) 08:34:24 ]
>>791
DDS形式使っても無理でした(つД`)

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

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

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

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

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

798 名前:790 mailto:sage [2008/06/20(金) 10:18:37 ]
>>796,797
d、やっと出来ました!ヽ(`Д´)ノ

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

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

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

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



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

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

802 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:45:39 ]
半透明 Zバッファ
でぐぐりまくりんぐ

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

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

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

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

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

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

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


808 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:16:35 ]
>>806
NV PerfHUD

809 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:41:46 ]
なんか2度書きってなかったっけ?



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

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

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

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

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

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

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

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

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

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

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

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

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



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

821 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 13:48:25 ]
やべ、俺NDAのサインしてねぇ。

あれ、誰かきた。

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

823 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 13:54:02 ]
>>822
Projection 行列をいじる

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

825 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:31:09 ]
>>824
D3DXMatrixPerspectiveOffCenterLHとか使うといい。

826 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 15:19:14 ]
>>825
できました。ありがとうございました。

827 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:44:15 ]
CComPtr使えよ

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



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

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

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

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

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

>>831
こらこらw


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

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

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

836 名前:835 mailto:sage [2008/06/21(土) 21:00:56 ]
ああ、すまん。上のレス読んでなかった。
DXUT.hの中で読み込めばいいのは知ってたのか。
typoしたんだが直すまでもないな。


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

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

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



840 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:09:51 ]
>>839
setとmapってどういうときに使うの?

841 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:26:04 ]
>>838
参照がなくなった時だろ。

842 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:57:07 ]
>>838
普通はプログラムの終了時だと思うぞ

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

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

844 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 07:02:25 ]
>>837
入ってないのExpress Editionだけだろ

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

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

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

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

849 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:44:55 ]
weak_ptrみたいなの?



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

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

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

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

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


854 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 17:30:45 ]
その辺りは実際に書いて試してみたほうが早いよね

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

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

857 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:19:39 ]
>>855
weak_ptr

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


859 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:03:08 ]
確かに・・・リソースの強制削除なんて特異な状況聞いたことないな。
単にまともな管理が出来ていないだけにしか聞こえないな。



860 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:48:29 ]
>>858
シーンを何回も呼ぶ(ロードアンロードを繰り返す)んだけど
そのうちの1シーンがスタティックでポインタを保持してるところが多いのよ
いらなくなったらそのシーンは破棄するんだけどプログラム自体はスタティック参照だから
残るのよこれが
範囲が広すぎて修正不可能だからどうすんべーって感じなわけ

861 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 04:37:39 ]
staticにした時点で間違ってると言うことだNE






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

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

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