2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2010/07/04(日) 12:28:55
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
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環境のお客さんは厳然と存在するから、
そのラインで区切ることにどれほどの意味があるかだね。

4 :2: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
>>16
http://www.google.co.jp/search?q=lpVtbl

18 :デフォルトの名無しさん:2010/07/06(火) 01:03:07
>>17
ありがとうございました。無事に動かすことができました。

19 :13: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
直接バックバッファに書き込まずに
いったん別のレンダリングターゲットに描画してから
バックバッファに転送すれば多少はマシかもしれない

22 :13: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フレームで処理する)

24 :13: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で何かしてるとかじゃないの?

39 :13: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で使える機能ですね。

40 :13: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のフルスクリーンモードは捨てがたいです。
やはり、ポップアップメニューを使わずにメニューを自作でデザインするべき
なのだろうか。

41 :13: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
の存在を知れば解決するか?

67 :65: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
モーションでやった方が良いよな

76 :71: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の描画

こんなところで何を描画してるの?

91 :89: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
>>92
http://www.kohgakusha.co.jp/samples/3843/download/chotto_directx11_037.jpg

94 :デフォルトの名無しさん:2010/07/12(月) 23:50:01
http://www.kohgakusha.co.jp/books/detail/978-4-7775-1501-1

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
説明の通りに
http://msdn.microsoft.com/en-us/library/ff476340.aspx

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
だろ

111 :77: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と比べれば低速だが、問題になるほど
遅くなるわけじゃない。

135 :128: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
なんでエンコードして表示する必要があるのかさっぱり意味不明。
エンコードの意味は分かっているのか?

156 :150:2010/07/21(水) 08:10:38
DirectShowで使用するコーデックをシステムからじゃなく
こちらが指定したフォルダの中にある物を使うという事だったんですが
そういう事は出来ないという認識でよいですか?

後、ムービーテクスチャは連番静止画データに比べて
負荷が高いのですか?サンプル見た感じだと良く分かりませんでした。


157 :150: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
ジャマイカ?の人は黙ってて下さい

178 :150: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
なんか質問者と回答の半分くらいのホストが一緒なんだけど自作自演ってことでよろしいか?

188 :150: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を別に用意するかして対応する。

200 :198: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
http://www.google.co.jp/search?num=100&hl=ja&q=%22%83%7C%83%8A%83S%83%93%83X%83v%83%89%83C%83g%22

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
なんでお前が仕切ってんだよ

229 :224: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だが確かにいくらなんでもスレ違いだからやめとく。回転行列の基礎とか見直してみれば

231 :224: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
俺が見てきた限りでは、そういう人にちゃんとした実力のある人は居ないな。
手が動くのは早いし実装出来てはいるんだけど
他の人の設計を破壊したり汎用性を損なうようなコードしか書けない。
ていうかコピペが異様に多い。
そもそもプログラマに向いてないタイプじゃないかね。

107 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)