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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
※回答する人も、質問する人も必ず読んでください

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

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

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

前スレ
【C++】 DirectX初心者質問スレ Part29 【C】
http://pc12.2ch.net/test/read.cgi/tech/1274353792/
2デフォルトの名無しさん:2010/07/04(日) 19:02:42
前スレで気になることが書いてあったので、質問させてください。
▼▼▼
984 :デフォルトの名無しさん:2010/07/04(日) 13:07:47
初心者スレなんだからD3DXは使わないほうが良いって風潮どうにかした方が良いな
言ってる本人たちはそれがカコイイ(笑)と思ってるのかも知れないが

985 :デフォルトの名無しさん:2010/07/04(日) 13:12:21
>>984
だな。完成品の配布の際に多少注意点がある程度で、
(ビルドに使用したSDKのバージョンに合わせた再頒布パッケージの同封が必要)
それ以外には制限らしい制限はない。

D3DXのパフォーマンスに不満が出るというレベルになるまでは積極的に使えばいいと思うよ。
▲▲▲
D3DX(ID3DXSprite)を使った完成品を配布するには
『ビルドに使用したSDKのバージョンに合わせた再頒布パッケージの同封が必要』
というところが気になりました。

現在、WinXP SP2 以降のOS環境にて、完成品のexeだけで動作することを目的に作成しています。
その為、古いSDK「DirectX 9.0c SDK」(DirectX 9.0cは、WinXP SP2ではOSに標準搭載されている)を
使って開発していますので、WinXP SP2をインストールした直後の状態にグラフィック、サウンドドライバを
入れただけのマシンで動作検証を行っていますが、再頒布パッケージを入れなくても動作します。
また、同様にWindows7をインストールした直後の状態にグラフィック、サウンドドライバを入れただけの
マシンでも、再頒布パッケージを入れなくても動作します。

WinXP SP2 以降のOS環境向けに、DirectX 9.0c SDK(ID3DXSprite)を使用して作った完成品の
配布には、「再頒布パッケージの同封」は必要なのでしょうか。
それとも、「再頒布パッケージの同封」はしなくても動作するけど、”規則上”同封が必要なのでしょうか。
上記環境で、再頒布パッケージを同封する必要性がわかりません。
変な質問をしてすみませんが、お教えいただけないでしょうか。
3デフォルトの名無しさん:2010/07/04(日) 19:28:18
>>2
ご指名があったのでお答えしよう。

D3DXはユーザー空間ライブラリの範疇にあるものでDirect3Dのコアに含まれているわけではないけれど
Direct3Dの一部として扱われているヘルパーライブラリだ。
2005 Feb以前はstatic libraryとして提供されていたが、それ以降はDLLとして提供されているので
ユーザー側のPCに同じDLLが存在しないといけない。
(ゲーム側にd3dx9_xx.dllを単体で添付することは禁じられている)
従ってゲーム本体にDirectX再頒布パッケージを添付して配布することになる。

それにXP sp1以前のPC環境のお客さんは厳然と存在するから、
そのラインで区切ることにどれほどの意味があるかだね。
42:2010/07/04(日) 20:33:04
>>3
レスありがとうございます。
2005 Feb以前の「DirectX 9.0 SDK Update - (Summer 2004)」で開発しているから、
WinXP SP2以降に完成品exeを配布する場合は、DirectX再頒布パッケージは
添付しなくていいのですね。了解しました。

>それにXP sp1以前のPC環境のお客さんは厳然と存在するから、
>そのラインで区切ることにどれほどの意味があるかだね。
XP SP2は、もうすぐ(2010年7月13日に)マイクロソフト社のサポートが終了するから、
アプリを提供する側は、OSサポート終了を理由に堂々と「OSのサポートが終了して
いるから、うちのアプリは、そのOSを正式にはサポートしません。」っていえるかも。
5デフォルトの名無しさん:2010/07/04(日) 20:43:25
>>4
まあ間違っちゃいないが、そういうやり方は賛成しかねるな。
DirectXを使用する製品は開発に使用したDirectXの再頒布パッケージを添付して配布することになってるんだし、
一般的に言ってより新しいバージョンのライブラリがあるならそれを使うべきだ。

そうやってこの国の製品が守旧に陥っているのはちとなー。
未だにDirectDrawやGDIしか使ってないゲームエンジンがゴロゴロいて、
しかも幅を利かせているのは納得行かないものがある。
6デフォルトの名無しさん:2010/07/04(日) 21:38:59
何故新しいのを使わないといけないのか、理解出来ないな〜。
作り手が望まないなら、新しい技術なんて必要ないじゃん。

ドット絵をポチポチ打って作るゲームの何が悪い!?
7デフォルトの名無しさん:2010/07/04(日) 21:46:47
きっとわかるように白々しくやってるんだろうな。。。
8デフォルトの名無しさん:2010/07/04(日) 21:52:03
ホント何がしたいんだろな
9デフォルトの名無しさん:2010/07/04(日) 22:02:33
2ちゃんにはレス乞食という言葉があるぐらいだからな。レスがつくと喜ぶんでね?
10デフォルトの名無しさん:2010/07/04(日) 22:59:02
自分で話題振って自分でレスつけてたら世話ないっつーの
11デフォルトの名無しさん:2010/07/05(月) 23:41:51
MinGWがDirectX9をサポートしているようなので使おうとしたのですが、初期化からうまくいきません。
Direct3DCreateは通るのですが、CreateDeviceやReleaseを行うとコンパイル時に「そんな関数はない」というエラーが返ってきます。
前にBCCでDirectXを使おうとした時も同じ内容のエラーを渡された記憶があるので、何か初歩的なミスがあるように思うのですが、見当がつきません。
考えられる原因として、どのようなものがあるでしょうか。やはりmakefile内のインクルードやライブラリでしょうか?
ごく初歩的な質問で申し訳ないのですが、どなたか知恵を貸していただけませんか。
12デフォルトの名無しさん:2010/07/05(月) 23:49:23
>>11
とりあえずエラーの内容くらいちゃんと書こう
13デフォルトの名無しさん:2010/07/05(月) 23:52:10
VC++2008 + DirectX 9.0c SDKで開発をしているのですが、実装したい機能があります。
「フルスクリーンモード時に画面上をマウスで右クリックしたときにポップアップメニューを表示する」
(Windows Media Playerのようにフルスクリーンモード時にポップアップメニューを表示したい。)

【ソースの一部】
  case WM_RBUTTONUP:
    HMENU hMenu, hmenuR;

    hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU1));
    hmenuR = GetSubMenu(hMenu , 0);
    TrackPopupMenu( hmenuR, TPM_LEFTALIGN | TPM_LEFTBUTTON,
      LOWORD(lParam), // カーソルx座標
      HIWORD(lParam), // カーソルy座標
      0, g_hwnd, NULL);
    DestroyMenu(hMenu);
    break;

上記ソースコードを追記してフルスクリーンで実行して画面上をマウスで右クリックをすると
@ポップアップメニューが、きちんと表示される場合。⇒ 成功
Aポップアップメニューが、一瞬表示されたかと思うとすぐに消えてしまう場合。⇒ 失敗
Bポップアップメニューが、全く表示されない場合。⇒ 失敗
の3通りの動きをします。
※ウインドウモードだとポップアップメニューは確実に表示されます。

DirectXフルスクリーンモード時の表示とWin32APIの表示が競合して失敗していると思うのですが、
解決する方法をご存知の人がいれば、教えてくださらないでしょうか。
できるだけ標準的なWindowsの操作を実現したいので、メニューを自作でデザインするのは
最終手段だと考えています。

よろしくお願いします。
14デフォルトの名無しさん:2010/07/05(月) 23:57:39
すまんが飯のタネなのでな
15デフォルトの名無しさん:2010/07/06(火) 00:10:08
>>13
SetDialogBoxMode
16デフォルトの名無しさん:2010/07/06(火) 00:33:01
>>12
例.1
gcc -o dtest main.c -g -Ic:/MinGW/include -DUNICODE -D_UNICODE -Lc:/MinGW/lib -lmingw32 -ldxguid -ld3d9 -mwindows
cc7mPuVJ.o: In function `InitD3D':
main.c:112: undefined reference to `CreateDevice'
cc7mPuVJ.o: In function `ReleaseD3D':
main.c:123: undefined reference to `RELEASE'
main.c:124: undefined reference to `RELEASE'
collect2: ld returned 1 exit status
make: *** [dtest] Error 1

例.2
gcc -o dtest main.c -g -Ic:/MinGW/include -DUNICODE -D_UNICODE -Lc:/MinGW/lib -lmingw32 -ldxguid -ld3d9 -mwindows
main.c: In function `InitD3D':
main.c:112: error: structure has no member named `CreateDevice'
make: *** [dtest] Error 1

失礼しました。横着しました。エラーメッセージは概ね上記のとおりです。
ほかに何か重要なことはあるでしょうか? どこに問題があるのか絞りきれず困っています。
……というより、もしかしてC言語でDirectXは今や使えないのでしょうか?
17デフォルトの名無しさん:2010/07/06(火) 00:35:35
18デフォルトの名無しさん:2010/07/06(火) 01:03:07
>>17
ありがとうございました。無事に動かすことができました。
1913:2010/07/06(火) 03:20:05
>>15
ありがとうございます。
SetDialogBoxMode を使ってポップアップメニューは表示できました。
しかし、SetDialogBoxModeの使用必須条件である
D3DPRESENTFLAG_LOCKABLE_BACKBUFFER を設定すると
グラフィックの描画パフォーマンスが著しく低下してしまい
目標の描画速度を達成できませんでした。

グラフィックの描画方法(ID3DXSprite)は変更したくありません。
パフォーマンスを落とさずに実装する方法はないでしょうか。
20デフォルトの名無しさん:2010/07/06(火) 03:44:35
>>19
DirectXのメリットを捨ててGDI互換でやろうってんだからそれは無茶な話
DirectX10以降を使うか最終手段しかないんじゃない?
21デフォルトの名無しさん:2010/07/06(火) 03:51:06
>>19
直接バックバッファに書き込まずに
いったん別のレンダリングターゲットに描画してから
バックバッファに転送すれば多少はマシかもしれない
2213:2010/07/06(火) 08:08:04
>>20-21
ご提案ありがとうございます。
結局、DirectXのフルスクリーンモードを使うのはやめて、ウインドウモードで動いている状態を
Win32 APIの ChangeDisplaySettings を使用し画面の解像度を変えて表示する(見た目は
フルスクリーンに見える)という方法で実装しました。
DirectXのフルスクリーンモードの長所である「DirectXのアクセラレーションがフルに効く」は
諦めました。(性能の悪いグラフィックチップでは、ウインドウモードは処理落ちして、
DirectXのフルスクリーンでは処理落ちしなかったのですが、ChangeDisplaySettingsによる
フルスクリーンの実装は、ウインドウモード同様に処理落ちしてしまうようになりました。)

D3DPRESENTFLAG_LOCKABLE_BACKBUFFERを指定していたときは、RADEON HD4650でも
処理落ちしていましたが、ChangeDisplaySettingsを使う方法では、ウインドウモードと同様に
動作して、ポップアップメニューも正常にされるようになりました。
23デフォルトの名無しさん:2010/07/06(火) 09:46:57
>>22
ほほ〜、おれはSetDialogBoxModeを使う方法で実装しているが、
D3DPRESENTFLAG_LOCKABLE_BACKBUFFERをセットすると処理能力が落ちるのか。気付かなかったな。
とはいえi82845gでもそれなりの速度が出てるからとりあえずのところ不満はないんだが。
1フレーム当たりどれくらいの描画量なのか教えてくれるとうれしい。
(当方は800x600基準、最大6画面分くらいの2D描画を1フレームで処理する)
2413:2010/07/06(火) 11:30:16
>>23
下記3台のPCでテストをしました。
@ThinkPad X40 Intel(R) 82852/55 64.0MB
A自作PC Intel(R) 82845G/GL 48.0MB
B自作PC ATI Radeon HD4650(AGP8x) 1024.0MB

D3DPRESENTFLAG_LOCKABLE_BACKBUFFERをセットしても
@Aのマシンでは処理が遅くなっていることに気付きませんでした。
しかし、Bで実行したときに60コマでなかったので焦りました。

>1フレーム当たりどれくらいの描画量なのか教えてくれるとうれしい。
800x600基準 D3DFMT_X8R8G8B8 最大2枚 すべてID3DXSprite使用です。

SetDialogBoxModeを使っているということは標準のマウスカーソルを
使っているかも知れませんね。実は@のマシンのみでマウスカーソルが
点滅する不具合がでるのですが、解決方法をご存知でしたら
教えていただけないでしょうか。
25デフォルトの名無しさん:2010/07/06(火) 12:01:20
カーソルがハードウエア側でレイヤ処理されている保証はないので、
マウスカーソルを自分で描画する以外の解決方法はない。
26デフォルトの名無しさん:2010/07/06(火) 14:21:47
初歩的な質問で申し訳ないのですが、MinGWにてDirectXを使用する場合、
GCCとG++のどちらでコンパイルすればよいのでしょうか。
27デフォルトの名無しさん:2010/07/06(火) 14:27:39
Cで書くかC++で書くかで
28デフォルトの名無しさん:2010/07/06(火) 14:32:44
G++です
29デフォルトの名無しさん:2010/07/06(火) 14:48:10
>>24
フリーソフトならともかく、製品を出すつもりならその3つの環境じゃ不足してるよ。
Intel、Radeon、GeForce、それぞれに癖があって特徴的な挙動があるので
3系列全てでテストする必要がある。

で、HD4650でその程度の描画量で60FPS出ないのはちょっと考えにくい。
ひょっとしてVistaでテストしていて最大化表示とかやってない?
Vistaのスタートボタンは微妙にデスクトップにかぶっていて、
FPSの維持が必要な描画を阻害してくれる。
(だからプライマリ以外のディスプレイだと問題ない)

それから、Vista以降もサポートするならDirect3D9Exオススメ。
格段に描画が速く、かつ安定する。
30デフォルトの名無しさん:2010/07/06(火) 15:23:00
>>格段に描画が速く
そうなん?
31デフォルトの名無しさん:2010/07/06(火) 17:38:41
うん
32デフォルトの名無しさん:2010/07/06(火) 17:48:33
LOCKABLE_BACKBUFFERにしただけで遅くなったの?
SetDialogBoxModeにして遅くなったのなら分かるが。
33デフォルトの名無しさん:2010/07/06(火) 18:23:50
>>33
SetDialogBoxModeは完全に描画止まってしまうので、遅くなるもないよ。
34デフォルトの名無しさん:2010/07/06(火) 18:47:55
33: goto 33
35デフォルトの名無しさん:2010/07/06(火) 19:12:39
>>33
描画は止まらないよ。
36デフォルトの名無しさん:2010/07/06(火) 19:22:55
自演も止まらないよ。
37デフォルトの名無しさん:2010/07/06(火) 19:24:20
笑いも止まらないよ。
38デフォルトの名無しさん:2010/07/06(火) 19:25:09
D3DPRESENTFLAG_LOCKABLE_BACKBUFFERで極端に重くなったことはないなぁ

WM_PAINTで何かしてるとかじゃないの?
3913:2010/07/07(水) 04:24:06
>>25
お教えいただきありがとうございます。

>>29
ご指摘ありがとうございます。GeForceでもテストするようにします。
>HD4650でその程度の描画量で60FPS出ないのはちょっと考えにくい。
>ひょっとしてVistaでテストしていて最大化表示とかやってない?
WinXP SP3でDirectXのフルスクリーンモードで実行した結果です。

自分の作成したプログラム(3D機能で2Dを描画する)は、なぜか描画が
モチッとして遅いです。描画の遅い原因はwin32アプリケーションウィザードに
よって自動的に作成されたウィンドウを表示するだけのプログラムに
DirectXを組み込んだからかも知れません。(DirectDrawの時は
描画がきびきびしていたのに・・・)
7年前に3D機能を使った2D描画の動作検証(ID3DXSpriteと板ポリゴンの
速度比較)をしたのですが、そんなに速度は変わりませんでした。
↓7年前に作ったプログラム(ウィザード未使用、板ポリゴン使用)
http://jishinkuma.aa0.netvolante.jp/dev/sii/

Vista以降もサポートしますが、「DirectX 9.0 SDK Update - (Summer 2004)」で
開発する方針は変えるつもりはありません。Direct3D9Exは、上記SDKよりも後に
発表されたSDKで使える機能ですね。
4013:2010/07/07(水) 05:03:41
>>32
D3DPRESENTFLAG_LOCKABLE_BACKBUFFERにしただけで遅くなりました。

>>38
>WM_PAINTで何かしてるとかじゃないの?
思いっきりしています。win32アプリケーションウィザードによって自動的に
作成されたウィンドウを表示するだけのプログラムにDirectXを組み込みました。
その為、Render()は、WM_PAINTとアイドル処理の2箇所で呼んでいます。
▼▼▼
case WM_PAINT:
// 画面の更新
hr = Render();
if (hr == D3DERR_DEVICELOST)
{
g_bDeviceLost = true; // デバイスの消失
}
else if (FAILED(hr))
{
DestroyWindow(g_hwnd);
}
ValidateRect( hWnd, NULL );
break;
▲▲▲
ValidateRectを外しても、D3DPRESENTFLAG_LOCKABLE_BACKBUFFERを
セットした状態のフルスクリーンモードでは極端に描画速度が遅くなります。

Win32 APIのChangeDisplaySettingsを使って作ったフルスクリーンもどきを、
実際に本番のプログラムに組み込むのは、まだ躊躇しています。
DirectXのフルスクリーンモードのみで使えるBackBufferを使った方が、
レンダリングが滑らかなのでDirectXのフルスクリーンモードは捨てがたいです。
やはり、ポップアップメニューを使わずにメニューを自作でデザインするべき
なのだろうか。
4113:2010/07/07(水) 05:34:41
>>32>>38
すみません訂正です。検証不足でした。
D3DPRESENTFLAG_LOCKABLE_BACKBUFFERでは
見た目では描画速度の低下は見られませんでした。
SetDialogBoxModeを使用した場合に明らかに描画速度の
低下が見られました。
42デフォルトの名無しさん:2010/07/07(水) 08:38:48
>>39-41
突っ込みどころが多すぎるが、フリーソフト作ってるだけならまあ好きにやれよ。
>自分の作成したプログラム(3D機能で2Dを描画する)は、なぜか描画がモチッとして遅いです。
描画がなぜ遅いかはPIX for Windowsで調べるといい。

それから複数の絵を1枚のテクスチャにまとめた上で1つのポリゴンとして連結した上で一度に描画すると早くなるぞ。
そういうことをやろうとしたらID3DXSpriteでは機能が足りなくなるかも(あるいはひょっとしたら内部でやってくれてるかも)

それからDirectDraw/Direct3Dで60FPSバリバリ書くプログラムはWM_PAINTは単に無視するように書くんだぞ。
君は数年間何を学んできたんだ。
43デフォルトの名無しさん:2010/07/07(水) 08:44:33
まあ飯のタネなのでな
44デフォルトの名無しさん:2010/07/07(水) 20:19:19
くぴっ
45デフォルトの名無しさん:2010/07/08(木) 02:52:15
D3DXCreateMesh等が、
ID3DXMeshインターフェイスへのポインタが引数にならずに、
ID3DXMeshインターフェイスへのポインタのアドレスが引数なのは、
呼び出す時に
D3DXCreateMesh(略,&pMesh);
こうやって&をつけさせて出力であることをはっきりさせるためですか?
それともそれ以外の理由もあるのでしょうか?
46デフォルトの名無しさん:2010/07/08(木) 04:35:28
>>45
COMのインターフェースは元々ポインタで扱うものなので、インターフェースを受け取る場合は
ポインタのポインタになる。
理由もなにも、そうでなきゃいけない。
47デフォルトの名無しさん:2010/07/08(木) 07:22:45
このスレはDirectX初心者のスレであって、C言語初心者のスレじゃない。
48デフォルトの名無しさん:2010/07/08(木) 08:29:10
(キリッ
49デフォルトの名無しさん:2010/07/08(木) 09:05:24
>>45
内部でインターフェイス分のメモリを確保するんだから
単にポインタ渡したってそこから連続でメモリがあいてる保障なんてないだろ?
だから確保できたポインタのアドレスが返るようになってんだよ
50デフォルトの名無しさん:2010/07/08(木) 09:43:35
そもそもポインタを渡すという表現が間違っている。
&をつけなかった場合、渡すのはポインタ変数の中身だ。
そして初期化も何もしていなければ、渡されるのは不定値。
そんな物を受け取ってどうしろと言うのか。
51デフォルトの名無しさん:2010/07/08(木) 16:47:57
(キリッ
52デフォルトの名無しさん:2010/07/08(木) 19:23:14
ワロタw
53デフォルトの名無しさん:2010/07/08(木) 20:47:04
DrawPrimitiveUPでデバッグ用のラインを引きたいのですが
頂点にはキャラの座標やカメラ位置の座標が入っているのですが
ワールド座標のSetTranformやEffect->SetMatrixには何を入れれば良いのでしょうか?
54デフォルトの名無しさん:2010/07/08(木) 20:58:21
値を入れればいいと思うよ
55デフォルトの名無しさん:2010/07/08(木) 21:24:35
>>53
情報が少なすぎ、そしてその少ない情報に意味が無さすぎ

DrawPrimitiveUPで線を引きたいのは分かった
じゃあ、固定機能だけで描きたいの?シェーダー使って描くの?
線は3D空間に引きたいの?スクリーン座標で指定して引きたいの?

質問するときは
勝手に問題点を自分で限定しないで
やりたいことと何が分からないのかを明確にすること
56デフォルトの名無しさん:2010/07/08(木) 21:41:54
>>55
ようするに、わからないんですね
57デフォルトの名無しさん:2010/07/08(木) 21:59:25
クマー
58デフォルトの名無しさん:2010/07/08(木) 22:01:34
>>55
はい
ごめんなさい
固定機能の時とシェーダの時で何を入れれば良いのか教えてください
線は3D空間に引きたいです
59デフォルトの名無しさん:2010/07/08(木) 22:18:20
>>58
3Dならそんなに難しくない
シェーダーに関しては中身みないとなんともいえないので半分エスパーになるけど
すでにキャラクターは表示できてるんだよね?
だとしたらキャラクターの描画に使ったワールド行列を単位行列に置き換えて
それ以外はキャラの描画とまったく同じ手順で指定すればいけるんじゃない?

具体的な方法が知りたければ描画部分のソースを書いてくれ
60デフォルトの名無しさん:2010/07/08(木) 22:20:17
自演?
61デフォルトの名無しさん:2010/07/08(木) 22:28:12
まず線のモデルを用意します
62デフォルトの名無しさん:2010/07/08(木) 23:40:17
>>46,49,50さん
ありがとうございます
>&をつけなかった場合、渡すのはポインタ変数の中身だ。
すさまじい勘違いでしたっorz
ちょっとC++に慣れて来てたと思ったらこんな初歩ががが

別な話になってしまいますが、
COMについて知っておくと結構いいことがありますか?
それともそんなことやるなら別なことをやった方がいいですか?
63デフォルトの名無しさん:2010/07/08(木) 23:46:08
>>62
そこまで突っ込んだことは要らないと思うけど
COMついでにちょっとスマートポインタだけググっとくと後々便利かもしれない
64デフォルトの名無しさん:2010/07/08(木) 23:58:27
>>63さん
参考になりまっす!
了解ですっ
65デフォルトの名無しさん:2010/07/09(金) 03:13:48
すみません。モーション再生についてなのですが、
現在SDK SampleのTiny4のコードをほぼ原型通りの使い、1ファイルにモデルとモーションを詰めて利用していました。
そこからモデルとモーション1個1個を全て別々のファイルにし、モデルにモーションを適用させたく思ったのですが
適応してくれません・・orz

読み込み時点でモデルを保管するLPD3DXFRAMEと、モーションを保管するLPD3DXANIMATIONCONTROLLERを別々にはしてはいるのですが、
どこでこの2つが関わっているのかすら理解できず、別々に読み込んでもモーションを適用する事ができずに居ます。
私はどこらへんが理解できていないのでしょうか。 何かご助言を頂けますと幸いです。。orz
66デフォルトの名無しさん:2010/07/09(金) 03:29:59
>>65
D3DXFrameRegisterNamedMatrices
の存在を知れば解決するか?
6765:2010/07/09(金) 15:31:11
>>66
目的を達成する事が出来ました、有難うございますっ orz
68デフォルトの名無しさん:2010/07/09(金) 16:40:58
いえいえ
69デフォルトの名無しさん:2010/07/09(金) 17:03:09
誰だよお前?
70デフォルトの名無しさん:2010/07/09(金) 20:00:02
どういたしまして
71デフォルトの名無しさん:2010/07/09(金) 23:43:24
初歩的な質問すみません。演出用のエフェクトを作っているのですが、
ポイントスプライトを使い動きは計算して行うのと、
モーション付きモデルとして再生するだけにしてしまう2択の場合。
現状、開発が楽な後者でやるつもりなのですが、大量描画する場合は前者の方が軽かったりするのでしょうか?
72デフォルトの名無しさん:2010/07/10(土) 00:08:54
ポイントスプライトとモーション使えばいいじゃん
73デフォルトの名無しさん:2010/07/10(土) 00:29:38
>>71
大量に描画するなら
1つにつき座標変換が一回で済むポイントスプライトのが軽いでしょ
動きを頂点シェーダで計算すれば更に速い
でも>>72のアイデアも面白いと思った
74デフォルトの名無しさん:2010/07/10(土) 01:19:19
ポイントスプライトとかモデルとか以前に
直線運動とか放物線とかSin波とか
終始ある程度幾何学的な動きならぶっちゃけ計算の方がむしろ楽だと思う
キーフレームごとに動きが有機的に変わるとかなら
計算でやると例えその方が軽くても非常にメンドイのでモーションでやった方が良いと思う
75デフォルトの名無しさん:2010/07/10(土) 01:29:02
モーションでやった方が良いよな
7671:2010/07/10(土) 15:35:08
>>72-75
色々な情報ありがとうございます。ポイントスプライトと計算の方が良さそうなのですね。
ただし複雑な動きはモーションの方が手っ取り早い と。
とても勉強になりました。シェーダに関しても地道に勉強を進めようと思います。ありがとうございました。
77名無しさん@そうだ選挙に行こう:2010/07/11(日) 06:02:50
質問です。

DrawIndexedPrimitiveで例外が発生します。
返り値も-2005530516という値です。

この関数が失敗する原因に心当たりがある方がいればご教授ください。
78名無しさん@そうだ選挙に行こう:2010/07/11(日) 09:47:23
HRESULT: 0x8876086c (2289436780)
Name: D3DERR_INVALIDCALL
Description: Invalid call
Severity code: Failed
Facility Code: FACILITY_D3D (2166)
Error Code: 0x086c (2156)

呼び出しが無効です
そもそもデバイスの生成に失敗しててNULLポインタ指してるとか
引数が間違ってるとかくだらない理由

たぶんそこで例外がでるからDrawIndexedPrimitiveに失敗してるって勝手に思い込んでるだけで
もっと前の段階で何か失敗してる、ちゃんとデバックしろ
デバイスや頂点バッファ、インデックスバッファは本当にちゃんと生成できてるのか?
79名無しさん@そうだ選挙に行こう:2010/07/11(日) 17:50:44
生成できてますが。
80名無しさん@そうだ選挙に行こう:2010/07/11(日) 18:45:44
> 引数が間違ってるとかくだらない理由

とかじゃないの?
コードがないから誰も的確な答えとか出せないと思うけどね。
81名無しさん@そうだ選挙に行こう:2010/07/11(日) 18:59:12
DrawIndexedPrimitiveが失敗するとか普通に考えてあり得ない
引数の半分くらいは重要ではないしちょっとくらい大目に頂点数やプリミティブ数を指定しても動いちゃう

失敗するとすれば

インデックス配列が設定されていない場合、IDirect3DDevice9::DrawIndexedPrimitive は失敗する。
D3DPRIMITIVETYPE 列挙型の D3DPT_POINTLIST メンバはサポートされておらず、このメソッドの有効な型ではない。

くらいだろ
IDirect3DDevice9::SetIndicesしてないとか初歩的なミスだと思われる
82名無しさん@そうだ選挙に行こう:2010/07/11(日) 19:18:42
あまり知識がないのでよくわからん(*´ ェ`)
詳しい説明よろ〜
83名無しさん@そうだ選挙に行こう:2010/07/11(日) 19:22:20
本人じゃなさそうだね、スルーで
84名無しさん@そうだ選挙に行こう:2010/07/11(日) 19:31:59
なんか、私じゃない人が答えてます?
すみません。
今教えて頂いたところを中心に調べています。
85名無しさん@そうだ選挙に行こう:2010/07/11(日) 19:37:29
本人じゃなさそうだね、スルーで
86名無しさん@そうだ選挙に行こう:2010/07/11(日) 19:40:58
だろ。はホントにしねばいいのに
87名無しさん@そうだ選挙に行こう:2010/07/11(日) 19:41:17
本人じゃなさそうだね、スルーで
88名無しさん@そうだ選挙に行こう:2010/07/11(日) 21:00:56
大人じゃなさそうだね、に見えたw
だろ。の人はまだ荒らしてるのか
89デフォルトの名無しさん:2010/07/12(月) 14:33:39
DirectXにてウインドウモード/フルスクリーンモードの両方で標準のマウスカーソルを表示した
かったのですが、ハードウェアカーソルではないVGAでは標準マウスカーソルの表示のちらつきが
発生していました。そこで、DirectXでスプライトにてマウスカーソルを描画することにしました。
下記スプライトマウスカーソルの実装時のイベントのキモの部分のソースコードだと思うのですが、
既にスプライトマウスカーソルを自前で実装されている人にレビューをしていただけたら幸いです。
▼▼▼
  case WM_SETCURSOR:
    if(LOWORD(lParam) == HTCLIENT)
    {
      SetCursor(NULL); // 標準マウスカーソル非表示
      g_mousecursor.SetDispFlag(1); // スプライトマウスカーソル表示
      return TRUE;
    }
    else
    {
      // 標準マウスカーソル表示
      g_mousecursor.SetDispFlag(0); // スプライトマウスカーソル非表示
      if( Render() < 0 ) // DirectXの描画
      {
        DestroyWindow(g_hwnd);
      }
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
    break;
▲▲▲

以上、よろしくお願いします。
90デフォルトの名無しさん:2010/07/12(月) 16:27:26
if( Render() < 0 ) // DirectXの描画

こんなところで何を描画してるの?
9189:2010/07/12(月) 18:40:56
>>90
Renderは、DirectXのすべての描画を行っています。
通常はアイドルでRenderを呼び出します。

しかし、以下図説の操作をするとアイドルに入らなくなり描画が止まります。
http://jishinkuma.aa0.netvolante.jp/etc/seigyo.png

アイドルのRenderではスプライトカーソルを描画していますが、上記操作をすると、
アイドルに入らなくなり描画が止まりスプライトマウスカーソルが固定位置で
表示されっぱなしのまま標準マウスカーソルも表示されてしまいます。
(マウスカーソルが2個表示される不具合。)

elseの中には、アイドルに入らなくなり描画が止まりスプライトマウスカーソルが
固定位置で表示されっぱなしの状態で入ってきます。elseの中のRenderでは、
事前にSetDispFlag(0)を設定することにより、スプライトマウスカーソル以外の
描画をします。(このRenderでスプライトマウスカーソルを画面から消去します。)
92デフォルトの名無しさん:2010/07/12(月) 23:29:27
ちょっとだけDirectX11
ttp://www.amazon.co.jp/%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E3%81%A0%E3%81%91DirectX11-I%E3%83%BBO-BOOKS-%E4%B8%8B%E8%B0%B7-%E7%A7%80%E4%BF%8A/dp/477751501X

この本、サンプルソースの言語は何ですか?
C++? C#?
C++なら買おうと思いますが。
93デフォルトの名無しさん:2010/07/12(月) 23:32:07
94デフォルトの名無しさん:2010/07/12(月) 23:50:01
95デフォルトの名無しさん:2010/07/13(火) 00:19:18
>>93-94
ありがとさんです
96デフォルトの名無しさん:2010/07/13(火) 05:20:11
ほんとにちょっとだけだな
97デフォルトの名無しさん:2010/07/13(火) 10:07:26
C#だったらその目次の内容は2章くらいで済むしな
98デフォルトの名無しさん:2010/07/13(火) 11:24:31
テクスチャ表示までだったらチュートリアルみれば十分だろう。
金の無駄としか思えない。
99デフォルトの名無しさん:2010/07/13(火) 15:38:27
DX11のテッセレーションってどう組めばいいの?
100デフォルトの名無しさん:2010/07/13(火) 15:47:20
101デフォルトの名無しさん:2010/07/13(火) 15:54:13
>>99
Samples\C++\Direct3D11\DetailTessellation11 (August 2009)
Samples\C++\Direct3D11\DecalTessellation11 (June 2010)
102デフォルトの名無しさん:2010/07/13(火) 16:24:42
(February 2010)はどうしたのかな?
103デフォルトの名無しさん:2010/07/13(火) 16:52:29
FebのときはDecalないな
104デフォルトの名無しさん:2010/07/13(火) 18:33:52
>>98
最初のポリゴン1個を表示するのがどれほど大変か
ここにいる人なら実感してると思う。
なので最小のDirectXプログラムとか、三角ポリゴンを表示するだけのプログラムとか
できてるのがあればありがたい。
105デフォルトの名無しさん:2010/07/13(火) 20:57:51
えっ…
106デフォルトの名無しさん:2010/07/13(火) 23:05:23
それは君だけだと思う
107デフォルトの名無しさん:2010/07/13(火) 23:08:19
サンプルのチュートリアルの存在を知らないとか?
108デフォルトの名無しさん:2010/07/13(火) 23:42:37
はぁ…
109デフォルトの名無しさん:2010/07/14(水) 08:02:46
うっ…
110デフォルトの名無しさん:2010/07/14(水) 14:11:16
だろ
11177:2010/07/14(水) 19:48:24
>>78
>>80
>>81

解決しました。
問題はDirect3DDeviceの作成で、
D3DCREATE_MIXED_VERTEXPROCESSINGを使っていたのが原因でした。
D3DCREATE_HARDWARE_VERTEXPROCESSINGに変更したところすんなり描画できました。

D3DCREATE_MIXED_VERTEXPROCESSINGを使っていた場合、
ソフトウェアかハードウェア描画の切り替えを明示的に変更したらよいそうですがまだ試していません。
112デフォルトの名無しさん:2010/07/14(水) 19:53:23
サンプルソース(というかMSのソース全般)は非常に読みづらいですから、
肝心な箇所をピックアップしてくれた書籍を購入した方が早いと思います。
でもまあ、ソースを読む力がある人は必要ないんじゃないんですかね。
113デフォルトの名無しさん:2010/07/14(水) 20:17:05
質問です。

OS:Windows7
開発環境:Visual C++ 2010 Express
開発アプリ:ゲーム

mp3を演奏する為にDirectShowを使用しているのですが、
IGraphBuilder::RenderFile()を使用すると、
IGraphBuilderとそこから取得した全インターフェースをRelease()しても
アプリケーション終了後に必ずそのアプリケーション名プロセスが残ってしまいます。
終了時にイベントキューを空にしたり、
WaitForCompletion(INFINITE, code)を使ってみても駄目でした。

実は昨月にVistaからWindows7に変更したのですが、同コードでも
Vistaではプロセスが残らなかったのに、Windows7では発生するようになりました。
どうかプロセスが残らずにFilterGraph関連物を終了できる方法を教えてくださいませ。
114デフォルトの名無しさん:2010/07/14(水) 20:24:24
>>113
Release()した前後でプロセスに何が起きてるのかデバッガで調べてみれ。
115デフォルトの名無しさん:2010/07/14(水) 21:58:15
>>111
いえいえ
116デフォルトの名無しさん:2010/07/14(水) 23:28:13
>>113
vshost.exeのことか?
117デフォルトの名無しさん:2010/07/14(水) 23:41:48
Win7 C++だったな。
こっちの環境(Win7 VS2008)だとMFCのバージョンはプロセスは残ってない
C#のバージョンは、vshostが常駐しているみたい
どちらもDirectShowを使ったmp3プレーヤー
118デフォルトの名無しさん:2010/07/15(木) 07:36:57
生きているスレッドが残っている
119デフォルトの名無しさん:2010/07/15(木) 12:21:45
>>113
試しにIGraphBuilderを使ってみたけどプロセスは残らなかけどなぁ。

DirectShowを使わなかったらプロセスは残るの?

120デフォルトの名無しさん:2010/07/15(木) 20:09:03
残りません
121デフォルトの名無しさん:2010/07/16(金) 18:54:14
質問。
LPDIRECTSOUND3DBUFFERをSetPositionとかで移動させてる最中、
これをストリームバッファで録音とかできないの?
122デフォルトの名無しさん:2010/07/16(金) 21:53:52
はい
123デフォルトの名無しさん:2010/07/17(土) 13:36:56
directx10もしくは11でfbx形式のメッシュやアニメーションを読み込むことは可能ですか?
124デフォルトの名無しさん:2010/07/17(土) 14:21:53
サポートしてるか?と言う意味なら否
自前で読み込んで表示することは当然可能だが
125デフォルトの名無しさん:2010/07/17(土) 15:59:52
xnaでサポートしているので11でも当然、とおもったんだがの
126デフォルトの名無しさん:2010/07/17(土) 19:41:01
dx10以降は贅肉を切り捨ててるからその点では初心者お断り感が強い
127デフォルトの名無しさん:2010/07/17(土) 21:50:34
>>125
あんた最低だな
128デフォルトの名無しさん:2010/07/18(日) 13:58:22
Directx9での話しです
DrawPrimitiveUpなどUp系は内部でCreateVertexBufferなどしてて
低速だと聞きました
実際自作ゲームを作る際、Upは可能な限り避けるべきですか?
1、気にせずガンガン使う
2、デバックの時楽するためだけに使う
3、絶対に使わない
などの考え方があると思いますが、どのあたりが自然でしょうか?
129デフォルトの名無しさん:2010/07/18(日) 14:05:42
4 自分でベンチをとって測定してから考える

これが一番自然だろ。
なんで選択肢に入っていないんだ?
130デフォルトの名無しさん:2010/07/18(日) 14:35:03
DrawPrimitiveUPと同じ機能のものを自作してみる。そして速度を比較してみる。
本家に勝てるものが作れるなら自作版を使えばいいが、初心者には到底ムリだろうな。
131デフォルトの名無しさん:2010/07/18(日) 14:39:13
DrawPrimitiveUPのような便利機能は
DX10, DX11で切り捨てられた贅肉の部分に含まれるわけで、
将来DX11やる人はそれくらい出来て当然。
132デフォルトの名無しさん:2010/07/18(日) 15:26:54
>>129-130
速度の問題じゃないな、比較してUpが遅いのはわかってる訳で

>>131
出来るか出来ないかの問題でもないわなあ
133デフォルトの名無しさん:2010/07/18(日) 15:40:24
そうなると質問の意図が不明だ。
つまり
「命令を入力してください、指示がないと動けません」
ということなのか?
134デフォルトの名無しさん:2010/07/18(日) 15:53:20
>>128
気にせず使っていいよ。
適切に使用したVertexBufferと比べれば低速だが、問題になるほど
遅くなるわけじゃない。
135128:2010/07/18(日) 15:58:01
安心しました!
ありがとうございましたっ
136デフォルトの名無しさん:2010/07/18(日) 16:03:51
お、初レスに「だろ」の人がついてるな
相変わらず説教かw
137デフォルトの名無しさん:2010/07/18(日) 19:17:10
>up系〜
まずはゲーム作ってできてから考えろよw
138デフォルトの名無しさん:2010/07/18(日) 19:47:55
UIやパーティクルや2Dゲームの弾など、毎フレーム頂点を書き換えるような用途は
どんなゲームでもあるでしょう。
だからUP系やそれと同等の技術の需要はあるよ。
139デフォルトの名無しさん:2010/07/18(日) 19:53:12
あんま無いんじゃないかなぁ
そういうことをしないための頂点バッファな訳で
140デフォルトの名無しさん:2010/07/18(日) 20:02:35
頂点バッファを使えば
最適化も出来て、ハードウェア支援も受けられるのに
UP系使うなんて手抜き以外のなんでもないだろ。



どう?どう?似てる?w
141デフォルトの名無しさん:2010/07/18(日) 21:52:31
質問です
D3DFVF_LASTBETA_UBYTE4で頂点バッファが作れません
CreateVertexBuffer関数でハングアップする形で止まってしまってエラーも見れません
どうしたらいいでしょうか?

ソースはこんな感じです
hr = pDevice->CreateVertexBuffer(mAll,D3DUSAGE_DYNAMIC,mFvf,D3DPOOL_DEFAULT,&mVertexBuffer,NULL);

注:mFvfはD3DFVF_LASTBETA_UBYTE4単独で作ろうとしています。
142デフォルトの名無しさん:2010/07/18(日) 22:12:54
何をしようとしてるの解からんが
D3DFVF_LASTBETA_UBYTE4はそういう使い方するものじゃないぞ?
D3DFVF_LASTBETA_UBYTE4は型を示してるのではなく
その直前のフォーマットの最後のベータ フィールドをUBYTE4型と解釈することを示すフラグ
単独で指定できるはずは無いと思うが
143デフォルトの名無しさん:2010/07/18(日) 22:22:40
>>142
マジですか?
ブレンドインデックス値を渡したかったんですけど整数型ってないみたいですね
D3DFVF_XYZWで渡したらうまくいきました

ありがとうございました
144デフォルトの名無しさん:2010/07/18(日) 22:29:34
>>143
解決したみたいだけど一応
そういう時は自分で頂点宣言して非FVFで頂点バッファ作ればいい
IDirect3DVertexDeclaration9とかD3DVERTEXELEMENT9でググれば情報でるはず
145デフォルトの名無しさん:2010/07/19(月) 12:43:41
C#だったらその目次の内容は2章くらいで済むしな
146デフォルトの名無しさん:2010/07/19(月) 13:17:18
>>144
>非FVF
これ、どうやっても作れないな
どこまで自由が利くのかさっぱりわからない
147デフォルトの名無しさん:2010/07/19(月) 13:56:00
>>146
引数mFvfでFVFを指定している所を0にすれば非FVF
なぜブレンドインデックス値を単独にしようとしたのか不明だが
想像するに1つの頂点の情報を複数の頂点バッファに分割して
特定情報だけ書き換えたり、入れ替えることで何かしたいってことでいいんだよね?

ここを参考にするといいかも
ttp://marupeke296.com/DXG_No53_DrawUsingStream.html
148デフォルトの名無しさん:2010/07/19(月) 17:31:50
>>147
それですそれです

もうだめだ
非FVFでやろうとするとなにがどう悪いのかすらさっぱりわからない
誰か整数型の頂点宣言、頂点バッファの作成からコードを書いて見せてくれってほどうまく動かない・・・orz
149デフォルトの名無しさん:2010/07/19(月) 20:08:42
>>148
何がどう分からないのか書いてくれないとアドバイスしようが無いのだが…

SDKサンプル
Tutorial 3: MatricesをFVFを使わずに書き直したもの
http://www5b.biglobe.ne.jp/~mya_a/dx/Matrices.zip
150デフォルトの名無しさん:2010/07/21(水) 03:19:50
2Dアニメーションを静止画の連番データから管理するのが面倒なので
AVIで動画テクスチャにしようと考えてます。

そこで質問なのですが
透過AVIも使用したいので、透過AVIを扱えるコーデックにする必要があるのですが

その使用するコーデックをOSにインストールされている物じゃなくて
別途プログラム実行ファイルと同梱にし、それを使用する事って可能ですか?

ユーザーに○○コーデックインストールしてね。ってアナウンスするのが
面倒なので、可能ならコーデック作者に許可貰って同梱したいなと
考えています。

まぁ、別にコーデックのインストールをアナウンスしてもいいんですけどね・・・。
readmeを読まないユーザーから 「うごかない」 と言われるのが
目に見えてるので出きるなら対応したいです。

「静止画の連番データを独自形式でかためればいいじゃん」
というのは、ごもっともなのですが、AVIでやってみたいので
ご存知の方いらっしゃいましたら、教えてください。
151デフォルトの名無しさん:2010/07/21(水) 03:28:49
やめとけ
152デフォルトの名無しさん:2010/07/21(水) 04:01:09
もしそういうコーデックが存在するなら、その作者にきいてみたら。
たぶんこの世にそいつしか居ないだろうし
153デフォルトの名無しさん:2010/07/21(水) 07:16:01
一体なんのためのDirectShowなのかと

どちらにせよ、いちいち動画をエンコードしながらアニメーション表示してたら
アホみたいなCPU負荷になること間違いなしだが
154デフォルトの名無しさん:2010/07/21(水) 07:30:15
以前、吉里吉里の開発者のblogだかでARGB持てるコーデックについて考察してたような。
エロゲーのタイトル画面や動く立ち絵などなら利用価値はありそうだけど・・・
実用になるものができたのかどうか覚えてない
155デフォルトの名無しさん:2010/07/21(水) 08:09:10
なんでエンコードして表示する必要があるのかさっぱり意味不明。
エンコードの意味は分かっているのか?
156150:2010/07/21(水) 08:10:38
DirectShowで使用するコーデックをシステムからじゃなく
こちらが指定したフォルダの中にある物を使うという事だったんですが
そういう事は出来ないという認識でよいですか?

後、ムービーテクスチャは連番静止画データに比べて
負荷が高いのですか?サンプル見た感じだと良く分かりませんでした。
157150:2010/07/21(水) 08:15:56
>>155
自分にたいしてのレスでしょうか。
エンコードというよりはデコードじゃないんですか?

コーデックを同梱したいのは
readmeに「○○コーデックをインストールする必要があります」と書いても
それを読まずに「うごかない」と言われるのが面倒だからです。
158デフォルトの名無しさん:2010/07/21(水) 08:27:20
ムービーテクスチャってよくある
DirectShowとDirect3Dを組み合わせたアレのことだよね?
別スレッドで動画をデコードしながら再生レートにしたがって
テクスチャを書き換えなきゃいけないんだから当然負荷は高いし
そんなに再生開始のレスポンスはあまり良くないぞ
画面上に動画を配置したいとかなら別にいいけど
アニメーションAからBにワンボタンで切り替えるような使い方は出来ないと思った方が良い
159デフォルトの名無しさん:2010/07/21(水) 08:31:19
連番静止画データっつーか普通に1枚の画像にまとめてやれよ
160デフォルトの名無しさん:2010/07/21(水) 08:31:56
実際やってみれば分かるが負荷なんて全然大したことはない。
やりもしない人間が想像で語るのはやめろ。
161デフォルトの名無しさん:2010/07/21(水) 08:32:49
だろ。の人は黙ってて下さい
162デフォルトの名無しさん:2010/07/21(水) 08:34:29
Aero上で動画再生するのも負荷が高くて出来ない人達なんだろう。
あまりにアホだ。
163デフォルトの名無しさん:2010/07/21(水) 08:35:31
だろ。の人は黙ってて下さい
164デフォルトの名無しさん:2010/07/21(水) 08:37:35
画面内にいくつアニメーションを表示するのか分からないけど
なんか右下のタスクトレイにいっぱいアイコンが出るアプリになりそうだね
165デフォルトの名無しさん:2010/07/21(水) 08:43:12
AGP以降VRAMへの帯域は十二分に確保されているから、
細切れで送るような馬鹿なまねをしない限り、負荷云々はあり得ない。
旧時代の知識を引きずって今を見ない奴が、嘘を流布するのはやめろ。
166デフォルトの名無しさん:2010/07/21(水) 08:51:09
CODECをシステムに組み込まなければ再生できないという前提が、そもそもの誤り。
DirectShowは手続きは面倒くさいが、そんなに不便じゃないぞ。
167デフォルトの名無しさん:2010/07/21(水) 08:56:01
だろ。の人は黙ってて下さい
168デフォルトの名無しさん:2010/07/21(水) 10:31:44
夏休み中ずっとこんな調子になるのか?
勘弁してくれよ
169デフォルトの名無しさん:2010/07/21(水) 11:06:53
えっ?いつも通りじゃん
170デフォルトの名無しさん:2010/07/21(水) 11:15:12
>>156
>後、ムービーテクスチャは連番静止画データに比べて
>負荷が高いのですか?サンプル見た感じだと良く分かりませんでした。

ムービー:毎フレームをCPUでデコードしてバスを通してGPUに送り描画

連番:フレーム毎に(もともとGPUにある)テクスチャのサブ領域を切り替えて描画

どっちが負荷が高いと思う?
171デフォルトの名無しさん:2010/07/21(水) 11:21:55
>>170
だがしかし、SVGA位の解像度の動画なら普通にできちゃうんだな。
絶対的に重いかどうかより、実用になるかどうかが重要なんだよ。

もちろん、HDサイズになるとただ動画を流すだけでも大変だが。
172デフォルトの名無しさん:2010/07/21(水) 11:49:31
そもそもの質問者の動機が負荷云々じゃなくて「連番めんどくせえ」だからな。

DirectShowを通すにしてもテクスチャに描画となると
サンプルグラバなりカスタムVMRを実装する面倒臭さを
(SDKサンプルコピペだけでまともに動くと思うなよ?)
連番自前の実装と比較する必要があるし、

それ以前に透過情報をもつムービーを再生できるコーデックを
(インストール不要という要件を満たすために)
DirectShowフィルタのバイナリ以外の形式で入手する必要があるわけだ。

そんな感じで>>150にめんどくさくないソリューションを誰か紹介してあげてください。
173デフォルトの名無しさん:2010/07/21(水) 11:49:33
だろ。の人は黙ってて下さい
174デフォルトの名無しさん:2010/07/21(水) 12:01:07
>>170
前者のGPU上に配置する作業が考慮されていないのは魔法でも使うつもりなのか?
動画をCPUでデコードする後者だって、あらかじめ全フレームをVRAMに上げておく方法は採れるぞ。

データが静止画と動画、方式がストリーミングか否か、それぞれを混同して話すな。
175デフォルトの名無しさん:2010/07/21(水) 12:04:15
ぶっちゃけAVIで管理する方がデータ作成も含めてめんどくさそう
「連番データから管理するのが面倒」って何が面倒なんだろう?
それ以前に「連番データから管理」って何?
普通に適当なアニメーション作成ツールでフォーム組んでデータ通りに再生すれば良いだけ違うん?
176デフォルトの名無しさん:2010/07/21(水) 12:11:05
AVIよりも、MNGの方がいいんジャマイカ?
177デフォルトの名無しさん:2010/07/21(水) 13:39:41
>>176
ジャマイカ?の人は黙ってて下さい
178150:2010/07/21(水) 13:51:51
>>159
そこらへんの知識も薄いのですが
1枚の画像の場合4096x4096までとかグラボで制限ありますよね。
パターン数増えた場合はどうするのかが不明です。
地味に気になります。

>>164
そうなんですか、うちでは別途ウィンドウはでないですね。

>>170
どちらも一旦なんらかのデコード作業をしてからGPUに送るので
作業内容としては同じかとおもってました。

>>171
ゲーム中のアニメーション文字「STAGE 1」とか「GAME OVER」とかで
使おうとおもってるので、HDサイズ!ってわけじゃないですね

>>175
DirectShowの手続き云々は未知だったのもありますが
連番静止画、たとえば100枚で1つのアイテムとして
フォルダにいれて管理するのと
100フレームの映像ファイルとして管理する、といった視点で見た場合に
連番静止画は、ファイル数、下手したらフォルダ数も増えてしまうので
面倒だなと感じていました。

後、連番静止画を独自形式に固める作業も
間に何かするといった意味で面倒とおもったわけです。

言ってしまえばAVIという独自形式の単位で管理できたら良いなと。
179デフォルトの名無しさん:2010/07/21(水) 14:06:11
アニメーションってどんなのを想定してるんだ?
そんなに動画にしなければいけないほど広範囲が細かく変化するようなものなの?
100フレームのアニメーションがあったとして
それを再生するのに100枚の画像が必要ってわけじゃないぞ?
180デフォルトの名無しさん:2010/07/21(水) 14:35:53
>ゲーム中のアニメーション文字「STAGE 1」とか「GAME OVER」とかで

・・・
みんな、もうやめにしようぜ
181デフォルトの名無しさん:2010/07/21(水) 14:38:38
256色パレットアニメーションで済む話?
182デフォルトの名無しさん:2010/07/21(水) 14:39:39
全然関係ない、黙ってろ。
183デフォルトの名無しさん:2010/07/21(水) 14:43:51
特定の色を透過色扱いにして、無圧縮なり可逆圧縮を掛ける。
VRAMに置く前にα値を設定する、ある程度大きいならPSで処理するも良し。
非可逆ならテキトーな閾値で切る。
184デフォルトの名無しさん:2010/07/21(水) 14:50:03
具体的にどう文字を動かしたいのか確認しないと、
また頂点の変形程度で済むという話になって下らない結果になるぞ。

相手は想像しているよりも遙かに斜め上だ。
185デフォルトの名無しさん:2010/07/21(水) 15:04:32
>静止画の連番データ
静止画の連番ってことは、
Atack01.bmp
Atack02.bmp
とかで管理してるの?
それならAtack.bmpにひとつにまとめて、プログラムで順番になるように表示すれば
いいんじゃないの?

>1枚の画像の場合4096x4096までとかグラボで制限ありますよね。
パターン数増えた場合はどうするのかが不明です。
俺なら画像を分けるけど?



186デフォルトの名無しさん:2010/07/21(水) 15:17:17
>静止画の連番データ
静止画の連番ってことは、
Atack01.bmp
Atack02.bmp
とかで管理してるの?
それならAtack.bmpにひとつにまとめて、プログラムで順番になるように表示すれば
いいんじゃないの?

>1枚の画像の場合4096x4096までとかグラボで制限ありますよね。
パターン数増えた場合はどうするのかが不明です。
俺なら画像を分けるけど?
187デフォルトの名無しさん:2010/07/21(水) 15:27:26
なんか質問者と回答の半分くらいのホストが一緒なんだけど自作自演ってことでよろしいか?
188150:2010/07/21(水) 15:42:31
具体的にというので10分くらいでサンプル作ってみました。
こんな感じのAVIをテクスチャにして表示しようとおもってます。

http://uproda.2ch-library.com/lib271627.mp4.shtml

間違って30FPSで作ってしまったので、3秒90フレームですが
60FPSの場合、単純に180フレームですね。
189デフォルトの名無しさん:2010/07/21(水) 17:38:05
5、6年前の話だけどサウンドのストリーミング同時再生は4つぐらいがせいぜいだった
それ以上やろうとすると遅延がないぐらいたっぷり読んでおくとかそういう準備が必要になるけど

動画だとどうだろうね?
もし、10も20もやろうと考えてるならこの時点で実用に耐えないと思うけど
参考になるだろか?
190デフォルトの名無しさん:2010/07/21(水) 17:48:10
>>189
それはちょっと考えにくいな。DirectSoundが広く使われる前から
ビットレートは低いけど8音同時再生できるユーザードライバはあったし、
俺自身不定音数リアルタイム合成エンジンを10年ほど前にWindows向けに書いてる。(not DirectSound)
実装方法が悪いんじゃね?

異なる動画を10個以上同時再生か。
たとえは古いけど、NHKの映像の世紀のオープニングみたいなものかな。
あれはリアルタイムには難しいだろうね。
1動画256x256くらいのサイズに押さえてないと厳しいかも。
191デフォルトの名無しさん:2010/07/21(水) 17:51:07
>>190
サウンドボードの性能じゃなくて
HDDから同時にデータをロードできないんさって話だよ
192デフォルトの名無しさん:2010/07/21(水) 17:57:35
>>191
そんなの、圧縮されたままの音声データを事前に読んでおけばいいじゃないか。
展開、合成はリアルタイムで十分間に合う。
193デフォルトの名無しさん:2010/07/21(水) 18:00:46
>>192
メモリに全部おいておくなら動画の必要なくね?
アニメーションテクスチャ全部読むのとどう違うんだと

ストリーミングをしたい意味での動画再生じゃないってこと?
194デフォルトの名無しさん:2010/07/21(水) 18:09:05
話を見る限り
「ストリーミングをしたい意味での」での動画ではないね
単純にアニメーション管理の知識が無いから
「動画にしといたら楽じゃね?」ってことだと思われる
>>188みたいな単発的な使い方するならそれも有りなので好きにさせれば良いと思うよ

後は
http://pc12.2ch.net/test/read.cgi/tech/1214127501/
に行ってもらうってことで
DirectShowの仕組みが分かってれば
CODECがどうたらとかなんって質問に意味が無いことがわかるはずだから
195デフォルトの名無しさん:2010/07/21(水) 18:19:56
>>187
よろしいよ。

つうかこのスレは質問をするか回答をするかのどっちかなのに
一人で両方するとか意味のわからん人だな
196デフォルトの名無しさん:2010/07/21(水) 18:37:11
libffmpeg使いなされ
少なくともコデクの悩みからは開放される
197デフォルトの名無しさん:2010/07/21(水) 18:43:48
>>196
ライセンスはLGPLか……。
最悪それしか無いなら使うけど、可能な限り避けたいところだな。
198デフォルトの名無しさん:2010/07/21(水) 22:36:37
質問なんですが
ウィンドウ->フルスクリーンの切り替えで(ウィンドウサイズは800*600です)

フルスクリーン状態->ウィンドウモードに切り替えは問題なく動くのですが

フルスクリーン状態->デバイスロスト->フルスクリーン復帰->ウィンドウモードに切り替え

とおこなった時、最後のウィンドウ切り替えのIDirect3DDevice9のReset()の後で
BackBufferWidthとBackBufferHeightの値が794*568と妙な数値で帰ってきます

Reset後の値が変わるような要因がありましたら
教えていただけると助かります。
199デフォルトの名無しさん:2010/07/21(水) 22:48:04
>>198
復帰後にWindowの外枠の大きさが800x600になってるから、枠の分クライアント領域が狭くなる。
これはWindowsの仕様。
Window表示時のWindow全体の大きさを記憶しておくか、
フルスクリーン表示用のWindowを別に用意するかして対応する。
200198:2010/07/21(水) 22:57:18
なるほど、修正は単純なことのような感じですね。
どこが原因なんだーってデバイスロスト時の処理とかを
見直しまくって無駄に時間をすごしてしました・・・
明日すぐに修正してみます。

ありがとうございましたー
201デフォルトの名無しさん:2010/07/21(水) 23:52:34
テクスチャに動画再生って、
Windows7なら既に内部的にはそういう実装になってるんじゃないの?
レガシな方法で再生するより、軽くなることはあっても重くなることはないんじゃないか
202デフォルトの名無しさん:2010/07/22(木) 00:27:08
>>150の質問ってスレ違いだよな
203デフォルトの名無しさん:2010/07/22(木) 01:12:17
質問です。

HLSLコードで使われるセマンティクスのPSIZEというのは
ラスタライザかどっかが自動的にPSIZEに代入した半径の円として頂点をレンダリングしてくれるとかいうわけではなく
単にデータの目印として準備されているだけ(値の利用の仕方は手動で記述)という認識で正しいでしょうか?
204デフォルトの名無しさん:2010/07/22(木) 02:10:33
質問です。AABBツリーってどうやって作るんでしょうか?
2等分してその中に含まれる最大、最小の頂点からAABB作って、
って繰り返せばいいですか?
205デフォルトの名無しさん:2010/07/22(木) 02:31:47
>>203
頂点シェーダから
セマンティックPSIZEで出力すれば
そのサイズの円としてレンダリングされるよ

サイズの解釈は
D3DRS_POINTSCALEENABLEの設定によって違う
206デフォルトの名無しさん:2010/07/22(木) 02:36:44
>>204
それがDirectXと何の関係が?
207デフォルトの名無しさん:2010/07/22(木) 02:46:20
>>206
ゲームプログラムなら俺に聞けできいてみます。。。
208デフォルトの名無しさん:2010/07/22(木) 05:59:48
すみません、Matrixの値から回転角度を取得したいのですが、
どのようにしたらいいのでしょうか?
検索してみたんですが、オイラー角とかそういうのばかり引っかかって。

単純にMatrixから回転角度を取得できる公式って無いんでしょうか?
209デフォルトの名無しさん:2010/07/22(木) 07:23:35
オイラー角が分かれば角度も分かるだろ。
いったい何を言ってるんだ?
210デフォルトの名無しさん:2010/07/22(木) 07:28:58
>>208
結構、困難だよ
D3DXMatrixにそういうお手軽関数はなさげ

自力でやるとしたら
1軸固定(例えばY軸)にすればatan,atan2ぐらい使って楽にできた記憶がある

俺が昔やった感じだと1軸固定無しでは無理だった
ぐぐって調べたコードは一見できてそうに見えるんだけど
たまにブキッとあらぬ方向を向いてしまって制御不能だった
211デフォルトの名無しさん:2010/07/22(木) 08:36:38
アドバイスありがとうございます。
親ボーンから見て、子ボーンがどの程度傾いているかを二つのマトリクスから
取得したかったんです。

>>210
その方法が一番自分に適しているような気もします・・・
親ボーンの逆行列を子ボーンのマトリクスにかければ、子マトリクスのローカル座標が取得できるので。
ソースコードとか残ってないですかね。
212デフォルトの名無しさん:2010/07/22(木) 08:36:41
>>208
3軸はできなくはないけど
同じ回転行列でも回転の順番によって複数の答えができちゃうし
ジンバルロックおこしちゃうしコストが高すぎる


ところで本当に行列から回転角度を求めることが必要なの?
本当の目的は別のとことろにあって
回転角度が求められたらでききそうって自分で決め付けてない?
最終的に何をしたいのか言ってくれれば全然違うアプローチがあるかもよ
213デフォルトの名無しさん:2010/07/22(木) 08:41:26
スプライト描画とポリゴンを使ったテクスチャマッピングでの描画って
組み合わせないほうがいいですかね?
どちらかに統一すべきですか?
214デフォルトの名無しさん:2010/07/22(木) 10:50:52
そもそもの問題としてスプライト描画など存在しない。
215デフォルトの名無しさん:2010/07/22(木) 11:06:56
id3dxspriteを使った描画とD3Dデバイスを使った描画は組み合わせないほうが
いいでしょうか?
どちらかに統一すべきですかね?
216デフォルトの名無しさん:2010/07/22(木) 11:11:50
分ける意味が不明。
デバイスを作らないでどうやって描画するつもりなんだ?
217デフォルトの名無しさん:2010/07/22(木) 11:24:15
>>205
おお、実際に円として描画してくれる機能だったんですね。
そんな便利な機能だったとは…
遅れながらありがとうございます。
218デフォルトの名無しさん:2010/07/22(木) 11:50:32
>>217
ごめん、嘘だった
円としては描画してくれない、サイズはあくまでポリゴンのサイズ
でも円とかのパーティクルのテクスチャを貼り付ければ一緒だよね?
219デフォルトの名無しさん:2010/07/22(木) 12:26:21
>>218
なるほど。考えてみればGPUが円を描こうと思ったら一番手っ取り早いのはポリゴンスプライトしかないですね
ポリゴンスプライトのほうはちまちまと作っていたのでそれを流用してやってみようとおもいます。
ありがとうございました。
220デフォルトの名無しさん:2010/07/22(木) 12:41:50
221デフォルトの名無しさん:2010/07/22(木) 13:36:27
セガサターンですね分かります
222デフォルトの名無しさん:2010/07/22(木) 14:27:05
え?
223デフォルトの名無しさん:2010/07/22(木) 16:58:49
>>211
ボーン間の角度が知りたいだけなら軸のベクトルをマトリクスから求めて内積って話ではない?
224デフォルトの名無しさん:2010/07/22(木) 17:52:31
あるベクトルA(0,0,1)とB(4,8,9)があったとして、(ベクトルBの値は適当)
AのベクトルをX軸とY軸に何度ずつ動かしたらBの向きになるかってのを知りたいんです。(Z軸は動かさない)
どうしても、これが算出できなくて・・・

LightWave的に言うなら、ある角度のボーンをヘディングとピッチだけ動かして指定の向きのボーンと角度を一致させたいんです。
上で>>210氏が1軸固定なら簡単に算出できると書いてあるんですが、頭が悪くてどうしても回転角度の演算方法が分からないです。
225デフォルトの名無しさん:2010/07/22(木) 19:35:56
>>224
AとBの角度をABに直行する軸として回転するんじゃだめなの?
つかA(0,0,1)をX軸にx度回転するとどんなベクトルになるかがわからないとか?行列変換の基礎からどぞ
226デフォルトの名無しさん:2010/07/22(木) 19:40:37
なんで回転の話がよくてAABBのはスレ違いなんだよ。。。
227デフォルトの名無しさん:2010/07/22(木) 19:47:22
D3DX算術ヘルパー関数を使うと楽に計算できる話ならまぁギリセーフ
全然関係無い衝突判定や設計の話になるとギリアウトかな

早い話が回答者の気分次第です
228デフォルトの名無しさん:2010/07/22(木) 19:49:42
なんでお前が仕切ってんだよ
229224:2010/07/22(木) 19:54:58
>>225
上手く伝わらなかったかも。
A(0,0,1)とB(x,y,z)を同じ角度にするためにAをX軸にu度、Y軸にv度傾ける必要があって、uとvを算出したいんです。
それが出来れば問題は解決するんですが・・・。
230デフォルトの名無しさん:2010/07/22(木) 20:10:13
225だが確かにいくらなんでもスレ違いだからやめとく。回転行列の基礎とか見直してみれば
231224:2010/07/22(木) 20:23:21
分かりました、確かにDirectXとはちょっとズレるお話でしたね・・・行列勉強してきます。
ただ、回転系の演算関数は意外とDirectXは便利な物を多くサポートしてるので、
そこまでスレ違いかと言われるとそうでもないとは思いますとだけ。
232デフォルトの名無しさん:2010/07/22(木) 21:34:17
別スレで完全スルーされて涙目の人がいるみたいですね
233デフォルトの名無しさん:2010/07/23(金) 00:39:30
頂点シェーダにストリーム単発で整数を渡そうとしていたものですが
色々やってみた結果、どうやってもうまく渡らないという結果になりました
整数を100分の1にして少数でもってて100倍して、その後整数に変換とかやっても駄目でした
PIXで確認
234デフォルトの名無しさん:2010/07/23(金) 01:07:00
>>233
それはなんか整数がどうとか以前に何か別の問題がありそう
コードは出せないのかい?
235デフォルトの名無しさん:2010/07/23(金) 01:08:21
そもそもなんで整数にこだわってるんだ?
236デフォルトの名無しさん:2010/07/23(金) 01:52:33
>>234
いや、でかいというか広いというですね・・・とりあえず貼ってみます
>>235
単純にインデックスを渡したいだけなんですよ

頂点のなんとか
D3DVERTEXELEMENT9 normal[] = {
0, 0,D3DDECLTYPE_FLOAT3 ,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_POSITION ,0,
1, 0,D3DDECLTYPE_FLOAT4 ,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_BLENDWEIGHT ,0,
2, 0,D3DDECLTYPE_UBYTE4 ,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_BLENDINDICES ,0,
3, 0,D3DDECLTYPE_FLOAT3 ,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_NORMAL ,0,
D3DDECL_END()
};

頂点バッファの用意
char* ver = NULL;
hr = aDevice->CreateVertexBuffer(mAll,D3DUSAGE_DYNAMIC,mFvf,D3DPOOL_DEFAULT,&mVertexBuffer,NULL);
if(FAILED(hr))return false;
ここでfvfは0にしています
型はfloat b[4];とかして頂点分確保しています。unsigned intではシェーダ側に値が渡らず・・・

これで動作させてPIXで値をみると値は届いてるんです。
しかし、いざ値をo.position辺りに出力させてみると全然違う値が入っているわけです。
237デフォルトの名無しさん:2010/07/23(金) 01:54:43
//頂点シェーダ
VS_OUTPUT vaOnColNorNorBne(
const float4 position :POSITION,
const float4 wait :BLENDWEIGHT,
const float4 blend :BLENDINDICES,
const float3 normal :NORMAL
)
{
VS_OUTPUT o = (VS_OUTPUT)0;

//座標変換
float4x4 wld;
wld = boneOffset[blend[0]] * wait.x;
wld = wld + boneOffset[blend[1]] * wait.y;
wld = wld + boneOffset[blend[2]] * wait.z;
wld = wld + boneOffset[blend[3]] * wait.w;
o.position = mul(position,wld);
o.position = mul(o.position,viewProj);

シェーダ側の処理の頂点部分です。
238デフォルトの名無しさん:2010/07/23(金) 02:01:27
>>236
よくある手法だが頂点シェーダで

int index[ 4 ] = (int[ 4 ]) D3DCOLORtoUBYTE4( blends );

でどうよ?
239デフォルトの名無しさん:2010/07/23(金) 02:04:36
失敬
誤:blends
正:blend
240デフォルトの名無しさん:2010/07/23(金) 06:06:26
>>238
うーん、駄目でした

上記のコード入れる前にどう駄目かというと
本来、5,6,0,0とか値が入ってるところが0,0,160,64
とか値になってしまうんですね
んでこれが必ず同じ数値なら同じ値に変換されるわけではないみたいなんです
ただ、インデックスの4つの値が同じ並びの同じ数字だと同じ値になるみたいですけどね

んで上記のコードを入れると
40880,0,0,320とかさらに意味不明な値になりました
241デフォルトの名無しさん:2010/07/23(金) 06:38:45
>>240
float4 blend
なのにblend[0]とかってのが意味分からないし

D3DDECLTYPE_UBYTE4で宣言してるのに
型はfloat b[4];とかして頂点分確保ってもおかしくないか?
1頂点は4byteだぞ
242デフォルトの名無しさん:2010/07/23(金) 06:45:57
>>241
>float4 blend
>なのにblend[0]とかってのが意味分からないし
いや、なんかこれはこれでいいらしいんですよ
http://marupeke296.com/cgi-bin/cbbs/cbbs.cgi?mode=al2&namber=1030&rev=1&no=0&P=R&KLOG=2
ってここに書いてありました

>D3DDECLTYPE_UBYTE4で宣言してるのに
>型はfloat b[4];とかして頂点分確保ってもおかしくないか?
>1頂点は4byteだぞ
うーん、これですかねぇ
サンプルもDWORDなのにfloat4で受け取ったりしてて
もう何が正しくて何が間違ってるのかさっぱりわからない状態です

とりあえずDWORDで試みてみます
243デフォルトの名無しさん:2010/07/23(金) 07:30:36
あれ?
これはこれはもしかして・・・できた?
あれ?でもなんか・・・

なんかできたっぽいような感じですけど
もうちょっとチェックしてみます
244デフォルトの名無しさん:2010/07/23(金) 08:18:45
中二病な日記を書くのはやめてください
245デフォルトの名無しさん:2010/07/23(金) 15:16:46
回答しなくせに妙に偉そうな人がいるのは夏だからですか?
246デフォルトの名無しさん:2010/07/23(金) 16:12:24
いえ、夏に限らず常駐して無意味に荒らしてるお馬鹿さんです
247デフォルトの名無しさん:2010/07/23(金) 19:00:06
だろ。厨がきてんだろ。
248デフォルトの名無しさん:2010/07/23(金) 21:24:28
>>236
>D3DVERTEXELEMENT9 normal[]
これだと、4つストリームを使うみたいだが、
ちゃんと4つVBセットストリームしてるのか?
249デフォルトの名無しさん:2010/07/23(金) 21:55:09
>>248
してます
それがやりたくて普通の方法と違う感じで作って悩んでいたわけですが
DWORDで渡すようにしたらどうやらここの部分はできたっぽい?
感じになってきたんですがアニメーション箇所がバグっているのかなんなのか
まだまだきっちりできたといえない状況で現在修正中という感じな状況です
250デフォルトの名無しさん:2010/07/24(土) 18:21:37
>>236です。
やっとアニメーションまわりのバグもとれてついにスキニングのアニメーションができました!
>>241さんの指摘どおり、頂点バッファの確保をunsigned char b[4];にしたら動きました!
ありがとうございました

長かった・・・
これからスキンメッシュのアニメーションをする人は上記頂点バッファまわりの注意と
まず、スキニングではないアニメーションを完璧に作り上げてから
次に、シェーダ無しで一度普通に組んでみてできたらシェーダに直す手順を推奨
こうしないと不確定な要素のチェックばかりで時間が無駄に過ぎていく・・・orz
251デフォルトの名無しさん:2010/07/24(土) 20:44:54
さすがにこれはひどい
252デフォルトの名無しさん:2010/07/24(土) 21:37:02
無茶苦茶な事しても案外動くもんなんだなあ…
DirectXの懐の深さを褒めるべきなのか、それともきっちり引導渡してやった方が良いのか
253デフォルトの名無しさん:2010/07/24(土) 21:47:32
基礎を理解してないうちに色々やろうとして失敗してるだけで
やろうとしてること自体はそんなに間違いじゃないぞ
むしろ今風になってる
254デフォルトの名無しさん:2010/07/24(土) 22:22:39
>>252
えー、どの辺が駄目?

>>253
いいっすよね?
255デフォルトの名無しさん:2010/07/24(土) 22:42:04
>>253
なんだよ今風ってw
アホか

>>254
頂点バッファのフォーマットをUBYTE4にしてるのに、
他の型で格納してましたってこと?
これは想定外だなw
256デフォルトの名無しさん:2010/07/24(土) 22:48:33
>>255
ああ、なんだそっちか

んなこといってもPIXで確認するとunsigned charで送ると値が全部0になってるのに
floatで送るとちゃんと値が表示されんだもんよw
これはPIXの製作者を叩いてほしいところだよ
257デフォルトの名無しさん:2010/07/24(土) 23:00:47
手法じゃなくてミスの揚げ足とってるだけかw
レベルが知れるな
258デフォルトの名無しさん:2010/07/25(日) 09:11:10
いつも通りの駄レスで安心クオリティの「だろ。厨」ってところだな
259デフォルトの名無しさん:2010/07/27(火) 21:42:30
DirectWriteのことはここで聞いてもいいのでしょうか?
260デフォルトの名無しさん:2010/07/27(火) 23:31:08
いいと思うよ
261デフォルトの名無しさん:2010/07/28(水) 11:02:53
ランバート照明のシェーディングの式の、
反射率か減衰率の意味の、
記号Kとは何の略ですか?
262デフォルトの名無しさん:2010/07/28(水) 21:02:55
>>261
人にやらせる前に
まず自分からボケるのが礼儀じゃね?
263デフォルトの名無しさん:2010/07/28(水) 23:21:43
Windows 7
Direct2D、DirectWrite
Windows API Codepack
Visual Basic 2010

を使って、画像の合成を行うと思っていますが DirectX の恩恵ってありますでしょうか。
264デフォルトの名無しさん:2010/07/29(木) 01:22:33
ねえよ。
265デフォルトの名無しさん:2010/07/29(木) 03:05:32
だろ。の人
マジで消えてくれないかなぁ
266デフォルトの名無しさん:2010/07/29(木) 06:24:02
HLSLでバンプマップ+スキンメッシュをやってるサンプルってないでしょうか?
具体的にはスキンメッシュで求めた行列をtransposeしてもうまくいかないっていうか
マジでこれ逆行列の変わりになってんのかよ?的なとこです。
267デフォルトの名無しさん:2010/07/29(木) 06:53:05
( ・∀・)つDXSDK
( ・∀・)つNVSDK

日本語で書かれた丸パクリできるサイト晒せという意味でしたら、期待に添えなくて申し訳ありません。
268デフォルトの名無しさん:2010/07/29(木) 13:08:03
エフェクトを色々追加してるんですが、
どういう画像を作れば、イメージどおりのエフェクトができるかわからないんです。
なんかそんな解説が載ってるサイトはないでしょうか?
269デフォルトの名無しさん:2010/07/29(木) 13:11:53
どう絵の具を混ぜたら、イメージ通りの色が出来るか分からないんです。
            ↓
イメージ通りできるまで、繰り返し繰り返し色を混ぜましょう。
270デフォルトの名無しさん:2010/07/29(木) 13:14:02
じゃあ質問を変えます。
エフェクトを描くのに最適なグラフィックフリーソフトでお勧めは何がありますか?
271デフォルトの名無しさん:2010/07/29(木) 13:20:01
フリーソフトでお勧めはありません。
272デフォルトの名無しさん:2010/07/29(木) 13:47:03
>>270
ttp://tukiken.hp.infoseek.co.jp/muge/cr/tool/tool_A.html

でもDirectX関係ないからもう来ないでね
273デフォルトの名無しさん:2010/07/29(木) 20:17:31
>>267
スキンメッシュのサンプルとかみた感じ
なんか放置されてね?
頂点動かせば法線とかも動くじゃん?
したら合わせてライトのベクトルをボーンのローカルにもってこないと駄目なような気がするんだけど
サンプルはその辺おざなりになってるような気がするんだけっちょ・・・
274デフォルトの名無しさん:2010/07/29(木) 20:52:46
とりあえずこんなんでそれっぽくなった気がする
float3x3 wldinv = transpose((float3x3)wld);

ちなみにこれ↓はまるで駄目な感じだった
float4x4 wldinv = transpose(wld);
275デフォルトの名無しさん:2010/07/29(木) 21:02:38
常識的に考えて
法線はベクトルなのに移動成分を掛けちゃったら長さまで変わっちゃうでしょう
回転成分だけ掛けないと
276デフォルトの名無しさん:2010/07/29(木) 21:23:01
>>275
おお、それで気がつきましたがハーフベクトルもカメラ座標をローカルにもっていくんじゃなくて
視線ベクトルにして転置行列にかけないとおかしいですね

ありがとうございます
277デフォルトの名無しさん:2010/07/30(金) 14:01:36
xAudio2で質問があります
サンプルのXAudio2BasicSoundをベースに効果音の再生を作ってるのですが
連続で音を鳴らすとノイズが入ってしまいます、どうやって対策すればよいでしょうか?
278デフォルトの名無しさん:2010/07/30(金) 14:03:41
>>277
原因はいろいろ考えられるが、
とりあえず音のデータ自体がちゃんとノーマライズされているかどうかをチェックしたほうがいいんじゃね?
279デフォルトの名無しさん:2010/07/30(金) 14:50:03
音データ自体には問題無いと思います
http://www1.axfc.net/uploader/He/so/287946.zip
これが改変済、元ソースと実行ファイル、効果音のファイルです
元ソースに単純な改変を行い、連続で音がなるようにしてみました
音が連続で再生されていますが、ESCを押すと音が鳴り止む前に打ち切られ
次の再生に入るようになっています。
ESCを連打するとプチプチとしたノイズが入るかと思います。
音を再生中にDestroyVoiceを行うのがまずいのでしょうか?
280デフォルトの名無しさん:2010/07/30(金) 17:49:11
連続で音をならすとノイズが入るってか
>ESCを連打するとプチプチとしたノイズが入る
こういうことしたらxAudio2に限らず普通にノイズが入ると思われる
再生停止前にボリュームを0にするとかでもダメか?
281デフォルトの名無しさん:2010/07/30(金) 23:11:49
DestroyVoice前にStopやボリューム0を入れてみましたが改善しませんでした
DirectMusicだと特に何もしなくとも連続再生に問題なかったのですが
xAudio詳しい人いたらお願いします
282デフォルトの名無しさん:2010/07/31(土) 03:18:31
連続再生って
XAUDIO2_BUFFER submit = {0};
submit.AudioBytes = FileSize;//バッファのバイト数
submit.pAudioData = &Buffer[0];//バッファの先頭アドレス
submit.LoopCount = XAUDIO2_LOOP_INFINITE; ←
submit.Flags = XAUDIO2_END_OF_STREAM;
これでだめなん?
間髪をおかず書き込み→再生→破棄
を繰り返したらノイズは仕方ないのかなぁ・・・
283デフォルトの名無しさん:2010/07/31(土) 08:40:21
>>282
それはループ再生なんでは?
連続再生ってのは例えばシューティングゲームで自キャラが弾を撃つときのように
前の音が鳴り止む前に停止して次の音がなるようなケースで使うかと
284デフォルトの名無しさん:2010/07/31(土) 08:55:08
再生が(ハード的な)ワンブロック目を終えないうちに次の再生を始めるとノイズになってるのかな?
バッファを2〜3系統用意して巡回させるのが良さそうかな、破棄とかせずに。
285デフォルトの名無しさん:2010/07/31(土) 09:17:56
ああそうかループでなくてそういうことか
waveデータの読み書きも停止と再生の間にはさんでるからとかかなぁ
286デフォルトの名無しさん:2010/07/31(土) 12:26:39
てか、同じ音鳴らすのにいちいち再構築とかしないでしょ
よく使うSEサウンドはオンメモリにしといて
再生時に先頭から再生にするのが普通
287デフォルトの名無しさん:2010/07/31(土) 16:15:28
停止→再構築→再生でノイズが入るわけじゃなくて
再生中のを停止する時点でノイズ入ってるな
これは多分何やっても駄目だと思う
停止ではなく段階的にボリューム落として無音にしていきつつ
別バッファで新しく再生とやれば大丈夫だと思うが、多分これでは求めてる物にはならないだろう

AudioサンプルのXACTGameで効果音の連続再生やってるけど、こっちはxAudio使ってなかった
このサンプルをxAudioで作る事は出来ないんじゃないだろうか
288デフォルトの名無しさん:2010/07/31(土) 16:26:27
常識的に考えて
法線はベクトルなのに移動成分を掛けちゃったら長さまで変わっちゃうでしょう
回転成分だけ掛けないと
289デフォルトの名無しさん:2010/07/31(土) 16:37:05
だろ。の人は本当に自分が一番じゃないと気がすまないんだなぁ
290デフォルトの名無しさん:2010/07/31(土) 19:51:41
大変ですね
291デフォルトの名無しさん:2010/07/31(土) 21:47:20
>>290
だろ。
292デフォルトの名無しさん:2010/07/31(土) 22:06:53
久しぶりにこのスレ来たんだけどだろ。厨って何?
このスレ見た感じだと上から目線で断定回答してる人?
雰囲気としては287の人がその人なの?
293デフォルトの名無しさん:2010/07/31(土) 22:14:42
過剰反応厨の妄想だと思うぞ俺は
294デフォルトの名無しさん:2010/07/31(土) 22:21:12
>>292
前スレを「だろ。」で検索すると解決策にもなっていないような
駄レスを連発(おそらくすべて同一人物)してこんなネーミングがついちゃったw
295デフォルトの名無しさん:2010/07/31(土) 22:38:04
どっちも邪魔だから失せろ駄レス製造マシンが
296デフォルトの名無しさん:2010/07/31(土) 22:40:40
>>295
サーセンww
297デフォルトの名無しさん:2010/07/31(土) 22:43:25
287はだろ。の人じゃないと思う
だろ。の人の論法は
「質問自体が低級又は無意味であるから答えるに値しない」
と言うものだからすぐ分かる
そして自分以外の回答者にも食ってかかる
後もう1つ簡単に特定できる特徴があるんだがこれは本人も分かってわざとやってるんだよね?
298デフォルトの名無しさん:2010/07/31(土) 22:44:48
3行で書く
299デフォルトの名無しさん:2010/07/31(土) 22:46:35
つーかお前らの妄想とかどうでもいいよ

これだけレスあってもこれだって回答が無いってことはみんなxAudio使ってないのかね?
俺も使ってないけど
300デフォルトの名無しさん:2010/07/31(土) 22:47:11
前スレだろ。で検索したが4つくらいしか出てこなかったぞ
思い込みだろうぜえんだよ荒らし
301デフォルトの名無しさん:2010/07/31(土) 22:51:35
反論すると全てだろの人がどうこうという話になるだけだよ
被害妄想とはそういうもの
以後スルー推奨
302デフォルトの名無しさん:2010/07/31(土) 22:52:09
把握
303デフォルトの名無しさん:2010/07/31(土) 22:58:49
普段は人いないのにレスがいっぱい
一体実際にいるのは何人なんだろうね
304デフォルトの名無しさん:2010/07/31(土) 23:03:01
だろ。厨の人気に嫉妬
305デフォルトの名無しさん:2010/07/31(土) 23:16:45
俺は答えるレベルには達してないけどずっと見てるぞ
306デフォルトの名無しさん:2010/08/01(日) 00:11:55
俺なんて3Dの知識すらないけど毎日このスレは見てます。
あとたまあに分からないことあったら質問させてもらってます。
307デフォルトの名無しさん:2010/08/01(日) 04:03:36
連続再生のテストちとやってみたが、
確かに超高速でDestroyとsubmitするとノイズが入るな
wavデータをロードや破棄は関係なさそうだ
(StopとFlushSourceBuffersをつかってもノイズが出たから)

探ってみたがイマイチわからん
とりあえず再生開始からある程度(数フレームから数十フレーム?未検証)
時間が経てばノイズは出ないようだが・・・
308デフォルトの名無しさん:2010/08/01(日) 04:19:16
ちょっとどこで見たか思い出せなくて悪いんだけど
最低何十ミリ秒だかのデータ長の制限があったような気がする
もしかするとその線かも
309デフォルトの名無しさん:2010/08/01(日) 05:58:38
>>300
お前のブラウザぶっ壊れてるだろ。
310デフォルトの名無しさん:2010/08/01(日) 12:38:57
>>300>>309
噂のだろ。厨?
311デフォルトの名無しさん:2010/08/01(日) 15:57:03
DirectXを直接使ってゲーム開発ってどうなの?
やっぱ、DirectX用にクラスを設計したほうがいいのか?
312デフォルトの名無しさん:2010/08/01(日) 16:47:27
>>11
DirectX初心者というより、C++初心者ですね。クラスの使いどころに自信を持てず、用語に振り回されています。
それを脱するには経験しかありません。
たとえば、Direct3Dの低レベルラッパークラスと上位クラスの二層構造にするとか、全然別のとか、なんでもいいので、
作りながらよりよい方法を模索してスキルを磨いてゆくしかありません。
313デフォルトの名無しさん:2010/08/01(日) 16:48:08
ちがた>311だった
314デフォルトの名無しさん:2010/08/02(月) 00:02:20
LPD3DXSPRITEでスプライトを作って
Begin、Draw、EndでDrawにテクスチャを指定して描画するんですよね?
このときテクスチャを複数表示するなら一度にDrawしてしまった方が良いの?
それともその都度Begin、Draw、Endをやっていいの?
315デフォルトの名無しさん:2010/08/02(月) 00:10:27
D3DXSPRITEの話題が来ました。スレが荒れる注意報ですよ皆さん。
316デフォルトの名無しさん:2010/08/02(月) 00:12:48
え?なんかしたらマズイ話題・・・?
だっていっつも荒れるのはスプライトなんてない厨のせいなんだからスルーでいいじゃないですか
317デフォルトの名無しさん:2010/08/02(月) 00:30:35
>>314
ID3DXSprite::Drawは実際に描画するわけではなくバッチリストに登録するだけ
実際の描画はID3DXSprite::FlushかID3DXSprite::Endの呼び出し時に行われる
イメージとしてはDrawで溜め込んでEndでまとめて描画する感じなので
その都度Begin、Draw、EndするのはNG
コレをやると大幅なパフォーマンスダウンが生じる
318デフォルトの名無しさん:2010/08/02(月) 00:32:07
おおやっぱりそうなのか
ありがとうございます
319デフォルトの名無しさん:2010/08/03(火) 05:37:37
SetStreamSourceに三角ポリゴンが入っててDrawPrimitiveで描画してるのですがテクスチャが上手く貼れません
テクスチャは四角です。間延びした感じになります
原因は三角ポリゴンのせいかわからないのですがどうすれば良いのでしょうか?
320デフォルトの名無しさん:2010/08/03(火) 08:38:07
>>319
その説明じゃエスパーじゃないと答えられない
頂点バッファに書き込んでるデータと
描画部のコードを書いて
321デフォルトの名無しさん:2010/08/03(火) 09:43:17
PIX使えば
322デフォルトの名無しさん:2010/08/03(火) 10:35:57
if( FAILED( うんたら
return E_FAIL;

hr = うんたら
if( FAILED( hr ) )
return hr;

の違いを教えて下さい

上にしたらそのままスルーされて(多分)思ったように動かなかったのですがエラーが出なかったのですごく怖く思いました
323デフォルトの名無しさん:2010/08/03(火) 10:44:36
returnする値が違うだけです。
そこにオカルトはありません。
324デフォルトの名無しさん:2010/08/03(火) 10:50:47
そうですかありがとうございました
cache->vertexBuffer->Lock( 0, size, (void**)&pVx, 0 );
が2回目に呼ばれた時にハンドルされていない例外が発生するのですがなぜかわかりますか?
pVxは
struct CUSTOMVERTEX
{
D3DXVECTOR3 Pos;
D3DXVECTOR3 Norm;
float uv[ 2 ];
};
です
325デフォルトの名無しさん:2010/08/03(火) 14:50:50
SetStreamSource()の引数のvertexBufferの中身って見れないのですか?
326デフォルトの名無しさん:2010/08/03(火) 14:57:32
見られるがいったい何がしたいのか意味不明
327デフォルトの名無しさん:2010/08/03(火) 15:02:41
それぞれの頂点にちゃんとUV座標が入ってるか見たいのです
328デフォルトの名無しさん:2010/08/03(火) 15:06:17
入れる前に確認すれば?
329デフォルトの名無しさん:2010/08/03(火) 15:09:09
何が分からないのかも自分で分かってない気配だな
あまり触りたくない臭いがする
330デフォルトの名無しさん:2010/08/03(火) 15:10:37
見れるんだよね?
開いていっても座標の配列とか無いんだが
331デフォルトの名無しさん:2010/08/03(火) 15:21:28
>>324
わかります
332デフォルトの名無しさん:2010/08/03(火) 15:24:05
バッファ作成時のフラグは?
333デフォルトの名無しさん:2010/08/03(火) 15:27:18
>>331
それはもう解決した
>>332
D3DFVF_VERTEXNORMAL, D3DPOOL_MANAGED
もう後ストリームに入るUV確認できたらできるっぽ
334デフォルトの名無しさん:2010/08/03(火) 15:30:22
デバッガの使い方を聞いてるのか?
335デフォルトの名無しさん:2010/08/03(火) 15:33:09
できたらデバッガで見たいけど普通に開いて行っても見れない
336デフォルトの名無しさん:2010/08/03(火) 15:41:13
見れるわけが無い
Lockして中身のぞけよ
337デフォルトの名無しさん:2010/08/03(火) 15:44:34
見れねーのかよ
Lockの仕方教えて
338デフォルトの名無しさん:2010/08/03(火) 15:53:46
そもそもその頂点バッファはどうやって作ったんだよ?
自分でLockしてデータを書き込んだんじゃないのか?
339デフォルトの名無しさん:2010/08/03(火) 15:58:47
そういうつもりなんだけどロック→UV設定→アンロックはやったんだけど
テクスチャが間延びして上手く貼れないしUV座標いじっても変わってないような気がするから
ストリームにちゃんと入ってるか見たいし入ってないだろうからその値がどこから来たかわかればできる(`・ω・´)
つかなんでストリームって座標のD3DXVECTOR3型と法線のD3DXVECTOR3をわけれてるかわからんどういう仕組みなの?
340デフォルトの名無しさん:2010/08/03(火) 16:14:07
なんか実際の頂点情報と
デバイスに指定してる頂点宣言(もしくはFVF)が一致してない予感
いいからソース出せって
341デフォルトの名無しさん:2010/08/03(火) 16:18:54
うぜー
見れるとか言ってて結局見れねーし
なんなんだよ
342デフォルトの名無しさん:2010/08/03(火) 16:24:47
日本語でOKですよ
343デフォルトの名無しさん:2010/08/03(火) 16:28:06
見るためにLockする時のフラグが間違ってるとか?
344デフォルトの名無しさん:2010/08/03(火) 16:30:46
見れるの?
LocKして何したら見れるんだよ
345デフォルトの名無しさん:2010/08/03(火) 16:42:19
今外にいるからあんまり具体的なことは言えんが、
Lockしたら、頂点バッファのアドレスが取れたと思う。
多分それはvoid*とかの汎用のポインタだとおもうので、そちらで想定してる型のポインタへキャストする。
そして、想定したデータと一致するかをチェックし、Unlockする。
346デフォルトの名無しさん:2010/08/03(火) 16:45:05
今、自分のソース見れないし、テストコードもかけないので、間違ったこと書いてるかもだが。
347デフォルトの名無しさん:2010/08/03(火) 16:47:13
ポインタとか全然理解してないっぽいからそれじゃ通じないと思われ
348デフォルトの名無しさん:2010/08/03(火) 16:47:56
元画像のサイズと実際のテクスチャサイズと画像を読み込んだときのフラグを明確にしろ。
それで全て解決する。
349デフォルトの名無しさん:2010/08/03(火) 16:59:08
釣りでしょ?
まともに説明する気があるとは思えん
それともこれがゆとりなのか?
350デフォルトの名無しさん:2010/08/03(火) 17:01:36
詰んだポインタそれで見てみる元画像256×256bmp画像を読み込んだときのフラグどれのことかわからん
CreateVertexBuffer
struct CUSTOMVERTEX
{ D3DXVECTOR3 Pos; D3DXVECTOR3 Norm; float uv[ 2 ]; };
CUSTOMVERTEX * pVx = NULL;CUSTOMVERTEX * tpVx;
cache->vertexBuffer->Lock( 0, 2*size, (void**)&pVx, 0 );新しくuvを加えたいのでサイズを大きくした
tpVx = pVx;最初のポインタ保持
for(int i=0;i<頂点数;i++)
{座標と法線のメンバ各コピー;++ pVx; }
pVx = tpVx;//ポインタ最初に戻す
for( DWORD i = 0; i < 頂点数; ++ i )
{switch(i%3)でpVx->uv[0と1]に0~1適当に入れる;}←なんとここを消してもテクスチャは元のまま
++ pVx;
}
cache->vertexBuffer->Unlock();
Caches.push_back( cache );

描画
Effect->SetMatrix("g_mWorld", world);
Effect->SetTexture("g_txScene", Txture );//多分消してないだけ
Device->SetStreamSource( 0, Caches[i]->vertexBuffer, 0, sizeof(元のサイズ)+8 );元のサイズ+uvの8バイト
Device->SetFVF( D3DFVF_VERTEXNORMAL );Device->SetTexture(0,Txture);

UINT Passes;
Effect->Begin( &Passes, D3DXFX_DONOTSAVESHADERSTATE );
for( UINT p = 0; p < Passes; ++p )
{
Device->DrawPrimitive( D3DPT_TRIANGLELIST, 0, Caches[i]->メッシュ数 );

}Effect->End();
351デフォルトの名無しさん:2010/08/03(火) 17:02:29
テクスチャとD3DXの読み込み時のフィルタとuvの対応関係が分かっていないだけだろう。
それ以前にポインタの基礎も。
352デフォルトの名無しさん:2010/08/03(火) 17:07:08
分かってないから教えてください
353デフォルトの名無しさん:2010/08/03(火) 17:08:37
D3DFVF_VERTEXNORMAL
限りなく怪しい
354デフォルトの名無しさん:2010/08/03(火) 17:08:47
コレは酷い
どこから指摘していいのか分からないくらい
355デフォルトの名無しさん:2010/08/03(火) 17:10:10
ひとつつづお願いします
356デフォルトの名無しさん:2010/08/03(火) 17:11:19
シェーダも不明ならsizeがどこから来たのかも分からない。
D3DFVF_VERTEXNORMALがどうなっているのかも不明。
きりがない。
いいから元のソースを出せ。
357デフォルトの名無しさん:2010/08/03(火) 17:17:18
D3DFVF_VERTEXNORMALは何が怪しいのよ?
uvの部分消しても元のまま描画されるのだけどそもそも影響してないってことじゃん
358デフォルトの名無しさん:2010/08/03(火) 17:18:30
PIXで観れます!!!!!!!!!!
PIXで観れます!!!!!!!!!!
PIXで観れます!!!!!!!!!!
PIXで観れます!!!!!!!!!!
PIXで観れます!!!!!!!!!!
PIXで観れます!!!!!!!!!!
PIXで観れます!!!!!!!!!!
359デフォルトの名無しさん:2010/08/03(火) 17:19:30
シェーダの頂点データの対応関係は確認したのか?
360デフォルトの名無しさん:2010/08/03(火) 17:19:37
シェーダの部分は消してやってる
//Effect->BeginPass( p );とエンドパスにしてるけどテクスチャ貼られてるし
361デフォルトの名無しさん:2010/08/03(火) 17:22:29
>>357
もともと座標と法線しかなったところにテクスチャ座標を追加したんだろ

D3DFVF_VERTEXNORMAL = D3DFVF_XYZ|D3DFVF_NORMAL ;
だったのを
D3DFVF_VERTEXNORMAL = D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEXCOORDSIZE0 ;
にしたのか?
デバイスに間違った頂点フォーマット送ってるんだから消しても変わるわけが無い
怪しいってのはそういうこと
362デフォルトの名無しさん:2010/08/03(火) 17:22:57
いい加減後出しウザイ
固定を使っているならD3DFVF_VERTEXNORMALが実際どうなっているのか不明じゃどうにもならないだろ。
363デフォルトの名無しさん:2010/08/03(火) 17:24:14
http://msdn.microsoft.com/ja-jp/library/cc324380.aspx
ここからやり直せ。
終わるまで戻ってくるな。
364デフォルトの名無しさん:2010/08/03(火) 17:25:05
D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1にしたら出来た
365デフォルトの名無しさん:2010/08/03(火) 17:26:08
しねばいいのに
366デフォルトの名無しさん:2010/08/03(火) 17:26:18
なるほどそういうことか
367デフォルトの名無しさん:2010/08/03(火) 17:27:04
うぜー
初心者にどうやってそこだけに気づけって言うんだよ
玄人なら最初からそこ指摘しろや
368デフォルトの名無しさん:2010/08/03(火) 17:28:16
興奮してageちゃったw
369デフォルトの名無しさん:2010/08/03(火) 17:34:22
質問者がどこまでわかっててどこからが怪しいのかを探るのに
何レスかかってるんだw情報小出しの典型
370デフォルトの名無しさん:2010/08/03(火) 17:34:56
初心者はまずチュートリアルをやれ、怠けるな、としか言いようがない。
371デフォルトの名無しさん:2010/08/03(火) 17:40:46
やったところで気付くのかっていう
テクスチャ間延びしてるなー→デバイスのフラグ間違ってる(キリッ)
ってチュートリアルやってもわかんねえだろもっと単純なミスの可能性も高いし初心者だから
372デフォルトの名無しさん:2010/08/03(火) 17:45:54
PIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIX
PIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIX
PIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIX
PIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIX
PIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIX
373デフォルトの名無しさん:2010/08/03(火) 19:09:51
チュートリアルにまんま書いてあるんだから嫌でも気がつくだろう。
374デフォルトの名無しさん:2010/08/04(水) 08:42:56
DrawSubsetやBeginPassの意味がよくわからないので教えてください、どちらも何個か中に入ってるということだと思うのですが
エフェクトの中に何個もエフェクトが入るのでしょうか?そうだとしたらどういう意味なのでしょうか?
木が一つあるのですか10個ぐらい位置を変えて作りたいので、一つの木を使いまわして、ワールド座標だけ10個作る方法だと思うのですが
この場合DrawSubsetやBeginPassの中に10個保持して引数で10回回すのでしょうか?どういうコードを書けば良いですか?


375デフォルトの名無しさん:2010/08/04(水) 09:05:06
さすがにそのレベルの質問は無いわ…
チュートリアルからやり直して下さい
376デフォルトの名無しさん:2010/08/04(水) 09:18:08
207 名前:デフォルトの名無しさん[sage] 投稿日:2010/08/04(水) 09:06:31
さすがにそのレベルの質問は無いわ…
チュートリアルからやり直して下さい
377デフォルトの名無しさん:2010/08/04(水) 09:24:18
そんなに悔しかったの?
378デフォルトの名無しさん:2010/08/04(水) 09:29:14
チュートリアルやサイトをググったのですがわかりませんでした
木を10個表示させたいのです。おそらくDrawSubsetやBeginPassこの辺りを使うのが最適な方法だと思ったのですが方法がわかりません
教えてください
379デフォルトの名無しさん:2010/08/04(水) 09:35:21
>DrawSubsetやBeginPassの意味がよくわからないので教えてください、どちらも何個か中に入ってるということだと思うのですが
が間違い
どっちも複数描画するためのものじゃないから
380デフォルトの名無しさん:2010/08/04(水) 09:39:02
>>378
とりあえず木を1本表示するところまでやってきなさい
話はそれからだ
381デフォルトの名無しさん:2010/08/04(水) 09:41:06
では複数の時は
for(i = 0;i<10;i++)
{
effect->(テクスチャ,Tex[i])
effect->begin
mesh->DrawSubset(0);
effect->end
}
のような方法が最適なのでしょうか?
382デフォルトの名無しさん:2010/08/04(水) 09:41:48
>>380
それはもうできます
383デフォルトの名無しさん:2010/08/04(水) 09:49:22
最適ではないけど初心者ならそれでいいよ
384デフォルトの名無しさん:2010/08/04(水) 09:50:45
そうですかありがとうございました
ついでに最適な方法も一応教えてください
385デフォルトの名無しさん:2010/08/04(水) 09:54:40
ちょっと頭使えば10回必要なものと1回で良いものくらい分かるだろ?
386デフォルトの名無しさん:2010/08/04(水) 10:01:42
わかりません
どうすれば最適なのでしょうか?
387デフォルトの名無しさん:2010/08/04(水) 10:33:01
板一枚に木の絵を書いて、ビルボードで描画するのが最適です(^^
388デフォルトの名無しさん:2010/08/04(水) 10:42:49
ちゃんと教えてください
389デフォルトの名無しさん:2010/08/04(水) 10:56:23
なに他力本願丸出しの初心者のくせに口答えしてるのですか。
生意気ですね。
390デフォルトの名無しさん:2010/08/04(水) 10:56:36
                | ̄``''- 、
                |      `゙''ー- 、  ________
                |    ,. -‐ ''´ ̄ ̄`ヽ、_        /
                |, - '´ ̄              `ヽ、     /
              /               `ヽ、ヽ   /
             _/                    ヽヽ/
           / / /   /  /  /            ヽハ
          く  / /!   |   〃 _/__ l|   | |   |  |  | | ||ヽ
           \l// / |  /|'´ ∧  ||   | |ー、||  |  | l | ヽ
            /ハ/ |  | ヽ/ ヽ | ヽ  | || /|ヽ/!  |/ | ヽ
            / |  ||ヽ { ,r===、   \| _!V |// //  .!   |
            | ||   |l |ヽ!'´ ̄`゙   ,  ==ミ、 /イ川  |─┘
            | ハ||  || | """ ┌---┐  `  / //  |
            V !ヽ ト! ヽ、    |     !    / //| /
               ヽ! \ハ` 、 ヽ、__ノ    ,.イ/ // | /
    ┌/)/)/)/)/)/)/)/)/)/)lー/ ` ー‐┬ '´ レ//l/ |/
    |(/(/(/(/(/(/(/(/(/(/│||      |\  〃
  r'´ ̄ヽ.              | | ト    /    \
  /  ̄`ア             | | |  ⌒/     入
  〉  ̄二) 知ってるが    | | |  /     // ヽ
 〈!   ,. -'                | | ヽ∠-----', '´    ',
  | \| |   .お前の態度が   | |<二Z二 ̄  /     ',
  |   | |               _r'---|  [ ``ヽ、      ',
  |   | |   気に入らない >-、__    [    ヽ      !
  \.| l.              ヽ、      [     ヽ    |
    ヽ|              \    r'     ヽ、    |
391デフォルトの名無しさん:2010/08/04(水) 11:01:31
お願いします
教えてください
392デフォルトの名無しさん:2010/08/04(水) 11:10:34
用語が出てきたらググってみるとか
393デフォルトの名無しさん:2010/08/04(水) 11:21:20
用語なんて有りましたっけ?
ビルボードの方法で木を表示したいのではないのですが
394デフォルトの名無しさん:2010/08/04(水) 11:23:06
>>391
effect->もろもろセット
effect->begin()
effect->beginPass()
for(i = 0;i<10;i++)
{
mesh->違う位置で絵を描きたい位置の行列のセット
mesh->CommitChanges();
mesh->DrawSubset(0);
}
effect->endPass();
effect->end()
こういうことを言いたいのじゃないか?
切り替えの回数を減らすという意味で
ってか答える奴何様だよこんなところでしか偉そうにできないからか?

まあこの書き込みが間違ってたらまた偉そうに指摘してくれるから
それで>>391と俺は勉強になるからいいと思うが
395デフォルトの名無しさん:2010/08/04(水) 11:30:14
ID3DXMesh::DrawSubsetは
基本的にポリゴン群を描くたびに呼び出す。
木を10本描くなら10回呼ぶ。

ID3DXEffect::BeginPassはエフェクトのアクティブパスを
設定するたびに呼び出す。
アンタのエフェクトファイルにはパスはいくつあるの?
ひとつなら当然一回でいい。
木の位置を変えるなど、パスに渡している変数の値を変えたい場合は、
変えてからID3DXEffect::CommitChangesを呼ぶ。

ID3DXEffect::Beginは、、ステートの保存等を行うらしいが
現在は殆ど形骸化してるな。とりあえず最初と最後に
BeginとEndを呼んどきゃいい。
396デフォルトの名無しさん:2010/08/04(水) 11:36:31
え?そんな初歩的なこと聞いてたの?
397デフォルトの名無しさん:2010/08/04(水) 11:37:32
>>394
エフェクトまわりについては、ちゃんと答えようと思うと
内部的にどう動いているか理解してないと駄目。
下手に答えると、つっこまれるリスクを負うからな。
398デフォルトの名無しさん:2010/08/04(水) 11:39:24
>>394
ありがとうございます
いちいちエフェクト開始終了するより
mesh->CommitChanges();をする方がパフォーマンスが良いのですね
399デフォルトの名無しさん:2010/08/04(水) 12:29:19
エフェクトなんかあるからわかり辛くなるんだよ
400デフォルトの名無しさん:2010/08/04(水) 12:39:53
あらら、余計なこと書くと
後出し情報でそれをやると上手くいきませんとか言い出しそうだからほっといたのに・・・
そして>>398みたいな勘違いするし
401デフォルトの名無しさん:2010/08/04(水) 12:41:12
はじめからどこが悪いかわかってたら質問なんかしねえっつのw
402デフォルトの名無しさん:2010/08/04(水) 12:45:24
言葉で説明できない日本語の不自由な方はソースを出せ
なんで質問者のレベルをはかるために駆け引きしないといけないんだよw
403デフォルトの名無しさん:2010/08/04(水) 12:54:38
ソース乞食は大阪にでも行ってろよw
404デフォルトの名無しさん:2010/08/04(水) 13:55:22
まともに質問できない初心者ほどソース出すの嫌がるよね
別に全部出せってことでなくて
最小コードでも見ればほとんど一発で答えられる質問ばっかなのに・・・
何なの?自分のソースを見られるのが恥ずかしいの?
他所からコピペ改変してるだけなのがバレるのが嫌なの?
まさか、そんなまともに動かない糞ソースをパクられる心配してるわけじゃないよね?
405デフォルトの名無しさん:2010/08/04(水) 14:10:02
お好み焼き臭くなってきたな
406デフォルトの名無しさん:2010/08/04(水) 14:15:45
いったい誰と戦ってるのかは知らんが
もう解決したんだろ?
407デフォルトの名無しさん:2010/08/04(水) 14:40:02
でもいつも同じようなパターンだからなw
408デフォルトの名無しさん:2010/08/04(水) 14:57:58
うちの会社にもいるけど技術者系って妙にプライド高い人多いよな
自分の持ってる情報を開示してサポートなり専門家に問い合わせればすぐ解決するのに
妙に嫌がって情報探してネットをさまよって何日も無駄にしたりとか
自分の無知を他人知られるのが恥ずかしいとかそういう心理が働くのだろか?
409デフォルトの名無しさん:2010/08/04(水) 15:08:50
知ってるか知ってないかが評価のすべてだからな
スポーツ選手じゃないんだから
410デフォルトの名無しさん:2010/08/04(水) 15:11:11
>>409
どこの素人?
納期を守れるか守れないかが全てだ
411デフォルトの名無しさん:2010/08/04(水) 15:16:43
必要な情報にすぐに到達できるだけの手段とスキルを持つことが大事
ネットが普及する前からそうだ
412デフォルトの名無しさん:2010/08/04(水) 18:46:13
>>408
俺が見てきた限りでは、そういう人にちゃんとした実力のある人は居ないな。
手が動くのは早いし実装出来てはいるんだけど
他の人の設計を破壊したり汎用性を損なうようなコードしか書けない。
ていうかコピペが異様に多い。
そもそもプログラマに向いてないタイプじゃないかね。
413デフォルトの名無しさん:2010/08/04(水) 22:44:14
プログラマ「でしかやっていけない」タイプだろ。
他の業種だったら早々に衝突起こして退職かクビになってる。
414デフォルトの名無しさん:2010/08/04(水) 22:56:59
>>412
どうだろ?
ライブラリ製作者でもなければ(それこそDirectXを作るとか・・・)ほとんどコピペのが効率いいんじゃね?
ゲームPGなんて90%が末端PGだろ?
そこで汎用性だの設計だの話が出ちゃう現場のが俺は信用できない
「ほれ、ここ切り分けてやっからこの中ならなんでもしていいぞ」
って感じでやんじゃねーの?普通・・・

ってか俺5つぐらい現場移ってるけどこれ以外の開発みたことないや
415デフォルトの名無しさん:2010/08/04(水) 23:34:11
ゲームPGはコピペ多いね
マスターすれば後はシラネって業界だからしょうがないんだろうけど

>>408
プライドが高いんじゃなくて、守秘義務であんまり情報出せないとかそういうのはないの?
どこまで情報出していいかって結構悩む
検索ワードにも気を使うし
416デフォルトの名無しさん:2010/08/04(水) 23:47:58
>どこまで情報出していいかって結構悩む


バグが再現する最小限のソースだろ常考
417デフォルトの名無しさん:2010/08/05(木) 00:00:34
>>415
>マスターすれば後はシラネって業界だからしょうがないんだろうけど
そういう問題じゃないんだな
ウィンドウズだってwin32apiやmfcを作る人間でもなきゃ汎用性なんて意識してPG書く必要ないよ
ライブラリを書いてみんなで使うってことはそれだけ資料を作ってみんなに周知させなきゃいけないってことだから
その手間考えたら「他で使うかも・・・」なんて希望的観測の汎用性なんてコストだけ無駄に高くて意味ないと思うな

みんなに使わせるってそれだけ大変だと思うんだよね
418デフォルトの名無しさん:2010/08/05(木) 00:24:12
>>416
守秘義務に引っかからない程度まで切り分けできるなら質問するまでもなくバグが取れそうなもんだけど

>>417
うっかりするとバグをばらまくことになるからあんまりコピペはしない方がいいよ
最初から汎用性を考慮する必要はないと思うけど
419デフォルトの名無しさん:2010/08/05(木) 00:31:28
>>418
>うっかりするとバグをばらまくことになるから
別に困らない
それがたとえ100箇所だったとしても
所詮同じバグんなもん30分〜1時間もあれば文字列置換やら検索やら駆使してなんとかなる
構造が複雑なほうが問題
こっちは下手したら丸一日〜一週間かかっても解決する兆しすら見えないこともある

こういう天秤のかけ方が下手糞なまんまだといつまでたっても苦労ばかりするぞ
420デフォルトの名無しさん:2010/08/05(木) 00:34:58
大手メーカーの下請けしてたときメーカー側から提示されたプログラムは
a_1 = 1;
a_2 = 2;
a_3 = 3;
...
みたいなのが延々と続く退屈なものだった
っつーかループ知らんのかとか
もしかして最適化なのかとか
メンテする度に数字書き直しとかで大変だろうなとか
いろんなことを思った
421デフォルトの名無しさん:2010/08/05(木) 00:38:44
>>420
その例はただの極論にしか見えないけど
ぶっちゃけそれでも問題おきないでしょ?
まず、メンテするかも・・・なんてのが希望的観測であって
メンテなんてない場合がほとんどでしょ?(よしんばあっても単調作業で終了)
これはゲームだからってよりも業務系でもいっしょだけどね
知らん人のソースみて一番嫌なのって構造が複雑なことじゃない?ちがう?
422デフォルトの名無しさん:2010/08/05(木) 00:56:00
>>419
それがコピペかどうかちゃんと把握できてるなら困らないけど
普通そんなの覚えてないよね

無理して汎用化しようとして構造が複雑になるのも問題だけど
簡単な構造でもコピペで済ませるやつが多いのがちょっとね
423デフォルトの名無しさん:2010/08/05(木) 01:19:41
>>422
似たような箇所がないかどうかまず検索かけてそれから修正入るから
覚えてる覚えてないは関係ないね

それと別に俺も>>420ででたみたいな極端なことはしてないし
それさえなきゃぶっちゃけ否定するところないでしょ?
効率効率あんまり叫ぶ人いるけどそれってライブラリ(3Dエンジン)開発者ぐらいなもんで
ゲーム作る人にはあんまり関係ないよ
やりたきゃライブラリでも売る仕事に就くんだね
424デフォルトの名無しさん:2010/08/05(木) 01:34:30
まったく同じなら検索しやすいんだけど、
コピペした後に変数名を変えたりとか少し改造してあるから厄介なんだよな
個人的には絶対ダメとは言わないけどなるべく減らして欲しい
つかバグを修正する時期にコピペ探しで30分〜1時間もロスするのは精神的にツライ

さすがに>>420みたいなのは見ないな
425デフォルトの名無しさん:2010/08/05(木) 03:19:43
ライブラリ作ってる人って「ゲームプログラマー」なの?
それを使ってるだけの側がゲームプログラマーじゃないの?
426デフォルトの名無しさん:2010/08/05(木) 06:18:37
>>425
江戸城建設したのは徳川家康か?太田道灌か?
427デフォルトの名無しさん:2010/08/05(木) 06:25:36
>>424
>構造が複雑なほうが問題
>こっちは下手したら丸一日〜一週間かかっても解決する兆しすら見えないこともある
こっちは見えないんだなw
428デフォルトの名無しさん:2010/08/05(木) 07:43:18
>>427
「下手したら」だろ
下手しなければ良いじゃん

>>424 のは下手しなくても修正の度に30分〜1時間ロスするんだぜ
429デフォルトの名無しさん:2010/08/05(木) 07:56:42
いみふ
430デフォルトの名無しさん:2010/08/05(木) 09:15:19
あの、>>398は勘違いなのですか?
詳しく教えてください
431デフォルトの名無しさん:2010/08/05(木) 11:03:04
>>430
勘違いではないと俺は思ってる。

ってか>>400は、
間違ってると思うなら理由を含め書き込めよ
じゃないと次にこの書き込み読む奴のためにならんだろうが
頭使えks
とここまで煽れば400は答えてくれるんじゃないか?

432デフォルトの名無しさん:2010/08/05(木) 11:54:15
>>427
>>422
>無理して汎用化しようとして構造が複雑になるのも問題だけど
>簡単な構造でもコピペで済ませるやつが多いのがちょっとね
すでに書いたから触れなくていいかと思って
433デフォルトの名無しさん:2010/08/05(木) 12:39:26
そこで問題だ! アホの>>400は、このえぐられた頭でどうやってあの攻撃をかわすか?

3択−一つだけ選びなさい
 答え@ハンサムの>>400は突如正しい答えがひらめく
 答えA仲間がきて助けてくれる
 答えB泣きながら逃走。 現実は非情である。


煽るならここまでしないと
434デフォルトの名無しさん:2010/08/05(木) 14:38:10
ふぁ…
435デフォルトの名無しさん:2010/08/05(木) 16:35:44
いろいろ弄ってたらウインドウに変な無茶苦茶な角度のカメラの回転とともに動くテクスチャが出て
しかもVisualStudioの画面がテクスチャに貼られていたのですがどうなっているのでしょうか?
エフェクトファイルを追加していじっていたのですが
436デフォルトの名無しさん:2010/08/05(木) 16:38:36
>>435
大体そういうのは未初期化のテクスチャ張ったとか、
変数を初期化し忘れてるとか、
初期化し間違えてるとか
が多いな
すさまじいエラーのように見えても実はそんなものの場合が多いと思われる
何をしようとしていたのか詳細があればもっと答えてくれる人がいるだろう
437デフォルトの名無しさん:2010/08/05(木) 17:50:18
αブレンドをしたんですが
オブジェクト1、オブジェクト2、オブジェクト3の順に表示させたら
3が透けて1や2は見えるんですが
1は透けず2、3が見えないんですが

これはカメラ位置とオブジェクトの距離を計測して最適な順に並べなくてはいけないんでしょうか?
それともそれ以外の方法があるのでしょうか?
(Zバッファをオフにするってのも考えたけど余計変なことになりそうな・・・)
438デフォルトの名無しさん:2010/08/05(木) 21:28:50
>>437
α物はソートしなくてはいけないんですよマジで
439デフォルトの名無しさん:2010/08/05(木) 21:39:23
マジですか
簡単なソートプログラムを作っておくか・・・
440デフォルトの名無しさん:2010/08/05(木) 23:31:10
かってに作ればあ
441デフォルトの名無しさん:2010/08/05(木) 23:36:01
430はなんでパフォーマンスを気にする前に
仕組みを理解しようと考えないんだろう
別に理解できないことではないだろうに。
442デフォルトの名無しさん:2010/08/05(木) 23:47:17
430はなんでパフォーマンスを気にする前に
仕組みを理解しようと考えないんだろう
別に理解できないことではないだろうに。(キリッ
443デフォルトの名無しさん:2010/08/06(金) 00:18:13
今回の場合は仕組みを理解して自分で試せば
 最適な方法を教えてください
とかわざわざ質問しなくて済むんだぜ?

んでもって知りたかったのは最適な方法じゃなくて
一般的な方法でしょ
444デフォルトの名無しさん:2010/08/06(金) 00:20:07
http://www1.axfc.net/uploader/C/so/116286
チュートリアルのスカイボックスみたいにしたいのですができません
テクスチャがおかしいのと、虎も消えてしまいます
よろしくおねがいします
445デフォルトの名無しさん:2010/08/06(金) 03:39:53
>>443
最初はみんな右も左もわからんだろう
そもそも回答したくなければ何も答えなければいいだろ
無駄レスばっかつけてんじゃねぇよ
446デフォルトの名無しさん:2010/08/06(金) 07:55:48
うう…誰も答えてくれないお…
447デフォルトの名無しさん:2010/08/06(金) 10:18:36
>>444,446
ちょっと「おかしいプログラム」
の幅が広すぎると思われる。
もうちょっと問題を分割して、おかしい部分を提示すれば、
良いアドバイスが得られるはずだ
448デフォルトの名無しさん:2010/08/06(金) 10:22:32
>>446
・241行: g_pEffect9[1]->SetTechnique("tec0");
・g_pTxture[1]はキューブテクスチャにする
・332行: for(int i=1;i>=0;--i)

これでそれっぽい絵が表示されたが。これでOKか?
あと1万回ぐらいここで書いてるけど、
DXのコンパネからD3D9のデバッグランタイムを有効にして
アウトプットをみろ。他にもバグっぽい表示は出ているぞ。
449デフォルトの名無しさん:2010/08/06(金) 11:00:23
>>448
うおおおおおできました
ありがとうございました!
コントロールパネルも見つけました。vistaはスタート→コントロールパネルに出ないらしいのでなかなか見つけられませんでした。使ってみます
なぜfor(int i=1;i>=0;--i)にすると両方表示されるのでしょうか?
変数もそれぞれ独立しているのでお互いに影響しないと思っていたのですが
450デフォルトの名無しさん:2010/08/06(金) 11:18:29
>>449
それはskybox01.fxがZEnableをfalseにしているからだ。
有効にすれば降順にしなくても表示される。
スカイボックスの用途からすると、Z参照は無効にして、
まずスカイボックスから表示が正しいだろう。
451デフォルトの名無しさん:2010/08/06(金) 11:29:15
>>450
なるほど!
ありがとうございました
452デフォルトの名無しさん:2010/08/06(金) 11:37:19
1万回も書いてたら完全に荒らしレベル
453デフォルトの名無しさん:2010/08/06(金) 14:09:21
>>446
早く回答が欲しかったのなら、回答側が簡単にファイル落とせるように配慮ぐらいしろよ。


454デフォルトの名無しさん:2010/08/06(金) 14:45:25
ん?普通に落とせたが?
455デフォルトの名無しさん:2010/08/06(金) 18:41:37
>>454
そう?俺リトライばっかで途中でやめたけど。
昼間は混んでないから、普通に落とせるけど、>>444の時間帯じゃリトライ多くてね…
456デフォルトの名無しさん:2010/08/06(金) 23:36:58
>>455
お前何様なんだよw
自分を勘違いしすぎじゃねーの
457デフォルトの名無しさん:2010/08/07(土) 00:09:38
今やってみたけど80回リトライ押してギブアップ。
途中からちょっとムキになったが無理だった..
458デフォルトの名無しさん:2010/08/07(土) 00:20:59
たとえるなら、
初心者にウサギ跳びをさせ、膝を壊した奴はそもそも天才選手じゃないと捨て、千尋の谷から這い上がった天才を育てるようなもの。
天才でない者の末路は、エロゲ会社で腕を鈍らせるか、同人しながら派遣PG&自殺しかない。
459デフォルトの名無しさん:2010/08/07(土) 00:27:21
もう少しマシなアップローダを使った方がいいのは確かだ。
460デフォルトの名無しさん:2010/08/07(土) 00:56:52
>>456
俺様
461デフォルトの名無しさん:2010/08/07(土) 03:50:49
「千尋の谷」ってこういう漢字書くんだ知らなかった
千仞だと思ってた
462デフォルトの名無しさん:2010/08/07(土) 03:52:20
おれは万丈って楽器のバンジョーのことだと思ってたぜ
463デフォルトの名無しさん:2010/08/07(土) 04:09:49
俺は楽器のプロだぜ
464デフォルトの名無しさん:2010/08/07(土) 09:44:48
いい加減回答側の上から目線にはうんざりだな
傲慢もいいとこだ
まあプログラマの3大美徳には入っているが、
ここの傲慢とは意味が違うがな
465デフォルトの名無しさん:2010/08/07(土) 14:58:26
質問する側がちゃんと質問できてればそうはならんと思う
ちょっと煽るくらいで情報引き出さないと想定できる問題点が多すぎて回答できないとかどうなのよ?

質問者は
素人判断で問題点を想像してそれを根拠に質問するな
大本の判断材料からすでに間違ってることが多すぎる
素直に最終的にやりたい事と現状どうなってるかを明確書け
466デフォルトの名無しさん:2010/08/07(土) 15:01:39
それが書ける奴なら質問しねーよバーカ
467デフォルトの名無しさん:2010/08/07(土) 15:10:41
>>466
まったくその通りだねw
468デフォルトの名無しさん:2010/08/07(土) 15:23:25
>>465
質問者は、とりあえず
挙げた内容でわかる範囲の答えが欲しいだけ。

それで望む答えが得られなけば、掘り下げて
質問を続ける。または打ち切る。

いたって普通の2chの使い方じゃねーの。
469デフォルトの名無しさん:2010/08/07(土) 15:46:52
池沼なんだろ。
無視しとけ
470デフォルトの名無しさん:2010/08/07(土) 15:57:43
>>469
だろ。の使い方を間違ってる
471デフォルトの名無しさん:2010/08/07(土) 16:10:45
>>470
本人乙
472デフォルトの名無しさん:2010/08/07(土) 16:19:06
誰と戦ってるんだ?
473デフォルトの名無しさん:2010/08/07(土) 17:57:34
AxfcでDLしてる連中と
474デフォルトの名無しさん:2010/08/08(日) 16:46:59
なんか変なのがわいてるな
DirectXにスプライトはない厨のカスが帰ってきたかな?
475デフォルトの名無しさん:2010/08/08(日) 17:24:53
DirectX11に移行すれば諸々の問題は解決するよ。
あらゆるものが自分で用意しない限りないんだから。
476デフォルトの名無しさん:2010/08/08(日) 17:34:13
どっちにしろマイクロソフトの手の内で踊らされてるだけだし
GPUの進歩の方が早いし必死にDirectXの機能理解しても無駄
477デフォルトの名無しさん:2010/08/08(日) 17:41:53
>>475
今そのせいで発狂中ww
478デフォルトの名無しさん:2010/08/08(日) 17:55:27
DirectX9時代にD3DXにべったり頼り切っていた人間は、永遠に11に行くのは無理な状況。
MSが初心者お断りをしているとしか思えない。
479デフォルトの名無しさん:2010/08/08(日) 18:04:49
んなことない
480デフォルトの名無しさん:2010/08/08(日) 18:11:43
いや、D3DXが初心者レベルに使えるならDirectX11なんて1年も勉強すれば余裕でできる。1年もかからん
全然初心者向けレベルだよ。つか、マイクロソフトにはそうである必要がある
ま、猿の脳みそで苦労するのはDirectXだけじゃないからね
481デフォルトの名無しさん:2010/08/08(日) 18:12:42
DirectX11は色々改善されているおかげでDirectX9世代のハードでも、
DirectX9から使うより遙かに高速動作するのが利点。
全然違うんで驚いた。
482デフォルトの名無しさん:2010/08/08(日) 18:17:36
俺は478が何を言ってるのか分からない。
D3D11でD3DXが使えないとでも思っているのかね?
483デフォルトの名無しさん:2010/08/08(日) 18:31:26
とりあえず
使える、使えないものを挙げてみたら?
484デフォルトの名無しさん:2010/08/08(日) 18:50:53
>>482
少なくともヘルプぐらいは確認しようぜ。
確かにD3DXは残っているが、何が残っているのかよく見てみろ。
485デフォルトの名無しさん:2010/08/08(日) 18:56:44
486デフォルトの名無しさん:2010/08/08(日) 19:22:37
11になってより自然な仕様になってるのに
移行できないのはD3DXに頼ってたからじゃなくてセンスが無いだけ
487デフォルトの名無しさん:2010/08/08(日) 19:29:06
人による
488デフォルトの名無しさん:2010/08/08(日) 19:32:23
俺のソフトは大きくD3D9の仕様に依存してるから
おいそれとは移行出来ない。
例えば、マルチパスのHDRとか、デファードレンダリングとか。
D3D11で動くかもしれんがベストな実装方法じゃなくなってるし。
489デフォルトの名無しさん:2010/08/08(日) 19:39:36
ハードが無い
490デフォルトの名無しさん:2010/08/08(日) 20:32:54
>>484
D3DX11の定義が少ないのは、D3DX9のまま使えるのが再定義されてないだけ。
数学系関数なんかは互換性があるから、D3DX9のを使える。
491デフォルトの名無しさん:2010/08/08(日) 20:43:06
なんだまだ完成途中のものを世に送り出していたのか
後三年は様子を見た方がよさそうだな
492デフォルトの名無しさん:2010/08/08(日) 20:50:00
数学系はD3DXよりXNA Math Libraryの方が
2割ほど性能が良い。こっち使った方がいい。
493デフォルトの名無しさん:2010/08/08(日) 20:53:28
2割どころか行列の乗算をぐるぐる回したら20倍近く速くなったぞ。
494デフォルトの名無しさん:2010/08/08(日) 20:57:04
どうせ同じルーチン回したとき「のみ」速いようにできてんだろw
495デフォルトの名無しさん:2010/08/08(日) 20:57:24
>>490
ID3DXSpriteとかID3DXFontなんかの、ぶっちゃけどうでもいい機能は使えないけどね。
496デフォルトの名無しさん:2010/08/08(日) 20:59:03
文字列とか描画早い?
497デフォルトの名無しさん:2010/08/08(日) 21:00:16
>>494
SSEのレジスタがインラインで使い回されるからね。
組み方次第で差が出るよ。
498デフォルトの名無しさん:2010/08/08(日) 21:02:33
>>496
フォントはDirectWrite
Direct3D単独でやるなら自分でテクスチャに書き込むなり白
499デフォルトの名無しさん:2010/08/08(日) 21:18:37
なんで自分のレスにレスつけてる人がいるの?
500デフォルトの名無しさん:2010/08/08(日) 21:51:56
>>500
気のせい
501デフォルトの名無しさん:2010/08/08(日) 21:53:40
>>501
?
502デフォルトの名無しさん:2010/08/08(日) 22:15:30
>>502
これは恥ずかしい
503デフォルトの名無しさん:2010/08/08(日) 22:47:30
>>494
>>493がコンパイラの最適化によってそうなってるって意味ならそうだろうなw
ただ、20倍はそうそう無いだろうけどインライン化されやすいこととSSEの効果を考えたら
D3DXと同等かそれ以下なんて有り得ない。
というか今までD3DXの数学周りが初心者向け過ぎた。
504デフォルトの名無しさん:2010/08/09(月) 06:07:51
初心者向け過ぎ?具体的にどうぞ。
505デフォルトの名無しさん:2010/08/09(月) 07:30:45
Xファイルが廃止されたのに後継の標準フォーマットがないとか
サンプル見たらなんか変なユーティリティクラス作ってサンプル間で使いまわしてて
そんなもん作らないといけないならそれをSDKの中に入れとけよと言いたくなることとか
付属のヘルプが9,10,11全部一つになってるのだが、検索で見つかった奴の「場所」っていうのが
全部「Windows DirectX Graphics」になってて開いてみるまでどのバージョン向けかわからないとか

ずいぶん初心者に優しい作りになってるよね。

TWIN TAIL LOVERS.(仮)ってサイト見るまでポリゴンの一つも満足に表示できなかったよ。
506デフォルトの名無しさん:2010/08/09(月) 07:36:20
怖すぎ
VisualStudioも最近センス悪いからなぁ
str系の関数全部警告だしたりw
こんなところで深刻なバグ出したことねぇよ
マニフェストとかもセンス悪い
ボタン一発で他で動く.exeができるのが魅力だったのに
507デフォルトの名無しさん:2010/08/09(月) 09:02:54
SDKのサンプルってかなり良いコードなんですか?
それとも無駄な処理が多いんですか?
508デフォルトの名無しさん:2010/08/09(月) 09:24:50
気になるなら自分で確認すれば?
509デフォルトの名無しさん:2010/08/09(月) 09:27:40
プロから見てどういう評価なのか教えてください
510デフォルトの名無しさん:2010/08/09(月) 09:32:24
サンプルに良いも悪いも無い
511デフォルトの名無しさん:2010/08/09(月) 09:33:43
ふーん
512デフォルトの名無しさん:2010/08/09(月) 09:35:36
>>506
警告も切れるし、マニフェストも使わなければいい。
初期状態でそうしたいのならカスタムテンプレートを作ればいい。
きちんとカスタマイズできるように作られているのに、
くだらない愚痴をたれる意味が分からない。
513デフォルトの名無しさん:2010/08/09(月) 09:41:50
サンプルはあくまでサンプルなのに、実際にコーディングする時にも、
サンプルと同じ流れで組んでしまう人間には害悪にしかならない。

そして自分でものを考えずに評価すら他人に頼る人間には、
何もかもが害にしかならない。
514デフォルトの名無しさん:2010/08/09(月) 09:47:32
へ?
515デフォルトの名無しさん:2010/08/09(月) 09:53:00
        ___ モシャモシャ
        /     \
     /   ⌒  ⌒ \
   /    (●)  (●) \   なに言ってんだろ こいつ
    |   、" ゙)(__人__)" .)|    ___________
   \      。` ⌒゚:j? ,/ j゙~~| | |             |
__/          \  |__| | |             |
| | /   ,              \n||  | |             |
| | /   /         r.  ( こ) | |             |
| | | ⌒ ーnnn        |\ (?ソ .|_|___________|
 ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二  _|_|__|_
516デフォルトの名無しさん:2010/08/09(月) 10:11:11
>>513
わかります
517デフォルトの名無しさん:2010/08/09(月) 14:16:24
何このスレ
518デフォルトの名無しさん:2010/08/09(月) 14:17:44
DirectX9使ってたんだけどDirectX11に移行した方が良いのかなあ?
でも移行すると作ったプログラムはXPとかで動かないし・・・
519デフォルトの名無しさん:2010/08/09(月) 14:18:00
要はDx11はいろいろめんどいということとXファイルみたいなモンを自分で用意できないやつには
無理ってのはわかった
520デフォルトの名無しさん:2010/08/09(月) 15:13:32
12になれば簡単に使えるフォーマットや関数が出てくるだろ。
それの繰り返しだよ
521デフォルトの名無しさん:2010/08/09(月) 15:14:18
心配しなくても今勉強するところから始めたら、
完成するのはXPの公式サポートが切れた後だろう。
522デフォルトの名無しさん:2010/08/09(月) 15:15:36
サポートが切れる頃にはまた新しい物が出てる気がするなあ
523デフォルトの名無しさん:2010/08/09(月) 16:22:07
>>519
D3D11が今のところ初心者に優しくないというのは同意だけど、X形式ってスキニングやアニメーションには
適してなかったからね。
四元数を格納出来ない=スキニングで関節がつぶれるわ、アニメーションでSlerpとか一切使えないわ、
大昔の固定機能パイプラインにあった行列パレットを使うってんならまだしも、
スキニングやアニメーションに手を出した瞬間X形式は使い物にならない。
(四元数格納出来ないってのが間違ってたらスマソ)
商用だろうと個人だろうと、どうせ自前形式を実装するはめになるんだから、X形式をD3DX10〜11で切ったのは
DirectX開発チームの英断だと思うけどねぇ。
現状に即した新しい形式が出てもいいとは思うけどね。
524デフォルトの名無しさん:2010/08/09(月) 16:24:25
まあでもそういうのに困ってる人は自己形式にしちゃうから問題ないけどね


しかしその自己形式もあれもこれもと弄ったらよくわからないことになって
Xファイルでイイよもう!ってなったことはあったけど
525デフォルトの名無しさん:2010/08/09(月) 16:24:53
うん、間違ってるね
526デフォルトの名無しさん:2010/08/09(月) 16:45:26
あぁほんとだ、格納できるのか・・・・
SkinnedMeshサンプルのXファイルに無いから出来ないものと思い込んでた
527デフォルトの名無しさん:2010/08/09(月) 17:28:25
なんだーかんだーいって動けば何でもイイと思うのは変かなあ
そこまでいろいろ考えてやったことない

というかみんなDirectXを何に使ってんだ?
そんな極めなきゃいけないことあったっけ?
528デフォルトの名無しさん:2010/08/09(月) 17:28:54
俺がそもそも四元数を知ったのが、D3DRMのXファイルだったような希ガス
529デフォルトの名無しさん:2010/08/09(月) 17:31:03
馬鹿だから自分はDirectX11が理解できる(キッ俺は偉い(キッ
ってこういう勘違いしたい奴が必死に玄人気取ってるだけだろ。
530デフォルトの名無しさん:2010/08/09(月) 18:22:47
>ってこういう勘違いしたい奴が必死に玄人気取ってる”だけだろ。”
何がそんなに気に食わないんだw
531デフォルトの名無しさん:2010/08/09(月) 18:38:49
そもそも此処は質問スレであって雑談スレじゃないから
532デフォルトの名無しさん:2010/08/09(月) 19:09:05
DirectX9でOnCreateDeviceやOnResetDeviceがどういう機能なのか詳しくわかってないんですけど
裸があってそこから服や帽子や武器を付けていくときにその都度ファイルを読み込んだ方が良いのですか?
それともファイルは最初に全部読み込んでおいてバッファ的なところに溜め込んでおいて表示だけしないというような感じなのでしょうか?

533デフォルトの名無しさん:2010/08/09(月) 19:13:50
SDKのバージョンをDecember 2002からDecember 2004に変えたら
文字の表示が若干ぼやけるようになってしまいました。
どうすればいいか教えて頂けませんか。
↓ソースです。
http://zif.hp.infoseek.co.jp/upload/font.h
このサンプルを参考にしています。
http://marupeke296.com/DXGSmp_No5_Font.html
534デフォルトの名無しさん:2010/08/09(月) 19:23:45
>>533
g_pD3DDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT );
g_pD3DDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT );
g_pD3DDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT );
535デフォルトの名無しさん:2010/08/09(月) 19:35:11
>>534
直りました。
ありがとうございました。
536デフォルトの名無しさん:2010/08/09(月) 19:37:35
>>532
多分SimpleProjectとかそういうやつの話だと思うけど、別にファイルの読み込みはイベントハンドラ内でなくとも
作るゲームの都合で好きなときにやればいい(デバイスが存在する時であれば)。
OnResetDeviceはデバイスロストでぐぐれば幸せになれるかと。
それもD3DPOOL_MANAGEDやSYSTEMMEMで作ったリソースには関係無いけどね。
537デフォルトの名無しさん:2010/08/10(火) 09:19:41
DrawPrimitiveでデバッグ時のラインを表示したいんですけど
カメラの位置からカメラの視点まで線を引くときって頂点リストにどういう点を入れれば良いですか?
描画はシェーダです
538デフォルトの名無しさん:2010/08/10(火) 09:24:41
>カメラの位置からカメラの視点まで線
よく考えろ。
ディスプレイの真ん中に点を表示して何をするつもりだ?
539デフォルトの名無しさん:2010/08/10(火) 09:29:39
せやな
540デフォルトの名無しさん:2010/08/10(火) 10:05:59
ローポリゲー作りたいんですけどDirectX11に移行する意味ありますか?
541デフォルトの名無しさん:2010/08/10(火) 10:21:09
意味はあるし無いともいえる。
542デフォルトの名無しさん:2010/08/10(火) 10:27:47
ゲームの快適さだったらどうですか?
しかも物理エンジン使ってるのですが使えるのですか?
543デフォルトの名無しさん:2010/08/10(火) 10:31:58
XPを視野に入れないのであれば
ローポリゲーだろうが2Dゲーだろうが恩恵はある
544デフォルトの名無しさん:2010/08/10(火) 10:40:37
>ゲームの快適さだったらどうですか?
実装次第としか言いようがない。

>しかも物理エンジン使ってるのですが使えるのですか?
具体的に何かも分からないのに、他人が答えられるわけがないという判断は出来ないの?
それと「しかも」はどこにかかってるの?
545デフォルトの名無しさん:2010/08/10(火) 10:47:50
うわ、うざコイツ
546デフォルトの名無しさん:2010/08/10(火) 10:52:17
論点と全然関係ないところで揚げ足を取りにかかるのはム板マ板ではよくあること
プログラマの性なんだろうな
547デフォルトの名無しさん:2010/08/10(火) 10:52:57
どうしてプログラマはそういう性格になる必要があるの?
548デフォルトの名無しさん:2010/08/10(火) 10:59:30
そもそも論点自体が存在しない。
549デフォルトの名無しさん:2010/08/10(火) 11:06:49
SDKのサンプルのBasicHLSL11でDirectX9と11のFPSの比較が出来るらしいのでやってみたら、
DirectX11の方が1.8倍ぐらいFPSが上だった。
550デフォルトの名無しさん:2010/08/10(火) 11:22:45
Direct3D9は贅肉の塊
551デフォルトの名無しさん:2010/08/10(火) 11:22:59
>>546
だいじなことなので(ry
552デフォルトの名無しさん:2010/08/10(火) 11:29:39
9世代のビデオカードの方が、11を利用した場合のパフォーマンス向上が大きくなるのは皮肉だよな。
553デフォルトの名無しさん:2010/08/10(火) 11:35:43
えっ
554デフォルトの名無しさん:2010/08/10(火) 11:55:15
dx11って9世代と10世代のVGA使っててもエミュレーションするんじゃないっけ?
555デフォルトの名無しさん:2010/08/10(火) 12:00:35
>>554
エミュじゃねえよ。
適当なことを言う前に、最低限チュートリアルぐらいは動かせ。
556デフォルトの名無しさん:2010/08/10(火) 12:47:10
http://msdn.microsoft.com/en-us/library/ff476876%28VS.85%29.aspx
エミュレートではなく下限の機能を指定して動かすんだよ
557デフォルトの名無しさん:2010/08/10(火) 13:04:12
>>552
それって9とか11とか関係無しに単にGPUの性能の差じゃ?
GeFoで言うとGTX480でもない限り
現行の400シリーズの性能は9世代のハイエンドクラスに及ばないぞ
558デフォルトの名無しさん:2010/08/10(火) 13:07:43
10、11世代のビデオカードでDirect3D9と11を使った場合の性能差と、
9世代のビデオカードでDirect3D9と11を使った場合の性能差の話。
559デフォルトの名無しさん:2010/08/10(火) 16:23:14
>>555-556
なるほど。おかしな事いって申し訳ない。
なんかのニュース記事で見た気がしたけんだど、夢だったか・・・。
560デフォルトの名無しさん:2010/08/10(火) 16:47:17
WARPのことをいっているのならD3D_FEATURE_LEVEL_10_1までやってくれる。
現実的には使い物にはならないけどね。

DirectX9世代のビデオカードを11で動かすなら、
D3D_FEATURE_LEVEL_9_Xを利用することになる。
561デフォルトの名無しさん:2010/08/10(火) 18:00:45
結局Direct3D9って、無理に固定機能をサポートするせいで、
GPUがその性能の半分も発揮できないんだよね。
562デフォルトの名無しさん:2010/08/10(火) 20:58:43
はぁ?
563デフォルトの名無しさん:2010/08/10(火) 21:29:54
11は速度が向上した以上に、複数のターゲットに描画する処理が、
ステートの切り替えを気にせず並行処理出来る点が大きい
564デフォルトの名無しさん:2010/08/10(火) 21:44:13
>>561
コイツが何を言ってるか誰か説明してくれ。
565デフォルトの名無しさん:2010/08/10(火) 21:49:47
>>563
こういうのってDirectX9じゃどんなに自分でプログラム組んでもできないの?
566デフォルトの名無しさん:2010/08/10(火) 22:10:11
D3D9は基本シングルスレッド使用だからなあ
出来ないと思うよ
567デフォルトの名無しさん:2010/08/10(火) 22:11:14
>>566
デバイスを複数生成すれば出来るが、パフォーマンスが落ちる上にリソースが共有出来なくなるので事実上無理。
568567:2010/08/10(火) 22:12:12
>>565
ポイント先を間違えた
569567:2010/08/11(水) 10:52:23
>>564
固定機能の遺物の複雑なステートのせいで、パフォーマンスが発揮できないんだよ。
570デフォルトの名無しさん:2010/08/11(水) 11:16:53
なんでそんなに必死なの?
571デフォルトの名無しさん:2010/08/11(水) 11:23:12
572デフォルトの名無しさん:2010/08/11(水) 17:20:56
画像をy軸で反転させて表示したいのですがmat2の初期化の辺をもっとシンプルにする方法はありますか?
D3DXMATRIX mat, mat1,mat2;
mat2._11=1;
mat2._12=0;
mat2._13=0;
mat2._14=0;
mat2._21=0;
mat2._22=-1;
mat2._23=0;
mat2._24=0;
mat2._31=0;
mat2._32=0;
mat2._33=1;
mat2._34=0;
mat2._41=0;
mat2._42=0;
mat2._43=0;
mat2._44=1;
D3DXMatrixTranslation(&mat1, 327, 81, 0);
mat = mat2 * mat1;
g_pD3DXSprite->SetTransform(&mat);
g_pD3DXSprite->Begin(D3DXSPRITE_ALPHABLEND | D3DXSPRITE_DONOTSAVESTATE);
g_pD3DXSprite->Draw(img,NULL,NULL, NULL, 0xffffffff);
573デフォルトの名無しさん:2010/08/11(水) 17:39:04
matrixidentityして要素一つだけ変える
574デフォルトの名無しさん:2010/08/11(水) 17:42:47
D3DXMatrixRotationY
575デフォルトの名無しさん:2010/08/11(水) 17:44:03
D3DXMatrixIdentity
576デフォルトの名無しさん:2010/08/11(水) 17:45:40
D3DXMatrixScalingでY軸のスケールを-1でいいんじゃない?
577デフォルトの名無しさん:2010/08/11(水) 21:13:02
移動が前提なら

D3DXMatrixTranslation(&mat, 327, 81, 0);
mat._22=-1;

でいいやん
578572:2010/08/11(水) 23:12:22
>>573-577
ありがとうございます。
参考になりました。
579デフォルトの名無しさん:2010/08/12(木) 10:24:35
今DirextX SDK August 2009 で開発してるのですが、
このSDKが入っていないPCで動作テストをしたところ
d3dx9d_40.dllが見つかりませんというエラーが出ます。
で、directx end-user runtimesとかを入れたりしてみたのですが
d3dx9d_40.dllは入っておらず、結局上記のSDKを入れることでしか解決できませんでした。

これだと起動できないPCはあの重いSDKをダウンロードしなきゃならないハメになるのですが
何か設定とか間違えてるんですかね・・・
580デフォルトの名無しさん:2010/08/12(木) 10:31:02
redistで
581デフォルトの名無しさん:2010/08/12(木) 10:50:57
俺と一緒に2004oct使おうぜ
582デフォルトの名無しさん:2010/08/12(木) 11:02:23
>>579
ってよく見たらデバッグバージョンじゃねーか
デバッグビルドは配布できないし、SDK無いと動かないのは当たり前
583デフォルトの名無しさん:2010/08/12(木) 11:04:45
ライセンス的には、Redist配下の、
以下に書いてあるものとプラスして必要なcabを含めて配布すればいい。

>The following files in the above directory must be included in any distribution of
>the DirectX Runtime.

>DSetup32.dll
>DSetup.dll
>DXSetup.exe
>DXupdate.cab
>dxdllreg_x86.cab
584579:2010/08/12(木) 11:34:01
申し訳ない、registというのをよく知らないもんで
やはり別のSDKに移し替えるというのが無難なんでしょうか
585デフォルトの名無しさん:2010/08/12(木) 11:35:19
だから、Releaseビルドにしろよ
586デフォルトの名無しさん:2010/08/12(木) 11:40:39
何も書いてないけど、環境は?
もしかしてVisualStudioのExpressEditionとかだったら
ツールのオプションのプロジェクトおよびソリューションの全般から
ビルド構成の詳細を表示にチェック入れてDebug→Releaseに替えてビルド
587デフォルトの名無しさん:2010/08/12(木) 11:54:16
ってC#とかでなけりゃ設定しなくても切り替えできる気がするけど、一応ね。
588579:2010/08/12(木) 12:22:30
試してみましたがやはりd3dx9d_40.dllが見つからないと吐かれます・・・

>>586
環境はそれで言語はC++です
589デフォルトの名無しさん:2010/08/12(木) 12:28:52
>>588
ビルドした後できるEXEの場所は変わるぞ?
DebugディレクトリのとこにReleaseディレクトリができてるはずだが
そこのEXEを動かしたか?
590デフォルトの名無しさん:2010/08/12(木) 12:32:46
リリースビルド云々じゃなく、リンカのライブラリの指定が違うだけ。
591デフォルトの名無しさん:2010/08/12(木) 12:35:19
#if defined(DEBUG) || defined(_DEBUG)
#pragma comment( lib, "d3dx9d.lib" )
#else
#pragma comment( lib, "d3dx9.lib" )
#endif
592デフォルトの名無しさん:2010/08/12(木) 12:40:23
とにかく、d3dx9d_40.dllの9の後ろのdがデバッグ用の意味で
これはsdkにしか入ってない。これ直さない限りどのSDK使っても同じ
593デフォルトの名無しさん:2010/08/12(木) 12:43:37
2004dec以前ならd3dxのdllいらないんじゃなかったっけ
594デフォルトの名無しさん:2010/08/12(木) 12:46:51
それ以前は静的ライブラリだったから必要ないけど
一部のライブラリにバグがあるから知らずに使うのは危険
解かってて使うならまったく問題ない
EXEのサイズが大きくなるくらいか
595デフォルトの名無しさん:2010/08/12(木) 12:50:30
まあライブラリ指定だけならいいけど、DebugからReleaseにしろと言って
もうしてますと返ってこなかったとこみるとDebugビルドだったんじゃないの?
それだとSDKが解決しても今度はVC++インストールしてないと動かないと
言ってきそうな気がするw
596579:2010/08/12(木) 13:35:00
なんかリンカのd3dx9d.libを消したら普通に起動できてしまったが果たしてこれでいいのだろうか・・・

>>589
やり方が違うのかわかりませんが
こっちだとリリースビルドしても独立したReleaceフォルダが生成されます。

>>595
ちゃんとリリースにしてますよ。
597デフォルトの名無しさん:2010/08/12(木) 13:46:28
リンカの入力にd3dx9d.libって入れてたんだな?
でそれはDebug、Release別々に設定できるのに、
わざわざ全ての設定に入れてたということだな
消してもビルドできるならヘッダのどこかでpragma指定で入ってんだろうけど
そこにd3dx9d.libと入れるよう指示したのはだれよ?
598579:2010/08/12(木) 14:22:01
>>591かな?

とにかく色々とありがとう。
599デフォルトの名無しさん:2010/08/12(木) 14:32:01
ダメだこいつ・・・早く何とかしないと
600デフォルトの名無しさん:2010/08/12(木) 19:55:02
sptiteのDraw関数でPNG画像を表示しているのですが
PNGファイルの透過を使っていない画像を表示した時、
40×40の画像だったら64×64の余った部分が黒く表示されてしまいます。
*pSrcRectを指定する以外の解決する方法はありませんか?
601デフォルトの名無しさん:2010/08/12(木) 20:32:42
>>600
40x40以外の部分を透明色にしとけばいいじゃん
そうじゃなくて40x40の画像からテクスチャをつくってるのに64x64で表示されてしまうってこと?
あと「*pSrcRectを指定」がNGな理由を完結に
602600:2010/08/12(木) 20:42:46
>>601
後者の40×40の画像なのに表示は64×64ってことです。
PNGファイルで透過色を一色でも指定してあったら黒い部分は何故か消えます。
*pSrcRectを使うと画像のサイズ情報を入力しないとで不便なので
できれば使わずに表示したいと思ってます。
603デフォルトの名無しさん:2010/08/12(木) 20:44:16
2の乗数の大きさしか受け付けないビデオカードなんじゃねーの?
604デフォルトの名無しさん:2010/08/12(木) 20:46:05
>>602
D3DXCreateTextureFromFileじゃなくて
D3DXCreateTextureFromFileExでサイズを40x40でテクスチャ作ったら直らない?
605600:2010/08/12(木) 21:26:25
>>604
ファイルではなくリソースから読み込んでいるので
D3DXCreateTextureFromFileInMemoryExを使ってますが、
WidthとHeightを指定しても無理でした。
606デフォルトの名無しさん:2010/08/12(木) 21:32:12
カラーキーを黒に指定すれば
607デフォルトの名無しさん:2010/08/12(木) 21:33:41
>*pSrcRectを使うと画像のサイズ情報を入力しないとで不便なので
この前提が間違っている。
まさか手動で入力しないといけないとか思っているとかいうことはないよな?
608デフォルトの名無しさん:2010/08/12(木) 21:37:30
>>605
うちの環境じゃ再現されないんだよね

D3DXCreateTextureFromFileやExでサイズ指定無しでテクスチャを作成した場合
2の累乗でテクスチャが作成されるのは仕様なんだけど
サイズを指定してもダメなのは>>603の言うとおりビデオカードの問題もあるかもしれない

サイズ指定でテクスチャを作った後
D3DSURFACE_DESC desc ;
テクスチャ->GetLevelDesc(0, &desc ) ;
でdescの中身を確認してテクスチャが本当に指定したサイズで作成されてるか確かめて見て
609600:2010/08/12(木) 22:04:10
ミニマップレベルが8だったのを1にしたら指定したサイズで
テクスチャが作成されるようになりました。
レスくれた方ありがとうございました。

>>607
この前自動で入力しよう思って調べたけど良くわかりませんでした。
もしスレ違いでなかったら教えて頂けませんか。
610デフォルトの名無しさん:2010/08/12(木) 22:16:18
>>609
D3DXCreateTextureFromFileInMemoryExのヘルプをよく確認しろ。
分からないんじゃなくて確認を怠っているだけだ。
611デフォルトの名無しさん:2010/08/13(金) 00:16:46
誰か壁ずりのサンプルコードくれ
612デフォルトの名無しさん:2010/08/13(金) 00:28:52
>>611
お前は 3D 壁ずり でググることもできないの?クズなの?
ついでにDirectX関係ねーしそれ
613デフォルトの名無しさん:2010/08/13(金) 00:52:41
スルースキル磨こうぜ
614デフォルトの名無しさん:2010/08/13(金) 01:38:32
>>611
俺も探したがなかった。
適当に法線方向に戻す
615デフォルトの名無しさん:2010/08/13(金) 01:40:21
壁ズリはやったことないが床ズリなら幼稚園の頃からやってるから
何かアドバイスできるかもしれない
616デフォルトの名無しさん:2010/08/13(金) 01:55:15
>>615
床ズリって発射するときどうすんの?
ちんこにあらかじめティッシュかぶせとくの?
617デフォルトの名無しさん:2010/08/13(金) 02:03:14
あらかじめ下にティッシュ3枚を敷いておく
慣れないうちは目標を外して悲しいことになるんで注意だ
618デフォルトの名無しさん:2010/08/13(金) 02:05:00
ウザイ
619デフォルトの名無しさん:2010/08/13(金) 02:21:39
話を戻そうか

で、キャラを中心にカメラを回転させる方法についてだが
620デフォルトの名無しさん:2010/08/13(金) 02:33:26
>>619
それのどこに悩む要素があるんだ?
621デフォルトの名無しさん:2010/08/13(金) 13:03:46
>>619
あぁバカにはわからないやつね。
622デフォルトの名無しさん:2010/08/16(月) 10:52:42
すみませんが質問です。DirectX9c SDKで開発しています。

初歩的な質問かもしれませんが、DirectXを使って描画しているウィンドウの
クライアント領域(描画領域)が画面上から完全に見えなくなったとき
@他ウィンドウでDirectXで描画を行っているウィンドウの描画領域を覆い隠す
AタスクバーでDirectXで描画を行っているウィンドウの描画領域を覆い隠す
BDirectXで描画を行っているウィンドウの最小化ボタンを押してウィンドウを最小化
 (DirectXで描画を行っているウィンドウの描画領域が画面上から無くなる)
などの場合にCPU使用率が100%に張り付いてしまいます。
↓図説です。
http://jishinkuma.aa0.netvolante.jp/etc/cpu_full.PNG

このCPU使用率の100%張り付きの正しい対処法はございますでしょうか。
ご存知の人がいらっしゃれば、教えてくださらないでしょうか。
よろしくお願いします。
623デフォルトの名無しさん:2010/08/16(月) 11:06:19
アイドルループでSleep(0)入れてみては
624デフォルトの名無しさん:2010/08/16(月) 12:41:33
それ以前にメインループをどこに置いてるの?
WM_PAINTとかに置いてないよね?
625622:2010/08/16(月) 14:48:19
>>623
ご指摘ありがとうございます。
Sleepに0を指定するテクニックを初めて知りました。

>>624
レスありがとうございます。
  while( msg.message!=WM_QUIT )
  {
    if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
    {
      TranslateMessage( &msg );
      DispatchMessage( &msg );
    }
    else
    {
      DrawSprite();  ← ★メインループはここに置いています
    }
  }

WM_PAINTには置いていません。
626622:2010/08/16(月) 15:05:27
// 垂直帰線間隔を待つ
g_d3dpp_window.PresentationInterval = D3DPRESENT_INTERVAL_ONE;
を指定した場合、
g_Direct3DDevice->Present(NULL,NULL,NULL,NULL);
関数の中で垂直帰線間隔を待っているのかな?
それとも、Present関数からすぐに戻ってくるけど転送はしないのかな?

以下方法でCPU使用率100%張り付きが解消するか確認してみます。
  メインループ
  {
    MyTime1 = timeGetTime();
    Draw();   //描画
    MyTime2 = timeGetTime();
    Sleep(15 - ( MyTime2 - MyTime1 ) );
    Present(); //転送
  }

他にもっとよい方法があれば、ご教示よろしくお願いします。
627デフォルトの名無しさん:2010/08/16(月) 15:25:13
なんか

while( msg.message!=WM_QUIT )

がめちゃくちゃ臭いんだけど
WM_QUITのチェックは
PeekMessageの後にやったほうがいいんじゃないの?
628622:2010/08/16(月) 17:00:51
>>627
ご指摘ありがとうございます。
しかし、以下のように書いても結果は同じでした。
  do
  {
    if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
    {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
    else
    {
      // アイドル処理
      if (!AppIdle())
      {
        // エラーがある場合,アプリケーションを終了する
        DestroyWindow(g_hwnd);
      }
    }
  } while (msg.message != WM_QUIT);
629デフォルトの名無しさん:2010/08/16(月) 17:42:57
質問の件とWM_QUITの話は別でしょ
こうすべきって話じゃ?

if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
break ;
630デフォルトの名無しさん:2010/08/16(月) 17:46:35
でさ、AppIdleの中で処理する必要が無い時はそのままリターンしてたりしてない?
そういう時に、Sleep(0)するんだよ。
631デフォルトの名無しさん:2010/08/16(月) 17:57:01
要はウィンドウが非アクティブのとき全力でループを回しにいってるってことでしょ?
どっかにカレントウィンドウじゃないときは描画(Present)しないって処理がはいってんじゃないの?
632デフォルトの名無しさん:2010/08/16(月) 18:20:38
こう言うどうでもいいとことで躓くくらいなら
ウィンドウ生成と初期化だけでもDXUT使えばいいのに
633622:2010/08/16(月) 18:56:19
>>629
話の切り分けありがとうございます。
(不覚にも>>627やったら問題解決するかとオモタ)

>>630
作法のご指導ありがとうございます。
処理しています。
>処理する必要が無い時
Presentもしています。

>>631
CPU使用率が100%に張り付く条件
>>622の@の時にデバッガで止めて、
Presentを処理しているにも関わらず、
CPU使用率が100%に張り付くことを確認しました。

>>626の方法で100%に張り付かなくなったけど、
描画領域が表示されているときはCPU使用率5%
描画領域が表示されていないときはCPU使用率30%となり
気持ち悪い状態です。

>>632
DXUTって何でしょうか。
具体的に実装に必要な関数名を教えていただければ助かります。
634622:2010/08/16(月) 19:16:32
>>632
すみません。
ググれカス状態でした。
ググッたら出てきました。
DXUTCreateWindow

後日試してみます。
635デフォルトの名無しさん:2010/08/16(月) 19:27:25
sleepで戻ってくる精度が悪いから、
626のようなものはまずいと思われる
基本的にループではアイドリングのみのほうが良さそう
ループの中で、

if(今の時間 - BeforeFlameTime < 16/*1フレームの時間*/){
BeforeFlameTime = 今の時間;
Render();
}
sleep(0);//Sleep(1)でもいいかも

とかやってフレームレートを固定してみたらどうだろう
1000 / 60 = 16.666666だから上のだとずれるけど
636622:2010/08/16(月) 22:05:54
>>635
具体例をありがとうございます。
色々サイトを調べてみましたが
@timeGetTime()(timeBeginPeriod()で精度を上げる)
ASleep(0)
の組み合わせで制御したいと思います。
Sleep(1)は精度が悪く10msもスリープするらしいので使えません。
Sleep(0)で5μs程スリープするそうです。
timeGetTimeの精度が1msではないマシンは見捨てることにします

数日間プログラミングから離れるので報告は遅くなると思います。
色々参考になる意見を出していただきありがとうございました。
637デフォルトの名無しさん:2010/08/16(月) 22:14:56
てか>>625ってSDKのチュートリアルと一緒じゃん?
チュートリアルそのままでのその現象は起きるわけ?
起きないんだったら自分で弄った設定を見比べれば自ずと原因が分かるはず
起きるんだったらハードとかドライバとかOSとの相性とかから見直す必要があるんじゃ
638デフォルトの名無しさん:2010/08/16(月) 23:06:27
未だに昔のAppWizardで出来るCD3DApplication使ってる人いる?
DXUT使うかCD3DApplication使うか悩む。
639638:2010/08/17(火) 01:07:44
ていうか、DXUTってC言語っぽいっていうか、構造化プログラミングって感じがする。
CD3DApplicationの頃のほうがオブジェクト指向!って感じで、洗練されているような
気がするんだけど、どう思う?
CD3DApplicationはt-potさんの9.0系ののサンプルでみれる。
俺はDirectXに関してにわかなので、ほかの人の感想聞きたい。
640デフォルトの名無しさん:2010/08/17(火) 02:51:08
自分のフレームワークに落とし込みやすいんだよ
俺はDirectXに関してはSDKをダウンロードしたことすらないがな
641デフォルトの名無しさん:2010/08/17(火) 23:40:15
DirectX9、Jun2010で質問があります
他のOSでは問題なく動作していてるコードなのですが、windows7の64bitでLockRectを使用した場合にのみ
たまにLockRectを呼んだときにエラーも返って来ないまま動作が停止してしまいます。
何か対処法みたいのってありますでしょうか?
642デフォルトの名無しさん:2010/08/18(水) 00:00:13
リンクするライブラリをx86じゃなくてx64にするとか
643デフォルトの名無しさん:2010/08/18(水) 01:11:17
x86とx64のlibが混在なんて、そんなのリンク通るのか?
644デフォルトの名無しさん:2010/08/19(木) 02:07:04
キャプチャのフレームレートが荒いのでわかりにくいかもしれませんが
準備状態と、キックと、銃を撃つアニメーションなのですが
プログラム上でアニメーションが切り替わる時にペロッと紙みたいになってしまいます
http://www1.axfc.net/uploader/Ar/so/22978
どうしてでしょうか?
645デフォルトの名無しさん:2010/08/19(木) 02:32:56
140MのAVIってもうちょっとなんとかならなかったのかよ・・・

荒すぎてよく見えないけどモーション間の補完になにか問題あるんじゃないの?
補完してるならモーション補完切ってどうなるか試して見たら
補完してないならプログラムかファイルに問題あるんだろうけど動画からは判断できない
モデルファイルが自分しか読めない独自ファイルじゃないならそれをうp
646デフォルトの名無しさん:2010/08/19(木) 02:39:22
独自ファイルです
647デフォルトの名無しさん:2010/08/19(木) 02:43:53
じゃあ独自ファイルに変換するコンバーターが糞なんじゃね?
648デフォルトの名無しさん:2010/08/19(木) 02:47:43
なんか触っちゃいけない臭いがするぞ
わざわざ動画にしてくるあたり
そのうちパクられるのが嫌なのでソースは出したくないファイルも出したくないって言い出しそうな空気
649デフォルトの名無しさん:2010/08/19(木) 03:05:00
勘違いしてました
できましたありがとうございました
650デフォルトの名無しさん:2010/08/19(木) 15:32:21
ポカーン
651デフォルトの名無しさん:2010/08/19(木) 23:11:03
>>648
つーか君には大切なソースってもんが無いの?
こんなバカしかいないゴミ捨て場みたいな
ところに大切なソースを晒すなんて
俺だったら無理
652デフォルトの名無しさん:2010/08/19(木) 23:20:56
いつのまにか犯罪に使われてて共犯者にされたらたまったもんじゃないしな
653デフォルトの名無しさん:2010/08/20(金) 00:15:15
大切なソース(キリッ)だっておバンバン
654デフォルトの名無しさん:2010/08/20(金) 00:50:28
お前の頭の中からそんな大切なものが出てくるとは思えんが
655デフォルトの名無しさん:2010/08/20(金) 02:24:44
怨念のこもったコードほど、愛着わいて出したくなくなる法則。
656デフォルトの名無しさん:2010/08/20(金) 02:34:24
前いた会社からパクッった何かが含まれてるから
657デフォルトの名無しさん:2010/08/20(金) 07:00:30
大切なソース(笑)
658デフォルトの名無しさん:2010/08/20(金) 08:49:05
どんだけ自意識過剰なんだよって
超画期的なシステム組んでるわけでもない
既存のありふれた手法さえまともに動かせないくせに
659デフォルトの名無しさん:2010/08/20(金) 09:42:01
ソースビーム
660デフォルトの名無しさん:2010/08/20(金) 09:49:22
審議中..........
661デフォルトの名無しさん:2010/08/20(金) 20:29:34
見てるかわからんし余計なお世話かもしれんが、
windowsなら付属のムービーメーカーででも圧縮すれば
140MのAVIもせいぜい数十メガ程度にできるからそれを推奨だ
662デフォルトの名無しさん:2010/08/20(金) 21:46:35
そんな頭があったらこんな質問するわけないじゃん
663デフォルトの名無しさん:2010/08/21(土) 22:51:23
XPのDirectInputでキーボードのキーが、離しても押したままになるという
バグは何が原因でしょうか?
ノートPCでもデスクトップPCでも、PS/2キーボードでもUSBキーボードでも
起きましたので特定のハードウェアが悪いというわけではなさそうですし
664デフォルトの名無しさん:2010/08/21(土) 22:53:43
それはDirectInputが悪いんじゃなくて
取得したキー情報の扱いの方に問題があるんじゃないか?
665デフォルトの名無しさん:2010/08/21(土) 23:07:02
ttp://www1.axfc.net/uploader/Sc/so/145995
シェーダーに手を出そうと思いこんな風に作ってみました
ですがメッシュが灰色になり、メッシュの色が出ません(本当は赤青緑になると思う)
どこが悪いのでしょうか?

ピクセルシェーダーにうまくディフューズが行ってないのか・・・?
666デフォルトの名無しさん:2010/08/21(土) 23:18:53
>>665
BeginPass()とEndPass()
の中でパラメータでデータをセットしたら
ID3DXEffect::CommitChanges
しないと反映されないですぜ

といっても普通diffuseは頂点シェーダからピクセルシェーダへ出力
するのが普通じゃないか?
667デフォルトの名無しさん:2010/08/21(土) 23:27:24
うわー・・・指摘されたとおりにしたらうまくいった
あんなに悩んでたのがアホのようだ・・・

ありがとうございました
668666:2010/08/21(土) 23:52:04
普通〜って間違って書いたがぜんぜんそうじゃないな
下の文は以下スルーでたのむー
669デフォルトの名無しさん:2010/08/22(日) 13:14:37
動画処理プログラムを初めて作成している超初心者です。
よろしくお願いします。

DirectX SDK(November 2008)とPlatform SDK(2003 SPI1)を使ってプログラムを作成しているのですが、ヘッダーファイルを
#include <windows.h>
#include <string.h>
#include <dshow.h>
#include <qedit.h>
#include <conio.h>
#include <stdio.h>
の順番でインクルードした場合、qedit.hでdxtrans.hが存在しないエラーが発生したので、以下のページを参考にdxtrans.hをコメントアウトしました。
ttp://d.hatena.ne.jp/denpafreak/20080117/1200666936


しかしまだ
c:\program files\microsoft directx sdk (november 2008)\extras\directshow\include\mmstream.h(99) : error C2065: 'DWORD_PTR' : 定義されていない識別子です。
c:\program files\microsoft directx sdk (november 2008)\extras\directshow\include\mmstream.h(668) : error C2061: 構文エラー : 識別子 'DWORD_PTR' がシンタックスエラーを起こしました。
などのエラーが9個出てきます。

ttp://questionbox.jp.msn.com/qa1813598.html
ttp://homepage3.nifty.com/k-takata/diary/2005-05.html
などのページを参考にしたのですが、解決しません。
何が原因か検討がつきません。
ご教授お願いします。
670デフォルトの名無しさん:2010/08/22(日) 13:37:59
includeフォルダの
extras\directshow\includeの優先順位を
PlatformSDKの優先順位より下げて見たら?
てか、2003だとDirectShowはPlatformSDKに入ってないの?

ウチの環境(WindowsSDK6.0&7.0)だと
dxtrans.hが無いとは言われるけどそこを直せばDWORD_PTR関連のエラーは出ないぞ
671デフォルトの名無しさん:2010/08/22(日) 14:06:15
現在、インクルードファイルの順番は、
1.VisualStudio関係
2.DirectX SDK(November 2008)\Include
3.Platform SDK\Include
4.DirectX SDK(November 2008)\Extras\Include
にしていますが、669のようなエラーがでます。

今、検索してみたらPlatform内にもDirectShowがありました。
ですが、Platform内のDirectShowにはIncludeディレクトリはないのですがどうやってリンクするのですか?
見当違いな質問ならすいません。
672デフォルトの名無しさん:2010/08/22(日) 14:54:29
>>671
とりあえず4番を消せばいいんじゃないかな
673669:2010/08/22(日) 14:57:07
だめでした…
674デフォルトの名無しさん:2010/08/22(日) 15:00:26
3の優先順位を上げる
675669:2010/08/22(日) 15:11:47
IncludeとLibディレクトリを
1.Platform SDK
2.DirectX SDK(November 2008)
3.VisualStudio関係
の順番にしたところ、669のエラーはすべて消えました。
ありがとうございます。

次は、
fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください
というエラーになりました…
続けざまにすいません。
676デフォルトの名無しさん:2010/08/22(日) 15:15:34
リビルドしろ
677669:2010/08/22(日) 15:18:03
リビルドしても同様です。
strmiids.lib(strmiids.obj)でエラーになっています。
678デフォルトの名無しさん:2010/08/22(日) 15:40:32
ランタイムライブラリが一致してないとか
VisualStudioのバージョン間の互換問題と思われ
特に理由がないなら2003じゃなくて新しくしたら?

そしてそろそろスレ違い
679669:2010/08/22(日) 15:54:20
わかりました。
ありがとうございます。

Releaseでコンパイル通ったので、とりあえずは良しとしてもっと勉強します。
680デフォルトの名無しさん:2010/08/22(日) 16:12:41
リビルドうまくいかないときはクリーンしてからリビルドするといけるときがある
681デフォルトの名無しさん:2010/09/01(水) 11:09:37
エラーチェックの質問です
HRESULT hr = D3DXLoadMeshFromX(...);
if(FAILED(hr)){
assert(0 && "D3DXLoadMeshFromX");
}
などエラーチェックを書くのが良いと思うのですが、
HRESULT の戻り値を持つ関数が非常に多いのでどこまで付けたほうがよいのか?
と疑問に思いました
考えられる案としては、
1、何かを生成する関数の時だけチェックする
2、生成の時に加え描画もチェックする
3、すべてのHRESULTはチェックすべき
4、どの関数を使うかによるから答えは無い 経験で養え!
よろしくお願いします
682デフォルトの名無しさん:2010/09/01(水) 11:22:02
3
683デフォルトの名無しさん:2010/09/01(水) 16:42:28
MSのサンプルにあるみたいにマクロで囲ったりするとそれほど面倒でもないよ

俺はMSのサンプルみたいに更にHRESULTで返すのがいやだから例外に変換してるけど
684デフォルトの名無しさん:2010/09/01(水) 19:39:25
なるほど〜ありがとうございました
685デフォルトの名無しさん:2010/09/01(水) 21:18:10
将来原因不明のバグが出たときに嫌でも全部チェックするハメになる
686デフォルトの名無しさん:2010/09/02(木) 22:26:34
個人的にやたらきっついバグにあたったので書き込んでおく

D3DXQUATERNION qA, qB, qC;
D3DXQuaternionSquadSetup(
 &qA,&qB,&qC,&mQua[key.index[0]],&mQua[key.index[1]],&mQua[key.index[2]],&mQua[key.index[3]]);
 D3DXQuaternionSquad(&q,&mQua[key.index[1]],&qA,&qB,&qC,time);

↑このコード正常に動かないっしょ?
やたらジンバルロックを連想させるようなぶっとびかたしてくれる
かわりに

D3DXVec4CatmullRomで代用しておいた
687デフォルトの名無しさん:2010/09/02(木) 23:25:52
後、やばかったのが、DirectXViewerがバグってやがる・・・
DirectXViewerでの確認は役に立たない

一体どういう風に組んでるのか知らんけど
普通に動くはずのものが崩れて表示される・・・ときがあるw(←ココ重要w)
688デフォルトの名無しさん:2010/09/03(金) 00:05:34
なんで崩れるのかはソース見れば一目瞭然、バグというか手抜きというか
せっかく全ソースが付いてるので直して使ってる
まぁ、ただの確認用なら昔のSDKについてきたmeshviewを使ったほうが便利なんだけど
689デフォルトの名無しさん:2010/09/05(日) 08:07:43
みんなアルファ物のソートってどうしてる?
ボーン入った物体とかもやってる?

また、プログラムで勝手にアルファ物判定ってできないよね?
具体的にはテクスチャのアルファとマテリアルのアルファの話なんだけど・・・
これってデザイナにこのモデルはアルファ物ですって指定してもらったほうがいいよね?
690デフォルトの名無しさん:2010/09/05(日) 09:41:45
アルファテストとオクルージョンクエリでできるんじゃね
出来たとしても事前処理のが圧倒的に効率いいからやらんけど
691デフォルトの名無しさん:2010/09/05(日) 21:02:07
HLSLそろそろやろうと思ってるんですが、コンパイラとしてnVIDIA Composerをインストールしたんですが
エラーが出て起動できません。
pythonとか入れないと駄目なんでしょうか?
また、ほかに良いコンパイラがあれば教えてください。
692デフォルトの名無しさん:2010/09/05(日) 22:34:45
御自分のプログラムでHLSL試せばよござんしょ
693デフォルトの名無しさん:2010/09/05(日) 23:07:02
>>691
RenderMonkeyというのもあるそうだ
しかしまあ入門するのにはなくても十分だし、
普通にC++側でコンパイルするのが良いと思われる
694デフォルトの名無しさん:2010/09/05(日) 23:19:32
>>692-693
なくても大丈夫ですかね。わかりました。頑張ります。
ありがとうございました。
695デフォルトの名無しさん:2010/09/06(月) 08:58:00
シェーダーを使って描画しようとした場合、
DrawPrimitiveUPって使えないのでしょうか?
頂点バッファを使うDrawPrimitiveじゃないと駄目なんでしょうか?
696デフォルトの名無しさん:2010/09/06(月) 09:00:37
>>695
なぜ使えないと思ったのかよく分からないがもちろん使える
697デフォルトの名無しさん:2010/09/06(月) 09:07:26
>>696

ありがとうございます。

具体的にSetTextureとDrawPrimitiveUPはどこで呼び出せばいいのでしょうか。

ID3DXEFFECTインターフェースのBeginpassメソッドの後にDrawPrimitiveUPを
呼び出せばいいのでしょうか。

SetTextureはこのBeginPassメソッドよりも先に呼び出すのか後に呼び出すのか
どちらでしょうか?
698デフォルトの名無しさん:2010/09/07(火) 07:02:58
DrawPrimitiveUPって頂点ストリーム1個しか使えないのかよ
糞ァー(笑)

>697
テキトーにぐぐって出てきたけど流れぐらいはつかめるんじゃないかと?
http://www.t-pot.com/program/82_SAT/index.html
699デフォルトの名無しさん:2010/09/07(火) 11:08:51
参考になります。ありがとうございます。
しかし、皆さんレベル高いですねー
700デフォルトの名無しさん:2010/09/07(火) 15:08:35
モデルのアニメーションについて質問させてください。
DrawPrimitiveでモデルを描画する方法で、アニメーションさせようとしたら頂点一個ずつにアニメ用の行列を
掛けていくと思うのですが、例えばモデルの中で胴体は固定して腕だけを動かそうとしたら腕に該当する頂点
だけに行列を掛けていけばいいのですか?
701デフォルトの名無しさん:2010/09/07(火) 15:41:49
胴体と腕は別パーツなの?
ワンスキンで考えてるならボーンやスキンメッシュの予備知識はあるの?
上の質問じゃどこから説明して良いのかわからん
702デフォルトの名無しさん:2010/09/07(火) 16:07:01
胴体と腕は一つのパーツ(DrawPrimitiveの時に一気に送れるようにする為)になっていて例えば、
1〜20番の頂点が胴体で21〜40番の頂点が腕として決めています。
ボーンやスキンメッシュ等の知識は無いです。
ただ、単純に腕の部分だけを動かすにはどうしたらいいのかなと思ったのです。

Xファイルだとアニメ用の命令があるからいいのですが、無しだとどの様にしたらいいのか
がわからないのです。
703デフォルトの名無しさん:2010/09/07(火) 17:10:51
基本的な質問なのですが、
Xbox360ではA2R10FG10FB10Fの32bitフォーマットが定義されていると聞きます。
(10Fのうち、仮数部が7bit、指数部が3bit)

DirectX上で利用可能なピクセルフォーマットで近いものといえば
A2R10G10B10が考えられますが、10bitは整数値となります。
そういった認識でよろしいでしょうか?

上位互換としてはA16B16G16R16Fが考えられますが、
この場合は帯域が2倍必要ですよね。
704デフォルトの名無しさん:2010/09/07(火) 18:24:20
>>702
頂点データにフレーム番号を設定して切り替える。
つまりスキンメッシュの変形版で出来る。
705デフォルトの名無しさん:2010/09/08(水) 00:37:21
>>700
もしかしてこんなこと聞いてる?
だったら腕を動かすボーンだけ動かせばいいのでは?

    _  ∩
  ( ゚∀゚)彡 おっぱい!おっぱい!
  (  ⊂彡
   |   | 
   し ⌒J
AnimationSet「おっぱい」の腕のボーンのAnimation行列だけ

  ( ゚∀゚) ちんちん! ちんちん!
  (    )
   | 彡つ
   し∪J
AnimationSet「ちんちん」のチンコのボーンのAnimation行列だけ

    おっぱい ( ゚д゚)  ちんちん
       \/| y |\/
これがどういうことか、後はわかるな?
706デフォルトの名無しさん:2010/09/08(水) 00:50:42
>>705
>これがどういうことか、後はわかるな?
                  
     _
   ( ゚∀゚)x"⌒''ヽ、        <こうですか?わかりません!
   (|     ...::   Y-.、
    |  イ、     ! :ヽ      
    U U `ー=i;;::..   .:ト、
          ゝ;;::ヽ  :`i      
            >゙::.   .,)
           /:::.  /;ノ
     ゞヽ、ゝヽ、_/::   /
     `ヾミ :: :.  ゙  _/
       `ー--‐''゙~
707デフォルトの名無しさん:2010/09/08(水) 06:40:49
たまーにアニメーションを絶対座標で吐き出すウンコツールの場合は>>705はできないので注意な
あくまでアニメーションを親子関係有でもってる場合のみ可
708TinPocoRockET:2010/09/09(木) 22:57:58
DirectXで球体を一般PCで3億テトラ程度で描こうとしたら何か制約はありますか?
ボールベアリングが2億〜3億テトラ程度の精度らしいんですよ。
越えなきゃ!
709デフォルトの名無しさん:2010/09/09(木) 23:02:59
クマー
710デフォルトの名無しさん:2010/09/09(木) 23:22:24
>>706
かぁーーーねだぁーーーーーーーーーーーーー!!!!
711デフォルトの名無しさん:2010/09/10(金) 06:51:42
>>708
DrawPrimitive一発でかける量にひっかかんね?
712TinPocoRockET:2010/09/11(土) 03:44:25
そっか、一発で引っ掛けないで描画すればいいわけだね!
・・・どのくらいまで、どの程度のFPSで描けるんだろう?

・・・1割るよね?
越える?
713デフォルトの名無しさん:2010/09/11(土) 10:27:20
>>712
試せばいいじゃないか。
お前は何を言ってるんだ
714デフォルトの名無しさん:2010/09/11(土) 11:46:25
   __(゚∀゚) <テトラペイピッポォ
  /__   ̄ ̄ ̄\
  | |   |  | ̄\  /
  (_) (__)  (_)

テトラペイピッポォに雌は存在しません。
テトラペイピッポォ(雄)はペイピッポォの雌と生殖活動を行います。
このとき生まれてくるのはテトラペイピッポォです。
テトラペイピッポォは主にペイピッポォの雄を捕らえて食べて成長します。
715デフォルトの名無しさん:2010/09/12(日) 08:38:52
右手座標系で作っていたモーションをDirectX等の左手座標系のソフト向けにコンバートしたいのですが
右手座標系で回転角XYZで表示されていたボーンの形を、左手座標系ではXYZにどの値を打ち込めば同じ形になるかを知る術はありますか?
716デフォルトの名無しさん:2010/09/12(日) 09:45:50
>>715
googleで「右手 左手 座標系」で検索して
「左手座標系と右手座標系間の変換 - 篤のメモ帳」
ってサイトが上手く解説してたよ
717デフォルトの名無しさん:2010/09/12(日) 13:04:41
頂点バッファって作ったら、Releaseで解放されるまでVRAMに残ってるってことでおk?
718デフォルトの名無しさん:2010/09/12(日) 13:58:07
NG
719デフォルトの名無しさん:2010/09/12(日) 14:00:12
NGなんですか?
ではいつVRAMに置かれるのですか?またいつ解放されるのですか?
720デフォルトの名無しさん:2010/09/12(日) 14:11:23
そもそもVRAMに置かれるとも限らないし、保持される保証もない。
721デフォルトの名無しさん:2010/09/12(日) 14:19:10
でも頂点バッファを作っていったら、いつか限界が来るんですよね?
その限界の容量はVRAMのメモリぐらいしかないんですよね?

なので、もし作りすぎたら逐次解放しながら管理しなければいけないのかと
思ったんですが、どうなのでしょう?

もし入りきらなかったら、システムメモリに置かれるとかでしょうか?
722デフォルトの名無しさん:2010/09/12(日) 14:24:08
全然人の話を聞いてないな。
723デフォルトの名無しさん:2010/09/12(日) 14:26:02
>>721
CreateVertexBufferの時に指定したD3DPOOLフラグによる

D3DPOOL_DEFAULT→ハードによるけど大体VRAM
D3DPOOL_MANAGED→VRAMとシステムメモリの両方(ロスト時やソフトウェア側から変更があった場合システムメモリからVRAMへコピーが行われる)
D3DPOOL_SYSTEMMEM →システムメモリ
724デフォルトの名無しさん:2010/09/12(日) 14:30:17
D3DPOOLフラグのことはしってたんですけど、D3DPOOL_MANAGEDの場合の時の話
をしてました。

ありがとう。二度と来ません。
725デフォルトの名無しさん:2010/09/12(日) 19:25:57
>>724
またこいよ、>>723みたいな親切なやつもいるんだからな!
7265:2010/09/12(日) 22:00:45
( ;∀;)イイハナシダナー
727726:2010/09/12(日) 22:02:40
5は完全にミス
728デフォルトの名無しさん:2010/09/13(月) 07:12:37
枚フレーム頂点の位置が移動する場合
DrawPrimitiveのUPがあるのとないのとどっちがいい?
729デフォルトの名無しさん:2010/09/13(月) 08:20:49
両方やってみた上で、利便性と速度で妥協点を見いだせばいい。
730デフォルトの名無しさん:2010/09/13(月) 09:03:29
また来ちゃいました。許して。

お願い。深度バッファについて詳しく教えて。

深度バッファって、既に描画してあるポリゴンと
今から描画するポリゴンとのZ値というものを見比べて、自分の方が小さければ
描画するという仕組みですよね?

CreateDepthStencilSurfaceで深度バッファを作るじゃないですか?
でもこいつにZ値なんて設定する場所ないんですよ。

どこで設定するんですか?

考え方自体間違ってますか?
間違ってたら、わかるように説明してくれますか??
一ヶ月以上理解できなくて、いつも深度バッファ使っていなくて、
後ろから順番に描画していってるの疲れたのでお願いします。
731デフォルトの名無しさん:2010/09/13(月) 09:14:00
では次の方どうぞ
732デフォルトの名無しさん:2010/09/13(月) 09:28:16
・・・悲しいです・・・お願い・・・
733デフォルトの名無しさん:2010/09/13(月) 11:58:25
では次の方どうぞ
734デフォルトの名無しさん:2010/09/13(月) 12:05:21
>>730
Clearするときにz値を指定して全体を初期化する。

ピクセル単位の値は、D3DRS_ZWRITEENABLEがTRUEになっていれば
DrawPrimitiveでポリゴンを描画するときに更新される。

Z値を比較して描画するかしないかは、D3DRS_ZENABLEで設定して
条件はD3DRS_ZFUNCで指定する。

CreateDeviceするときにEnableAutoDepthStencilをTRUEにしておけば
勝手に深度バッファを作ってくれるから、通常は自分でCreateDepthStencilSurfaceを
呼ばなくていい。

EnableAutoDepthStencilをTRUEにしておけば、D3DRS_ZENABLE等も
デフォルトで深度バッファを使う設定になっているから、普通はいじらなくてもいい。
735デフォルトの名無しさん:2010/09/13(月) 12:13:37
>>733
本当にすみません。

>>734
本当にありがとうございます!
大体分かったんですが、
DrawPrimitiveで描画するときに、z値の値なんて設定しないですよね?
Z座標は設定するのは知ってますが、Z値とはまた別ですよね?
描画するときのどのようにZ値というのは設定されているのでしょうか?
736デフォルトの名無しさん:2010/09/13(月) 12:35:38
オチはひねってくれよ
737デフォルトの名無しさん:2010/09/13(月) 13:05:59
射影変換が実際に何をやってるのか分かってればそんな質問は出ないはず
当然「しっていた」んだろうから説明はしないけど
738デフォルトの名無しさん:2010/09/13(月) 13:07:38
>>735
Z値とZバッファの意味から勉強しなおせ。
739デフォルトの名無しさん:2010/09/13(月) 13:09:11
ビュー変換行列や射影変換行列はおまじない感覚で設定してる初心者多そうだよね
変換行列の求め方まで理解しなくていいけど
その変換によって座標値がどういう座標系に置かれたのかは理解した方がいいと思うが
740735:2010/09/13(月) 13:21:10
射影変換行列はZ座標を元に左手座標系において、Z座標が大きければ大きいほど
奥に位置することになるので、その分オブジェクトは小さくなるんですよね?
だから奥行き感が生まれる。

だから何なんでしょう?

あともう少しなんです。よろしくお願いします。
741735:2010/09/13(月) 13:23:34
あ、すいません。僕は正気ですので。
742デフォルトの名無しさん:2010/09/13(月) 13:24:33
>>740
違う
743735:2010/09/13(月) 13:46:58
>>734を読み返したら完全に理解できました。

結論から言うと「知らずにZバッファを使っていた」というのが結論です。

今まで当たり前のことかと思っていたんですが、
描画対象のオブジェクトのZ座標が既に描かれているオブジェクトより小さければ
描かれるのは当然というわけです。
逆に大きければ、既にあるオブジェクトに隠れるのは現実世界においても当然なわけで。
Zバッファを作っとけば、その部分の描画を省略してくれるというわけですね。

とまあ、こんなオチでした。
こんなクソつまらない話に付き合ってくださいまして、ありがとうございました。
また来ます。

ということで、次の方どうぞ〜
744デフォルトの名無しさん:2010/09/13(月) 13:49:28
うん、全然分かってないね
745735:2010/09/13(月) 13:51:38
え!?違うんですか!?
ちょっとお待ちください。
746735:2010/09/13(月) 13:57:25
でもちょっと惜しいですよね?
747デフォルトの名無しさん:2010/09/13(月) 14:01:55
初心者だったらその程度の理解でもういいよ
自分から突っ込んでたZ座標からZ値の求め方は
話を混ぜっ返したかっただけで本当は別に知りたかったわけじゃないんだろ?
748735:2010/09/13(月) 14:06:42
いえ、質問するまではZ値とはどう設定されるのかまったく分かりませんでした。
だから、デバイスでClearするときの1.0fの値がずっとわかりませんでした。

話してると、この1.0fの意味が知りたくなってきたので、
求め方が知りたくなってきました。
749735:2010/09/13(月) 15:03:50
ありがとうございました。
750735:2010/09/13(月) 15:17:07
>>749
あなた前も同じことしましたね。そのときも相手が僕でした。
もう求め方も分かったのでいいです。

こんなクソスレ二度と来ません
751デフォルトの名無しさん:2010/09/13(月) 15:32:57
何で自分ばかりそういうことされるか考えたことある?
752デフォルトの名無しさん:2010/09/13(月) 15:37:47
もう来ないって言ってんだから放っとけよ
753デフォルトの名無しさん:2010/09/13(月) 15:46:52
質問に対して煽るように答える奴って
ただ優越感に浸りたいからかな?
自分より出来ないのを見て安心したいのかな?

まあ所詮2chだからなにいってもしょうがないか
754デフォルトの名無しさん:2010/09/13(月) 15:49:46
構ってちゃんだからだよ
755デフォルトの名無しさん:2010/09/13(月) 20:38:16
さすがにこれは酷いよ
昔はチャットレスってマルチ並みに嫌われてたと思うんだが、今はそうでもないのか
756デフォルトの名無しさん:2010/09/13(月) 21:08:25
z値というのはz軸の値だろうか?
zバッファはz値を書き込めるメモリ領域
757デフォルトの名無しさん:2010/09/13(月) 21:22:34
そもそもDirectXにZバッファなど存在しない
758デフォルトの名無しさん:2010/09/13(月) 21:41:26
ここまでわからないことが明確なんだからもう一度ググってこいと
759デフォルトの名無しさん:2010/09/13(月) 21:45:31
Zバッファの範囲は通常0.0(近)〜1.0(遠)
Z座標がいつZ値に変換されるかと言うと上の方にも書いてあるけど射影変換時

初心者が「右にならえ」でやってる
D3DXMatrixPerspectiveFovLHで生成された行列で何を変換してるかって言うと
ビュー変換行列によってカメラ空間に配置された座標値において
視野角とニアクリップ面、ファークリップ面で形成される視錐台の空間を
-1.0<=x<=1.0
-1.0<=y<=1.0
0.0<=z<=1.0
の直方体にトランスフォームする
この変換によって求められたZ値がZバッファに書き込まれる

パースペクティブ射影の場合は
ニアクリップ面の方が小さいのでカメラに近いものほど大きく拡大され遠近感を生む
Zバッファを1.0でクリアするのは1.0が最遠だから


射影変換の計算式を見ればわかるが
変換後のZ値はニアとファーのクリップ面の間に均等に分散するわけではないので
ファークリップ面はなるべく遠くに設定するとZ値の精度が上がる
760デフォルトの名無しさん:2010/09/13(月) 22:05:47
Zバッファ法と深度バッファを混同している馬鹿は何なの?
761デフォルトの名無しさん:2010/09/13(月) 22:23:19
>>760
いまの議論にどんな不具合が生じてるの?
762デフォルトの名無しさん:2010/09/13(月) 22:34:45
聞きかじりの間違った知識を広めることが問題だと感じないのなら、
不具合が生じていても気がつくことすら出来ないだろう。
763デフォルトの名無しさん:2010/09/13(月) 22:40:24
自分が分かってなだけなんじゃないの?
764デフォルトの名無しさん:2010/09/13(月) 22:41:53
>>760
申し訳ないが、Zバッファと深度バッファの区別が
できない初心者の俺に詳しく説明してくれないか?
http://msdn.microsoft.com/ja-jp/library/cc324546.aspx

方法論と実際のバッファとの違いだ、というなら別にそれでもいいんだが。
765デフォルトの名無しさん:2010/09/13(月) 22:44:59
>>764
深度バッファはzバッファやwバッファ等のことで
zバッファはzバッファじゃね?
766デフォルトの名無しさん:2010/09/13(月) 22:49:57
>>765
なるほど。早速Wバッファでぐぐってみたが、
z値をzの代わりに1/zで評価するだけであとの仕組みは同じなのか。
実に些細な差だなぁ。
色空間の違いと大差ないじゃないか。
767デフォルトの名無しさん:2010/09/13(月) 22:51:40
同義で語っても揚げ足取りがうざいくらいで何の問題も無いな
768デフォルトの名無しさん:2010/09/13(月) 22:52:06
些細だと…
769デフォルトの名無しさん:2010/09/13(月) 22:52:32
ていうか今の話とまるでかんけーねーしって俺は思うんだけど
>>760は何が言いたかったの?
770デフォルトの名無しさん:2010/09/13(月) 22:55:20
w bufferはdepth bufferが16bit時代の技術
今は使わない
771デフォルトの名無しさん:2010/09/13(月) 22:55:32
無駄に煽るから、せっかく間違いに気がつかせても頑固に間違ったまま使い続けるようになるんだよ。
同じような流れを何度も見た気がする。
772デフォルトの名無しさん:2010/09/13(月) 23:02:57
で、結局どこが間違ってるの?
773デフォルトの名無しさん:2010/09/13(月) 23:14:00
D3DXCreateSphereで作ったメッシュにtu,tvを設定してテクスチャを
貼ってみたんですが、端のほうが上手く貼れません
たぶん同じ頂点でtu=0,tu=1の2通り必要な箇所があるせいだと思うんですが
上手く貼る方法はないでしょうか?
774デフォルトの名無しさん:2010/09/13(月) 23:15:03
あっそ
775デフォルトの名無しさん:2010/09/13(月) 23:15:15
>>772
Zバッファと深度バッファを混同していると書かれているだろう。
776デフォルトの名無しさん:2010/09/13(月) 23:17:28
>>775
引用つけて抜き出せよ
っていうか今の流れと関係ないならそういってから指摘してほしいよ
なんか話の主旨まで180度変わっちゃうような間違いだったの?
777デフォルトの名無しさん:2010/09/13(月) 23:17:49
変な雰囲気の中申し訳ない。

質問ですが、100×100の画像をそのままの大きさで指定した位置
に移動させるにはどうしたらいいのでしょう?

たとえば、頂点バッファの座標にそのまま100×100の大きさで
指定しても画像が実際の大きさより大きくなってしまいます。

あと、移動行列を使って、1進めたとしても2D座標で言うと100ぐらい移動してしまいます。

おそらく、ワールド、ビュー、射影変換によってスクリーン座標に変換
される際におかしくなってると思うんですが、
どのような座標の設定と行列を設定すれば、自分の思い通りの位置
に移動できるのでしょうか?
778デフォルトの名無しさん:2010/09/13(月) 23:19:41
わからない人だけ質問してください
779デフォルトの名無しさん:2010/09/13(月) 23:22:54
>>777
その画像ってスクリーン座標に描いてるんちゃうのん?
780デフォルトの名無しさん:2010/09/13(月) 23:24:51
>>779
何て言ったらいいのか分かりませんが、
変換済座標を使ったときみたいに、スクリーン座標で指定できるような感覚で
オブジェクトの大きさと移動量を設定したいのです。
781デフォルトの名無しさん:2010/09/13(月) 23:31:17
>>780
2Dスプライトを直感的にスクリーン座標と一致させたいってことだよね?
パースペクティブ射影(D3DXMatrixPerspectiveFovLH)じゃなくて
正射影(D3DXMatrixOrthoOffCenterLH)で射影行列作ればいいと思うよ
スクリーンサイズが800x600なら

D3DXMatrixOrthoOffCenterLH( D3DXMATRIX *pOut, 0, 800, 600, 0, FLOAT zn, FLOAT zf);

で左上(0.0)になって分かりやすいんじゃないかな
782デフォルトの名無しさん:2010/09/13(月) 23:35:07
もう憶えてないけどD3DFVF_XYZWとかもそんな感じだったっけ
783デフォルトの名無しさん:2010/09/13(月) 23:37:25
じゃなくてD3DFVF_XYZRHWか
784デフォルトの名無しさん:2010/09/13(月) 23:38:18
>>781
こんな関数あったんですね・・・!
ちょっとやってみます。
785デフォルトの名無しさん:2010/09/13(月) 23:51:21
>>781
ありがとうございました。無事できました。

追加で質問なんですが、普通に射影変換を行ってオブジェクトを移動する場合、
スクリーン座標では横に10移動させたいというときは、
ワールド変換行列や座標の設定はどうすればよいのでしょう?
先ほども言ったように単に10とか設定しても移動しすぎたり、画像がおおきくなってしまいます。

今後3Dを扱っていく上で知っておきたいので、計算式等があれば教えてほしいです。
786デフォルトの名無しさん:2010/09/13(月) 23:59:15
>>785
とりあえずスクリーン座標をワールド座標に変換さえできればいいんかな?
http://marupeke296.com/DXG_No48_PointGroundInScreen.html

ワールド変換 → ビュー変換 → 射影変換 → ビューポート変換

ワールド変換でワールド座標(ワールド座標)
ビュー変換でカメラ座標(カメラのローカル座標)
射影変換で同次クリップ空間(xyが-1〜1になるzは0〜1)
ビューポート変換でスクリーン座標(スクリーンの座標になる)

ワールドからスクリーンまで
スクリーンからワールドが出したいときは全部逆のことする
787デフォルトの名無しさん:2010/09/14(火) 00:01:11
後ろから順に逆行列を掛けてけば出るだろうけど
3Dでスクリーンのドット単位で移動させることに意味があるの?
788デフォルトの名無しさん:2010/09/14(火) 00:09:34
>>787
あれじゃん?定番の
マウスで指したところにオブジェクト置きたいんですが・・・
的な・・・
ゲームじゃそんなねぇけどツールだと結構使うんじゃね?
789デフォルトの名無しさん:2010/09/14(火) 00:09:59
>>786
ありがとうございます。参考にさせていただきます!

>>787
うまくいえないんですが、今まで2Dではキャラの座標値をそのままパラメータに
してしまえば、その数値を変えるだけで思い通りの場所に動かせたんですが、
3Dになると思い通りの場所に動かすのが難しいんですよね。
なので、どうにかして、moveっていうパラメータを1増加させると自分の
思い描く場所に動かせたらいいなと思ったんです。

みなさんは、3Dの場合どの値を移動するときのパラメータとして持たせてるかがすごい疑問です。
移動行列の値でしょうか?
790デフォルトの名無しさん:2010/09/14(火) 00:17:30
>>789
そもそも3D空間における距離の単位は自分で任意に決めていいもの
距離1000の世界の中で1ずつ移動したらゆっくり移動してみえるけど
距離10の世界で1ずつ移動したらめっちゃ速いスピードで動いてるようにみえるでしょ?

まずやるべきことは距離1をどれくらい相当にするかを自分で決めること
それがタバコ1個分でも東京ドーム1個分でも構わないけど
あとはそのサイズにふさわしいモデルを用意したり移動量を与えたりすればいいだけ
791デフォルトの名無しさん:2010/09/14(火) 00:18:27
>>789
そうじゃなくて
こう3Dのバーチャルな閉じた世界を構築してそこをカメラで撮るって概念だから・・・
考え方の根っこの部分が違ってるような希ガス
見た目で設定しようとすると逆にカメラがたまたまその角度だったから、
たまたまそこが調度いい位置に見えただけってフェイクが多い気がする

モデリングソフトでも触ってみたらどうでしょうか?
メタセコイアのフリー版でチュートリアルでもやってみるとか・・・
792デフォルトの名無しさん:2010/09/14(火) 00:24:57
>>790-791
何か少しだけイメージが湧きました。お二人ともありがとうございます。
もっと勉強します。
本当にありがとうございました。
793デフォルトの名無しさん:2010/09/14(火) 10:43:40
画面割れエフェクトって具体的に言うとどうやるんですか?
ひび割れる場所は毎回ランダムでお願いします。
シェーダーはそこそこ使えます。
794デフォルトの名無しさん:2010/09/14(火) 11:16:41
シェーダーで質問です。

頂点シェーダやピクセルシェーダの関数で
BasicVS(float4 in_pos : POSITION,
out float4 out_pos : POSITION)

という関数がよくあるんですが、
float4型になってる時とfloat3型になっているときがあります。

float3の時は
mul(float4(in_pos,1.0f),wvp)
みたいにfloat4型にキャストしてから計算しているんですが、
最初からfloat4の時は、
mul(in_pos,wvp);
と両方とも同じ型なのでこんなにシンプルにかけてしまってます。

完全に後者の方が簡単で書きやすいので後者の方にしたいのですが、
何か違いはありますでしょうか?
最初からfloat型にした場合、そのメンバのwには何が入っているのでしょうか?
795デフォルトの名無しさん:2010/09/14(火) 11:17:32
最初からfloat型にした場合、そのメンバのwには何が入っているのでしょうか?

最初からfloat4型にした場合〜
796デフォルトの名無しさん:2010/09/14(火) 11:24:18
>>793
お前のPCのディスプレイを窓から投げ捨てる。






じゃなくて全体が板ポリ自体の矩形になるよう複数のポリゴンで分割して、
頂点をアニメーション移動させれば良い。
固定テクスチャの場合はそれだけだけど、描画結果を処理したい場合は
フレームバッファの代わりにテクスチャに書き込む、いわゆるポストエフェクト処理が必要。
797デフォルトの名無しさん:2010/09/14(火) 11:42:18
>>796
ありがとうございます。
描画結果を処理したいので、ポストエフェクト処理はするんだろうと思ってました。
テクスチャに画面を描画するまではできるんですが、
複数のポリゴンにランダムで分割して、アニメーション移動させるには
どうすればいいのかが分からないんです。
798デフォルトの名無しさん:2010/09/14(火) 11:52:15
それくらい自分で考えろwww
799デフォルトの名無しさん:2010/09/14(火) 11:54:03
答え:複数のポリゴンにランダムで分割して、アニメーション移動させる
800デフォルトの名無しさん:2010/09/14(火) 11:55:50
わかりました。1日考えてみます。
わからなかったら明日来るのでよろしくお願いします。
801デフォルトの名無しさん:2010/09/14(火) 12:04:04
誰か>>794頼む。
802デフォルトの名無しさん:2010/09/14(火) 12:15:19
>>797
面のランダムな方向に直線を入れる。
お好みの回数繰り返して、直線の交点すべてにに頂点を生成する。
後は頂点アニメーションでお好みの動作をする。その際UVの扱いはご一考。
803デフォルトの名無しさん:2010/09/14(火) 12:19:26
>>802
ありがとうございます。イメージは湧きました。
後は計算できるかにかかってます。
804デフォルトの名無しさん:2010/09/14(火) 13:08:46
>>794
もともとセマンティックPOSITIONで指定されたシェーダー データ型は
float4なのでfloat3にする意味はまったく無い

頂点ストリーム内のデータの成分が対応するシェーダー データ型よりも少ない場合
不足している成分は
w成分は1、それ以外は 0 に初期化される

つまりmul(float4(in_pos,1.0f),wvp)はまったくの無駄
805デフォルトの名無しさん:2010/09/14(火) 13:25:02
>>804
なるほど。ありがとうございます。
本の中でほかにfloat2型のTEXCOORD0型が頂点シェーダではfloat2型で
受け取って、float2型でデータを渡しているのに、
なぜかピクセルシェーダ側ではfloat4型で受け取ってるんですが、
なぜfloat4型で受け取ってるのでしょうか?

これも間違いで、float2型で受け取るのが正しいのでしょうか?

ちなみにこんな感じになってます。

BasicVS(float2 in_tex : TEXCOORD0,out float2 out_tex : TEXCOORD0)
{
省略


BasicPS(float4 in_tex : TEXCOORD0,out float4 out_color : COLOR0)
{
省略


806デフォルトの名無しさん:2010/09/14(火) 14:01:23
シェーダーシュミレートツールとかないのかね?
あれば便利だと思う
807デフォルトの名無しさん:2010/09/14(火) 14:17:03
>>805
別に間違いじゃないし、あまり気にするところではない

TEXCOORD[n]は本来float4型なので
float2にキャストしてるのは最初の2成分しか使用しないという意味でしかない
テクスチャ座標以外の頂点情報を送りたいときに
TEXCOORD1〜を使用するのは良くある手法、別にUとVの2成分だけを送るためのものじゃない

PSでfloat4で受け取っても
>804に書いた通り
足りてない成分はin_tex.z=0,in_tex.w=1に自動で初期化されるだけ


POSITIONの場合はw成分が1か0かで計算結果が変わってしまうので気にするのは正しい
808デフォルトの名無しさん:2010/09/14(火) 14:31:13
>>807
なるほど。本当にありがとうございます!
良い人がいてよかったです!
809デフォルトの名無しさん:2010/09/14(火) 18:03:43
SetTransformとかDrawPrimitiveの度に一回しか効果ないんだけど
プログラミングシェーダー使えばかわめ?
810デフォルトの名無しさん:2010/09/14(火) 18:09:57
日本語でおk
811デフォルトの名無しさん:2010/09/14(火) 18:21:31
できるだろ
812デフォルトの名無しさん:2010/09/14(火) 18:29:27
ポリゴンにテクスチャマッピングするときって、
必ず0.5ピクセル分ずれてるんでしょうか?
813デフォルトの名無しさん:2010/09/14(火) 18:35:55
ピクセルの中心が0,0,0になっていることは分かったんですが、
そのテクスチャ座標を0,0にしたとするとテクスチャの左上部分が
そのピクセルの中心に重なるから0.5ピクセルずれるって本当ですか?
814デフォルトの名無しさん:2010/09/14(火) 18:38:53
偶数だからね
815デフォルトの名無しさん:2010/09/14(火) 18:49:28
0.5ピクセルずれるとなぜボケるんですか?
0.5だけずれた位置にボケずに描画されるなら意味がわかるんですけど、
なぜ「ボケ」るんですか?

意味がわかりません。
816デフォルトの名無しさん:2010/09/14(火) 19:02:23
>>815
誰かボケるなんていった?
817デフォルトの名無しさん:2010/09/14(火) 19:10:10
>>815
ピクセルは最小単位なんで
0.5ピクセルずらすとかできない
818デフォルトの名無しさん:2010/09/14(火) 19:19:13
0.5ずれると左と下の1行が上や右にきてうざってーだけで
ボケるのはフィルタかかってんじゃねーの?
819デフォルトの名無しさん:2010/09/14(火) 20:11:44
言い忘れました。
LINEARをかけた時の場合です。
LINEARをかけてテクスチャマッピングをしたら、ボケちゃうので、
必ず0.5ピクセルテクスチャ座標をずらす必要があるのでしょうか?
820デフォルトの名無しさん:2010/09/14(火) 20:16:13
821デフォルトの名無しさん:2010/09/14(火) 20:23:29
>>819
何いってるのかわからない
ボケる話とずらす話がなんだかマッチしない

バイリニアフィルタかけたときにズレる話が余計酷くなる的なケースは俺の脳みそにあるんだけどw
わかる人の降臨を待とう
822デフォルトの名無しさん:2010/09/14(火) 20:27:12
ピクセルはコンピュータにとって最小の画素単位だ。
それに何らかのフィルターをかければ回りの色に影響されてボケるのは必然だと思うのだがね。
823デフォルトの名無しさん:2010/09/14(火) 20:34:17
本にはピクセルの中心が座標値になってると書いてあるんです。

だから、その位置にテクスチャの角っこが来るようになると0.5ピクセルずれちゃうと。
だから、あらかじめテクスチャ座標を0.5ピクセルプラスした値をその座標の
テクスチャ座標にしろとかいてあるんですよ。
824デフォルトの名無しさん:2010/09/14(火) 20:37:20
馬鹿なんだから余計なことは考えず、ピクセルとマッピングが一致しているDirect3D10以降を使え。
825デフォルトの名無しさん:2010/09/14(火) 20:48:03
>>823
それはずらす話だろ?
ボケる話はどう絡んでくるんだよ
826デフォルトの名無しさん:2010/09/14(火) 21:08:06
ボケる話はですね、どうやらLINEARのフィルタがかかってると、
ピクセル内の色を混ぜ合わせてしまうらしいんです。

つまり、0.5ずれてると、ピクセル内に本来あるべき画像が0.5ずつずれるわけです。
すると本来あるべきピクセルの半分とあるべきでないピクセルの半分とが
混ぜ合わされすこし汚い画像になってしまって、それがボケたように見えるらしいんです。

ピクセルは四角形です。
その中に画像を0.5ピクセルずらして考えてみたら、ああなるほどって分かります。
827デフォルトの名無しさん:2010/09/14(火) 21:15:12
>>826
じゃあ、とりあえずフィルタを切ればズレる話は解決してるんだな?
828デフォルトの名無しさん:2010/09/14(火) 21:20:22
>>827
ずれる話は解決してません。
フィルタを切れば、ボケないだけです。
ずれないようにするには、テクスチャ座標を0.5ピクセル分ずらすしかないようです。
829デフォルトの名無しさん:2010/09/14(火) 21:21:04
あれ?じゃあつまり解決してるってことです。失礼しました。
830デフォルトの名無しさん:2010/09/14(火) 21:23:37
アドレッシングモードにCLAMP指定すれば解決するんだぞ
831デフォルトの名無しさん:2010/09/14(火) 21:26:54
確かにフィルタをかけなければ、CLAMP指定するだけで見た目的には解決しそうですね。
832デフォルトの名無しさん:2010/09/14(火) 21:41:02
\(^o^)/ I'm a dreamer! ひそむパワー!

                      ヘ(^o^)ヘ
                        |∧  私の世界
                    /  /
                (^o^)/
               /(  ) 夢と恋と不安で出来てる
      (^o^) 三  / / >
\     (\\ 三
(/o^)  < \ 三 でも想像もしないもの
( /
/ く 隠れてるはず!
833デフォルトの名無しさん:2010/09/14(火) 22:02:31
>>831
フィルタかけるとまわりの色も混ざるぐらい敷き詰めてるのか?
834デフォルトの名無しさん:2010/09/14(火) 22:10:20
>>833
敷き詰めてるというかテクスチャ自体が色んな色が入ったテクスチャなので
混ざりやすいというか、混ざってしまう部分が多く汚く見えてしまう感じです。
835デフォルトの名無しさん:2010/09/14(火) 22:12:02
テクスチャ作ったデザイナ絞めてくるか
フィルタOFFにするかの話で悩むこっちゃない
836デフォルトの名無しさん:2010/09/14(火) 22:18:35
そうですね。ありがとうございました。
837デフォルトの名無しさん:2010/09/16(木) 09:44:49
DirctXって下位互換だけど切り捨てた技術は新しいバージョンで使えないよね
古いバージョンでつくったやつを動かしてもらうには古いバージョンのランタイムも入れてもらわないとダメなんだよね
838デフォルトの名無しさん:2010/09/16(木) 09:51:39
>>837
DirectX再頒布パッケージは
かなり古いバージョンのDirectXランタイムまで
同時に収録されているんだが、お前は何を言ってるんだ。
839デフォルトの名無しさん:2010/09/16(木) 10:35:39
おうそうだったのか
サンクス
複数入れないとダメなのはSDKだよね
840デフォルトの名無しさん:2010/09/16(木) 13:14:48
また下位互換と上位互換を混同している馬鹿が。
841デフォルトの名無しさん:2010/09/16(木) 17:52:37
シェーダーについて質問なんですが、
SetTechniqueメソッドの呼び出しタイミングがいまいちわからないんです。

SetVectorとかSetmatrixなどを呼び出すまえに呼び出しときゃあいいんですか?
842デフォルトの名無しさん:2010/09/16(木) 17:59:28
>>841
それでいいと思うよ
俺もそうしてるし、それで動いてるし
843デフォルトの名無しさん:2010/09/16(木) 18:20:08
>>842
ありがとうございます。
追加で質問です。

同じエフェクトファイルのパスが三つあるとするじゃないですか。

で、その中でSetStreamSourceとかSetVertexDeclarationとか、
SetMatrixの設定をするじゃないですか?

でまず一つのパスの処理が終わってEndPassで終わらすじゃないですか?

で次のパスの描画を始めるときに、またこのストリームソースの設定とか
もう一度設定しなきゃならないんですか?
一度設定したらずっと有効なんですかね?
844デフォルトの名無しさん:2010/09/16(木) 18:54:22
>>843
シングルスレッドで処理している限りは基本的にされる。

VRAMが足りなかった頃は
1枚の大きな画像を断片化された複数のテクスチャに分割して
テクスチャ1枚分ずつ描いたりするテクニックがあった。
その時はxyz,uv,テクスチャデータ以外は同じパラメータで動かすから
割りと高速に描画できる。
845デフォルトの名無しさん:2010/09/16(木) 18:57:58
>>844
本当にありがとうございました!最高です!
846デフォルトの名無しさん:2010/09/16(木) 19:00:31
一度D3DXを使わずにコンパイル済みシェーダに定数を設定するなりして、
原理を覚えた方がいいよ。
847デフォルトの名無しさん:2010/09/16(木) 20:04:41
>>846
わかりました!やってみます!
848デフォルトの名無しさん:2010/09/16(木) 20:32:51
シェーダーで点光源に設定するにはどうすればいいのでしょうか?
849デフォルトの名無しさん:2010/09/16(木) 21:10:36
そんなのない。計算する
850デフォルトの名無しさん:2010/09/16(木) 21:45:42
そうなんですか。まいったな〜。
851デフォルトの名無しさん:2010/09/16(木) 21:49:21
DirectXってMinGWから使えますか?
852デフォルトの名無しさん:2010/09/16(木) 22:07:01
>>850
だいじょうぶ そんなむずかしくなかったよ
853デフォルトの名無しさん:2010/09/16(木) 22:09:00
>>852
うーん。そうですか。ありがとうございます。
現在はライトがでかすぎるのでどうにかして縮めようと格闘中です。。
854デフォルトの名無しさん:2010/09/16(木) 22:36:56
そういえば視覚的効果無さ杉で久しく使ってないな>点光源、スポットライト等
大抵こんな効果出したいときって加算か荷重平均でそれっぽいモデルを貼り付けたほうがいいよね
855デフォルトの名無しさん:2010/09/17(金) 13:05:13
DirectX初心者です。
質問があります。

m2tsファイルをレンダーして、そのファイルの時間幅を
IMediaSeekingのGetDurationを使用して取得しています。
自分のPCでは問題なく取得できているのですが、特定にPCで取得できません。
違いがあるとすれば
私のPC:WindowsXP SP2
ダメなPC:WindowsXP SP3(もしくはWindows7)
です。
WindowsXP SP2以前のPCでは大丈夫のようです。
XPがSP2からSP3に変わることで何かDLLなりが更新されたのでしょうか?

何か対応策を御存知の方、よろしくお願いします。
856デフォルトの名無しさん:2010/09/17(金) 16:03:00
>>855
>WindowsXP SP2以前のPCでは大丈夫のようです
の根拠は?複数のXPSP2のPCで試して問題ないの?
857デフォルトの名無しさん:2010/09/17(金) 16:08:46
>>856
> >>855
> >WindowsXP SP2以前のPCでは大丈夫のようです
> の根拠は?複数のXPSP2のPCで試して問題ないの?

はい、XP SP2のPC5台ほど試しましたが全部OKでした。
SP3も5台ほど試しましたが全部NGでした。
858デフォルトの名無しさん:2010/09/17(金) 16:28:01
>>855,857
そんなの、必要なコーデックがあるかどうかだろ?
m2tsってことは通常H264/MPEG-4 AVC形式のビデオデータだから
インストール直後のWindowsには入ってないはずだよ。
ゲームで使用したいならメディアにコーデックのインストーラーをつけるべき。

その辺色々とめんどくさいので、
ゲームに使用する動画はWMV9にしておくのがおすすめ。
これで十分綺麗だし、Windows機ならどこでも動く。
859デフォルトの名無しさん:2010/09/17(金) 16:38:50
>>858
> >>855,857
> そんなの、必要なコーデックがあるかどうかだろ?
> m2tsってことは通常H264/MPEG-4 AVC形式のビデオデータだから
> インストール直後のWindowsには入ってないはずだよ。
> ゲームで使用したいならメディアにコーデックのインストーラーをつけるべき。
>
> その辺色々とめんどくさいので、
> ゲームに使用する動画はWMV9にしておくのがおすすめ。
> これで十分綺麗だし、Windows機ならどこでも動く。

仕事で使用してるので、コーデック等全て同じ条件でインストールしています。
(勿論SP3特有のコーデックがあるのは知ってますが)
動いてたSP2をSP3にUpdateすると動かなくなります。

ちなみにフィルタの構築も自分で全部指定してコーディングしていますし
レンダーもオートレンダーではなく、自分で全て構築しています。
フィルターの構築・ピンの接続等でエラーが発生しないのはデバッグモードでも
確認済みで、レンダーは正しく完了しています。

後出しですみません。
動画の再生自体はSP2でもSP3でも問題なく出来ます。
再生してる途中でGetCurrentPositionやGetPositionsを実行すると
正しいカレント位置が返ってきますが、GetDurationが失敗して正しい値が取れません。
(エラーコードが0x80004001が返ってきます)
もう一つSetPositionsを実行するとエラーになります。
(エラーコードが0x80004005が返ってきます)
最初から最後まで再生して、最後の位置でGetPositionsを実行すれば
動画ファイルの時間幅は取得できるのですが、再生前にGetDurationなどで
時間幅情報を取得するのにエラーが返ってくるという状況です。

長文すみません
860デフォルトの名無しさん:2010/09/17(金) 17:43:12
DirectShowと戦うスレ行ったほうがいいんじゃないの?
861デフォルトの名無しさん:2010/09/17(金) 17:45:00
>>859
質問内容は長いが、回答は割りと明確。

>正しいカレント位置が返ってきますが、GetDurationが失敗して正しい値が取れません。
>(エラーコードが0x80004001が返ってきます)
E_NOTIMPL
実装されてない。

>SetPositionsを実行するとエラーになります。
>(エラーコードが0x80004005が返ってきます)
E_FAIL
何か分からんが、とにかく失敗した。

要するに他の操作方法を考えろってことだね。
862デフォルトの名無しさん:2010/09/17(金) 17:50:10
>>851 だれもご存じないですか?
863デフォルトの名無しさん:2010/09/17(金) 17:58:47
864デフォルトの名無しさん:2010/09/17(金) 18:03:58
>>862

>>11,16-17
865デフォルトの名無しさん:2010/09/17(金) 18:07:12
>>860
了解です、そちらに移動して聞いてみます。
866デフォルトの名無しさん:2010/09/17(金) 18:52:40
シェーダーで質問です。

頂点座標とかテクスチャ座標以外の値をTEXCOORD#の頂点デクラレーションを
使えば色んな値を渡せるじゃないですか?

こうやってTEXCOORD#とかいっぱい使っていくと、自分ではどれがテクスチャ座標なのか分かりますが、
ラスタライザはいろんな情報を渡されても、何でテクスチャ座標がこのTEXCOORD#だ、と
理解してくれるのでしょうか?

FLOAT2型の変数でTEXCOORD型のものをテクスチャ座標と判断して
処理してくれるのでしょうか?

わかりにくくてすみません。よろしくお願いします。
867デフォルトの名無しさん:2010/09/17(金) 19:34:57
>>863
ありがとうございました
868デフォルトの名無しさん:2010/09/17(金) 19:46:55
>>866
ラスタライザはもともとそんなの判断しないぞ?
別にはいってきた情報ごとに処理が分かれてるわけじゃないし
なにか勘違いしてないか?

ラスタライザを抜けてきたデータをどう扱うかはピクセルシェーダの仕事だ
869デフォルトの名無しさん:2010/09/17(金) 20:17:20
>>868
ありがとうございます。
でも、頂点シェーダ側でテクスチャ座標をそのまま出力するとするじゃないですか?
でその後、ピクセルシェーダ側で「ピクセルごと」にtex2Dで読んでいくじゃないですか?
ということは、頂点シェーダ側で渡したテクスチャ座標がピクセルごとに自動計算されて分割されたものが
ピクセルシェーダに渡されるから、tex2Dでピクセルごとに処理できるのではないのですか?

根本的に考え方がおかしいんですかね?
870デフォルトの名無しさん:2010/09/17(金) 20:52:40
>>869
ラスタライザの中身はハードによって違うしあまり公開されてないけど
入力されたのがテクスチャ座標だろうが色だろうが法線だろうが
まったく同じ計算式で補完された値が出力されてる
何をなやんでるの?
871デフォルトの名無しさん:2010/09/17(金) 21:01:12
>>870
そうなんですか。もう一回整理しなおしてみます。
本当すみません。ありがとうございます。
872デフォルトの名無しさん:2010/09/17(金) 21:08:09
>>870
逆にそのままピクセルシェーダに渡されるって考えたら
すっきりしました。
なんかすみません。本当にありがとうございました。
873デフォルトの名無しさん:2010/09/17(金) 21:22:09
■■■■■■
■■■■■■
■■■■■■


D3DPT_TRIANGLESTRIPで↑みたいに正方形を敷き詰めようとしたら
行の終わりと次の行の始まりが斜めにつながるんだけどどうして?
874デフォルトの名無しさん:2010/09/17(金) 21:24:06
一筆書き
875デフォルトの名無しさん:2010/09/17(金) 23:47:22
876デフォルトの名無しさん:2010/09/18(土) 17:31:02
頂点ストリームに頂点バッファをセットして描画した後は、
頂点ストリームは一旦空っぽになるんですか?
877デフォルトの名無しさん:2010/09/18(土) 17:45:49
>>876
ならない
入れたらクリアでもしない限り入ったまま
878デフォルトの名無しさん:2010/09/18(土) 17:50:15
質問です。よくインプットデバイス(PADとかJOYとか)をネットワークでトンネリングして
DirectXで動くソフトウェアで遠隔対戦するようなソフトウェアがありますが、
どのように動作しているのでしょうか。(メモリをいじるなど)
端的に言えば、adonisの動作の仕組みを知りたいです。
仮想的なデバイスを用意しているのでしょうか?
879デフォルトの名無しさん:2010/09/18(土) 18:16:12
>>877
ありがとうございます。
頂点デクラレーションの作成でいくつかの頂点ストリームにわけて作ったときに、
必要なものだけセットして使うようにしたいのですが、
いつまでもクリアされなかったら、無駄なものがセットされたままになってしまいます。

いったんクリアするにはどうすればよいのでしょうか?
880デフォルトの名無しさん:2010/09/18(土) 18:17:51
>>878
そんなの、Adonisのreadmeに全部書いてあるじゃん。
公式ドキュメントすら読めないんかね。
881デフォルトの名無しさん:2010/09/18(土) 18:22:38
>>879
d3ddevice->SetStreamSourceは参照する予定の
バッファを設定するだけのことで、参照するのはDrawPrimitiveをかけた瞬間だけ。
心配ならnullでもセットしておけばいいんじゃね?
882デフォルトの名無しさん:2010/09/18(土) 19:09:25
ダイレクトXとダイワマンXってどう違うの?
883デフォルトの名無しさん:2010/09/18(土) 19:52:54
男らしさ
884デフォルトの名無しさん:2010/09/18(土) 22:03:20
産地
885デフォルトの名無しさん:2010/09/19(日) 01:16:02
fc.exeという便利なプログラムがあってだな・・・
886デフォルトの名無しさん:2010/09/19(日) 09:04:01
シェーダー関連で非常に悩んでいます。
こういう頂点デクラレーションを作成したとします。

D3DVERTEXELEMENT9 testelement[]={
{0,0,D3DDECLTYPE_FLOAT3,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_POSITION,0},
{0,12,D3DDECLTYPE_FLOAT2,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_TEXCOORD,0},
{0,20,D3DDECLTYPE_FLOAT3,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_TEXCOORD,1},
{0,32,D3DDECLTYPE_FLOAT1,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_TEXCOORD,2},
D3DDECL_END()};

つまり普通のテクスチャマッピング+それぞれのオブジェクトに対して
それぞれ2つほど値を渡したいんです。

その構造体は以下のように定義しています。

struct VERTEX2{
D3DXVECTOR3 v[4];//座標
D3DXVECTOR2 t[4];//テクスチャ座標
D3DXVECTOR3 vector;//ベクトル
float time;//時間
};

この場合の頂点バッファの作成方法が分かりません。
この構造体のサイズ×作りたい数分のバッファを作ればよいのでしょうか?
そもそも構造体の定義が間違えているのでしょうか?
具体的にやりたいことは、何百個ものオブジェクトを一気にシェーダーに渡して
それぞれ微妙に変化をもたせた動きをさせたいんです。

でも、四角形の頂点は4つでテクスチャ座標も四つで一つのオブジェクトが
できるじゃないですか?
それぞれのオブジェクトに対して、値を与えて処理する方法が
わからないんです。
887デフォルトの名無しさん:2010/09/19(日) 09:27:36
>>886
VERTEX2とかいってその構造体、1頂点の内容じゃないだろ?
v[4]とかt[4]って1頂点の内容じゃなくて四角形の内容だろ?
1頂点に必要な内容と四角形に必要な内容を洗い出してもう一回聞きにきてくんね?

それともその内容で1頂点に対する内容であってるの?
888デフォルトの名無しさん:2010/09/19(日) 09:52:07
>>887
わかりにくい質問なのにすみません。ありがとうございます。

1頂点に必要な内容は
D3DXVECTOR3 v;
D3DXVECTOR2 t;
この頂点を表す座標とそのテクスチャ座標を表す2つだけです。

四角形に必要な内容は
D3DXVECTOR3 vector;//ベクトル
float time;//時間
その四角形の向きを表すベクトルと表示させておく時間の二つです。

上で書いていたVERTEX2という構造体にはv[4],t[4]っていうのもありますが
四角形には最低頂点とテクスチャ座標が4つ必要かと思いまして、
この二つもつけてしまいました。

こんな感じです。

わかりにくくて申し訳ないですが、よろしくお願い致します。
889デフォルトの名無しさん:2010/09/19(日) 12:14:00
なにか根本的な勘違いしてる
1つの頂点情報に4個分の情報を詰め込んでも処理できるわけなかろう?
四角形を描きたいなら頂点は4個必要だ
890デフォルトの名無しさん:2010/09/19(日) 12:32:46
>>889
ありがとうございます。
1頂点に必要な内容は
D3DXVECTOR3 v;//頂点
D3DXVECTOR2 t;//テクスチャ座標
頂点を表す座標とそのテクスチャ座標を表す2つの情報だけです。

これを四個作って、座標をセットしたら四角形を作れるのはわかります。

この四角形一つ一つに、ベクトルや時間の情報を与えてシェーダー側で処理
したいんですが、その際の頂点デクラレーションの定義と頂点バッファの
作成がわからないんです。
891デフォルトの名無しさん:2010/09/19(日) 13:01:01
>ベクトルや時間の情報を与えて

これは頂点情報として持つべき情報なの?
だとしたら変化があるごとに頂点バッファをロックして書き換える予定なの?

それとも
ID3DXEffect::SetVectorとかでソフトウェア側から変化をシェーダーに伝えるの?


質問を変えて最終的に何をしたいのかをちゃんと書いた方がいい希ガス
892デフォルトの名無しさん:2010/09/19(日) 13:31:07
何度もすみません。自分でもすごい分かりにくい質問だと思っています。
簡単に言うとポイントスプライトと同じ事を、普通の4つの頂点を定義して
四角形を作成してやりたと思っています。

ポイントスプライトでやると以下のコードのようになります。
文字数制限のため一旦きります。
893892:2010/09/19(日) 13:37:06
D3DVERTEXELEMENT9 m_vertexElements[] =
{
{0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
{0, 12, D3DDECLTYPE_FLOAT1, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_PSIZE, 0},
{0, 16, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
{0, 28, D3DDECLTYPE_FLOAT1, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1},
{0, 32, D3DDECLTYPE_FLOAT1, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 2},
D3DDECL_END()
};
pD3DDevice->CreateVertexDeclaration(m_vertexElements, &m_pVertexDecl);
// オブジェクトの頂点バッファを生成
if( FAILED( pD3DDevice->CreateVertexBuffer( NUM_SPRITE*sizeof(MY_VERTEX_POS),
D3DUSAGE_WRITEONLY,
0,
D3DPOOL_MANAGED, &m_pVB_POS, NULL ))){
return E_FAIL;
}

//以降は頂点デクラレーションで定義した値を全て埋めていく。
894892:2010/09/19(日) 13:38:18
こんな感じです。

こうすると、頂点シェーダ側では頂点デクラレーションで定義した値を
一つのポイントスプライトごとに受け取って処理できるので、
一つ一つ違った動きをさせることができます。

これと同じことを普通の4つの頂点で作った四角形で再現したいのです。
同じ事をするのは不可能なのでしょうか?

今ふとおもったんですが、頂点座標4つとテクスチャ座標4つの頂点デクラレーションを作成し、
それぞれの値はSetVectorで与えていって、描画したいオブジェクトの数だけ
DrawPrimitiveを連投するしかないのでしょうか?
895デフォルトの名無しさん:2010/09/19(日) 14:16:09
シェーダー・インスタンシングってやつ?
896デフォルトの名無しさん:2010/09/19(日) 14:30:29
なんかまだ出てない後だし情報がありそう
ビルボードを含めたポイントスプライトを完全再現したいの?
それとも頂点を4つにしないとできないような
例えばそれぞれの頂点が別方向に動くみたいななにか特別な理由があるの?
897892:2010/09/19(日) 14:43:42
単にパーティクル系のエフェクトをやりたいと思っています。
ある場所を中心に飛び散る感じのやつです。
ビルボードは含めません。
そのエフェクトだけ再現したいと思っています。

頂点4つにしないと四角形が作れないと思ったから4つの頂点にしようと思いました。

基本的に頂点は全て同じ方向に動かす予定です。
テクスチャマッピングされた四角形のオブジェクトが、
パーッと飛び散る感じです。

分かりにくくてすみません。色々ありがとうございます。
898デフォルトの名無しさん:2010/09/19(日) 15:02:55
>>886
頂点バッファに入れるデータは頂点のデータであって
プリミティブのデータではない。
899デフォルトの名無しさん:2010/09/19(日) 15:09:32
>>894
スキンメッシュ組めばわかるんだけど
そういうのってインデックスもっておいてSetVectorで必要なもん全部渡すんだぜ
例えば1発のDrawPrimitiveで四角形を100個表示するとしたら
100個分の必要なもんをSetVectorで突っ込んでやればいい

このときの頂点バッファは>>888の1頂点に必要な内容で頂点数分作る
四角形に必要な内容はSetVectorで四角形の数の分だけぶち込むことになる

SetVectorで渡したものと頂点バッファで渡したものを結びつける情報が
1頂点に必要な内容の中に必要になるからそれは自分で考えろ的な感じ
900892:2010/09/19(日) 15:25:43
>>899
大分イメージが沸きました!
でもたくさんぶち込むとかなり処理落ちしそうですが、そんなもんなんですかね。
とりあえずガンガンぶち込んでやってみます!
ありがとうございました!
901デフォルトの名無しさん:2010/09/19(日) 15:55:02
100個くらいならいいけどそれ以上になると定数レジスタの数たりなくなんね?
SM3.0の256本はともかくSM2.0だと96本じゃなかったっけ?
微妙に無駄に見えるけど4頂点それぞれに同じ情報突っ込んどいた方が総合的には楽なんじゃない?
902デフォルトの名無しさん:2010/09/19(日) 16:40:13
画面中にパーティクルを何個描画するのかにもよるけど、
現在のビデオチップだと最低5000〜7500プリミティブ位は1回で描画しないと
処理が軽すぎてビデオ側が空回りしてしまう。(CPUの処理能力が先に足りなくなる)
一方、〜100個くらいなら1個1個描画してても別に問題はないだろう。
903デフォルトの名無しさん:2010/09/19(日) 17:10:52
ジオメトリシェーダを使えよ。
904892:2010/09/19(日) 17:18:15
残念ならがバージョン3.0で開発してるのでジオメトリシェーダは使えません。

できれば、1000個ぐらい描画してド派手にしたいんですけどねぇ。
ほかにいい方法が思いつかなくて^^;
905デフォルトの名無しさん:2010/09/20(月) 02:44:35
ファイナルファンタジーXIVのベータ参加したら
デバイスロスト対策してなかった
デバイスロストで強制終了しますってダイアログが表示されて終わり
プロでも厄介なところには手を付けないものなんですか?
906デフォルトの名無しさん:2010/09/20(月) 03:11:34
次行ってみよう!!
907デフォルトの名無しさん:2010/09/20(月) 03:59:13
>>905
DirectX10以降は、基本的にデバイスロストしないんだよ。
DirectX9で実装されてるってのなら知らないけど。
908デフォルトの名無しさん:2010/09/20(月) 07:10:12
デバイスロスト対策手をつけててもリセットするときに、
リソース開放漏れがあったんだろう
909デフォルトの名無しさん:2010/09/20(月) 08:55:31
D3DFVF_XYZWって具体的いうとどんなフォーマットなんですか?
ポイントスプライトって皆さん使ってますか?
ポイントスプライトをサポートしてないビデオカードって今の時代でも多いですか?
910デフォルトの名無しさん:2010/09/20(月) 11:08:53
>>909
人に聞かないでdxinfoで調べろ。
911デフォルトの名無しさん:2010/09/20(月) 14:49:52
>>905
>>907
FF14はDirectX9だったと思う。つまり手抜き。
912デフォルトの名無しさん:2010/09/20(月) 15:03:45
>>892
やっつけだけど試しにやってみた(SDKサンプルSimpleSampleをベース)
1000個くらいならごり押しで平気そうな
てか別にポイントスプライトのほうが軽いんじゃね?と思ったり
最適化とかは考えてないので参考程度に

ttp://www5b.biglobe.ne.jp/~mya_a/dx/SimpleSample.zip
913デフォルトの名無しさん:2010/09/20(月) 15:08:07
ポイントスプライトて方向固定だから弾幕STG作れないじゃん。
てことではないかな。
914デフォルトの名無しさん:2010/09/20(月) 16:27:25
DirectX9でもFF14みたいな凄い奴作れるのか
てことは10や11って必要あるの?
915デフォルトの名無しさん:2010/09/20(月) 16:37:22
14は別にグラフィックは凄くねぇよ
MMO目的だから多数のキャラと背景を同時に描画しても大丈夫なようにポリも荒いし
エフェクトもそんなに凝ってるわけでもない
トータルかかってる手間は凄いとは思うが
916デフォルトの名無しさん:2010/09/20(月) 16:52:42
>>914
具体的に何が凄いのかを明確にしろ。
小学生の感想みたいな曖昧な表現じゃ、
それがDirect3D10以降の追加機能が必要なのか否か判断できない。
917デフォルトの名無しさん:2010/09/20(月) 16:56:19
モデリングやモーションが上手くできていることと、
APIの機能について分けて考えられない人間が、
プログラミングをやっている者にも存在することが残念でならない。
918デフォルトの名無しさん:2010/09/20(月) 17:13:45
素人なんじゃね?
919892:2010/09/20(月) 18:03:33
>>912

本当にありがとうございます!
すごい綺麗ですね・・・!
本当に参考になります!やる気出てきました!
920892:2010/09/20(月) 18:07:24
>>912
コードも私のと全然違ってすごい勉強になります!
すごいレベル高いですね!
本当にありがとうございました!
921デフォルトの名無しさん:2010/09/20(月) 22:39:21
>DirectX10以降は、基本的にデバイスロストしないんだよ。

途中で ビデカ引き抜いても?
922デフォルトの名無しさん:2010/09/20(月) 22:41:06
基本じゃねえだろ
923デフォルトの名無しさん:2010/09/20(月) 22:51:44
グラボ引き抜くみたいなのは正直どうでもいいな
でもどの範囲でデバイスロストしないんだろね?

DirectXの機能使ったフルスクリーンモードの
スクリーンセーバー動いても大丈夫なレベルなのかな?
924デフォルトの名無しさん:2010/09/20(月) 22:55:01
うちの7600はたまによく飛ぶぜ
自動復帰してくれるけど、デバイスロストになるんだろうかな
925デフォルトの名無しさん:2010/09/20(月) 23:10:51
>>924
俺もたまに飛ぶ
「XXXが停止しましたが復帰しました」みたいなメッセージがでるよ
926デフォルトの名無しさん:2010/09/20(月) 23:15:49
DirectX9までのエクスクルーシブモードのフレームバッファは
本当にいつロストするやら信用できない代物だった。
けど10以降(正確には9Ex以降)はこちらからフレームバッファのサイズを
変更掛けたりしない限りはリセットする必要はなくなったな。

Dx9のリセット復帰問題はマジ面倒。
だから商用のゲームエンジンでもウィンドウモードしか使ってない処理系が多い。

が、オレはプロの端くれとして、そんな手抜き実装は許せねえ。
927デフォルトの名無しさん:2010/09/20(月) 23:42:29
ウインドウモードだってロストはするよ。
928デフォルトの名無しさん:2010/09/21(火) 11:43:38
UACのウィンドウが出ると死ぬゲームとかあったなぁ
929デフォルトの名無しさん:2010/09/21(火) 11:45:55
ROだな
930デフォルトの名無しさん:2010/09/21(火) 12:16:03
2分で速攻正解出されるくらいそういう間抜けなゲームは少ないのか・・・
931デフォルトの名無しさん:2010/09/21(火) 18:42:57
FF14βもUACで落ちてたよ。
932デフォルトの名無しさん:2010/09/21(火) 19:57:32
DirectSoundで質問です
IDirectSoundBuffer8を使っているのですが、音の再生が終わったことをどうやって知ればよいのかで悩んでいます。
GetCurrentPositionで、再生ポジションが末尾にあるかどうかで判断するのでしょうか?
933デフォルトの名無しさん:2010/09/21(火) 20:26:56
>>932
DWORD dwStatus = 0;
IDirectSoundBuffer8::GetStatus( &dwStatus ) ;

if ( ( dwStatus & DSBSTATUS_PLAYING ) != 0 ){


}
934デフォルトの名無しさん:2010/09/21(火) 20:33:01
ごめ、これだと再生中がどうかを調べるかになってるわ
終了してるかどうかならifの条件変えてね
935デフォルトの名無しさん:2010/09/21(火) 20:55:24
ありがとうございます!

たった21個のメソッドを、全部見て回っていなかったことを恥ずかしく思います・・・
GetCurrentPositionを見た瞬間に「これでとれってことだよね・・・変なの・・?」と思いこんでしまっていました
丁寧にありがとうございました
936デフォルトの名無しさん:2010/09/26(日) 13:20:46
すみません。背景描画に関してなのですが、
何やら風景をxz平面でブロック化して一定距離のブロックだけを描画してる作品を見かけたのですが、
何かメリットが有るのでしょうか?

風景モデルがバラバラだと、マテリアルの切り替え回数が数倍化したり
負担が多いだけじゃないのかと思えてしまうのですが・・。
937デフォルトの名無しさん:2010/09/26(日) 13:28:13
作者にとっての作りやすさを優先したんじゃないの?
詳しいことは分からないし作者に聞いたほうがいいと思うけど
938デフォルトの名無しさん:2010/09/26(日) 13:44:02
開発当初はオンラインRPGで、
地形をQuatTreeで可視部分だけ描画、さらにはLODも、ローディングも裏でやる・・・・というシステムではあるが、
完成したらバーチャロンモドキになったので意味無かったとか。
そんな感じ。
939デフォルトの名無しさん:2010/09/26(日) 14:31:21
すみません。DirectXのエラーログについてなのですが、
ログレベルをMAXまであげると
  Direct3D9: (WARN) :Ignoring redundant SetRenderState - 19
というログが出るようになりました。
(変更がないのに同じ内容のSetRenderStateを行うと出ている?)

これは無視していても問題ないのでしょうか?
悪い影響があると恐いので…。よろしくお願いします。
940デフォルトの名無しさん:2010/09/26(日) 14:47:22
>>939
昔のビデオカードだとSetRenderStateの空回しは負荷になってたけど
ここ最近のチップならPIXで見る限り何の影響も与えてないように見える
ただ慣習的に不必要なレンダリングステートの変更は避けるようにはしてるけど
941936:2010/09/26(日) 14:55:35
>937-938
ありがとうございます。何か特別主流だったり有効な技術が有るのかと思いましたが
そうでもないのですね。
942デフォルトの名無しさん:2010/09/26(日) 15:19:33
>>940
回答ありがとうございます。
昔はそうだったのですか…。

たいして描画するものがあるわけではないので、
不必要な変更は避けるように努めます。
ありがとうございました。
943デフォルトの名無しさん:2010/09/27(月) 06:16:31
昔このスレで、GPUがオンボなのでマルチレンダリングターゲットできずにトゥーンレンダリングできなかったのですが
モデリングツールだとトゥーンレンダリングでレンダリングできるのはなぜですか?
944デフォルトの名無しさん:2010/09/27(月) 06:32:45
>>943
ハード側の機能使ってないからじゃね?
その場合はCPUが頑張ってる
945デフォルトの名無しさん:2010/09/27(月) 06:40:15
てかトゥーンにマルチレンダリングはいらんでしょ
使えれば多少パフォーマンスが上がるってだけで
普通に2パスか3パスで描けばいいだけじゃね?
946デフォルトの名無しさん:2010/09/27(月) 21:41:25
ソースを出して、いろいろ改造してもらったのですが最終的に全部できなかった思い出があります
その時に貰ったサンプルでたとえばこことか
if ( g_DeviceCaps.PixelShaderVersion < D3DPS_VERSION(PS_MAJOR,PS_MINOR) )
{
::MessageBox( g_hWindow, L"指定のピクセルシェーダーをサポートしていません。", L"エラー", MB_ICONSTOP );
return false;
}
その時にグラボのせいだということを聞いたので、秋になったら買おうと思ってて
そして今買おうとしてるのですが、一番安いので良いのでしょうか?
たとえばこれとかでトゥーンシェーダはできますか?
http://kakaku.com/item/K0000138064/
http://kakaku.com/item/K0000145763/
http://kakaku.com/item/K0000117285/
それと、PS3の二ノ国とかロロナのアトリエみたいなアニメ調?にしたいのですがどうすれば良いですか?グラボ買ってきてトゥーンシェーダにするだけでなりますか?
それと、最新ゲームの3Dのモデリングやシェーダリング?を解説してる本みたいな本があったような気がするのですが何でしたっけ?
947デフォルトの名無しさん:2010/09/27(月) 23:57:59
デバイスの消失に対応する作業きつすぎだから諦めようかな・・・
ユーザーが別ウィンドウをゲーム中に最大化する場合なんてほとんどないからいいよね。
948デフォルトの名無しさん:2010/09/28(火) 00:06:49
Ctrl+Alt+Del押しただけで死ぬけどよろし?
949デフォルトの名無しさん:2010/09/28(火) 00:17:49
>>946
まるで成長していないAAを貼ってやりたいぐらいだが
まあ続けているだけ良しとしよう
950デフォルトの名無しさん:2010/09/28(火) 00:18:12
ゲーム中に間違えてAlt+TabとかWinキーとかよくある話
951デフォルトの名無しさん:2010/09/28(火) 00:21:00
自分のPCだとAlt+TabやWinキー押しても消失しないけど
普通のPCだと消失するんですか?
952デフォルトの名無しさん:2010/09/28(火) 00:25:15
>>951
まだXPなのか?
953デフォルトの名無しさん:2010/09/28(火) 00:26:04
>>951
Vista以降とXP以前で全然挙動が違う。
描画能力周りを突き詰めていくと、nVIDIA GeForce、ATI RADEON、Intel GMEで全部違う。
まあそう言うのは一つ一つつまずいて発見していくんだな。
954デフォルトの名無しさん:2010/09/28(火) 00:31:37
>>952
vistaです。

>>953
そこらへん将来的に統一してほしいですね。
955デフォルトの名無しさん:2010/09/28(火) 00:44:15
>>949
ちょwww答えになってねえwww一つぐらい教えてくれwwwww
956デフォルトの名無しさん:2010/09/28(火) 01:03:01
D3DXCreateLineで作成したオブジェクトも解放しないと
デバイスの復元が出来なかったのか・・・
957デフォルトの名無しさん:2010/09/28(火) 10:49:39
DirectX的に見てPS1と2と3では何が違うのですか?
958デフォルトの名無しさん:2010/09/28(火) 12:35:03
DirectX的に見てとは一体どういうことなのかをまずは説明しろ。
お前の頭の中にある定義をきちんと書かない状態で、他人が理解できるはずがないだろ。
959デフォルトの名無しさん:2010/09/28(火) 12:43:09
PS123ではDairekuto X使ってないよwww
960デフォルトの名無しさん:2010/09/28(火) 13:10:31
>>951-953
フルスクリーンモードだと消失するが、ウインドウだと消失しないだろ
必ず消失するのはCtrl+Alt+Delなので、これで消失復元実験するといい
961デフォルトの名無しさん:2010/09/28(火) 15:08:45
ところがようこそ画面が有効だとCtrl+Alt+Delを押すとタスクマネージャがいきなり起動するだけで
デスクトップが切り替わらないという。
962デフォルトの名無しさん:2010/09/28(火) 15:17:15
画面の色数変更
963デフォルトの名無しさん:2010/09/28(火) 23:52:21
起動したままスリープ状態にする
964デフォルトの名無しさん:2010/09/29(水) 00:35:18
今でも日本のRPGはローポリっぽいのが多いですがそれはアニメ調にするためにPCの処理力は余ってるのにわざとやってるのですか?
それともまだ余裕は無いですか?それか実はテクスチャがそう見えるだけで実はポリゴン数は多いとか
965デフォルトの名無しさん:2010/09/29(水) 01:25:10
具体的に何のRPGだよ
966デフォルトの名無しさん:2010/09/29(水) 01:39:08
directXで作ったゲームってxbox360に簡単に移植出来るんですか?
出来るんなら移植の手順とか分かるサイトありませんか?
967デフォルトの名無しさん:2010/09/29(水) 01:39:38
俺みたいにノートPC搭載のオンボードグラボでしかも仮想PC上で動かすような状態で処理力の余ってるゲームなんてそうそうないはず
FFなんか全然まともに動かないからもっと軽く作ってくれると助かるんだが
つまり何が言いたいのかというと、どういうユーザ層を想定してるのかによって全然違うんじゃないかと
968デフォルトの名無しさん:2010/09/29(水) 01:47:40
>>965
ローポリ ニノ国 アトリエ
ハイポリ 白騎士物語 デモンズソウル FPS全般 のイメージです

自分はローポリゲーを作ってるのですが、モデリングのサイトを見てると俺はこれだけポリゴンが少ないぜどうだ!みたいなサイトがよく見つかるのですが
最近のゲームが明らかに綺麗すぎて、もしかしてもうポリゴンとか気にする必要ないんじゃね?と思い始めて、モデリングは適当でポリゴン多めに作って整形しといて
テクスチャとかライティングの勉強した方が綺麗なローポリゲーになるんじゃね?と思い始めたのですがどうなのでしょうか?
969デフォルトの名無しさん:2010/09/29(水) 01:54:19
ローポリって3000ポリゴンぐらい?
970デフォルトの名無しさん:2010/09/29(水) 01:57:23
LOD(Level of Detail)について調べてみよう
971デフォルトの名無しさん:2010/09/29(水) 02:00:58
>>969
作ってるのは7000ぐらいです
Xファイルはカラーコーディネートの時頂点が分割されてないとできないから頂点数が増えると見たことがあって、分割させないと3000ぐらいになるのですが
972デフォルトの名無しさん:2010/09/29(水) 02:03:04
>>971
俺の中では7000って十分ハイポリのような気がする
973デフォルトの名無しさん:2010/09/29(水) 03:36:11
要はローポリ作る技術が無いから
今のPCスペックならある程度ハイポリでも大丈夫って後押しが欲しいだけでしょ?
974デフォルトの名無しさん:2010/09/29(水) 03:53:29
うん
975デフォルトの名無しさん:2010/09/29(水) 05:02:28
>>968
そのどっちも、ローポリだと思わんが。
DSのニノ国を見てローポリとか言ってるなら、そもそもDSの性能考えろよ。
976デフォルトの名無しさん:2010/09/29(水) 05:03:48
>>975
ラブプラスはDSで5000ポリゴンを実現しているということで
技術的なトピックになったが、
これですら60FPSは出せてないから。
977デフォルトの名無しさん:2010/09/29(水) 05:12:36
ラブプラスは同時にキャラが1体しかでなっから5000でもOK
ローポリだから良いってわけじゃなくて
ターゲットマシンに置いて最大キャラ数で処理落ちしなければいくつでもいいんじゃね?
360だとエフェクトとかばら撒きまくって
最大負荷がかかったときにギリギリ処理落ちが起きるくらいのバランスのが多いんじゃね?
978デフォルトの名無しさん:2010/09/29(水) 05:17:42
ゲーム作るときに想定しうる最大の重さやポリゴン数の上限を設定する指標みたいなのってあるんですか?
それを計算してから各オブジェクトを発注するとか?
979デフォルトの名無しさん:2010/09/29(水) 05:29:12
経験を積むしかない
980デフォルトの名無しさん:2010/09/29(水) 07:51:50
>>978
FFなんて秒間60フレを常に捨てることで派手にしてるときもあんぞ
PSのFFなんて秒間15フレームぐらいで動いてた

そういえば別スレで出てたクロスフェードも秒間30フレームぐらいにあきらめれば
どんなシーンでもクロスフェードできるじゃんなw
981デフォルトの名無しさん:2010/09/29(水) 16:47:55
だれか新スレよろ
982デフォルトの名無しさん:2010/09/29(水) 21:35:22
DIBSectionの中身をテクスチャにコピーしたら
横向きに転がってるんだけどどうして?
983デフォルトの名無しさん:2010/09/29(水) 21:46:40
座標軸が違うから
984デフォルトの名無しさん:2010/09/29(水) 21:50:22
おおー
985デフォルトの名無しさん:2010/09/30(木) 00:38:30
256*128のテクスチャを作ったら
VU座標の(1.0, 0.5)が右下になるのね。

故障?
986デフォルトの名無しさん:2010/09/30(木) 00:42:12
↑VU(1.0, 1.0)を指定すると縦方向が2回繰り返される。
987デフォルトの名無しさん:2010/09/30(木) 00:44:17
だから色情報の書き込まれてる順番が違うんだってば
988デフォルトの名無しさん:2010/09/30(木) 00:45:19
>>985
正方形のテクスチャしか作れなかったんじゃね?
グラボの能力調べたらどう
989デフォルトの名無しさん:2010/09/30(木) 00:46:15
> 256*128のテクスチャを作ったら

これだろw
990デフォルトの名無しさん:2010/09/30(木) 00:47:31
作れたとしても内部では縦256だろうな
991デフォルトの名無しさん:2010/09/30(木) 21:14:40
透過テクスチャを作っているのですが
フォトショで2階調補正して白黒にわけたa_.jpgを作って
DirectXTextureToolでテクスチャを作るという流れなのですが
さかい目のところにドットのつぶつぶが残って全然綺麗にできません。ある程度修正しても汚いです
3Dゲーム用のテクスチャですが512×512で一般的ですか?
どうすれば綺麗にできますか?
992デフォルトの名無しさん:2010/09/30(木) 21:17:21
>>991
それはCGスレに行って聞けw
993デフォルトの名無しさん:2010/09/30(木) 21:19:23
>>992
わかりました!
994デフォルトの名無しさん:2010/09/30(木) 21:25:32
>>991
つかフォトショがあるならわざわざツール使わんでもαチャンネル使ってできるだろう

jpgにした段階で圧縮レベルが高いとモアレがでて境目が綺麗にいかないとかそういうことじゃないのか?
どうしてもツールでやりたいなら未圧縮フォーマットでやらないと
995デフォルトの名無しさん:2010/09/30(木) 21:35:38
2階調補正とかやった時点で絶対綺麗にでないだろw
アンチエイリアスの仕組みでも勉強して円を綺麗に出す方法でも考えてみるべき
996デフォルトの名無しさん:2010/09/30(木) 21:38:33
DDSかTGA使えば綺麗になると思う。っていうかPNGでいいんじゃね?
997デフォルトの名無しさん:2010/09/30(木) 21:42:51
>>995
>>996
ありがとうございます
サイトでそうやって作るって書いてあったのです
じゃあどうすれば良いんでしょうか?
最終的にddsで保存します
PNGでちょっとやってみます
998デフォルトの名無しさん:2010/09/30(木) 21:46:21
ところで痔スレ

【C++】 DirectX初心者質問スレ Part31 【C】
http://hibari.2ch.net/test/read.cgi/tech/1285850721/
999デフォルトの名無しさん:2010/09/30(木) 21:46:38
フォトショにプラグインつっこめばDDS入出力できるくね?
1000デフォルトの名無しさん:2010/09/30(木) 21:48:34
cobol
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。