- 1 名前:デフォルトの名無しさん mailto:ライシンマハケン [2008/07/17(木) 13:50:04 ]
- 1 名前:デフォルトの名無しさん[sage] 投稿日:2008/04/09(水) 09:55:56
※回答する人も、質問する人も必ず読んでください これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。 【C++】 DirectX初心者質問スレ Part17 【C】 pc11.2ch.net/test/read.cgi/tech/1207702556/
- 558 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 07:37:30 ]
- 3DS MAX
- 559 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 08:36:05 ]
- うらやましい限りだぜ
俺はBlender
- 560 名前:デフォルトの名無しさん [2008/10/01(水) 09:14:54 ]
- Mayaってどうなんだろ
- 561 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 09:39:52 ]
- この手のツールは無料から始めたほうがよさげ。
使い切れずに放り投げるには高すぎるからなw
- 562 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 09:50:07 ]
- 金があったら
ZBrush+3DSMAXが最強な希ガス
- 563 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 10:30:15 ]
- 俺はMikuMikuDance
- 564 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 10:35:51 ]
- MAXの無料版ってもう無いの?
- 565 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 10:42:11 ]
- 先日買った書籍に3Dリアルタイムアニメーションというのがあるのですが。
LightWaveで作ったアニメーションをUViewで読み込んでOBJ形式で描きだして DirectXで読み込む方法を使っているのですがUViewは現在販売していないらしく 他のソフトで代用して欲しいと最後に筆者が記述していたのですが 他のソフトってどんな物があるのですか? 何個か教えてもらえたら嬉しいです!
- 566 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 11:41:51 ]
- obj形式なら普通にエクスポート出来ると思うが?
じゃなくてOBJ形式をXファイルに変換とか? 何れにしてもLightWaveの標準機能で出来た希ガス
- 567 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 10:46:19 ]
- ID3DXEffectを使用した場合、シェーダのグローバル変数の共有や、ステートの一括変更などが可能ですが
これらの処理をID3DXEffectを使用しないで自前で実装することは可能でしょうか? リファレンスを見ているのですが、変数を共有する方法は全く見当たりませんし ステートブロックを自前で管理したとしても、API呼び出しは回数は減らせないですよね? ID3DXEffectを使用しないという人は結構いると思うのですが、この辺はどうやって解決しているんでしょうか・・・ 宜しくお願いしますm(_ _)m
- 568 名前:567 mailto:sage [2008/10/02(木) 10:51:24 ]
- すみません、ステートブロックに関してはIDirect3DStateBlock9が使えることが分かりました
これに関しては何とかなりそうです。
- 569 名前:デフォルトの名無しさん [2008/10/02(木) 11:06:45 ]
- 俺はMayaかってしまった。マジすごいなこれ。
- 570 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 12:05:45 ]
- ブルジョワジーめ
- 571 名前:デフォルトの名無しさん [2008/10/02(木) 16:20:40 ]
- August 2007のDirectX SDKを入れていますが、IA64のライブラリがついていません。
付属してるバージョンのSDKを知ってる方はいませんか?
- 572 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 16:34:22 ]
- うああああああ
シェーダー定数の共有のさせ方わっかんねーwww 燃えてきたぜ
- 573 名前:567 mailto:sage [2008/10/02(木) 17:22:54 ]
- 結局sharedキーワードでうまく共有する方法は分からないが
レジスタを直接指定すれば共有できることは分かった 取りあえずこれでいこうと思います。もっといい方法があったら教えていただけると助かりますm(_ _)m
- 574 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 22:51:57 ]
- >>573
1、ID3DXEffectPoolオブジェクトを作成(D3DXCreateEffectPoolを使用) 2、sharedをつけた変数を宣言したFXファイルを作成 3、共有したいFXファイル全てに2のFXファイルをインクルード 4、3のFXファイルをコンパイル時、D3DXCreateEffectに1のID3DXEffectPoolオブジェクトを引数で渡す。
- 575 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 22:59:03 ]
- ん?
ID3DXEffectを使わないで変数の共有をしたいって言ってるのか? そりゃー、逆アセンブルしてD3DXがどう解決しているか確認してみりゃいいんじゃね まーEffectPoolなんて使ってる以上、力技だろってのは想像がつくがな
- 576 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 23:04:30 ]
- 単純に変数を一時的にEffectPoolに入れておいてるだけで、
結局描画時に全部毎回マッチングしてレジスタに設定してるんじゃ無いっけ? あくまでユーザー側からは同じ変数のように見えているだけで。
- 577 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 08:32:57 ]
- >>576
マジすかw だとしたら効率的には何の意味もないんだな^^;
- 578 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 10:58:52 ]
- 頂点シェーダーにハードウェア対応していないグラフィックカードでは
頂点処理はCPUで実行されると思いますが、その場合に D3DPOOL_DEFAULTを指定して作成したっ頂点データは システムメモリ上に配置される可能性が高いんでしょうか? システムメモリ上に配置されるということはレンダリングの度にシステムメモリから ビデオカードへのデータ転送が発生しているのでしょうか?
- 579 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:08:38 ]
- >>576
そういえば、頂点シェーダー(VS)とピクセルシェーダ(PS)を別々にビルドしてセットする場合って、 VSとPSそれぞれの定数テーブルに値をセットする必要があると思うけど (VSとPSでレジスタ空間が違うからなのか?違うよね?) この辺もD3DXEffect系使った時って意識しないから、やっぱD3DXEffect系は内部でいろいろやってるのか…
- 580 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:26:43 ]
- 1>.\MapModel.cpp(622) : error C2065: 'DXFILEFORMAT_BINARY' : 定義されていない識別子です
最後にこのエラーだけ解決できません・・・。 対処方法を教えていただけませんか?
- 581 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:32:44 ]
- >>578
頂点変換をハードウェアで対応してなければ システムメモリから転送するしかない。 RadeonHD3450が5000円で買えるんだから 素直にDirectX10対応のビデオカード買えばいい。 >>579 かといって自分で全部管理した方が速くなるのか?という話になると どちらかといえば遅くなるだろうから素直にID3DXEffect使う方がいい。 すでにDirectX10ではそれしかないし。
- 582 名前:580 mailto:sage [2008/10/03(金) 20:37:52 ]
- if (FAILED(D3DXSaveMeshToX(name, pMesh, NULL, material, NULL, 3, DXFILEFORMAT_BINARY)))
return false; return true; } コードです
- 583 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:55:18 ]
- >>582
使ってるSDKが新しすぎるんじゃね? よく分からんわ
- 584 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 22:28:42 ]
- >>580
それは、dxfile.hに定義がある。 使いたければ、includeしろ。 てか、それ間違ってるんで #include <d3dx9xof.h> を追加して D3DXF_FILEFORMAT_BINARYを使え。
- 585 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 22:33:51 ]
- おまいらどうやってDirectX勉強したの?
独学?
- 586 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 22:45:02 ]
- 独学
- 587 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:00:30 ]
- すっげー
- 588 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:05:32 ]
- 俺はDirectX5の頃からだぞ、なめんな
あと歳は聞くな
- 589 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:13:15 ]
- WinGから
じじい言うな
- 590 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 00:11:11 ]
- d3dx9_xx.dllにはいろんなバージョンがありますが、ロードするのは一番数字が大きいものでいいのでしょうか。
それとも、各バージョンごとで互換性が低いのでしょうか。
- 591 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:15:57 ]
- つかってるSDKによって勝手に対応するバージョンのものが呼ばれる
- 592 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:23:05 ]
- それはd3dx9.libをリンクしていたらってことですよね。
友達にプログラムを渡したら二人が二人ともd3dx9_xx.dllがないとエラーが出るといっていたので、 とりあえず一番に、最新のDirectXを入れるように言ったのですが、 プログラム側で選択してもよいものなのかと疑問に思ったのです。
- 593 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:28:19 ]
- >>592
>プログラム側で選択してもよいものなのかと疑問に思ったのです。 それをやれるだけのスキルがあるならやればいいと思うけど、 「やってみたいんですけどうまくいきません」というのならやるなと言いたい。
- 594 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:31:04 ]
- >>592
Web Installerで全部のd3dx9_xx.dllをインストールしてくれるから、これ実行してもらうといいよ。 www.microsoft.com/downloads/details.aspx?familyid=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&displaylang=ja
- 595 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:37:51 ]
- ということは少なからず差異があるようですね。
>>594のページを教えて、インストールさせようと思います。 ありがとうございました。
- 596 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 05:27:32 ]
- Direct3D 9 Driver Development Kitなんて何処にあるんだ・・・?
- 597 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 07:23:51 ]
- ぶっちゃけ
自分のPCにはいってる一番番号の大きいdllを exeと同じフォルダに入れて渡せば動くよ
- 598 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 10:49:32 ]
- >>588
WinG〜GameSDK
- 599 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:29:21 ]
- typedef struct _D3DLVERTEX {
D3DXVECTOR3 pos; D3DCOLOR color; D3DCOLOR specular; D3DVALUE tu; D3DVALUE tv; } D3DLVERTEX, *LPD3DLVERTEX; #define D3DFVF_LVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1) _D3DLVERTEX についている_の意味ってなんですか?
- 600 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:44:02 ]
- 別にそこで使った名前は他で使わないから適当でううんだけど
よそと名前がぶつかったら困るでしょ。 そのために自分たちだけで決めたルール
- 601 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:30:43 ]
- なるほど そういうことですか
ありがとうございjます
- 602 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:58:01 ]
- おしえてください。
ウィンドウサイズの変更イベント OnSize() の中で、 Reset() を使っているのですが、D3DERR_INVALIDCALL というエラーが出て先に進めなくてこまっています。orz... D3DPRESENT_PARAMETER の中身は、 BackBufferWidth 0 BackBufferHeight 0 BackBufferFormat D3DFMT_X8R8G8B8 BackBufferCount 0 MultiSampleType D3DMULTISAMPLE_NONE MultiSampleQuality 0 SwapEffect D3DSWAPEFFECT_DISCARD hDeviceWindow = GetSafeHwnd() で取得したハンドル Windowed 1 EnableAutoDepthStencil 1 AutoDepthStencilFormat D3DFMT_D16 Flags 0 FullScreen_RefreshRateInHz 0 PresentationInterval 0 です。 よろしくお願いします m(_ _)m
- 603 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:02:45 ]
- ウィンドウハンドルがNULLとか
- 604 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:23:42 ]
- >>603
ありがとうございます。 D3DERR_INVALIDCALLが発生する原因がわかりました。 リソースをD3DPOOL_DEFAULTで確保するとダメみたいです。 OnSize() でウィンドウサイズを可変した時に3D画像のアスペクト比が 変わってしまうのを防ぎたかったのですが、Resetを呼び出してもダメ みたいです。 アスペクト比を固定するにはどのようにすれば良いでしょうか? よろしくお願いします。
- 605 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:32:34 ]
- D3DPOOL_DEFAULTで作成したリソースをいったん削除してからデバイスをリセットして、その後でリソースを作り直す。
- 606 名前:デフォルトの名無しさん [2008/10/04(土) 23:39:07 ]
- >>605
ありがとうございます。 早速ためしてみます。
- 607 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:41:30 ]
- >>604
何がしたいのかわからないんだが ウインドウサイズが変わった時点で 変更後のサイズからアス比を再計算して 射影行列を作る時に指定しているアス比を変更するだけじゃだめなのか? D3DXMatrixPerspectiveFovLHとかの話 ついでに流れ的に関係あるようでないような質問 テクスチャとかメッシュとかはパフォーマンス的には置いといて デバイスのロストを気にしなくても良い様にできるけど ID3DXEffectだけは対応しなくちゃいけない感じなんだが これって何かの設定で対応しなくて良いようにできるものなの?
- 608 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:50:09 ]
- >>607バックバッファの大きさは変わらないんだからぼんやりしちゃうだろ
- 609 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:23:15 ]
- デフォルトのバックバッファを使わないで、
後から確保した物を使えばリセットする必要性は皆無
- 610 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:48:32 ]
- >>607
ID3DXEffectの仕様として管理下はサポートされていないので それは無理だろ。 ただ、ロスト対応が必要な理由として、シェーダ引数のテクスチャと ステートブロックがあるからだろうと考えられるので エフェクトに渡すテクスチャは管理下のみ、 pass内でステートの変更はしない、ステートブロックは使わない、などの 対策をすれば、大丈夫になるかもね。
- 611 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:51:57 ]
- マルチディスプレイで
WindowモードのWindowを他方のWindowへ移動すると presentが遅くなるのはどうしようも無いですか?
- 612 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 16:03:48 ]
- VOID DrawText(ID3DXFont* pFont, char* text, DWORD x, DWORD y, D3DCOLOR Color)
{ RECT Rect; SetRect(&Rect, x, y, CW_USEDEFAULT, CW_USEDEFAULT); pFont->DrawTextA(text, -1, &Rect, DT_LEFT | DT_NOCLIP, Color); } の pFont->DrawTextA(text, -1, &Rect, DT_LEFT | DT_NOCLIP, Color); この部分で error C2660: 'ID3DXFont::DrawTextA' : 関数に 5 個の引数を指定できません。 と言うエラーが出てしまいます 自力で調べた所DirectX SDKの仕様が変わったためにコンパイルできないらしいと言うところまではわかったんですが どのように書き直せば良いのかわかりません どのように直せば良いのでしょうか ちなみにSDKはaugust 2007です よろしくお願いします
- 613 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 16:14:53 ]
- 第一引数にD3DXSPRITEを渡さないとダメ
最新のSDKのマニュアルとサンプルを見るべし
- 614 名前:612 mailto:sage [2008/10/08(水) 14:40:09 ]
- ありがとうございました
やってみます
- 615 名前:デフォルトの名無しさん [2008/10/08(水) 15:35:55 ]
- これからDirectXをまなぼうと思っています
ゲームをつくりながら解説していくようなサイトを探しています オススメがありましたら教えてください C++とWINAPIの基本は理解しています
- 616 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 15:36:41 ]
- age失礼しました
- 617 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 16:12:12 ]
- DirectInputで作成したマウスデバイスで、強調レベルを非排他に設定したときだけAquireメソッドが成功しません。
どういうときに失敗するのでしょうか。
- 618 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 18:39:17 ]
- >>617
Aquireは排他制御のためのメソッドだから、非排他設定なら必要ないだろう。
- 619 名前:617 mailto:sage [2008/10/08(水) 21:22:12 ]
- どんなサイトの解説を見ても、必ずAcquireメソッドをよんでるんですが・・・
少なくともサイトの管理人の環境では、実行できてるってことですよね?
- 620 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 21:40:22 ]
- >>619
Acquireを呼んでいるのと、Acquireが成功するかは別問題。 MSのサンプルだってAcquireは呼んでいる。 でも、それが成功したかなんて気にしていない。
- 621 名前:617 mailto:sage [2008/10/08(水) 21:54:33 ]
- 日本語版のMSDNでようやく該当する記述を見つけました。
Acquireの戻り値として、 >DIERR_OTHERAPPHASPRIO 他のアプリケーションの優先レベルの方が高いので、この呼び出しを実行できない。 >この値は、標準の COM 戻り値である E_ACCESSDENIED に等しい。このエラーが返されるのは、 >デバイスに対するアプリケーションのアクセス権がフォアグラウンド アクセス権であるにもかかわらず、 >バックグラウンドであるときにデバイスを取得しようとした場合である。 とありました。WM_CREATEの処理内で呼び出していたために失敗していたようです。 大変お騒がせしました。まさか日本語ページの方が詳しいなんて・・・
- 622 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 00:11:47 ]
- DirectSoundはDirextX8も9も一緒なんですか?
DirectSoundCreate8からDirectSoundCreate9になるのかと思ったんですがないといわれます。 ライブラリの追加はdsound.lib dxguid.lib winmm.lib だけでいいんですか?
- 623 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 02:15:01 ]
- 質問です。
DirectXで作られたゲームを公開する場合、マイクロソフトの著作権表記などは 必要なのでしょうか? ttp://www.microsoft.com/japan/msdn/directx/japan/license/eula.aspx ttp://www.microsoft.com/japan/msdn/directx/japan/license/dx_license.aspx 一応上を読んでみたのですが、ごちゃごちゃ書いてあって正直よくわかりません。
- 624 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 08:26:40 ]
- >>622
dsound.hの中を見ればわかるよ DIRECTSOUND_VERSION >= 0x0800 なので8も9も同じ libはそれでいいんじゃない 未解決とか言われたら追加すればいい
- 625 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:12:20 ]
- 質問です
DirectX8で作られた古いソースが出てきたのですが、現在PCには9.0cのSDKが入っています。 上記ソースをコンパイルしようとしたところ #include <d3d8.h> #include <d3dx8.h> こいつらがないと言われてしまったのですが、DirectX8のSDKをインストールしないとダメってことでしょうか。 (普段は9のプログラムを組んでいるので)競合しそうで怖いのですが、何か良い手はありますでしょうか
- 626 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:19:36 ]
- 俺も場合は複数バージョンのSDKをインストールしないで解凍して保管する
で、includeやlibは新しいバージョンを優先しとけばないものだけ古いものから参照される
- 627 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:46:20 ]
- >>625
>>552
- 628 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:06:39 ]
- >>625
オプションのVC++ディレクトリを C:\Program Files\Microsoft DirectX SDK (March 2008)\Include C:\Program Files\Microsoft DirectX SDK (August 2007)\Include ・ ・ こんな感じにしてるが心配ならDX8のときは順番を入れ替えればいいんじゃない
- 629 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 15:14:18 ]
- DirectInputのマウスデバイスで相対座標のデータを得るとき、値1が1pxと対応しているわけではないと思うのですが、
どうやってピクセル単位の座標変化を求めればいいでしょうか。
- 630 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 15:59:32 ]
- 対応してた気がするが?
- 631 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 16:09:01 ]
- 629
つまりプログラムのミスですか。確認してみますorz
- 632 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:09:17 ]
- サウンドバッファはプライマリとセカンダリ両方作る必要はあるんですか?サンプルを見たんですが、2つ作ってるのにセカンダリしかつかってないように見えるんですが
- 633 名前:629 mailto:sage [2008/10/09(木) 19:43:32 ]
- やっぱりどうしても、実際のカーソルの位置と、DirectInputで求めたカーソル移動量が食い違います。
スクリーン上で1000px水平に移動させると、移動量の合計が600〜800くらいになっています。 下がそのコードなのですが、どこか間違っているところがありますか? void MouseDevice::UpdateState() { HRESULT hr; if (hr = pDevice_->Acquire(), FAILED(hr)) { LOG_WARN("IDirectInputDevice8::Acquire 非アクティブになった?"); return; } DIMOUSESTATE mouseState; if (hr = pDevice_->GetDeviceState(sizeof(mouseState), &mouseState), FAILED(hr)) { LOG_ERROR("IDirectInput8::GetDeviceState"); return; } cursorPos_.x = clamp(cursorPos_.x + mouseState.lX, 0L, 1279L); cursorPos_.y = clamp(cursorPos_.y + mouseState.lY, 0L, 1023L); //SetCursorPos(cursorPos_.x, cursorPos_.y); POINT pt; GetCursorPos(&pt); std::stringstream ss; ss << "MOUSE " << cursorPos_.x << "," << cursorPos_.y << " (" << pt.x << "," << pt.y << ")"; LOG_INFO(ss.str().c_str()); }
- 634 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:07:33 ]
- >>633
関係ないけど ,演算子をそんな風に使う人は初めて見た
- 635 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:10:37 ]
- WAVEFORMATEX構造体のnSamplesPerSecに値がはいらないんですが、どうしてですか?
WAVEFORMATEX FEX; ZeroMemory(&FEX, sizeof(WAVEFORMATEX)); FEX.nSamplesPerSec = 44100; ここで変数をみても44100が入ってなくて0なんですけど
- 636 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:12:16 ]
- >>633
試してないのでわからんけど、マウスカーソルの加速の分がずれてるとか・・・?
- 637 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:25:37 ]
- >>636
ありがとうございます。「directinput マウス 加速」で検索したら解決しました。 DirectInputではマウスドライバから直接データを得るので、ウィンドウズのカーソルを意識するアプリケーションは Win32関数かメッセージを使うように書いてありました。
- 638 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:30:29 ]
- //ローカル回転&ワールド移動 >> ワールド変換行列設定
// //角度はRAD HRESULT CDXDevice::SetWorldTransformLW(D3DVECTOR &l_rot, D3DVECTOR &w_trans, int index) { D3DXMATRIX mat,mat2; D3DXMatrixIdentity(&mat); if (l_rot.x) { D3DXMatrixRotationX(&mat2, l_rot.x); D3DXMatrixMultiply( &mat, &mat, &mat2); } if (l_rot.z) { D3DXMatrixRotationZ(&mat2, l_rot.z); D3DXMatrixMultiply( &mat, &mat, &mat2); } if (l_rot.y) { D3DXMatrixRotationY(&mat2, l_rot.y); D3DXMatrixMultiply( &mat, &mat, &mat2); } D3DXMatrixTranslation( &mat2, w_trans.x, w_trans.y, w_trans.z); D3DXMatrixMultiply( &mat, &mat, &mat2); return SetWorldTransform( &mat, index); } 行列を掛ける順番って x z yなんですか?
- 639 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:36:35 ]
- 望む結果に応じて好きな順序で掛ければ良い
- 640 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 21:37:53 ]
- どなたか>>623の質問に答えられる人はいませんか?
- 641 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 23:19:49 ]
- DIRECTXで描画をしながら、Windowsのテキストボックスなどを表示したいのですが
どのような方法がありますでしょうか? 普通にウィンドウにコントロールを作成するだけでは DIRECTX側のpresentで上書きされてしまい、表示することができません。 ウィンドウモードならば、ウィンドウ作成時にWS_CLIPCHILDRENを指定することで テキストボックスを部分のみをクリッピングすることができたのですが フルスクリーンモードでは、当然上書きされてしまいます。 フルスクリーンモードでも通用する、何か良い方法はありませんでしょうか?
- 642 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 23:25:12 ]
- GXUT custom UI
- 643 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:00:03 ]
- ニセフルスクリーンモードにする
- 644 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:01:41 ]
- >>641
上書きしないところに描かなければ良いだけ そんな当たり前なことを聞く意味が分からない
- 645 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:11:34 ]
- >>644
日本語でおk
- 646 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:14:58 ]
- 上書きしたくなければ、その位置に描くなということだろ
- 647 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:21:06 ]
- >>644
上書きしなきゃいいって問題じゃない。 GDIサーフェスについて勉強してこい。
- 648 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:34:59 ]
- 設定をフリップにせず、present時に適切に描画位置を指定すれば上書きされない。
いくら無能でもその程度のことぐらい理解出来るだろ。
- 649 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 01:31:48 ]
- 別途専用ウィンドウを描画する
- 650 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 07:31:36 ]
- このメソッドは、Microsoft Windows Graphics Device Interface (GDI) のダイアログ ボックスを、フルスクリーン モードのアプリケーションで使えるようにします。
構文 HRESULT SetDialogBoxMode( BOOL bEnableDialogs );
- 651 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 13:22:58 ]
- >>635
どうやって確認してるの ブレークポイント?
- 652 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 23:28:45 ]
- StretchRectでモザイク的なもの作ろうと思ってるんだが、どうもメソッドが失敗しちゃう。
GetRenderTargetで成功しているコピー元とコピー先と同じの使ってるから何とかなると思ったが・・・ しかもMSDNの言ってることがよー分からん。RTテクスチャって何ですか?単純なオフスクリーンってなんですか・・・ 天才が居たら助言頼む
- 653 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 00:31:44 ]
- そういう用途に使うのなら素直にテクスチャとして、適切に位置指定して描画しろ。
- 654 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 00:47:19 ]
- 規制で書き込めませんでした…
>>642 DXUTでしょうか? ちょっと調べてみます。 >>643 自前で解像度変更して、ごまかすことも考えたのですが 強制終了した場合に解像度が戻らなくなってしまったりしそうで悩んでいます >>644 >>648 言ってることはわかりますし、以前にその方法も考えたのですが コントロールが単純な位置にあり、少ない方形でまとめられるのならまだしも、 「コントロールの位置が固定でなく、しかも複数が散らばる」という 状況ではどうしようもなくなってしまうので止めました。 >>649 テキストボックスから入力が必要な場面のみダイアログを描画、という 方法も考えたのですが、できるだけ1ウィンドウでやりたいと思っております。 (どうしようもなかったら、ダイアログを出そうかとも思っていますが…) >>650 使用してみましたが、やはりフルスクリーンでは効果がないようです。 色々と調べてみた限りでは、ダイアログやメニューに対して効果があるようですが ウィンドウに、子ウィンドウとして貼り付けたコントロールにも使用できるのでしょうか?
- 655 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 00:55:41 ]
- クリッピング程度の単純な処理すら書けないのなら、
そもそもプログラムを組むのを諦めろ。
- 656 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 01:01:18 ]
- >>654
逆に考えるんだ ダイアログに効果があるのならダイアログに貼り付ければいいだろ
- 657 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 01:21:36 ]
- >>655
>>648で言われたようにクリッピング的な処理は調べてみたのですけども、 今回の条件の場合には適切な方法なのでしょうか? presentにはrect単位で転送領域を区切る方法などもあるようです。 ですが、仮にど真ん中にBOXがあったら、これを避けるように方形で区切ると 上下左右の4個の領域に区切るということになり、 仮にこのコントロールが複数ある場合には、非現実的に思えました。 (見当違いな意見を言っているようでしたら、すいません) >>656 やはり難しいようなので、ダイアログを使って別ウィンドウに出すか、 もしくは最初に言われたDXUTとやらの勉強を始めてみたいと思います。 一応、presentの「後に」GDIでコントロールの画像を転送する、 という方法でトライしてみましたが、どうもちらついたりしてダメみたいです。
- 658 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 02:16:27 ]
- 複数矩形があろうが、その分だけ分解すればいいだけ。
その程度のことが非現実的だったら、 Windowsが行っているGUIのクリッピングは超常現象なのか?
|

|