[表示 : 全て 最新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/

263 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 17:11:38 ]
何を作るかによる。
目的を定めずに手段だけを論じるのは愚か者の極み。

264 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 18:16:38 ]
>>263
そういうのはいいから。

265 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 18:24:36 ]
スレ違いの質問に対して答えをいただけただけでもありがたいと思え

266 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 18:37:54 ]
>>258
もう書かれているがマジレスすると、AmazonでDirectXで検索して、
初心者向けで売れてる本を一冊でも買ったほうがいいと思う。

別に本が優れてるとかじゃなく、ネットの活用が上手くなくて、SDKについても何も分からないんであれば
本に頼るしかないだろう。

267 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:00:02 ]
>>266
ご指南ありがとうございます。
どうか最後にこれだけ教えてもらえないでしょうか?
Microsoft DirectX SDK (November 2007)だけあればできますか?

268 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:12:20 ]
Visual Studioが必要です。

269 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:13:35 ]
パソコンも必要です

270 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:27:50 ]
気力も

271 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:28:26 ]
あとはJavaだな



272 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:35:57 ]
>>267
Windows上でここに書き込んでいるんだとすれば、ソフトウェアとして最低限必要なのは開発環境とSDKだけ

273 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:08:24 ]
Macなのですが、無理ですか?

274 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:12:36 ]
Intel Mac なら Windows をインスコすればいい。

275 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:13:12 ]
>>273
Javaならok

276 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:15:34 ]
何この流れ
釣りは無視しろよ

277 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:16:09 ]
Javaの人気に嫉妬

278 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:17:10 ]
>>256がJavaを使うなんて言ったばっかりに・・・

279 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 21:17:34 ]
>>272
まじであざーした!
がんばってみます。

280 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:05:22 ]
xファイルから得たポリゴンの任意の点の座標を変更する、ってのはどうやったらできる?

281 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:09:44 ]
データが入っている場所の頂点データをいじれよ。



282 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:33:38 ]
>>280
メッシュというと複雑そうにみえるが、中身は頂点バッファやインデックスバッファその他もろもろが集まってるだけ
なんでまずはロックなど頂点バッファの基本的な操作さえ覚えてしまえば後は流れ的にJavaが全て解決してくれる

283 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:14:12 ]
JABAすげー

284 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:17:13 ]
Japan Amateur Baseball Associationか

285 名前:152 mailto:sage [2007/12/30(日) 01:39:13 ]
こんばんは、>>152です。
画面いっぱいのウィンドウの方はできないこともなさそうな感じではありましたが
大きい→小さい画面への変更で、デスクトップアイコンや他アプリの位置等がずれるため
やめることにしました

その後もう一度SetDialogBoxModeのやり方でウィンドウのフラグをあれこれいじってみたら
フルスクリーン→ウィンドウでも上手くいくようになりました

うちにある家族用の別メーカーのXPマシンでも正常動作したようなので、
まあ、今時Win98で動かなくてもしょうがないかなぁと自分を納得させる事にしました

ささっていたビデオカードも、 GeForce4 MX440 SE というかなり昔のボードで
ドライバの配布すら終了している代物でしたので
このボードのドライバがDirectX9.0cに完全対応していなかったのかも知れません

質問に答えてくれた方々、どうもありがとうございました。

286 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:45:57 ]
XP以上のみサポートでぶっちゃけ問題ないよ。

287 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:10:30 ]
シェーダで3次元テクスチャを二つ載せようとしたのですが
なぜか片方しか表示されません。

3次元テクスチャ1つと1次元テクスチャ1つは問題なかったのですが
なぜ…

やり方教えてください

288 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 14:51:57 ]
DXライブラリみたいにビデオメモリに
直接アクセスするのってどうやるんでしょうか?

289 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 15:01:00 ]
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/programmingguide/tutorialsandsamplesandtoolsandtips/samples/clipvolume.asp

すいません、これを試してみたいのですが
どこからDLしていいのかわかりません。
といいますか、どのSDKなのかわかりません

これの実行ファイルかソースうpってもらえませんか?


290 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 15:46:13 ]
>>289
DirectXのSDKをインストールすると入ってるよ

291 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 16:24:52 ]
>>290
前にインスコしたSDKには入ってなかったのです。
Microsoft Platform SDK for Windows Server 2003 R2

また400MBも落とすのに○時間も掛かるのはシンドイっす



292 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 16:50:44 ]
  _, ._
(;゚ Д゚)

293 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:08:18 ]
PlatformSDKは、まぁ、ボケなんだろうけど
サンプルはSDKのバージョンによって中身がかわってるからな
少なくともAugust2007には入ってなかった
でも手元にあった9.0bSDKのCDには入ってたので
デベロッパセンターに行って
Updata〜とついてないSDKを落とせばたぶんついてくるんじゃね?

294 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:43:16 ]
>>291
軽量版があるからこっち使え
java.sun.com/j2se/1.4.2/download.html

295 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 19:25:24 ]
JAVAネタ、いい加減にしつこい

296 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 21:00:51 ]
>>292-293
ボケたつもりはなくて、、、これがSDKだと思ってました。。。

>>294
ありがとうございます。見てみます

297 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 21:01:26 ]
…JAVAですか。
確認する前に書き込んでしまいました

298 名前:デフォルトの名無しさん [2007/12/31(月) 08:36:54 ]
自機・フィールド共にXファイルから読み込んで、3Dゲームを作っています。
自機と地面や壁との衝突判定をさせたいんですが、Xファイルから自動的に描画されているので、自分でも壁の座標が分からないです。
壁や地面の座標はどうやって求めればいいんでしょうか?

299 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 09:00:36 ]
そもそも自動で描画されるなどあり得ない。

300 名前:298 [2007/12/31(月) 09:56:49 ]
すみません。自動的というのは、頂点の座標を自分で把握していなくても描画ができるという意味です。
SDK Tutorial6のソースをほとんどそのまま利用しています。
計算式はぐぐれば出てくるんですが、計算するための座標がどこなのかが分かりません。

301 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 10:01:01 ]
まさかチュートリアルの1から5を飛ばして6やってるって
オチじゃあるまいな?



302 名前:298 [2007/12/31(月) 10:10:29 ]

4,5飛ばしてました。
今から見てきます。

303 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 14:35:16 ]
たまにエスパーが現れるから困る

304 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 15:32:44 ]
OpenGLのglFrustum()という関数をDirectXで実装しようとしています。

glFrustum()については以下のURLに解説がありました。
kaoken.no-ip.com/brew/index.php?im_id=glFrustum

このURLで出ているGL_PROJECTION というのは、おそらくDirectXでいうD3DTS_PROJECTION だと思っているのですが、
このD3DTS_PROJECTION の使い方がよくわかりません。

305 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 15:58:19 ]
CheckDeviceMultiSampleType() でビデオカードがマルチサンプルに対応しているか調べたのですが、
自分のものだと対応していないことが分かりました。
ビデオカードのメーカーのページにはこれに対応しているかどうかの記述がないようですが、対応している
ビデオカードはどのようにして見つければよいでしょうか?

306 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 17:24:28 ]
引数間違っている可能性が高いような。
非対応見つけるほうが大変でね?

307 名前:305 mailto:sage [2007/12/31(月) 17:41:23 ]
>>306
え!?
自分のカードはGeForce 8600GTで、関数の引数は以下のようにしました。

m_pD3D->CheckDeviceMultiSampleType(
           D3DADAPTER_DEFAULT,
           D3DDEVTYPE_HAL , D3DFMT_R8G8B8,
           FALSE,
           D3DMULTISAMPLE_2_SAMPLES,
           NULL ) ) )

戻り値は
D3DERR_NOTAVAILABLE
でした。

最初の引数を
pCaps->AdapterOrdinal
としても同じでした。

308 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:07:52 ]
てか8600GTは
D3DFMT_R8G8B8フォーマットをサポートしてるのかい?
最近のだと
D3DFMT_X8R8G8B8とか
D3DFMT_A8R8G8B8とか


309 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:50:25 ]
>>307
D3DFMT_R8G8B8 なんて、バックバッファはおろか、テクスチャのフォーマットとしても
対応してるアダプタなんて現時点では存在しないぞ
素直に D3DFMT_X8R8G8B8 でやれ

310 名前:305 mailto:sage [2007/12/31(月) 20:57:54 ]
>>308>>309
ありがとうございます。
D3DFMT_A8R8G8B8で対応してました。

実際の効果を見てみたのですが、通常のレンダーターゲットに描くときはしっかりと効いていました。
しかし、どうもアプリ内で用意したテクスチャをレンダーターゲットにすると、そこでは効かないようです。
なぜなら、レンダリングしたテクスチャを板ポリに貼り付けて通常のレンダーターゲットの全面に表示
すると、ジャギーが強く残っているからです。
(テクスチャ解像度はレンダリング対象の1/4と低いものの、AAがかかった痕跡が見られません)

テクスチャをレンダーターゲットにしたときもAAが効くようにするにはどうすれば良いでしょうか??

311 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 23:58:20 ]
今DirectDrawとDirect3Dの機能をそれぞれクラス化してるんですけど、
このクラスのインスタンスを作るとき何をstaticにして何をインスタンス作ったら
いいですか?Direct3D複数作ったらなんかやばいんでしょうか?



312 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 00:09:40 ]
>>311
質問の仕方が悪すぎる。あんたのクラスの設計も具体的にやりたいことも
わからないのに答えられる問いではないよ。

とりあえず「Direct3D複数」がIDirect3D*とIDirect3DDevice*のこと言ってんなら
複数作成するのは稀だから、まだ余計なこと考えなくていいよ。

313 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 00:09:48 ]
貴様のオナニーの仕方なんぞどうでもいい

314 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 02:28:26 ]
ttp://www.cmagazine.jp/books/effect/index.html
この本を買ったのですが、Part2の波のデモが動きません。
プロジェクトをコンパイルしようと思ったら、.net 2002なのでできませんでした。
グラボはGeForce 8600GTです。

上のサイトから、そのサンプルをダウンロードできるので、みなさんは動くか試してもらえますか?

315 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 02:40:29 ]
何も表示されないのかウィンドウすら表示されないのかエラーで起動しないのか。

「どう」動かないのかを書きましょう。

316 名前:314 mailto:sage [2008/01/01(火) 03:20:09 ]
>>315
すみません。
デモのプログラムは起動するのですが、波のサンプルの場面で、波が発生せず、真平らな板ポリ
状態になっています。
波は随時勝手に発生するプログラムのはずなのですが・・・

317 名前:311 mailto:sage [2008/01/01(火) 09:53:29 ]
>>312
すいません。そしてありがとうございます
寝ぼけてて文章まとまってなかったんですが、
ふつうDirectDrawをウィンドウモードで使う場合はLPDIRECTDRAW+LPDIRECTDEVICEを1つ作って
サーフェイスを必要なだけ作ってプライマリに転送で十分ですよね?
ただウィンドウを複数作るならウィンドウ1つにつきLPDIRECTDRAW+LPDIRECTDEVICE1つ用意
ということでよろしいでしょうか?

318 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 10:26:32 ]
あけましておめでとうございます。
こちらはManaged DirectXについての質問もOKでしょうか?
Managed DirectXスレが11月で止まってしまっているので…。

319 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 10:27:03 ]
>>316
確かにそのままだと動かないね

7900GTでは普通に動いてて
そっちで自分用に書き直したプログラムは
8600GTでも普通に動いているのだが・・・
どこ直したのか覚えてないや

320 名前:314 mailto:sage [2008/01/01(火) 14:14:29 ]
>>319
けっこう環境に左右されるみたいですね。
自前で組んでみようとしましたが挫折しました。

ありがとうございました。

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}が登録されてるんです
ちなみにインストール前は登録されてなかったです
これはどういうことなのでしょか?この上に新しく登録しなきゃいけない?それとも自動で行われてるからやらなくていい?
分かる方いたら教えてください






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

前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