【C++】 DirectX初心者質問スレ Part33 【C】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/12/22(水) 20:11:01これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
前スレ
【C++】 DirectX初心者質問スレ Part32 【C】
http://hibari.2ch.net/test/read.cgi/tech/1288282082/
0232デフォルトの名無しさん
2011/01/04(火) 02:41:58ありがとうございます。このヘルプは以前読みました。このヘルプとマルチデバイスに
関するヘルプ等も読んで、組んでみているのですが、なかなかうまくいきません。シングルの
マルチヘッドデバイスで2画面なら既に出来ているんですが、複数のマルチヘッドデバイスで
「同時に」6画面出すのに苦労しています。
D3D10では出来ているんですね。なるほど。わけあって9を使っていますが、10も
考えてみる必要があるのかなぁ。幸い9と10は一つのコードから同時に使えるらしいですし。
0233デフォルトの名無しさん
2011/01/04(火) 02:45:330234228
2011/01/04(火) 11:27:42http://msdn.microsoft.com/ja-jp/library/ee422553(VS.85).aspx
複数のデバイスをフルスクリーンモードで同時に使うには、アダプターごとにデバイスを
作った上、それらがフォーカスウインドウを共有しなければならんとあります。
実際それで、マルチな独立デバイス的コードを書いて動画出力出来ました。(ヘッド間
で全然同期出来ませんけど...orz)
でも、そうなると、この辺の記述
http://msdn.microsoft.com/ja-jp/library/cc323931.aspx
にある、hDeviceWindowの説明とかみ合わなくてよくわかりません。実際
シングルのマルチヘッドデバイスで2画面のフルスクリーンモードを実現する
コードでは、主アダプタと従属アダプタにそれぞれ違うウィンドウをクリエイト
しないとうまくいきませんでした。
このあたりの不整合性が「マルチなマルチデバイス」がうまくいかない原因なのかな?
どなたかうまくいく方法ご存じないでしょうか。
DirectX9じゃそれは不可能だよ、という合理的な説明でもありがたいです。
0235デフォルトの名無しさん
2011/01/04(火) 14:52:20やり方はほとんどヘルプに書いてあるので、大雑把に手順を説明すると
ヘッドの数だけウインドウを作成する
D3DPRESENT_PARAMETERSの配列を作り、hDeviceWindowにそれぞれのウインドウをセット
CreateDeviceにD3DCREATE_ADAPTERGROUP_DEVICEのフラグを指定してデバイスを作成する
GetBackBuffer->SetRenderTarget->描画 をヘッドの数だけ行う
Present
3つ以上のヘッドがある場合に、2つだけ使うとかはできないと思う。
ヘッドの割り当ては、D3DCAPS9のMasterAdapterOrdinal、AdapterOrdinalInGroupで確認。
ヘッドごとに解像度が違う場合は、EnableAutoDepthStencilが使えない。
0236228
2011/01/04(火) 18:01:12ありがとうございます。そのやりかたで、マルチヘッドデバイスを一つ作って
複数のモニタに出力することは既にできています。
問題は、例えば2出力あるボードが2枚あるとして、2つのマルチヘッドデバイスで
2x2の計4つに出力する方法です。
ようは、「マルチヘッド」デバイスを「複数」作って(その意味ではマルチデバイス)
そのすべてにフルスクリーン表示する方法です。
DirectX8までは複数のアダプタにフルスクリーン出力するにはそれぞれ個別の
デバイスを当てる方法が主流でした。DirectX9から「マルチヘッド」デバイスに
よって一つで同じボード上の複数のアダプタに出力しやすくなりました。
私が知りたいのはそれらを合わせたような、マルチxマルチヘッドデバイスの
実現が可能かどうか、ということです。
ひきつづきよろしくお願いします。
0237デフォルトの名無しさん
2011/01/05(水) 14:00:250238デフォルトの名無しさん
2011/01/05(水) 15:23:20OpenGLみたいなの
0239デフォルトの名無しさん
2011/01/05(水) 15:29:58ビデオカード専用のAPIを使ったり、OpenGLを利用したり、
CPUで計算して勝手に各自でそれっぽく作ってただけだよ。
0240デフォルトの名無しさん
2011/01/05(水) 16:59:580241デフォルトの名無しさん
2011/01/05(水) 17:39:440242デフォルトの名無しさん
2011/01/05(水) 18:01:15WinGは無関係。
0243デフォルトの名無しさん
2011/01/05(水) 18:18:03どもでした
0244デフォルトの名無しさん
2011/01/05(水) 20:13:01何歳なんだよ
0245デフォルトの名無しさん
2011/01/05(水) 21:25:52GPUGEMSなら研究室にあるんですが
0246デフォルトの名無しさん
2011/01/05(水) 21:45:22モーフィングでもやりたいのか? それともスキニングか。
0247デフォルトの名無しさん
2011/01/05(水) 21:48:450248デフォルトの名無しさん
2011/01/05(水) 22:22:34ゲームエフェクトマニアックスは持ってます
0249デフォルトの名無しさん
2011/01/05(水) 22:29:37とにかくチュートリアルを見ながら少し付くこつこつ作れ。
0250デフォルトの名無しさん
2011/01/05(水) 22:33:500251デフォルトの名無しさん
2011/01/05(水) 22:38:02自分で探してみます
0252デフォルトの名無しさん
2011/01/06(木) 00:01:56実行バッファじゃね?
0253デフォルトの名無しさん
2011/01/06(木) 00:07:25とりあえず数学やれ。マジで
周期関数で頂点動かせ。話はそれから
0254デフォルトの名無しさん
2011/01/06(木) 00:15:03もう300冊以上あってオススメなんてわかんね
時代もズレてるし
色んな本読んだほうがいいな
いいと思った本片っ端から買えよ
0255デフォルトの名無しさん
2011/01/06(木) 00:29:21マルチヘッドを複数ってことだったか。
それは、さすがに検証できる環境がないな。
マルチデバイスとシングルデバイスマルチヘッドのどっちもできてるなら、
その発展でできるんじゃない?
わざわざアダプタグループの定義があるくらいだから、仕様としては
問題ないと思う。
0256デフォルトの名無しさん
2011/01/06(木) 01:06:52あんまり覗く価値ないですねここ。二度ときません
0257デフォルトの名無しさん
2011/01/06(木) 01:16:540258デフォルトの名無しさん
2011/01/06(木) 01:21:380259デフォルトの名無しさん
2011/01/06(木) 03:49:410260デフォルトの名無しさん
2011/01/06(木) 05:01:11GetDeviceCaps
単純にステージ数ならMaxTextureBlendStages
使用できるテクスチャ枚数はMaxSimultaneousTextures
ステージ数が8ない機種なんて、RivaTNT以前とかの話になるから
基本的に8あると思っていい。
テクスチャ枚数はGeForce4くらいまでは2枚、それ以降は8枚使える。
0261デフォルトの名無しさん
2011/01/06(木) 08:44:40でも自分がどこまでできるか言わなかったよね
なのに他の人には「わかれよ!」っていうんだよね
いままでは回りの人は君のいうこと全部いいように汲んでくれたと思うけど
これからはそういうの少ないから気をつけてね
0262デフォルトの名無しさん
2011/01/06(木) 09:15:59>>244
女性に歳を聞くもんじゃないよ?
0263デフォルトの名無しさん
2011/01/06(木) 10:51:080264デフォルトの名無しさん
2011/01/06(木) 11:09:58こんな掲示板でしか説教できないんだね
かわいそうだね
0265228
2011/01/06(木) 13:46:55>わざわざアダプタグループの定義があるくらいだから、仕様としては
>問題ないと思う。
そうなんです。自分もまさにそう思って始めたんですが、なかなか
うまくいきません。理由を探っているうちに234で書いたような考え
すなわち、
複数デバイスで同時フルスクリーンの場合と、マルチヘッドデバイス
を作るときの場合とで、ウインドウの当て方に矛盾があるように
思えてきたわけです。
で、誰か出来るか出来ないかだけでもご存じないかと・・・・・
0266デフォルトの名無しさん
2011/01/06(木) 17:07:25サンプルソースがDiectX8なんです。PCに入っているのはDX9で、何処かにDirectX9
に移植したサンプルソースは有りませんでしょうか?
0267デフォルトの名無しさん
2011/01/06(木) 17:10:430268デフォルトの名無しさん
2011/01/06(木) 17:15:17感じました、DX8とDX9の違いも分からず。困難であると実感したので、ここで聞いています。
0269デフォルトの名無しさん
2011/01/06(木) 17:17:51いったんDX8を学ぶという手もある
0270デフォルトの名無しさん
2011/01/06(木) 17:19:43234のリンク先を見ても、べつに矛盾はしてないと思うけど。
まとめると、
1. フォーカスウインドウは全てのデバイスで共有する。(同じウインドウを指定する)
2. デバイスウインドウはアダプタ(ヘッド)ごとに異なっていないと駄目。
3. 必ず1つのデバイスがフォーカスウインドウをデバイスウインドウとして使用しなければいけない。
0271デフォルトの名無しさん
2011/01/06(木) 17:21:24DX9SDXを入れてもDX8SDKは入ってません><
0272デフォルトの名無しさん
2011/01/06(木) 17:28:420273デフォルトの名無しさん
2011/01/06(木) 17:33:570274228
2011/01/06(木) 17:47:06なるほど。明解な説明ありがとうございます。
もうちょっといじってみて、後ほど結果など報告します。
0275デフォルトの名無しさん
2011/01/06(木) 17:49:31のサンプルソースは↓のURLの関連ファイルからダウンロードです。
http://www.oreilly.co.jp/books/9784873113777/
本に載ってるライセンスは、ソースの大半を製品やCDへ乗せる場合は連絡が
必要ですがその他は、自由です。
このなかのviewerとcommonをまとめてコンパイルしています。VC++2008EE使用。
どなたか出来ませんでしょうか?
エラーを出すソースは全ソースファイルの一部です。
0276デフォルトの名無しさん
2011/01/06(木) 17:58:190277デフォルトの名無しさん
2011/01/06(木) 21:48:03何上げれば良いのか分からなかったのでviewer.exeだけ。
環境はVC++2008EEとDirectX SDKのAugust 2007
0278デフォルトの名無しさん
2011/01/06(木) 22:08:51よろしければ、修正したソースを上げて貰えると嬉しいです。
ライセンス的には問題ないです、お願いいたします。
0280デフォルトの名無しさん
2011/01/06(木) 22:24:57コンパイルエラーなんて一つしか出なかったしログ見たらすぐ分かるしで
わざわざファイル上げるまでもないような?
d3dx8.libはなくてもd3d8.libがあればとりあえずおkらしい
0281デフォルトの名無しさん
2011/01/06(木) 22:25:24圧縮しても377Mあるんだが・・・
0282266
2011/01/06(木) 22:26:560284デフォルトの名無しさん
2011/01/06(木) 22:34:360285デフォルトの名無しさん
2011/01/06(木) 22:42:16マイクロソフトは馬鹿だなw
テメェでバージョンつけたくせに配布止めちまうからなw
古いバージョンの本をゴミにすることで経済効果でも狙ってんのかねぇ・・・(笑)
ちーん!
0286281
2011/01/06(木) 22:45:58>エラーを出すソース
これのエラーは何と出てるんだ?
0287266
2011/01/06(木) 22:46:33これそれほど古くないでしょ>< (泣き泣き
0288デフォルトの名無しさん
2011/01/06(木) 22:53:02一体なんのためのバージョンなのかわからないな
0289266
2011/01/06(木) 22:53:14c:\dunn_example_code\common\renderer.cpp(446) : error C2660: 'IDirect3D9::EnumAdapterModes' : 関数に 3 個の引数を指定できません。
c:\dunn_example_code\common\renderer.cpp(606) : error C2660: 'IDirect3D9::EnumAdapterModes' : 関数に 3 個の引数を指定できません。
c:\dunn_example_code\common\renderer.cpp(700) : error C2065: 'D3DPRESENT_RATE_UNLIMITED' : 定義されていない識別子です。
c:\dunn_example_code\common\renderer.cpp(705) : error C2039: 'FullScreen_PresentationInterval' : '_D3DPRESENT_PARAMETERS_' のメンバではありません。
c:\program files\microsoft directx sdk (march 2009)\include\d3d9types.h(1493) : '_D3DPRESENT_PARAMETERS_' の宣言を確認してください。
c:\dunn_example_code\common\renderer.cpp(770) : error C2065: 'D3DTSS_ADDRESSU' : 定義されていない識別子です。
c:\dunn_example_code\common\renderer.cpp(1065) : error C2065: 'D3DVIEWPORT8' : 定義されていない識別子です。
c:\dunn_example_code\common\renderer.cpp(1065) : error C2146: 構文エラー : ';' が、識別子 'viewData' の前に必要です。
c:\dunn_example_code\common\renderer.cpp(1065) : error C2065: 'viewData' : 定義されていない識別子です。
c:\dunn_example_code\common\renderer.cpp(1837) : error C2065: 'D3DTSS_ADDRESSV' : 定義されていない識別子です。
c:\dunn_example_code\common\renderer.cpp(1954) : error C2664: 'IDirect3DDevice9::SetVertexShader' : 1 番目の引数を 'int' から 'IDirect3DVertexShader9 *' に変換できません。(新しい機能 ; ヘルプを参照)
例としてこんな物が 、もっと出ています。
0290266
2011/01/06(木) 23:03:390291266
2011/01/06(木) 23:05:030292デフォルトの名無しさん
2011/01/06(木) 23:05:120293デフォルトの名無しさん
2011/01/06(木) 23:14:22ページサンプルみた感じそこまでSDKに依存してる内容でもなさそうだから
入門書2〜3冊こなせばバージョンちがくても読めるようになるっしょ
とりあえず別のやっとけばぁ?w
こことかいいんじゃね?
俺もよくお世話になってる
http://marupeke296.com/index.html
0294266
2011/01/06(木) 23:17:54そこを見てやっていたのですが、今ひとつマトリックス演算が理解できず。
そこの紹介で、実例で学ぶゲーム3D数学を参考にして理解しましたと、有ったので。
買ったんですよ。
0295デフォルトの名無しさん
2011/01/06(木) 23:19:22それともDXじゃないといけない理由があるとか?
0296デフォルトの名無しさん
2011/01/06(木) 23:20:51ttp://www.microsoft.com/downloads/en/details.aspx?FamilyId=B7BC31FA-2DF1-44FD-95A4-C2555446AED4&displaylang=en
これを落すヨロシ
お望みのd3d8.hが入ってる
0297266
2011/01/07(金) 00:00:12できました、本当にありがとうございます。
しかし、このSDK何処かに保存して、最新のSDK入れて区別しないとですね。
いま2004上書きしちゃいました。
でも、できるようになったので嬉しいです。ありがとうございます。
0298デフォルトの名無しさん
2011/01/07(金) 02:14:208のサンプルコードと変更点まとめてあるとこ見ながらやってるけどほとんど問題ないよ
せいぜい引数が1個増えたり減ったりしてる程度
0299デフォルトの名無しさん
2011/01/07(金) 06:01:180300デフォルトの名無しさん
2011/01/07(金) 07:30:31HLSLなくね?
描画部分がほぼ組みなおしになった気が・・・
0301デフォルトの名無しさん
2011/01/07(金) 19:53:10GetCursorPos(&point);
ScreenToClient(hwnd, &point);
Drawtest(point.x, point.y);
break;
で呼んで
void Drawtest(int x, int y)
{
char str[] = "Hello World";
// 描画開始
g_lpD3DDevice->BeginScene();
RECT rc;
rc.left = x;
rc.top = y;
rc.right = x+16*strlen(str);
rc.bottom = y+16;
// 描画処理
g_font->DrawText(NULL, str, -1, &rc, NULL, D3DCOLOR_XRGB(255,255,255));
// 描画終了
g_lpD3DDevice->EndScene();
// 表示
g_lpD3DDevice->Present( NULL, NULL, NULL, NULL );
}
Hallo Worldの文字がマウスにぴったりと追従してくれません
ウィンドウの左上から離れれば離れるほど、カーソルと文字がの間が離れて行ってしまいます。
どこがいけないのでしょう?
0302デフォルトの名無しさん
2011/01/07(金) 20:01:10たとえば、入力や衝突だけ毎回やってif文で奇数フレームだけ描画とかのほうがいいかな?
0303デフォルトの名無しさん
2011/01/07(金) 21:00:30たとえばMQOのフリー版で試験することは一応可能だが。APIはDXで。
あれで動かなそうだったら、もっとロジック突っ込むゲームでは無理じゃね?
0304デフォルトの名無しさん
2011/01/07(金) 21:46:14http://msdn.microsoft.com/ja-jp/library/bb173962(v=vs.85).aspx
第5引数のFormatを調整してみては?
0305デフォルトの名無しさん
2011/01/07(金) 22:14:251、基本形状を作る。
2、メニューからオブジェクトパネルをだしてオブジェクトのプロパティから、曲面分割する。
3、メニューから曲線をフリーズする。
4、気が済むまで2に戻る。
5、マウスの左ドラッグ。おもいかも〜。
ポリゴン数はオブジェクトのプロパティから確認できるので、簡単♪
ちなみに、C2DとRadeonHD5670でプロパティの数字で20万四角形位出すと10フレーム/秒位だ。体感で・・・。
0306デフォルトの名無しさん
2011/01/07(金) 23:40:29Radeon HD 4350
ただ表示するだけで10k/1frame @60FPSくらいらしいよ
これ基準に考えると良いかも
0307デフォルトの名無しさん
2011/01/08(土) 07:57:06俺の同人ゲーが1キャラ5〜600ポリで地形もそんなもんだから
随分たくさん画面に出せるな
0308デフォルトの名無しさん
2011/01/08(土) 08:55:33ぶっちゃけ頂点数だけじゃ評価できないよ
足引っ張りそうなのは描画回数とか
フィルレートとか半透明処理とか当時あんまり速くなかったピクセルシェーダとか
0309デフォルトの名無しさん
2011/01/08(土) 09:22:530310301
2011/01/08(土) 12:18:19左上に合わせたり、いろいろ試したのですが
直りませんでした
こんな感じです
http://www.dotup.org/uploda/www.dotup.org1347139.png
0311デフォルトの名無しさん
2011/01/08(土) 13:05:420312デフォルトの名無しさん
2011/01/08(土) 13:11:23クライアント領域が 624x442 くらいか
0313デフォルトの名無しさん
2011/01/08(土) 13:27:15623(横)*441(縦)
でした
0314デフォルトの名無しさん
2011/01/08(土) 13:37:20クライアント領域のサイズで割って補正しる
0315301
2011/01/08(土) 14:16:47> ScreenToClient(hwnd, &point);
で、クライアント領域になってるのでは?と思うので
Fontを描くときになんか間違ってるのではないかと思って
0316デフォルトの名無しさん
2011/01/08(土) 14:34:52クライアント領域のサイズが違うんじゃないか?
0317デフォルトの名無しさん
2011/01/08(土) 14:41:05うまくいきました!
答えてくれた人たち、ありがとうございます
0318デフォルトの名無しさん
2011/01/08(土) 15:48:35原因と対処方を書け。お前は解決してうれしいかもしれないが、他の人にとってはまったく無意味。
0319デフォルトの名無しさん
2011/01/08(土) 19:18:28>>316に書いてあるだろうが
0320デフォルトの名無しさん
2011/01/08(土) 19:20:170321デフォルトの名無しさん
2011/01/08(土) 21:40:23何が悪いんだよ
0322デフォルトの名無しさん
2011/01/09(日) 05:29:290323デフォルトの名無しさん
2011/01/09(日) 09:14:58どんな難解ニュースでも掲示板の書き込みを読んで簡単に理解。
ニュースを勢い順にカテゴリー別で表示する"2NN"(2ちゃんねるニュース速報+ナビゲーター)もどうぞ。
0324デフォルトの名無しさん
2011/01/09(日) 10:14:38アルファブレンドを使わずにフェードイン/フェードアウトしたいんですが
DirectDrawにそういうAPIがあるようなんですがこの場合に
ハードウェア支援は受けられるんでしょうか。
0326デフォルトの名無しさん
2011/01/09(日) 15:41:2624ビットとか32ビットとかで処理する必要があるということですかね
その場合にアルファブレンドを使わずにパレットアニメーションのような
フェードイン、フェードアウトをするにはどうすればいいですか
色違いの画像を予め用意する以外の方法でお願いします
例えば入力画素のRGB値が特定の値だったら別のRGB値に変換して
高速に描画をするようなことはできますか。OpenGLなどではどうでしょうか
0328デフォルトの名無しさん
2011/01/09(日) 17:15:430329デフォルトの名無しさん
2011/01/09(日) 17:26:16黒で線形合成か白で減算合成かじゃだめなのか
0330デフォルトの名無しさん
2011/01/09(日) 18:33:54フェイドにパレットアニメーションを使う意味が分からない
0331デフォルトの名無しさん
2011/01/09(日) 21:08:37何かいい方法ない?
元の.xから4倍になってる。
■ このスレッドは過去ログ倉庫に格納されています