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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:56:40 ]
※回答する人も、質問する人も必ず読んでください

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

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

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

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

321 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 16:33:49 ]
>>304お願いします

322 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:13:13 ]
>>321

OpenGL
// 行列モードに射影行列を選択
glMatrixMode(GL_PROJECTION);
// 射影行列を生成
glFrustum(,,,,

DirectX(固定機能パイプライン使用)
//射影行列を生成
D3DXMATRIX matProj ;
D3DXMatrixPerspectiveFovLH(&matproj,,,,,
//デバイスに射影行列を渡す
device->SetTransform(D3DTS_PROJECTION, &matProj);

頂点シェーダを使って行列変換をするなら
D3DTS_PROJECTIONは使わない
直接生成した行列をエフェクトに渡すなりすればいい


323 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:18:30 ]
あ、すまない
glFrustumなら
D3DXMatrixPerspectiveOffCenterLH
のほうが近いか

324 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:20:25 ]
そして、さらに連投すまそ
OpneGLは右手座標系だったね
D3DXMatrixPerspectiveOffCenterRH
ってことで

325 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:45:33 ]
丁寧にありがとうございます。
つまづいたらまた質問させてください。

326 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 23:29:11 ]
c#でMDIなフォームに対して、親フォーム、子フォーム、各コントロールを
DirectXで描画しようとしてよく分からなくなっています。
SwapChainとかいうのを描画対象の分だけ作るというところまでは
調べたのですが、具体的にどういう風に書けば良いのかが分からず、解説サイトを
探しているのですが、ヒットしない状況です。
c#で、そこら辺を解説してあるサイトがありましたら、教えていただけますでしょうか。
よろしくお願いします。

327 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 09:04:55 ]
すいません。
今、DirectX 9.0SDKを使っているのですが、
DirectX関連の書籍を購入したら、付属のCDに、DirectX SDK (Fedruary2007)が入ってました。
このバージョンをインストールした場合、9.0SDKを使ってた時に作った物が
動かなくなる可能性はあるでしょうか?
Fedruary2007の方は、DirectX9に対応しているSDKのようなのですが、
何か心配なので教えてください。
両方共、殆ど同じ仕様なら良いのですが・・・

328 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 09:22:47 ]
>>327
ほとんど同じではあるが
まったく一緒ではないんで動かなくなる可能性はある
メッシュやエフェクト関連で
互換性の無い変更があったので・・・・

まぁ、でもいつまでも旧バージョンに
しがみついていられるわけでもないので
いい機会だからさくっと修正してみるのも良いかもしれない
たいした変更ではないしね

329 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 09:33:37 ]
>>328
そうですか。
ありがとうございます。
メッシュ機能も使ってるので、ちょっと恐いですが、
ほとんど同じなら、動かなくならない事を祈って新しい方に変更してみます。



330 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 16:14:48 ]
DirectX9.0cで、モニタの解像度を切り替えられるようにしたいのですが、
プログラムが実行されるPCでの利用可能な解像度を取得するには
どのようにすればいいのでしょうか

331 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 16:57:25 ]
>>330

// 適当
int retW[32] ;
int retH[32] ;

// 引数は自分の調べたいアダプタとフォーマットで
int num = (IDirect3D9)->GetAdapterModeCount(D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8 ) ;

for ( int i = 0 ; i < num ; i++ ){
D3DDISPLAYMODE dm ;
DXUTGetD3DObject()->EnumAdapterModes ( D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8, i, &dm ) ;
retW[i] = dm.Width ;
retH[i] = dm.Height ;
}



332 名前:330 mailto:sage [2008/01/02(水) 16:59:51 ]
DXUTGetD3DObject()は忘れてくれ
そこは自分の作ったIDirect3D9インターフェースで

333 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 18:35:06 ]
線分を描画する際、線分の太さを変更したいのですが可能でしょうか?

334 名前:333 mailto:sage [2008/01/02(水) 19:05:16 ]
自己破産しマスタ

335 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:27:13 ]
>>331
ありがとうございます。うまくいきました

336 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 23:31:34 ]
3Dを回転させるのにクォータニオンを使おうと考え色々と調べたのですが思うように回転してくれません。
D3DXQuaternionRotationAxisを使う時に回転の軸を設定する必要があるようなのですが、この軸の設定がいまいち分からず・・・。
どうかこの回転の軸の設定をどうすればいいのか教えてください、お願いします。

337 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 23:51:54 ]
>>336
Matrixでyawrollpitchから生成して、matrix to quoternionで変換したら?

338 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 23:52:43 ]
>>336
クオータニオンでググれよ。

339 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 14:22:30 ]
640×480の画面と800×600の画面で全く同じ画面イメージで描画したいのですが
スクリーン座標を変換するのをDirectXが自動でやってくれるような設定はありますか?
それともバックバッファサイズを統一するとか自前で座標変換するかしかないですか?



340 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 15:33:29 ]
誰か
ttp://msdn.microsoft.com/library/ja/DirectX9_c/directx/htm/idirectdrawclippergetcliplist.asp
の引数の説明の解説求む(;ω;)
↓がダメなんじゃが・・・

RECT rc={0,0,640,480};
RGNDATA rgn={0};
DWORD size;
if(FAILED(surface->GetClipper( &clipper )))return;
if(FAILED(clipper->GetClipList( &rc ,&rgn,&size)))return;      <-ここで終ってる


341 名前:330 mailto:sage [2008/01/03(木) 16:02:08 ]
>>339
ビューポートの設定をきちんとすれば
アス比も一緒だしまったく同じように描画されるはずだが

>>340
SetしてないものをどうやってGetするんだ?
てか、戻り値が何かくらいチェックして報告しろ

342 名前:340 mailto:sage [2008/01/03(木) 16:52:23 ]
>>341
早速ありがとうございます。m(_ _)m戻り値は引数エラーのコードでした。
アホな発言かもしれないですけど、もしかしてプライマリサーフェイスって
PCのディスプレイのサイズで作られるんですか?

343 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:40:37 ]
>>341
レスありがとうございます。ですがさっぱりわかりません。

2Dのスプライトを同じようにしたいのですが
640×480と800×600の場合、ビューポートというのは
どのように設定すればよろしいのでしょうか?

344 名前:339 343 mailto:sage [2008/01/03(木) 18:18:04 ]
ちなみに今だとD3DXMatrixTransformation2Dで2D座標を取得する際に
拡大比率のX,Yの値に ( 800 pixsel / 600 pixsel ) = 1.25 を指定しています

ビューポートというのを設定するとこのやり方より処理は軽くなりますか?

345 名前:339 343 mailto:sage [2008/01/03(木) 18:19:25 ]
800 / 640でしたorz

346 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 19:25:21 ]
>>345
なんでそういう質問が出るのかがよくわからんが一般的に

D3DVIEWPORT9 vp;
vp.X = 0;
vp.Y = 0;
vp.Width = 640;
vp.Height = 480;
vp.MinZ = 0.0f;
vp.MaxZ = 1.0f;
(device)->SetViewport(&vp));

と設定すれば
射影行列変換後の座標を
640x480のスクリーン座標に自動変換してくれる

どういう射影行列をつくってるのかは知らんが
射影行列変換後までの座標は
x=-1〜1、y=-1〜1、z=0〜1となり
どれらいのスクリーンに引き伸ばすのか?というのが
ビューポートだと思えばいい


347 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 19:25:57 ]
www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla%3Aja%3Aofficial&hs=eEN&q=%E3%83%93%E3%83%A5%E3%83%BC%E3%83%9D%E3%83%BC%E3%83%88+%E8%A8%AD%E5%AE%9A+directx&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja

348 名前:339 343 mailto:sage [2008/01/03(木) 19:56:50 ]
>>346
たびたびすいません。それってスプライトの座標指定を-1〜1の座標で
指定しなくてはいけないと言う解釈でいいのでしょうか?

例えば640×480のフルスクリーンの画面上で、スプライトの座標をX = 64,y = 48という
座標で指定した場合の見た目の位置と同じところに
800×600のフルスクリーン画面上でx=64,y=48というスプライト座標を指定した時に
画面上の同じあたりの位置に表示したいという事なんですが

そこで示されてるようにビューポートを指定するとこのようにできるのですか?

349 名前:339 343 mailto:sage [2008/01/03(木) 20:00:53 ]
ちょっと説明が足りませんでした
スプライトの描画時にx=64、y=48という座標を指定した場合に
640×480の画面の場合はX=64、y=48
800×600の画面の場合はX=80、y=60の位置に描画したいという事です




350 名前:298 [2008/01/04(金) 06:27:46 ]
SDKのサンプル見たんですが、やっぱり分かりません・・・

SDK Tutorial6のトラの代わりに、地面に見立てた板ポリゴンのXファイルをロードしています。

地面との当たり判定は(自機の高さ - 自機から垂直に降ろした直線とポリゴンの交点の高さ)
でできると思うんですが、"自機から垂直に降ろした直線とポリゴンの交点の高さ"の求め方がさっぱり分かりません。

かなり検索したんですが、数学的な解説しかしているサイトがなくて、肝心な、自分が分からない部分が書かれているサイトが見つかりません。
ヒントか答えか参考になるサイトがあったら教えてください。

351 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 08:28:10 ]
Xの読み込みをD3DXに頼らないでやるところから始めろ。
そうやって怠けて手抜きをするから途中で詰まる。

352 名前:298 mailto:sage [2008/01/04(金) 08:59:56 ]
>>351
D3DXライブラリというやつですか?
なんか難しそうですがやってみます。

353 名前:喜一 [2008/01/04(金) 14:12:47 ]
くだらない質問なのですが・・・
DirectXをアップデートするにはどうしたらよいのでしょうか・・・

354 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:37:39 ]
>>353
SDKでしたらこちらで
www.microsoft.com/japan/msdn/directx/

ランタイム版でしたらこちらでダウンロードしてください
ttp://www.microsoft.com/japan/windows/directx/downloads/default.mspx

とりあえず今入っているダイレクトXをアンインストールしてから
インストールがいいらしいです


355 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:44:04 ]
あ、ランタイム版はアンインストールの必要はないっぽいです

356 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 13:59:05 ]
>>339,343,349
D3DXMatrixOrthoOffCenterLHで射影行列を設定すればいい。
画面の左上と右下の座標値を設定するだけ。
ワールド行列とビュー行列は単位行列にする。
頂点フォーマットは未変換のもの(rhw無し)を使う。

357 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 15:14:35 ]
RHWのRHって何の略ですか?
LookAtRHとかのRHとは別物ですよね?

358 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 15:29:44 ]
reciprocal of homogeneous

359 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 15:48:52 ]
レイプ変態わいせつの略です



360 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:09:49 ]
システムメモリー上のサーフェイスに直接アクセスするときは
Lockしなくていいってほんと?いきなりddsd.lpSurfaceにアクセスできる?

361 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 19:05:53 ]
DirectX SDKをインストールしたんですけどインストールしたバスの場所が分かりません
一応{D¥Program}にインストールしたつもりですが{DIRECTX9SDK}が見つかりません
{Redist}{Samples}{Utilities}{Developer Runtime}{Documentation}{Extras}{Include}{Lib}はあるんですけど
プログラムの追加と削除には登録されてるみたいなんですけど肝心のバスが分かりません
バスの調べかたなど知ってる方がいたら教えてください

362 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 19:48:45 ]
VCを使ってたら知る必要もないけど別ので作るのかな
SDKはあくまで金槌や釘などと同じく道具だから本体は無い。
重要なのはIncludeフォルダとLibフォルダで、まぁ説明書と目次みたいなものか。
IncludeフォルダとLibフォルダが分かっていれば、それぞれのパスを登録するだけでOK



363 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 19:57:14 ]
レスありがとうございます
もう1つ質問なんですけど、VC++で使うにはサブシステムのバス通さなきゃいけないと思うんですけど(ネットや書籍で書いてた)
ですがdxsdk_november2007では勝手に登録してくれるんですか?
インクルードファイルに{Include}が登録されてあったり
ライブラリファイルには{Lib\x86}が登録されてるんです
ちなみにインストール前は登録されてなかったです
これはどういうことなのでしょか?この上に新しく登録しなきゃいけない?それとも自動で行われてるからやらなくていい?
分かる方いたら教えてください

364 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:05:16 ]
別に説明書や目次が重複しても問題ないだろ、無駄なだけで。

365 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:17:16 ]
なるほどじゃぁ登録します
ありがとうございました

366 名前:デフォルトの名無しさん [2008/01/05(土) 20:41:02 ]
VisualStudio2003 Spoke VersionのMSDNライブラリにはVisualBasic以外のDirectXの解説を
インストールできますか?VisualBasicしか検索でてこないので・・・
お願いします。


367 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:39:46 ]
ビルドは正常終了するのにデバックだとエラーが出るんですけどどうしてなんでしょうか?
エラー文は以下の通りです


------ ビルド開始: プロジェクト: MuscatBoy, 構成: Debug Win32 ------
コンパイルしています...
StageMenu.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Stage4.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Stage3.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Stage2.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Stage1.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Ranking.cpp

368 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:40:19 ]
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Option.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
MyGameLib.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
コードを生成中...
ビルドログは "file://d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\MuscatBoy\Debug\BuildLog.htm" に保存されました。
MuscatBoy - エラー 8、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========







よろしくお願いします

369 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:46:35 ]
ビルド自体失敗してるやんw



370 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:55:46 ]
見間違いしてましたビルドでも失敗してました
ですがこれサンプルなので自分では一切さわってないものなんですけど・・・
サンプル自体糞ということですか?

371 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:56:01 ]
>>368
SDkNovember2007から
DirectMusicをサポートしなくなった

372 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:05:32 ]
てことはAugust 2007 DirectX SDKをDLしないといけないんですね
助かりましたありがとうございました

373 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:07:52 ]
DirectMusicなくなっちゃったのか
音の再生はMusicしか使ってないと言うのに

374 名前:デフォルトの名無しさん [2008/01/06(日) 11:57:29 ]
一昨日最近アップされた(?)DirectX9.0C(4.09.0000.0904)ってやつに
したんだけど、次の日からパソコンが立ち上がらなくなり(黒い画面で
左上に文字カーソルが点滅のまま)仕方ないので、F8で前回正常にっての
選んでから起動させたんだけど、今日完全に起動しなくなった・・・

人によっては、最悪なケースになるのかな?

375 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:28:09 ]
DirectX3位までは、ドライバまで置き換えられることがあって、
その結果起動しなくなったって話がたまにあったよね。

376 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:34:53 ]
DirectX「3位」ってなんだろうと思った

377 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:36:26 ]
d:\ゲーム製作案追加\

warota(w

378 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:42:03 ]
>>374
ぶっちゃけDirectXのせいじゃないんじゃね?
ランタイム入れなおしたなら
再起動求められたはずだしそのときは正常起動したんだろ?
他になにかやらかしてないかよく思い出せ

あと一昨日アップされたやつなんてあったっけ?

379 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:45:00 ]
>d:\ゲーム製作案追加\
ワロタw



380 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:03:39 ]
>>360スルーされてるけど、知らない??

381 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:30:37 ]
昔やねうらおがそんなこと言ってた希ガス。
www.sun-inet.or.jp/~yaneurao/intensive/diw1.html

382 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:44:49 ]
>>380
おまえは何を言ってるんだ?とか思われてる予感。

DirectX7のDirectDrawのヘルプを見る限り、
そんな保証はどこにもされていない。
ただし、現実問題としてはできるらしい、と。
非Lock状態だからといって、わざわざアドレスを動かすような理由も無いし。

ちなみに>>381のサイトは既に6年以上も前の記事だから現状は不明。
仮にLockしたところで、パフォーマンスへの影響は無いに等しい気がする。

383 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:33:36 ]
DirectMusicなくなったのかよ
DirectShowでMP3とかしか流せなくなったのか?

384 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 18:21:16 ]
>>381-382
禿しくサンクス
>>382
そんなこと言ったって資料は出てこないし余りにも未開の地過ぎて右も左も分からんのだよ・・・


385 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:04:35 ]
DirectX9のサイトとか普通にあるけど

386 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:07:13 ]
てか
それこそ自分で試してみれば良いんでね?

387 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:14:08 ]
所詮、現在のグラフィックカードは、IntelかAMDかnVidiaしかないも同然だから、
3種類試せばおkじゃね。

388 名前:367 mailto:sage [2008/01/06(日) 21:19:00 ]
August 2007 DirectX SDKをインストールしたのですがまたエラーがでました
分かる方いたら教えてください


'MuscatBoy.exe': 'D:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\MuscatBoy\Debug\MuscatBoy.exe' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'MuscatBoy.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\user32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\gdi32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\ole32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\advapi32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\rpcrt4.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\msvcrt.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\d3d9.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\d3d8thk.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\version.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\winmm.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\d3dx9_35.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\dinput8.dll' を読み込みました。シンボルが読み込まれていません。
プログラム '[4068] MuscatBoy.exe: ネイティブ' はコード 0 (0x0) で終了しました。

389 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:21:34 ]
別にエラーなんか出てないだろ。
デバッグ実行してみたけど、シンボル情報がない、というInfoだけ。
最後は、MuscatBoyが終了した、ってだけ。



390 名前:367 mailto:sage [2008/01/06(日) 21:25:23 ]
そうだったんですか
デバック後アプリ出てこなかったのでエラーだと思ってました
ありがとうございました

391 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:23:26 ]
>390
悪いことは言わんからツクールでも使っとけ。


392 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:42:35 ]
バンプマップでメカのモールドを表現しているんですが、これだと環境光だけの陰の部分は溝が
出てこず、のっぺらりんとしてしまいます。
これの対応策としては、テクスチャで描いた溝と組み合わせる、くらいでしょうか?
他に良い方法があるようでしたらご教示ください。

393 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:43:50 ]
>>391
いや、最初はわけわからんだろ?

394 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:44:59 ]
ピクセルシェーダからスカラ値を出力 -> 入力したいんですが、
レンダリングターゲットのビット深度が最高16bit x 2だったので
それを32bit x 1にする変換を組み込みました。

// ピクセルシェーダ出力
vOutColor.x = sSrcColor * 65536.0f;
vOutColor.y = sSrcColor * 65536.0f * 65536.0f;
vOutColor = floor(vOutColor) / 65536.0f;
vOutColor = frac(vOutColor);

↑この出力を↓この入力に

// ピクセルシェーダ入力
sInColor = vSrcColor.x;
sInColor += vSrcColor.y / 65536.0f;

しかしこれだと、ノイズが乗って正しく処理できないのか画像にゴミが出ます。
普通に16bit x 1でおこなった場合はゴミは出ません。
シェーダの精度の問題かと思い、65536.0fではなく256.0fでやっても同様でした。
せっかく高精度にしたのに、逆の結果になって哀しいんですが
何でだと思いますか?
GPUはラデオン9700です。

>>392
バンプマップが光の入射ベクトルと法線ベクトルの差で
陰影をつけるテクニックなら、無指向の環境光で
陰影がつかないのはそれで正しい結果だと思うけど。
対策としては、ディレクショナルライトに変えるか
環境光に擬似的なライトの位置や方向を設定してみては?

395 名前:デフォルトの名無しさん [2008/01/07(月) 00:59:35 ]
参考書についてきたアニメーション入りのXファイルはちゃんと動くのだが、
どっかから拾ってきたXファイル(アニメ入り)が動かない(表示はされる)。

現在は再帰でフレーム走査して云々って処理してるんだけど、
これは拾ってきたXファイルが悪いのだろうか?
ちなみにXファイルをダブルクリックして起動するソフトで見るとメチャクチャ。

396 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:46:41 ]
>>395
Xファイルのフォーマットに癖があるからw

少なくとも俺は、どのフォーマット(Xファイルの方言みたいなもんw)にも
対応したXファイル読み込み→表示ってのは見たことない
書き込み→読み込みも同様

ちなみに
・メッシュのみ
・フレームとメッシュ混合
・アニメーション+アニメーション対応フレーム+メッシュ
・アニメーション+アニメーション対応フレーム+メッシュ+フレーム(アニメーション非対応)
・ワンスキン
・ワンスキン+アニメーション
・スキンメッシュ+アニメーション+フレーム(アニメーション非対応)+メッシュ
・なんだかよくわからん名前でモデルのインスタンスを共用してるやつ(イミフw読めたのみたことないw)
・他多数
等、すべてに対応しようとすると組み合わせが鬼

結論:Xファイルは考えるだけ無駄(考えるな感じろ)
補足
 まあ、どっかの入門サイトでそいつができるって言った方法や内容以外の用途で使わないのが頭のいい使い方
 そうすると応用が利かないし、ツール上で1つばっかりモデル作ってはいおしまいなんてありえないから
 実際はXファイルなんて使ってなんとかしようとすると「ああ、こんなことなら違う方法でやっときゃよかった」ってなるんだよね
 ま、アニメーション使わなきゃ余裕だし、結構使えるから自分ができる範囲でなんとかしなさいな おしまい

397 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:58:07 ]
>>394
その式は 0.0≦sSrcColor<1.0 ならいいけど、
sSrcColor=1.0 の場合 多分 0.0 になっちゃうわね。(frac(1.0)=0.0)
vOutColor = frac(vOutColor); を
vOutColor.y = frac(vOutColor.y); (上位側(x)をfracしない)
にしてもダメかしら。

398 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 02:23:52 ]
>>397
直りました!
まさにそれでした。
ありがとうございました。


399 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 02:58:12 ]
>>394
それで本当に精度がよくなってるか、確認した方がいいかと。
俺は以前ピクセルシェーダで1/640を計算させただけで精度が悪くて
使い物にならなかったよ。



400 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 09:39:25 ]
クライアント領域全体をキャプチャして.jpgなどの画像として保存できる関数ってありますか?

401 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 10:02:13 ]
ありません

402 名前:デフォルトの名無しさん [2008/01/07(月) 13:17:11 ]
>>396
レスサンクス。やはりフォーマットの問題だったか。
どっかでフォーマットに注意すべし!って聞いたことあったのでもしや・・・と思ったがやはり。
まぁ、注意するだけで何もできないのだけどw

つまり、アニメしなかったらグラフィッカーに文句言えばおkってことですね。

403 名前:K田 [2008/01/07(月) 13:36:38 ]
FortranをC言語に直すことが出来なくて…
やってくれ☆


404 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 15:22:46 ]
Direct3Dのついて質問です。

デバイス初期化の際にHWNDが必要ということは、複数のウィンドウが開かれるアプリケーションの場合
ウィンドウごとにデバイス初期化が必要ですよね?

ということはそのデバイスを通じてロードされるテクスチャもウィンドウ毎にロードする必要があるのでしょうか?

例えばAというPNGファイルをロードしたテクスチャを、ウインドウAでもウインドウBでも使いたい場合、A用B用と@別個にロードするのでしょうか?
VRAMもったいないなぁという気分なのですが…)

405 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 15:55:00 ]
>>404
まずはFAQを全部読むんだ
ttp://msdn.microsoft.com/library/ja/jpdndxgen/htm/directx9devfaq.asp

406 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 16:16:10 ]
>>405
>1 つの Direct3D デバイスのみを使う。複数のターゲットにレンダリングする必要がある場合は、SetRenderTarget を使います
これですね
ありがとうございます。
昔作ったSwapChain管理クラスひっぱりだします(何のために作ったのかを失念してましたわ…)

407 名前:374 [2008/01/07(月) 17:51:32 ]
>378
すいません、一昨日というのは4ゲーマーを見た時でした。
で、インストール完了後は再起動を求められなかったのでその日は
そのままパソコンを落としたと・・・
で、次の日に起動したらその症状が出てたという訳です(^^;

408 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 18:04:43 ]
>>402
データを追ってどこに問題があるのか確認するのがプログラマの仕事だろ。
使えないなら自分でまともなエクスポータを書いてグラフィッカーに渡

409 名前:392 mailto:sage [2008/01/07(月) 18:59:03 ]
>>394
>陰影がつかないのはそれで正しい結果だと思うけど。
それを承知の上での質問です。

>環境光に擬似的なライトの位置や方向を設定してみては?
なるほど!
ありがとうございました。



410 名前:304 mailto:sage [2008/01/07(月) 21:49:45 ]
今まで、

// 射影行列の初期化
D3DXMatrixIdentity(&m_proj);
D3DXMatrixPerspectiveFovLH(&m_proj,
D3DXToRadian(45.0f),//カメラの画角
aspect, //アスペクト比
1.0f, //Nearプレーン
1000.0f); //Farプレーン
pD3DDevice->SetTransform(D3DTS_PROJECTION, &m_proj);

と参考書のサンプル通りにしていたところを、>>322-324さんのを参考に

D3DXMatrixIdentity(&m_proj);
D3DXMatrixPerspectiveOffCenterLH(&m_proj,
-CLIENT_WIDTH * 0.5f,
CLIENT_WIDTH * 0.5f,
-CLIENT_HEIGHT * 0.5f,
CLIENT_HEIGHT * 0.5f,
1.0f,
1000.0f);
pD3DDevice->SetTransform(D3DTS_PROJECTION, &m_proj);

に変更しました。

すると、Xファイルを読み込んでCGを描画していたのですが、表示されなくなってしまいました。
何が原因なのでしょうか?

411 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:20:14 ]
>>410
OffCenter の引数をちゃんとカメラ座標系で指定しているか?

412 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 23:19:34 ]
シェーダ解説本を見ていると、アプリケーションからシェーダ変数を設定する際にハンドルを介して
行うものがありますが、直接"(シェーダ変数名)"で指定するのに対し、どういった利点があるのでしょうか?

413 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 23:27:33 ]
>>412
パフォーマンスが上がる
ハンドルは固定なので
一番最初に一度だけ取得するだけで良い

414 名前:412 mailto:sage [2008/01/07(月) 23:31:05 ]
>>413
なるほど!
ありがとうございました!

415 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 00:32:52 ]
C言語でコンパイルすると○○(ファイル名).OBJが開けませんと出るんですが、
原因は何でしょうか?

416 名前:415 mailto:sage [2008/01/08(火) 00:33:48 ]
すみません、誤爆しました。

417 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 00:47:05 ]
設定されているパスにそのOBJがないからです

418 名前:410 mailto:sage [2008/01/08(火) 17:13:47 ]
すいません、これを忘れていました。

#define CLIENT_WIDTH 770
#define CLIENT_HEIGHT 480

>>411
DirectXは左手座標系ですよね。

-CLIENT_WIDTH * 0.5f = -335
CLIENT_WIDTH * 0.5f = 335
-CLIENT_HEIGHT * 0.5f = -240
CLIENT_HEIGHT * 0.5f = 240

になるので、特におかしくない気がするのですが…。

419 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 17:37:23 ]
>>418
glFrustumも
D3DXMatrixPerspectiveOffCenterLHも
クライアントサイズを指定するものじゃないぜ

OpenGLの知識があって
OpenGLのプログラムをDirectXに移植するとかで
こんな面倒なことしてるんじゃないのか??




420 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:18:19 ]
そもそもDirectXに座標系など無い。
決めているのはプログラマ自身でDirectXは何の関係もない。

421 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:39:36 ]
使ってるモデリングソフトにあわせると吉
そうでなくても吉






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

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

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