【C++】 DirectX初心者質問スレ Part19 【C】at TECH
【C++】 DirectX初心者質問スレ Part19 【C】 - 暇つぶし2ch446:デフォルトの名無しさん
08/11/14 00:47:56
>>443
× D3DXMatrixRotationZ(&mt, m_rotate.z);
○ D3DXMatrixRotationZ(&mwork, m_rotate.z);
よね。


447:デフォルトの名無しさん
08/11/14 00:48:57
D3DXは使うなって書いてあった

448:デフォルトの名無しさん
08/11/14 01:38:17
なんの根拠もないけどな

449:デフォルトの名無しさん
08/11/14 06:24:28
>>446

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

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

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

D3DXMatrixRotationZ(&mwork, m_rotate.z);

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

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

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

まぁ、よくある話だな

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

URLリンク(www.h2.dion.ne.jp)

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

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:デフォルトの名無しさん
08/11/14 19:28:19
ここはDirectX初心者であって、統合環境初心者スレじゃない。
ライブラリの指定も出来ない奴はDirectX云々以前の問題。

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

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

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

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

457:452
08/11/14 20:42:31
>>454
C++はそこそこ書けると自分では思っています

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

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

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

459:デフォルトの名無しさん
08/11/14 20:46:51
追加の依存ファイルじゃなくてファルダじゃね?

460:452
08/11/14 21:01:49
すいませんお騒がせしました・・・
実行可能ファイルに追加するのを忘れていました・・・

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

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

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

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

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

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

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

464:デフォルトの名無しさん
08/11/14 22:25:46
>>461
OSが割れじゃね?
割れじゃ無理だけど
心当たりは?

465:デフォルトの名無しさん
08/11/14 22:26:26
>>463
ウィンドウモードでティアリングって回避できるの?

466:デフォルトの名無しさん
08/11/14 22:28:09


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

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

467:463
08/11/14 22:36:08
>>464
OSは正規品です。

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

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

468:デフォルトの名無しさん
08/11/14 22:41:17
ライトを計算してモデルを表示すると普通に表示されます。

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

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

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

469:468
08/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:デフォルトの名無しさん
08/11/14 22:45:17
>>461です
この間変な音がしたり、PC画面にラグが出たりしてたので、OSがこわれているのかもしれません・・・
その場合どうすればいいんですか?

471:デフォルトの名無しさん
08/11/14 22:46:20
>>467
無理でしょ
できる道理がわからない

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

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

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

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

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

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

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

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

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

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

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

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

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

482:デフォルトの名無しさん
08/11/15 00:24:08
Presentするとちゃんと60Hzで返ってくるよ

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

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

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

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

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

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

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

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

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

488:デフォルトの名無しさん
08/11/15 10:23:36
はやくおまいらの話についていきたい45歳秋

489:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/15 12:01:57
別に好きな方で問題ない

491:デフォルトの名無しさん
08/11/15 12:05:10
スレッド

492:デフォルトの名無しさん
08/11/15 12:28:58
>>489
DirectつながりでDirectInput使う


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

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

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

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


494:449
08/11/15 17:32:37
あれから色々いじってみて
キー入力で画像を動かすのを作りました。

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

ソースです
URLリンク(www7.uploader.jp)

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

よろしくお願いします。

495:デフォルトの名無しさん
08/11/16 06:42:43
>>494

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

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

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

497:デフォルトの名無しさん
08/11/16 09:34:51
スタイル初期値です。

498:デフォルトの名無しさん
08/11/16 09:37:59
3Dリアルタイムアニメーション

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

その部分の補足には

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

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

499:デフォルトの名無しさん
08/11/16 10:40:46
>>498
問題しか見えないw

500:デフォルトの名無しさん
08/11/16 11:26:39
GetWindowLongPtr使うべきだし
GetWindowLongした意味ないし
マジックナンバー使うし

501:デフォルトの名無しさん
08/11/16 11:32:33
>>498

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

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

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

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

503:デフォルトの名無しさん
08/11/16 12:31:30
ダダーンウーボヨボヨボヨアーアーアー

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

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

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

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

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

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

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

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

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

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

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

511:デフォルトの名無しさん
08/11/16 14:41:03
モデルを最初から左にずれた場所に配置したいのですが

D3DXMATRIX mtx;

D3DXMatrixIdentity(&mtx);

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

d3ddevice->SetTransform(&mtx, 0);

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

512:デフォルトの名無しさん
08/11/16 14:45:35
そろそろ自分で考える努力をしたらどうかな。

513:デフォルトの名無しさん
08/11/16 14:45:54
Win32APIすれで聞くといいんじゃね

514:デフォルトの名無しさん
08/11/16 14:48:47
D3DXMatrixTranslationの引数の値を変える

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

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

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

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

518:デフォルトの名無しさん
08/11/16 16:13:36
>>516
D3DPRESENT_PARAMETERSのSwapEffectに
D3DSWAPEFFECT_COPYを指定する。

519:デフォルトの名無しさん
08/11/16 16:32:11
本にはD3DSWAPEFFECT_DISCARDにしろって書いてあったよ

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

521:デフォルトの名無しさん
08/11/16 16:39:17
いいえ、仕様です。

522:デフォルトの名無しさん
08/11/16 16:41:01
ハッキングされてます

523:516
08/11/16 16:57:14
レスいただいた方々、ありがとうございます。

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

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

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

524:デフォルトの名無しさん
08/11/16 17:10:14
>>520 VRAM

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

526:デフォルトの名無しさん
08/11/16 20:52:43
>>525
うん

527:デフォルトの名無しさん
08/11/16 21:27:25
>>526
DirectX9なのですがなんという関数を使えばいいのでしょうか?

528:デフォルトの名無しさん
08/11/16 21:41:40
>>527
GetAvailableTextureMem
だが、推定
BBXに「?」ってのが書いてある

529:デフォルトの名無しさん
08/11/16 21:50:15
そこは遥か昔に閉鎖したぞ

530:デフォルトの名無しさん
08/11/16 21:51:49
SDK(March 2008 以降)に VideoMemory ってサンプルがあるわよ。
URLリンク(msdn.microsoft.com)(VS.85).aspx
\Samples\C++\Misc\VideoMemory

531:デフォルトの名無しさん
08/11/16 22:03:27
>>529
いや、生きてるぜ

532:デフォルトの名無しさん
08/11/16 22:41:37
今時はVRAMなんてほとんど基準にならんけどなー

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

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

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

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

534:デフォルトの名無しさん
08/11/16 22:58:50
DX8あたりからマネージドになってるから気にする必要ないんじゃない。パフォーマンスに影響はあるけど。
昔は全部自前で管理する必要があった。

535:525
08/11/16 23:00:35
>>533
LoadTextureじゃなくてD3DXCreateTextureFromFileInMemoryでした

536:525
08/11/16 23:17:09
>>534
自分なりに調べて見たらD3DXCreateTextureFromFileInMemoryEXというのを使えば
意図的にVRAMに読み込ませる事もできるみたいですね
パフォーマンスが必要になるようなソフトを作る場合にはこちらを使おうと思います。
ありがとうございました。

537:デフォルトの名無しさん
08/11/16 23:22:14
それ主記憶じゃなくてVRAMにストックしておく関数だっけ?

538:デフォルトの名無しさん
08/11/16 23:30:49
プール先を指定できる


539:502
08/11/16 23:35:53
スミマセン、色々調べてみたのですが結局分かりませんでした。
Xファイル自体には頂点色を保持しているのは確認済みです。

D3DXLoadMeshFromXを使ってxファイルを読み込み頂点色が欲しい場合、
LPDirect3DDevice9::SetFVFを使ってFVFを通知してからXファイルを読み込むという手順ではダメで、
いったん読み込んでから、CloneMeshで頂点フォーマットを設定し直すと言うのもやはりダメでした。

D3DXLoadMeshFromXで頂点色を捕まえる方法は有るのでしょうか。
そもそもVertex ShaderのInputのCOLOR0セマンティクスに入ってくるのは頂点色という認識で良いのでしょうか。

540:デフォルトの名無しさん
08/11/17 08:54:08
Xファイルに頂点色が入っているならD3DXLoadMeshFromX()の時点で
作られたメッシュには頂点色が入っている。

541:デフォルトの名無しさん
08/11/17 11:55:27
Vista入りのノート買ったからDX10に手を出してみたけど、意外と変わってるのね。
FVF消えたりD3DFMTが気持ち悪いことになってたり。

で、質問なんだけど、サンプルコードのライセンスってどこに書いてあるの?
卒論のためにコード書かなきゃいけないんだけど、カメラとかいちいち書くのが面倒だから
BasicHLSL10のサンプルを流用したいのよ。
*nixの世界みたいに、ルートディレクトリにはっきりとライセンス定義を置いておいてくれると有り難いんだけど……。

542:デフォルトの名無しさん
08/11/17 12:05:55
別に三流学生の卒論コードなんてどうだっていいだろ
一般公開しなければ

543:デフォルトの名無しさん
08/11/17 12:32:08
HLSLでsamplerオブジェクトを定義するとき
今まではtexture2DやtextureCUBEに関係なく"sampler"と書いていたのですが
textureに合わせてsampler2D, samplerCUBEにしたほうがいいのでしょうか?
違いや書き分ける意味はありますか?

544:デフォルトの名無しさん
08/11/17 16:03:42
>>542
公開するから質問してるに決まってるだろ高卒

545:デフォルトの名無しさん
08/11/17 17:28:01
公開しないでいいよ。君の糞コードなんて。

546:デフォルトの名無しさん
08/11/17 17:51:58
D3DX~は使ったら駄目って常識のはずなんだが

547:デフォルトの名無しさん
08/11/17 18:00:27
ライセンスについて調べようと思ったら、まずは使用許諾書に目を通すものだが、
なんでその程度の、ごく当たり前のことをする程度の知能すら持ち合わせていないのかが謎。

548:デフォルトの名無しさん
08/11/17 20:45:26
デバッグモードでは正常にビルドできるんですがリリースモードだと以下のエラーが山ほど出てしまいます、、、
予想ではunicodeとマルチバイトが混在しているのが不味いような気がするんですが、、、
色々調べてみたんですが、解決方が見当たらないのでどなたか原因わかる方がいたら教えてください。

boss.obj : error LNK2001: 外部シンボル "_D3DXMatrixScaling@16" は未解決です。
boss.obj : error LNK2001: 外部シンボル "_D3DXMatrixMultiply@12" は未解決です。
d3d.obj : error LNK2001: 外部シンボル "_D3DXMatrixLookAtLH@16" は未解決です。
d3d.obj : error LNK2001: 外部シンボル "_D3DXCreateTextureFromFileA@12" は未解決です。
d3d.obj : error LNK2001: 外部シンボル "_D3DXCreateTextureFromFileExA@56" は未解決です。
d3d.obj : error LNK2001: 外部シンボル "_D3DXVec3Normalize@8" は未解決です。
d3d.obj : error LNK2001: 外部シンボル "_D3DXMatrixOrthoLH@20" は未解決です。
dsound.obj : error LNK2001: 外部シンボル "__imp__mmioGetInfo@12" は未解決です。
fps.obj : error LNK2001: 外部シンボル "__imp__timeGetTime@0" は未解決です。
main2.obj : error LNK2001: 外部シンボル "_D3DXCreateSprite@8" は未解決です。
main2.obj : error LNK2001: 外部シンボル "__imp__timeBeginPeriod@4" は未解決です。
x_file.obj : error LNK2001: 外部シンボル "_D3DXLoadMeshFromXA@32" は未解決です。

コンパイラはVisualC++2008を使っています。
コンパイラの問題かと思ったんですが、エラー吐くのが殆どDirectX周りだったのでここで質問させていただきました。

デバッグモードで作ったexeファイルとデータファイルを同梱すればとりあえず配布は大丈夫でしょうか?
一応そのやり方で自分の環境では動作したのですが、、、

549:548
08/11/17 20:48:54
ずっとDebugモードのプロパティいじってた\(^o^)/

自己解決しました、スレ汚しすいませんw

550:デフォルトの名無しさん
08/11/17 20:49:21
プロジェクトの設定はリリースとデバッグで別々だが、ライブラリとか両方に設定してある?

551:502
08/11/17 20:49:49
>>540
遅れましたがありがとうございました。
おかげさまで何とか出来そうです。

552:デフォルトの名無しさん
08/11/18 10:30:08
誰か>>543知りませんか?

553:デフォルトの名無しさん
08/11/18 10:35:13
好きにしろよばーか

554:デフォルトの名無しさん
08/11/18 11:14:48
自分の知らない事、どうでもいい事を聞くと怒り出す奴っているよね。キチガイ?
好きにしていいならsamplerとsampler2Dが分かれてる意味ないじゃん。

555:デフォルトの名無しさん
08/11/18 13:42:30
別れてることに特に意味はないし
好きにすればいいと思うよ
同じサンプリングで描画するなら一つでいいし
物によって変えるなら複数作って使い分ければいいだけ

556:デフォルトの名無しさん
08/11/18 13:52:29
好きにしちゃいけないって誰が決めたの?
当然の事を言われて怒られてるだのキチガイだの言い出す>>554はアホかと。

557:デフォルトの名無しさん
08/11/18 14:36:08
よくわからずに使ってるのか

558:デフォルトの名無しさん
08/11/18 14:37:51
ただのaliasなの?

559:デフォルトの名無しさん
08/11/18 14:44:29
sampler3DやsamplerCUBEのみのSamplerStateがあるため

意味なんかないから好きにしていいとか馬鹿にも程がある
プログラマ失格

560:デフォルトの名無しさん
08/11/18 18:04:21
GLSLでは違うけど
HLSLではまったく同じものなんだが

561:デフォルトの名無しさん
08/11/18 18:10:44
>>559
じゃあ意味があるから好きにしちゃダメだよ
とでもいえば納得するのかな?(笑)

562:デフォルトの名無しさん
08/11/18 18:36:17
というわけで、>>543は好きにしちゃダメだという事で。
はい次の人~。

563:デフォルトの名無しさん
08/11/18 18:40:53
はい次の人~。

564:デフォルトの名無しさん
08/11/18 18:46:50
あのぅ、私は…

565:デフォルトの名無しさん
08/11/18 18:47:02
自分の想定と違う事を言われると納得できないんなら最初からそうすりゃいいのにな
他人の同意がないと何もできないのかね

566:デフォルトの名無しさん
08/11/18 18:48:17
>>564
どちらさまですか?

567:デフォルトの名無しさん
08/11/19 16:24:01
640*480で作ったデバイスを引数にD3DXCreateSprite関数でID3DXSpriteを作ったら、
レンダーターゲットを1024*1024にしてID3DXSprite::Drawを実行したら、画像が引き延ばされて
描画されたんだけど、そうならないようにするにはどうすればいいんですか?
ちなみにレンダーターゲットの大きさは変えられません。

568:デフォルトの名無しさん
08/11/19 16:39:32
好きにしろよばーか

569:デフォルトの名無しさん
08/11/19 16:53:55
わざわざそうしてるんだろ

570:デフォルトの名無しさん
08/11/19 16:59:31
自分の知らない事、どうでもいい事を聞くと怒り出す奴っているよね。キチガイ?
640*480と1024*1024が分かれてる意味ないじゃん。

571:デフォルトの名無しさん
08/11/19 17:00:24
はい次の人~。


572:デフォルトの名無しさん
08/11/19 17:14:06
ウィンドウサイズが640*480じゃないとダメで、レンダーターゲットはテクスチャでなくてはならない。(ピクセルシェーダー使うため)
テクスチャは2のn乗サイズじゃないとピクセルが1対1対応してくれないので、1024*1024にしてるんです。

573:デフォルトの名無しさん
08/11/19 17:17:29
ViewPort

574:デフォルトの名無しさん
08/11/19 17:17:52
1024×1024の画像ファイルの内必要な部分を範囲指定して表示すればいい

575:デフォルトの名無しさん
08/11/19 18:18:38
>>572
>テクスチャは2のn乗サイズじゃないとピクセルが1対1対応してくれない
これの意味が分からん

576:デフォルトの名無しさん
08/11/19 20:00:53
お前が低能無知なだけだろ

577:デフォルトの名無しさん
08/11/19 20:20:04
おれもわからん
一体何とピクセルが1対1?
たてよこ?

578:デフォルトの名無しさん
08/11/19 21:19:49
1:1対応にテクスチャのサイズなんて関係ねぇだろ。
描画する時の問題だ。

579:デフォルトの名無しさん
08/11/19 21:37:13
1:1は意味不明だがテクスチャの元画像の縦横を2のべき乗にすんのが普通。
元画像とテクスチャのバッファサイズが違うと引き伸ばされる
んで、読み込んだテクスチャバッファのうち、640*480の範囲を指定して
スプライトを描画すればよい。

580:デフォルトの名無しさん
08/11/19 22:31:40
なんで自らが引き伸ばして描画しているのに、「されて」とか他人のせいにする奴が現れるんだろう?

581:デフォルトの名無しさん
08/11/19 23:01:32
>>575
2のn乗以外のサイズで作ったときってDrawPrimitiveなんかで描画した時どうしても歪んで描画されないピクセルとかありませんか?
何かやり方があるならそれを知りたいです。
>>577テクスチャ上のピクセルと画面のピクセルがです。

582:デフォルトの名無しさん
08/11/19 23:08:24
まずはD3DXを一切使うのをやめ、画像ファイルをテクスチャに読み込んで自分でUVを設定し描画するところまでやれ。
それで全て解決する上に、自分がいかに間抜けなことを言っているかも理解出来る。

583:デフォルトの名無しさん
08/11/19 23:09:57
とんでもなくボロいビデオカードだと2のn乗以外のサイズのテクスチャ使えない?

584:デフォルトの名無しさん
08/11/19 23:15:52
馬鹿が余計なもん使って遠回りしてらぁw
m9(^Д^)プギャー

585:デフォルトの名無しさん
08/11/19 23:18:21
>>583
正方はさすがにないと思うけど
n乗は守ってるな俺
あんま意味無いかも
っていうか最近のグラボ事情知らん

586:デフォルトの名無しさん
08/11/19 23:34:35
使えても内部的に無駄が出るんじゃね

587:デフォルトの名無しさん
08/11/19 23:36:16
2^n以外のテクスチャが使える場合でもパフォーマンスは2^nより落ちるとかいう話を聞いたこともある

588:デフォルトの名無しさん
08/11/19 23:39:10
2乗は必須だけど正方かどうかはハード次第だろ。

589:デフォルトの名無しさん
08/11/20 00:06:26
GeForce6以降はテクスチャサイズの最大サイズ以外の全ての制限がなくなったわけだが。
DXTテクスチャですら適当なサイズのまま作れるぞ。

590:デフォルトの名無しさん
08/11/20 03:00:35
>>583
2のn乗が使えないのは、一番新しいのだとIntelの815の統合ビデオ機能かな?
っていうか、NONPOW2CONDITIONALは、2のn乗しか使えないハードウェアでも
ドライバの対応だけでクリアできるものだと思う。

591:デフォルトの名無しさん
08/11/20 03:32:25
おまえらの記憶にもうVoodooは無いのね・・・

592:デフォルトの名無しさん
08/11/20 07:36:53
あんな糞ボードサポートしてどうすんだよ

593:デフォルトの名無しさん
08/11/20 08:56:42
日韓併合における韓国皇帝の勅諭(原漢文)

皇帝、若(ここ)に曰く、朕否徳にして艱大なる業を承け、
臨御以後今日に至るまで、維新政令に関し承図し備試し、
未だ曽て至らずと雖も、由来積弱痼を成し、疲弊極処に至り、
時日間に挽回の施措望み無し。
中夜憂慮善後の策茫然たり。
此に任し支離益甚だしければ、終局に収拾し能わざるに底(いた)らん。
寧ろ大任を人に託し完全なる方法と革新なる功効を奏せいむるに如かず。
故に朕是に於いて瞿然として内に省み廊然として、
自ら断じ、茲に韓国の統治権を従前より親信依り仰したる、
隣国日本皇帝陛下に譲与し、外東洋の平和を強固ならしめ、
内八域の民生を保全ならしめんとす。
惟爾大小臣民は、国勢と時宜を深察し、煩擾するなく各其業に安じ、
日本帝国の文明の新政に服従し、幸福を共受せよ。
朕が今日の此の挙は、爾有衆を忘れたるにあらず、
専ら爾有衆を救い活かせんとする至意に出づ。
爾臣民は朕の此の意を克く体せよ。

隆煕四年八月二十九日

御璽

594:デフォルトの名無しさん
08/11/20 23:50:43
テクスチャをDDSファイルで読み込もうとしているんですが
複数のDDSファイルを読み込むと途中で動かなくなってしまいます
DDSファイルには特殊な処理が必要なんでしょうか?

ちなみに1つであればどのDDSファイルでも
見ている範囲では正常に動いているんですが・・・

595:デフォルトの名無しさん
08/11/20 23:53:06
随分アバウトな質問だな
それはDDS以外のフォーマットなら複数読んでもとまらないってことか?

596:デフォルトの名無しさん
08/11/21 00:02:14
>>595
すいません
よくよく試してみたら他の形式でも同様の止まり方をしましたorz
ちょっと前までDDSは使ってなくてその間は特に問題が無かったんで
DDSのせいだろうと決めてかかってました
多分他のところに問題があると思うのでもう少しコードを見直してきます
またわからないことが出てきたらお願いします

597:デフォルトの名無しさん
08/11/21 00:24:57
エスパーするとマルチスレッドで読み込もうとしてデバイスがマルチスレッドのフラグつけていない

598:デフォルトの名無しさん
08/11/21 00:48:02
Voodooはさすがにもういいだろ
SiS辺りのクソオンボとかi810とかはまだ使ってる人居るけど

599:デフォルトの名無しさん
08/11/21 00:50:18
>>597
あーありそう、昔一度やったことある

600:デフォルトの名無しさん
08/11/21 00:57:04
つーか今から何か出すなら最低でもシェーダーモデル3.0でいいだろ。
GeForce6なんて何世代前のビデオカードだとおもっとるんだ。

3Dゲームやるようなユーザーなら定期的にPC構成弄ってるし。

601:デフォルトの名無しさん
08/11/21 01:02:08
んーどうなのかな
PCのスペック二極化してるから下の層を拾うような仕様だと未だに糞ボードの対応までやってる感じするけど

602:デフォルトの名無しさん
08/11/21 02:11:10
ゲフォ5200と旧ATI9200以上の対応だけすればいい
理由はウチにあるそこそこ低いボードだからだ

作り手で線引きしないときりがない

603:デフォルトの名無しさん
08/11/21 02:26:25
ショップの品揃えで判断するとか。
GFX5200とか未だに定番商品みたいに新品売られてるのが泣ける。

604:デフォルトの名無しさん
08/11/21 08:20:24
だってそれ挿せばとりあえずVista(Aero)動くもん

605:デフォルトの名無しさん
08/11/21 08:37:31
つってもHD3450が5000円で買えるんだし下見るのももういいだろって気がする。
だから日本はエロゲ以外のゲームがろくに出ないんだよ。

606:デフォルトの名無しさん
08/11/21 12:00:45
DirectX10+SM4.0だろ
今更昔のクオリティのゲーム作って何が楽しいんだ

つーかこのスレやっぱりゲーム作る人多いのね

607:デフォルトの名無しさん
08/11/21 12:51:16
>>605
そういうのはPCメーカーが底上げしないと駄目だな
あとVRAMみたいな初心者でもわかりやすい目安みたいなのあればいいのに

>>606
楽しさも人それぞれっしょ
むしろ絵を綺麗にするだけの作業なんて何が楽しいんだよとか思うが

608:デフォルトの名無しさん
08/11/21 13:30:03
>むしろ絵を綺麗にするだけの作業なんて何が楽しいんだよとか思うが
リアルタイム3DCG技術についていけなくなった人が自分を慰めるための常套句ですね。わかりますw

609:デフォルトの名無しさん
08/11/21 13:40:39
自己満足ならそれでもいいんだが
ゲームは結局他人に遊んでもらってなんぼだからな
どんな流麗なCGでも動かなければ意味がない

マイロソフトのやり方だと次あたりのVisualStudioをXP非対応にして
まず開発者側の首を締めにかかってくるだろう
Vista以上でなければソフトが作れない環境ができてしまえば
市場からXPが消えるのも時間も問題と思われる
DirectXSDKはもっと早くXPのサポートを打ち切るだろうしね

610:デフォルトの名無しさん
08/11/21 13:42:37
>>608
海外向けのゲーム作ってる一部の人がそれ言うなら煽りに聞こえるが
日本向けゲーム作ってる人が言うとただの同意にしか見えない

611:デフォルトの名無しさん
08/11/21 14:42:16
すみません。DirectSoundをはじめて利用して、プログラムを作成しています。
そこでよくわからない状況になって困っています。
SDKはDirectX8(VC6++のサンプルがあるため)を利用しているのですが、
そのサンプルを参考にWAVファイルを再生するところまでたどり着きました。
ところが、再生前にフォーカスをはずすと、音が鳴らなくなるという現象が
発生してしまいます。
フォーカスが外れていても、音が鳴るようにするにはどのようにすればよいでしょうか?
よろしくお願いいたします。

612:デフォルトの名無しさん
08/11/21 14:54:05
サウンドバッファをつくるときに
DSBCAPS_GLOBALFOCUSフラグを立てる

この説明でわからないならソースうp

613:デフォルトの名無しさん
08/11/21 15:02:49
>>612
解決しました!!ありがとうございます。
これで無事システムを納品できそうです。
即答ありがとうございました。

614:デフォルトの名無しさん
08/11/21 15:06:04
DirectSound8のサンプルをそのまま利用していたので、パラメータの存在に
気がつきませんでした。説明を読むと、確かにそのとおりの内容になっていますね。
URLリンク(msdn.microsoft.com)


615:デフォルトの名無しさん
08/11/21 17:57:23
>>608
何人でどのくらいの期間で何をつくるのか知らんが
少数人チームで絵なんかこだわってる暇あったら
中身のほうを煮詰めてほしいと思うんだが
どんな凝ったエフェクトつけようとCG屋がウンコな時点で終了
逆に凝らなくても元のCGがきれいならそれなり
そもそも日本の個人ゲーはリアルタイム3DCGだのシェーダがどうのとか
そういうことを気にする以前のレベルだと思う

無論絵が綺麗に越したことはないが、だからといってゲームが面白いかというと別問題

616:デフォルトの名無しさん
08/11/21 18:38:21
バンプや反射、屈折の初級エフェクトすらプロでもあんまり使ってくれない
っていうかそんな時間ないや
デザイナがシェーダの設定ファイルを書いてると遊んでると思われる空気

617:デフォルトの名無しさん
08/11/21 20:34:32
IBasicVideo の GetCurrentImage を使って、
ビデオのワンフレームをビットマップとして保存しようと思っているのですが、
ソースが mpeg2 の場合だと何故か真っ黒なビットマップしか取得できません。
ソース、取得するフレームの位置、mpeg2 video decoder を色々変えて試してみたのですが、
結果は変わりませんでした。
ソースが avi, wmv, mpeg1 の場合は正常なビットマップを取得でることを確認済みです。
このことについて何かご存知の方おられましたらご教示お願いします。
試した mpeg2 video decoder は次のものです。
MpegVideoDecoder PIXELA, Cyberlink Video/SP Decoder

618:デフォルトの名無しさん
08/11/21 20:53:43
正直D3D10に興味が涌かないな

仕事以外で使うならsm3での表現力に不足はないし
ジオメトリシェーダやその他諸々は高速化以外の用途が見出せないからつまらん

619:デフォルトの名無しさん
08/11/21 20:54:16
>>617
DirectShowと戦うスレ Part 4
スレリンク(tech板)

620:デフォルトの名無しさん
08/11/21 21:04:44
>>619
ありがとうございます。移動します。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch