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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 22:55:11 ]
※回答する人も、質問する人も必ず読んでください

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

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

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

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

433 名前:デフォルトの名無しさん [2008/11/13(木) 01:54:43 ]
NMIなんてZ80の頃からあるわけだが。問答無用に0066hに飛んじゃう命令。
ハード的にはプルアップされて使えないようになってた。
パイプラインなんてjmp使えば一発だし。

434 名前:デフォルトの名無しさん [2008/11/13(木) 04:22:58 ]
おれもdirectx9.0c最近ダウンロードできない・・・。
お詳しい方ひとつよろしくおねがいします。





435 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 05:05:38 ]
>>431
どのくらい待ってみたの?

436 名前:デフォルトの名無しさん [2008/11/13(木) 16:24:41 ]
Vector4 の w ってなんなの?

437 名前:デフォルトの名無しさん [2008/11/13(木) 16:33:50 ]
(笑)

438 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 16:38:17 ]
>>436
4次元数とかクォータニオンで調べてみれ

439 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 17:02:45 ]
時間軸だよ

440 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 17:09:54 ]
    _, ._
  ( ・ω・)
  ○={=}〇,
   |:::::::::\, ', ´
、、、、し 、、、(((.@)wwwwwwwwwwwwwwwwwwwwwww

441 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 18:37:42 ]
>>436
(藁



442 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 18:41:05 ]
Vector4のw要素は通常1でいいんだよ
要素が4つあるのは4×4マトリクスとの演算のときに都合がいいから

まあクォータニオンとかは別に素人が覚えなくてもいい

443 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 23:39:49 ]
頂点バッファを生成

頂点バッファを設定

loclk

頂点バッファを書き込み

unlock

SetStreamSource

SetFVF

DrawPrimitive

の手順で実行しているのですが
板ポリが表示できません。。。

DirectXグラフィックスゲームプログラミングやリアルタイムレンダリングなどを買って読んだのですが解決できません。

ttp://www7.uploader.jp/dl/inoguma/inoguma_uljp00001.zip.html

ソースUPするので誰か直していただけませんか・・・。

444 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 23:46:49 ]
その前にチュートリアルはきちんとやったのか?

445 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 00:23:07 ]
2008か・・・・
Express Edition入れたくないなぁ

446 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 00:47:56 ]
>>443
× D3DXMatrixRotationZ(&mt, m_rotate.z);
○ D3DXMatrixRotationZ(&mwork, m_rotate.z);
よね。


447 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 00:48:57 ]
D3DXは使うなって書いてあった

448 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 01:38:17 ]
なんの根拠もないけどな

449 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 06:24:28 ]
>>446

ぱおおおおおおおおおおおおおおおおおん!!

ありがとうございます!!

嬉しすぎてぞうの雄たけびをあげてしまいました

D3DXMatrixRotationZ(&mwork, m_rotate.z);

に変更したら表示されました。

450 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 06:42:28 ]
コナミの人が自宅のベランダでチンコぱおおんさせて逮捕されたって昔聞いた

451 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 17:48:54 ]
○○勤務の会社員が自宅のベランダでチンコぱおおんさせて逮捕されたって昔聞いた
○○病院の医師が自宅のベランダでチンコぱおおんさせて逮捕されたって昔聞いた
○○学校の教諭が自宅のベランダでチンコぱおおんさせて逮捕されたって昔聞いた

まぁ、よくある話だな



452 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 19:11:29 ]
開発環境
OS:Vista64bit
DirectXSDK:Microsoft DirectX SDK (March 2008)
VisualStudio2008

www.h2.dion.ne.jp/~takusoft/directx8/d3d/

このサイトのコードを試すと

1>test.obj : error LNK2019: 未解決の外部シンボル _Direct3DCreate9@4 が関数 "long __cdecl InitD3D(void)" (?InitD3D@@YAJXZ) で参照されました。
1>C:\Users\xxx\Documents\Visual Studio 2008\Projects\DirectX\Debug\test.exe : fatal error LNK1120: 外部参照 1 が未解決です。

とのエラーが表示されます

ツール→オプション→プロジェクトおよびソリューション→VC++ディレクトリ に
IncludeとLibのx64・x86は追加しています

関数Direct3DCreate9で右クリックをして定義に移動をするとd3d9.hに移動し
IDirect3D9 * WINAPI Direct3DCreate9(UINT SDKVersion);が表示されて
IDirect3D9で再度同じことをすると表示される関数内部の
#ifdef D3D_DEBUG_INFOが定義されてないのが原因かな?と
以上の情報からどういった事が考えられますか?

453 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 19:28:19 ]
ここはDirectX初心者であって、統合環境初心者スレじゃない。
ライブラリの指定も出来ない奴はDirectX云々以前の問題。

454 名前:デフォルトの名無しさん [2008/11/14(金) 19:46:29 ]
DirectX勉強する前に、C++の勉強をする
これマジおすすめ

455 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:23:32 ]
LIBのディレクトリ指定だけで完了と思い込んで個別のLIB指定しないのは
外部のLIB初めて使う人か

456 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:35:04 ]
とはいえC++だけの勉強だと
ライブラリの追加体験しないこともあるしな

15歳からはじめるDirectXとかいう本は
統合環境のインストールの解説してるのに
ライブラリの追加について一切書いてなくて笑ったのを思い出した

457 名前:452 mailto:sage [2008/11/14(金) 20:42:31 ]
>>454
C++はそこそこ書けると自分では思っています

>>455
プロジェクト→プロパティ→構成プロパティ→リンカ→入力→追加の依存ファイルには
d3dx9.lib d3d9.libを追加してます、DirectXを使う前にDXライブラリを使ってみて
そのときにはそんなこんなで上手くいったんですけどね・・・

458 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:45:59 ]
まずコンパイルがどういう手順で行われているか
ライブラリをリンクするには何が必要か

directxとは関係ないことだと思うんだよね

459 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:46:51 ]
追加の依存ファイルじゃなくてファルダじゃね?

460 名前:452 mailto:sage [2008/11/14(金) 21:01:49 ]
すいませんお騒がせしました・・・
実行可能ファイルに追加するのを忘れていました・・・

現在VisualStudio2008を使っていて
以前使っていたVisualStudio2008EEで試した所実行できたのでそこから発覚しました

461 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:16:10 ]
>>431ですが、待っていても全然インストールが始まらないんですが・・・
コンポーネントのインストール
初期化しています→「ファイルをダウンロードできませんでした。後でもう一度実行するか、ネットワーク接続を確認してください」
のループなんですが・・・自分だけでしょうか?



462 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:17:11 ]
セキュリティぬるくkしてみりゃいいんじゃね。知らんけど。

463 名前:デフォルトの名無しさん [2008/11/14(金) 22:25:20 ]
質問:ウィンドウモードにおけるティアリングの解消
環境:WindowsXP SP2, DirectX9.0c

ウィンドウモードにおいて、Direct3D9で垂直同期待ちを行っている
にもかかわらず、ティアリングが発生します。
その際、ポリゴン数が増えるに従いティアリングの境界線は下降します。
また、当然かもしれませんがフルスクリーンモードでは正常に描画されます。

ビデオカードの仕様かと思いましたが、ひぐらしデイブレイク体験版では
ティアリングは確認できませんでした。

何か解決法があるとは思うのですが、見当がつきません。
ご教授頂ければ幸いです。

464 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:25:46 ]
>>461
OSが割れじゃね?
割れじゃ無理だけど
心当たりは?

465 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:26:26 ]
>>463
ウィンドウモードでティアリングって回避できるの?

466 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:28:09 ]


ティアリング ウィンドウモード

でぐぐってみたらそのものずばりが出てきたけど
俺的には本当にできるんかちょっと疑問
仕組み的に〜・・・まあ、できたら報告ヨロ

467 名前:463 mailto:sage [2008/11/14(金) 22:36:08 ]
>>464
OSは正規品です。

>>465
Direct3D9から垂直同期待ちが可能になったようです。
ビデオカードに影響を受けるため確実ではないようですが。

>>466
GetRasterStatusを利用してもティアリングは解消されませんでした。

468 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:41:17 ]
ライトを計算してモデルを表示すると普通に表示されます。

ライトと計算して板ポリに貼ったテクスチャを表示させると全体的に暗くなってしまいます。

ライトを計算しないと通常に表紙されます。

ライトを計算させて 通常に表示させるにはどうすればいいんですか?

469 名前:468 mailto:sage [2008/11/14(金) 22:43:18 ]
テクスチャステージの設定はこうです

m_pd3ddevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
m_pd3ddevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
m_pd3ddevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
m_pd3ddevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
m_pd3ddevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_pd3ddevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);


ライトは

CDXLight::CDXLight()
{
ZeroMemory(&m_light, sizeof(m_light));

D3DCOLORVALUE c, c2;
D3DVECTOR v;
c.a = c.r = c.g = c.b = 1.0f;
c2.a = c2.r = c2.g = c2.b = 0.2f;
v.x = 0.0f; v.y = 0.5f; v.z = 1.0f;
SetDirectional(c, c, c2, v);

470 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:45:17 ]
>>461です
この間変な音がしたり、PC画面にラグが出たりしてたので、OSがこわれているのかもしれません・・・
その場合どうすればいいんですか?

471 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:46:20 ]
>>467
無理でしょ
できる道理がわからない



472 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:47:19 ]
パソコン変えろよカス
全然DirectXと関係ない質問だ
もう二度とくるなよ

473 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:48:23 ]
>>470
新しいPCを買う
(自作orノートPCの方向は無しで
趣味ゲーPGでノートPC買う人がいるけど
何回も実行繰り返してるとノートだとなんかグラボの調子悪くなるなーっての俺だけ?)

474 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:51:51 ]
>>464>>473さん返答アリでした
他の旧バージョンDirectXはDLインスコできたのですが、関係なさそうですね

475 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:56:38 ]
9.0cなんてダウンロードできるところからいって見つかりにくいし
やめたほうがいいんじゃね?
情報の共有者も少ないことを意味してるよ

476 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:57:34 ]
9.0cがよかったのはなんか他のバージョンがdllを配ってくれなかった頃だけど
今はパックで全部くばってるからつかう意味ないよ

477 名前:463 mailto:sage [2008/11/14(金) 23:09:47 ]
>>471
出来ないかもしれないですが
垂直同期待ちを正確に行えるなら理論上は可能かなと。

>>475
>>476
確かに。
バージョンを更新すれば改善される可能性もあるかもしれませんね。

478 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:22:42 ]
デスクトップ分のバッファを取ってフルスクリーン風に扱えばいけるのだろうか?w

479 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:34:42 ]
ID3DXFont に PreloadText
って関数が出来てるんだけど。
これ使うとはやまなったりする?

480 名前:463 mailto:sage [2008/11/14(金) 23:45:13 ]
>>478
壮大ですね。
ただ、フルスクリーンにしないなら、垂直同期を取る必要がありますし、
結局ティアリングは回避できないかとおもいます。

少し話はかわるのですが、描画コストが同じなら同じところに境界線が発生します。
そして、描画コストが増大するに従い境界線は下降します。
ということは、垂直同期は実は正確に取れていて、
描画にかかった時間分ずれが生じてティアリングが発生しているのかと思いました。
そのため、EndScene()を呼んだ後、描画完了まで
Sleepで数十ms待たせてみたのですが解消されませんでした。
ちなみに、クエリは自分の環境では作成できないため実験は行えていません。

他にアイデアはないでしょうか。

481 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 00:15:51 ]
DirectX9でもウインドウモードで垂直同期をとるもは無理。
あれは内部でタイマーを使ってそれっぽくしているだけ。
単純にウインドウモードと挙動を合わせるためのものであって、
それ以上でもそれ以下でもない。



482 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 00:24:08 ]
Presentするとちゃんと60Hzで返ってくるよ

483 名前:463 mailto:sage [2008/11/15(土) 00:42:52 ]
>>481
なるほど。
ただ、Present内部ではGetRasterStatusを使用して
画面がリフレッシュされていないタイミングをはかっているようです。
その際に、タイマーを利用しているのかもしれませんが、走査線が下端に到達
するまでの時間を算出してその時間分待っているのではないでしょうか。
少し、Presentがブラックボックス化しているのが気になりますね。

本当にバックバッファとフロントバッファのコピーは高速なんでしょうか。
ポインタを入れ替えるだけとドキュメントには書かれていますが。
もし、そこに時間がかかっているなら、描画コストが増えるに従って
境界線が下降する理由もわかります。

484 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 00:56:45 ]
>>467
俺はウインドウモードでティアリングを防ぐなんて試したことはないが、
GetRasterStatusの使い方が悪いんじゃない?VBlank待ってない?
走査線がクライアント領域より下にいったら、即Presentでいいかと。

あと、GetRasterStatusの前にD3DQUERYTYPE_EVENTいれとかないと
意味がないと思う。

485 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 01:02:27 ]
> フルスクリーン モードは、リフレッシュ レートやスワップ効果にかかわらず D3DPRESENT_INTERVAL_IMMEDIATE をサポートすることにより、
> ウィンドウ モードと同様の使い方をサポートします。D3DPRESENT_INTERVAL_DEFAULT はデフォルトのシステム タイマ精度を使います。

システムタイマーは1000msの精度。60Hzのエミュレートなら16.66666…で割り切れないのでどっちにしろ徐々にずれる。
D3DSWAPEFFECT_COPYを指定しない限りは明示的にバック⇒フロントへのコピーはない。
コピーしてたとしても全画面描画1回相当の処理が目に見えるほど遅延していくなら根本的に1/60秒で動かないだろ。

まぁそこまで細かく気にするならゲームなんだしフルスクリウーンでやれや、って事だろう。

486 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 10:00:50 ]
ウィンドウモードでゲームプレイする奴はその程度の事を気にしない

487 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 10:06:43 ]
試してみようと思ったら、俺のところでは全くティアリングが発生しない。
Vistaだからか?

488 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 10:23:36 ]
はやくおまいらの話についていきたい45歳秋

489 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 11:50:15 ]
基本的な質問で申し訳ないのですが、質問させていただきます。
DirectXをつかったゲームで、入力された情報は一般的にはどうやって受け取ればいいのでしょうか?
WIN32APIでは普通にウィンドウプロシージャで受け取っていましたが、入門書では、WinMainのメッセージループで
while(message != WM_QUIT)
{
if(PeekMessae(&msg,NULL,0,0,PM_REMOVE))
{
//省略
}
else{
GetKey() //デバイス->Acquire()でキー入力を受けつける
//以下はRender()などの呼び出し
}
}

としていました。
後者の方がDirectXでは一般的なのでしょうか?

490 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 12:01:57 ]
別に好きな方で問題ない

491 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 12:05:10 ]
スレッド



492 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 12:28:58 ]
>>489
DirectつながりでDirectInput使う


493 名前:463 mailto:sage [2008/11/15(土) 17:27:54 ]
>>484
D3DQUERYTYPE_EVENTは自分の環境では作成できないです。
走査線がクライアント領域より下にいった直後にPresentしても多少
境界線の位置がかわる程度で違いはほとんどありませんでした。

>>485
なるほど。タイマーを使っているとは知りませんでした。
確かに、少しずつずれていきますね。
D3DSWAPEFFECT_COPYにしてみましたが、さほど違いは出なかったです。
とすると、疑問なのはGetRasterStatusを使ってもずれるという点です。
D3DPRESENT_INTERVAL_IMMEDIATEで生成しておいて、GetRasterStatusを使っても
ほとんど同じところに境界線ができるんです。

>>486
最悪、気にしない方向で諦めようかと思ってます。

>>487
vistaはOSレベルで制御しているため、ティアリングが生じないようですね。


494 名前:449 mailto:sage [2008/11/15(土) 17:32:37 ]
あれから色々いじってみて
キー入力で画像を動かすのを作りました。

一応思うようにできたのですが
もっと簡単なやり方・効率のいい方法 などありましたら ご指摘お願いします。

ソースです
www7.uploader.jp/dl/inoguma/inoguma_uljp00001.zip.html

↑ → ↓ ← キーで操作できます

よろしくお願いします。

495 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 06:42:43 ]
>>494

ゲームを作りたいならもっと汎用性がある方が良い

とは言ったものの、自分じゃ直し方良く分からないので他の人に(ry

496 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 09:14:26 ]
>>494
frame.cpp: line 117-118
m_dwStyle = GetWindowLong(m_hwnd, GWL_STYLE);
m_dwStyle = 2495741952;
これはどんな意図があるんですか…?

497 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 09:34:51 ]
スタイル初期値です。

498 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 09:37:59 ]
3Dリアルタイムアニメーション

という本から参考にした部分があるのですが

その部分の補足には

スタイル初期値(とりあえずこれで問題はない)

と本にコメントが付け加えられてました

499 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 10:40:46 ]
>>498
問題しか見えないw

500 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 11:26:39 ]
GetWindowLongPtr使うべきだし
GetWindowLongした意味ないし
マジックナンバー使うし

501 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 11:32:33 ]
>>498

移動のコードは間違いじゃないけど、
せっかく入力・演算・描画を分けた意味がない気がする。

他の人にも意見を聞いてみるといいよ。



502 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 12:15:53 ]
スミマセン質問があります。
環境 : VC2005 / SDK(March 2008) / XP

DirectXでXファイルを扱うときに頂点カラーを引っ張りたいのですが何処を見ればいいのでしょうか。
HLSLで描画する際にVertex ShaderのCOLOR0に自動的に入ってくると思ったらそうじゃないみたいで……・

503 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 12:31:30 ]
ダダーンウーボヨボヨボヨアーアーアー

504 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:16:30 ]
>>502
xファイルに頂点カラーの情報(MeshVertexColors)が入っていないか
入っていたとしても頂点フォーマットに頂点カラーが含まれてないかのどっち

単純にテクスチャなしのxファイルを表示したいだけなら
マテリアルのDiffuseをシェーダーに渡して色情報として計算する

505 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:32:10 ]
返信ありがとう御座います。
xファイルにはデータが入っていることを確認したので頂点フォーマットに無いのでしょうね……

マテリアルはオブジェクトの識別に使うという変な使い方してて、
同一マテリアル内で色を変える場合頂点カラーが必要という珍妙な設計になってるのです。
大人しくマテリアルでやる方向に変えた方が良いかもしれないですね

506 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:35:23 ]
>>505
まるで頂点フォーマットを何かが勝手に作るように書いてるが
頂点フォーマットを作るのはおまえさんの仕事だぞ。

507 名前:502 mailto:sage [2008/11/16(日) 14:10:07 ]
D3DXLoadMeshFromXでXファイルを読み込む前に、
FVFをどこかで設定出来ると言うことですか……?
すみません勉強不足過ぎました。もう少し調べてきます。

508 名前:463 mailto:sage [2008/11/16(日) 14:31:41 ]
Presentの代わりにBitBltを利用してみました。
確かにティアリングは減った(ほとんど見えない)と思いますがFPSが著しく落ち込みガタガタです。
ただ、FPSが25程度なのでがたがたして気づかないだけかもしれませんが。
一応、環境や最適化不足のためかもしれないので手順を書いておきます。

1, Flags=D3DPRESENTFLAG_LOCKABLE_BACKBUFFERでDirect3DDevice9を生成。
2, GetRasterStatusで垂直同期待ちを行う。
3, バックバッファからHDCを取得し、BitBltでウィンドウへ書き込む。

もう少し細かい話もありますが、大方こういう手順になるかと思います。
どうもBitBltの負荷が高そうですが、高速化する手はありますか?

509 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 14:36:42 ]
GDIの遅さや不便さを何とかするために
DirectXが開発されたのに原点にもどったら本末転倒

510 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 14:36:55 ]
>>508
FPS25じゃ垂直同期に間に合う合わないなんて関係無いクオリティじゃないか?

511 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 14:41:03 ]
モデルを最初から左にずれた場所に配置したいのですが

D3DXMATRIX mtx;

D3DXMatrixIdentity(&mtx);

D3DXMatrixTranslation(&mtx, -2.0f, 0.0f, 0.0f);

d3ddevice->SetTransform(&mtx, 0);

で配置すると確かに配置できるのですが キーボードでキーを押した分ずらすコードを加えるにはどうすればいいですか



512 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 14:45:35 ]
そろそろ自分で考える努力をしたらどうかな。

513 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 14:45:54 ]
Win32APIすれで聞くといいんじゃね

514 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 14:48:47 ]
D3DXMatrixTranslationの引数の値を変える

515 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 14:58:02 ]
>>512 分かりました 自分で悩みまくって作った方が上達する気がしてきました

それではしばらく失礼します。

516 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 15:48:33 ]
描画内容があまり頻繁に変化しないので、
変更があったときのみ描画処理を行うようにして、それ以外はフロントバッファに表示されているものをそのまま表示したいのですが、
presentする直前にバックバッファをサーフェイスにコピーしておいて、それを書き戻すとかでいいんでしょうか?
一般的な方法があれば、教えてください。

517 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 15:56:41 ]
そもそも描画が行われなかったときは
サーフェイスをクリアしなければいいのでは?

518 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 16:13:36 ]
>>516
D3DPRESENT_PARAMETERSのSwapEffectに
D3DSWAPEFFECT_COPYを指定する。

519 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 16:32:11 ]
本にはD3DSWAPEFFECT_DISCARDにしろって書いてあったよ

520 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 16:35:53 ]
入門サイトを見て
とりあえずデバイスを作ってPrsentだけしてみたら
アダルトゲームの画面が表示されたんですけどバグですか。

521 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 16:39:17 ]
いいえ、仕様です。



522 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 16:41:01 ]
ハッキングされてます

523 名前:516 mailto:sage [2008/11/16(日) 16:57:14 ]
レスいただいた方々、ありがとうございます。

>>517
質問させていただく前に描画関数の中身とか呼出位置を変えて色々試してたんですが、
他のウィンドウがかぶった時の挙動とか、どうにも思い通り行かなくて質問させていただいた次第でしてorz

>>518
バッチリ思い通りになりました、ありがとうございました。

>>519
ご忠告どうもです。
もうすこし詳しく調べてみます。

524 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 17:10:14 ]
>>520 VRAM

525 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 20:46:13 ]
ちょっとお聞きしたいのですが、よくゲームの動作環境で
VRAM幾つ以上というようなのがありますよね
自作ゲームの動作環境にそういう情報を明記したいのですが、そのために
現在PCで使われているVRAM容量を調べるにはどうすればいいのでしょうか?
使用VRAM情報をチェックする関数とかはありますか?

526 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 20:52:43 ]
>>525
うん

527 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 21:27:25 ]
>>526
DirectX9なのですがなんという関数を使えばいいのでしょうか?

528 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 21:41:40 ]
>>527
GetAvailableTextureMem
だが、推定
BBXに「?」ってのが書いてある

529 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 21:50:15 ]
そこは遥か昔に閉鎖したぞ

530 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 21:51:49 ]
SDK(March 2008 以降)に VideoMemory ってサンプルがあるわよ。
ttp://msdn.microsoft.com/en-us/library/cc308070(VS.85).aspx
\Samples\C++\Misc\VideoMemory

531 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 22:03:27 ]
>>529
いや、生きてるぜ



532 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 22:41:37 ]
今時はVRAMなんてほとんど基準にならんけどなー

533 名前:525 [2008/11/16(日) 22:56:06 ]
レスありがとうございます。
>>523
LoadTextureをやる毎に使ってみました。
が、数値は70MBちょいぐらいで固定っぽいです。(ビデオカードのVRAMは96MB)

テクスチャは読み込んでもVRAMには格納されないんでしょうか?
簡単な2Dゲームなのでで処理スピードには問題がない為別にいいのですが…
LoadTextureってVRAMに読み込む/読み込まないの切り替えができるんですかね

>>530
旧バージョンを使ってるので役にたつかわかりませんが、後で見てみます

>>532
確かに、最近のPCゲーだとVRAM容量表記が特にないものが多いですよね






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

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

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