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/
738 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:54:40 ] ?
739 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:59:26 ] ああ、そういう事か。 犯罪者の都合は考慮しないよ。
740 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:07:03 ] >>738 ランタイムのウェブインストーラーや開発キット、ヘルプなんかは ウィンドウズの正規OSでないと落とせなくなった なのでたまにこのスレで「落とせません」とか「見れません」とか 「わかりません」とかいう奴はほぼすべて割れ厨
741 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:11:28 ] PC買えばOS付いてくるのに割れ厨って意外と多いのな
742 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 04:24:44 ] オンラインゲームをやってるんですが directxを前のverに戻したらパフォーマンスって下がりますか?
743 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 04:51:37 ] あ
744 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 15:05:13 ] 安全に Release メソッドを呼ぶマクロとして SAFE_RELEASE のようなものを見かけますが、 // safe release #define RELEASE(p) ( (p) ? ( (p)->Release(), (p)=NULL ) : (0) ) このマクロで何か問題ありますか? 参照を使った関数だと BCC に注意されたので
745 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 16:17:37 ] >>744 翻訳しないで原文ママのエラーメッセージを。
746 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:35:36 ] DirectShowを使ってGUIのメディアプレイヤーを作っているのですが、 IMediaSeeking::GetDurationで再生時間を取得すると、 3分33秒より長いファイルはオーバーフローして負の値になってしまいます。 IMediaPosition::get_Durationで取得しようとすると、E_NOTIMPL(実装されていない)が帰ってきます。 3分33秒より長いファイルの再生時間を取得するにはどうすればいいのでしょうか? 開発環境はVisual Studio 2005 Pro、言語はCです。
747 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:37:54 ] 最小のコードくらい出せカス
748 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:38:00 ] CComPtr使いなさい
749 名前:746 mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:43:53 ] REFERENCE_TIME は普通に使ってる分にはオーバーフローしないが どこかで int にキャストされてるんじゃね SetTimeFormat 指定しておいたほうがいいんじゃねえ
751 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:34:30 ] DirectMusicを最近扱っているのですが、 GetGlobalParam(GUID_PerfMasterVolume, reinterpret_cast<void*>(&V), sizeof(V))で 何故かE_INVALIDARGが返ってきて音量の取得ができません。 不正な引数とありますが、どれが不正な引数なのでしょうか?(Vはlong型です) ちなみに、この処理を行う前にパフォーマンスの作成、パフォーマンスとシンセサイザーの初期化、 ローダーの作成を行っています。
752 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:41:48 ] >>751 msdnによると以下のようにあるけど、SetGlobalParamは使用済み? >SetGlobalParam が rguidType について一度も呼び出されたことがない場合、このパフォーマンスが現在処理している >グローバル データ リストの中に、rguidType がない可能性がある。その場合、このメソッドは E_INVALIDARG を返す。 >つまり、どのパラメータにも、GetGlobalParam を使って取得できるデフォルト値があると想定しないこと。
753 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:47:46 ] 質問です ttp://richa850.hp.infoseek.co.jp/programming/dx9_01.html ここを参考に、後述のプログラムを書いたのですが、少なくとも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 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:56:19 ] >>752 ありがとうございます、使用しておりませんでしたorz デフォルト値がないのですね、なぜこんな仕様になっているのやら…orz
755 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 08:10:40 ] 変数でも何でもとりあえず初期化しやがれとしか言い様が無い
756 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:45:36 ] Ver9あたりからボタンとかテキストボックスのような コントロールのようなものが使えるようになってるみたいなんだが あれってなんて名前でしょうか? 使い方書いてあるHP検索したいわけだが なんて検索したらいいかわからんのです
757 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 01:16:45 ] DXUT
758 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:35:52 ] dxutに未来はあるのでしょうか?
759 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:50:35 ] モデルの、パーツだけ別のモデルに差し替えることって なんという言葉でしたっけ
760 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:36:07 ] void PartsDakeSashikae_to_OtherModel(void) { return; }
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 ] スマートポインタって不必要になったら自動で削除っていうけど 不必要になったときっていつなんだ? スタティックで参照されると一生消えないんだろうか?もしかして