【C++】 DirectX初心者質問スレ Part30 【C】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
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/
0002デフォルトの名無しさん
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)を使用して作った完成品の
配布には、「再頒布パッケージの同封」は必要なのでしょうか。
それとも、「再頒布パッケージの同封」はしなくても動作するけど、”規則上”同封が必要なのでしょうか。
上記環境で、再頒布パッケージを同封する必要性がわかりません。
変な質問をしてすみませんが、お教えいただけないでしょうか。
0003デフォルトの名無しさん
2010/07/04(日) 19:28:18ご指名があったのでお答えしよう。
D3DXはユーザー空間ライブラリの範疇にあるものでDirect3Dのコアに含まれているわけではないけれど
Direct3Dの一部として扱われているヘルパーライブラリだ。
2005 Feb以前はstatic libraryとして提供されていたが、それ以降はDLLとして提供されているので
ユーザー側のPCに同じDLLが存在しないといけない。
(ゲーム側にd3dx9_xx.dllを単体で添付することは禁じられている)
従ってゲーム本体にDirectX再頒布パッケージを添付して配布することになる。
それにXP sp1以前のPC環境のお客さんは厳然と存在するから、
そのラインで区切ることにどれほどの意味があるかだね。
00042
2010/07/04(日) 20:33:04レスありがとうございます。
2005 Feb以前の「DirectX 9.0 SDK Update - (Summer 2004)」で開発しているから、
WinXP SP2以降に完成品exeを配布する場合は、DirectX再頒布パッケージは
添付しなくていいのですね。了解しました。
>それにXP sp1以前のPC環境のお客さんは厳然と存在するから、
>そのラインで区切ることにどれほどの意味があるかだね。
XP SP2は、もうすぐ(2010年7月13日に)マイクロソフト社のサポートが終了するから、
アプリを提供する側は、OSサポート終了を理由に堂々と「OSのサポートが終了して
いるから、うちのアプリは、そのOSを正式にはサポートしません。」っていえるかも。
0005デフォルトの名無しさん
2010/07/04(日) 20:43:25まあ間違っちゃいないが、そういうやり方は賛成しかねるな。
DirectXを使用する製品は開発に使用したDirectXの再頒布パッケージを添付して配布することになってるんだし、
一般的に言ってより新しいバージョンのライブラリがあるならそれを使うべきだ。
そうやってこの国の製品が守旧に陥っているのはちとなー。
未だにDirectDrawやGDIしか使ってないゲームエンジンがゴロゴロいて、
しかも幅を利かせているのは納得行かないものがある。
0006デフォルトの名無しさん
2010/07/04(日) 21:38:59作り手が望まないなら、新しい技術なんて必要ないじゃん。
ドット絵をポチポチ打って作るゲームの何が悪い!?
0007デフォルトの名無しさん
2010/07/04(日) 21:46:470008デフォルトの名無しさん
2010/07/04(日) 21:52:030009デフォルトの名無しさん
2010/07/04(日) 22:02:330010デフォルトの名無しさん
2010/07/04(日) 22:59:020011デフォルトの名無しさん
2010/07/05(月) 23:41:51Direct3DCreateは通るのですが、CreateDeviceやReleaseを行うとコンパイル時に「そんな関数はない」というエラーが返ってきます。
前にBCCでDirectXを使おうとした時も同じ内容のエラーを渡された記憶があるので、何か初歩的なミスがあるように思うのですが、見当がつきません。
考えられる原因として、どのようなものがあるでしょうか。やはりmakefile内のインクルードやライブラリでしょうか?
ごく初歩的な質問で申し訳ないのですが、どなたか知恵を貸していただけませんか。
0012デフォルトの名無しさん
2010/07/05(月) 23:49:23とりあえずエラーの内容くらいちゃんと書こう
0013デフォルトの名無しさん
2010/07/05(月) 23:52:10「フルスクリーンモード時に画面上をマウスで右クリックしたときにポップアップメニューを表示する」
(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の操作を実現したいので、メニューを自作でデザインするのは
最終手段だと考えています。
よろしくお願いします。
0014デフォルトの名無しさん
2010/07/05(月) 23:57:390015デフォルトの名無しさん
2010/07/06(火) 00:10:08SetDialogBoxMode
0016デフォルトの名無しさん
2010/07/06(火) 00:33:01例.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は今や使えないのでしょうか?
0017デフォルトの名無しさん
2010/07/06(火) 00:35:35http://www.google.co.jp/search?q=lpVtbl
0018デフォルトの名無しさん
2010/07/06(火) 01:03:07ありがとうございました。無事に動かすことができました。
001913
2010/07/06(火) 03:20:05ありがとうございます。
SetDialogBoxMode を使ってポップアップメニューは表示できました。
しかし、SetDialogBoxModeの使用必須条件である
D3DPRESENTFLAG_LOCKABLE_BACKBUFFER を設定すると
グラフィックの描画パフォーマンスが著しく低下してしまい
目標の描画速度を達成できませんでした。
グラフィックの描画方法(ID3DXSprite)は変更したくありません。
パフォーマンスを落とさずに実装する方法はないでしょうか。
0020デフォルトの名無しさん
2010/07/06(火) 03:44:35DirectXのメリットを捨ててGDI互換でやろうってんだからそれは無茶な話
DirectX10以降を使うか最終手段しかないんじゃない?
0021デフォルトの名無しさん
2010/07/06(火) 03:51:06直接バックバッファに書き込まずに
いったん別のレンダリングターゲットに描画してから
バックバッファに転送すれば多少はマシかもしれない
002213
2010/07/06(火) 08:08:04ご提案ありがとうございます。
結局、DirectXのフルスクリーンモードを使うのはやめて、ウインドウモードで動いている状態を
Win32 APIの ChangeDisplaySettings を使用し画面の解像度を変えて表示する(見た目は
フルスクリーンに見える)という方法で実装しました。
DirectXのフルスクリーンモードの長所である「DirectXのアクセラレーションがフルに効く」は
諦めました。(性能の悪いグラフィックチップでは、ウインドウモードは処理落ちして、
DirectXのフルスクリーンでは処理落ちしなかったのですが、ChangeDisplaySettingsによる
フルスクリーンの実装は、ウインドウモード同様に処理落ちしてしまうようになりました。)
D3DPRESENTFLAG_LOCKABLE_BACKBUFFERを指定していたときは、RADEON HD4650でも
処理落ちしていましたが、ChangeDisplaySettingsを使う方法では、ウインドウモードと同様に
動作して、ポップアップメニューも正常にされるようになりました。
0023デフォルトの名無しさん
2010/07/06(火) 09:46:57ほほ〜、おれはSetDialogBoxModeを使う方法で実装しているが、
D3DPRESENTFLAG_LOCKABLE_BACKBUFFERをセットすると処理能力が落ちるのか。気付かなかったな。
とはいえi82845gでもそれなりの速度が出てるからとりあえずのところ不満はないんだが。
1フレーム当たりどれくらいの描画量なのか教えてくれるとうれしい。
(当方は800x600基準、最大6画面分くらいの2D描画を1フレームで処理する)
002413
2010/07/06(火) 11:30:16下記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を使っているということは標準のマウスカーソルを
使っているかも知れませんね。実は�@のマシンのみでマウスカーソルが
点滅する不具合がでるのですが、解決方法をご存知でしたら
教えていただけないでしょうか。
0025デフォルトの名無しさん
2010/07/06(火) 12:01:20マウスカーソルを自分で描画する以外の解決方法はない。
0026デフォルトの名無しさん
2010/07/06(火) 14:21:47GCCとG++のどちらでコンパイルすればよいのでしょうか。
0027デフォルトの名無しさん
2010/07/06(火) 14:27:390028デフォルトの名無しさん
2010/07/06(火) 14:32:440029デフォルトの名無しさん
2010/07/06(火) 14:48:10フリーソフトならともかく、製品を出すつもりならその3つの環境じゃ不足してるよ。
Intel、Radeon、GeForce、それぞれに癖があって特徴的な挙動があるので
3系列全てでテストする必要がある。
で、HD4650でその程度の描画量で60FPS出ないのはちょっと考えにくい。
ひょっとしてVistaでテストしていて最大化表示とかやってない?
Vistaのスタートボタンは微妙にデスクトップにかぶっていて、
FPSの維持が必要な描画を阻害してくれる。
(だからプライマリ以外のディスプレイだと問題ない)
それから、Vista以降もサポートするならDirect3D9Exオススメ。
格段に描画が速く、かつ安定する。
0030デフォルトの名無しさん
2010/07/06(火) 15:23:00そうなん?
0031デフォルトの名無しさん
2010/07/06(火) 17:38:410032デフォルトの名無しさん
2010/07/06(火) 17:48:33SetDialogBoxModeにして遅くなったのなら分かるが。
0033デフォルトの名無しさん
2010/07/06(火) 18:23:50SetDialogBoxModeは完全に描画止まってしまうので、遅くなるもないよ。
0034デフォルトの名無しさん
2010/07/06(火) 18:47:550035デフォルトの名無しさん
2010/07/06(火) 19:12:39描画は止まらないよ。
0036デフォルトの名無しさん
2010/07/06(火) 19:22:550037デフォルトの名無しさん
2010/07/06(火) 19:24:200038デフォルトの名無しさん
2010/07/06(火) 19:25:09WM_PAINTで何かしてるとかじゃないの?
003913
2010/07/07(水) 04:24:06お教えいただきありがとうございます。
>>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で使える機能ですね。
004013
2010/07/07(水) 05:03:41D3DPRESENTFLAG_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のフルスクリーンモードは捨てがたいです。
やはり、ポップアップメニューを使わずにメニューを自作でデザインするべき
なのだろうか。
004113
2010/07/07(水) 05:34:41すみません訂正です。検証不足でした。
D3DPRESENTFLAG_LOCKABLE_BACKBUFFERでは
見た目では描画速度の低下は見られませんでした。
SetDialogBoxModeを使用した場合に明らかに描画速度の
低下が見られました。
0042デフォルトの名無しさん
2010/07/07(水) 08:38:48突っ込みどころが多すぎるが、フリーソフト作ってるだけならまあ好きにやれよ。
>自分の作成したプログラム(3D機能で2Dを描画する)は、なぜか描画がモチッとして遅いです。
描画がなぜ遅いかはPIX for Windowsで調べるといい。
それから複数の絵を1枚のテクスチャにまとめた上で1つのポリゴンとして連結した上で一度に描画すると早くなるぞ。
そういうことをやろうとしたらID3DXSpriteでは機能が足りなくなるかも(あるいはひょっとしたら内部でやってくれてるかも)
それからDirectDraw/Direct3Dで60FPSバリバリ書くプログラムはWM_PAINTは単に無視するように書くんだぞ。
君は数年間何を学んできたんだ。
0043デフォルトの名無しさん
2010/07/07(水) 08:44:330044デフォルトの名無しさん
2010/07/07(水) 20:19:190045デフォルトの名無しさん
2010/07/08(木) 02:52:15ID3DXMeshインターフェイスへのポインタが引数にならずに、
ID3DXMeshインターフェイスへのポインタのアドレスが引数なのは、
呼び出す時に
D3DXCreateMesh(略,&pMesh);
こうやって&をつけさせて出力であることをはっきりさせるためですか?
それともそれ以外の理由もあるのでしょうか?
0046デフォルトの名無しさん
2010/07/08(木) 04:35:28COMのインターフェースは元々ポインタで扱うものなので、インターフェースを受け取る場合は
ポインタのポインタになる。
理由もなにも、そうでなきゃいけない。
0047デフォルトの名無しさん
2010/07/08(木) 07:22:450048デフォルトの名無しさん
2010/07/08(木) 08:29:100049デフォルトの名無しさん
2010/07/08(木) 09:05:24内部でインターフェイス分のメモリを確保するんだから
単にポインタ渡したってそこから連続でメモリがあいてる保障なんてないだろ?
だから確保できたポインタのアドレスが返るようになってんだよ
0050デフォルトの名無しさん
2010/07/08(木) 09:43:35&をつけなかった場合、渡すのはポインタ変数の中身だ。
そして初期化も何もしていなければ、渡されるのは不定値。
そんな物を受け取ってどうしろと言うのか。
0051デフォルトの名無しさん
2010/07/08(木) 16:47:570052デフォルトの名無しさん
2010/07/08(木) 19:23:140053デフォルトの名無しさん
2010/07/08(木) 20:47:04頂点にはキャラの座標やカメラ位置の座標が入っているのですが
ワールド座標のSetTranformやEffect->SetMatrixには何を入れれば良いのでしょうか?
0054デフォルトの名無しさん
2010/07/08(木) 20:58:210055デフォルトの名無しさん
2010/07/08(木) 21:24:35情報が少なすぎ、そしてその少ない情報に意味が無さすぎ
DrawPrimitiveUPで線を引きたいのは分かった
じゃあ、固定機能だけで描きたいの?シェーダー使って描くの?
線は3D空間に引きたいの?スクリーン座標で指定して引きたいの?
質問するときは
勝手に問題点を自分で限定しないで
やりたいことと何が分からないのかを明確にすること
0056デフォルトの名無しさん
2010/07/08(木) 21:41:54ようするに、わからないんですね
0057デフォルトの名無しさん
2010/07/08(木) 21:59:250058デフォルトの名無しさん
2010/07/08(木) 22:01:34はい
ごめんなさい
固定機能の時とシェーダの時で何を入れれば良いのか教えてください
線は3D空間に引きたいです
0059デフォルトの名無しさん
2010/07/08(木) 22:18:203Dならそんなに難しくない
シェーダーに関しては中身みないとなんともいえないので半分エスパーになるけど
すでにキャラクターは表示できてるんだよね?
だとしたらキャラクターの描画に使ったワールド行列を単位行列に置き換えて
それ以外はキャラの描画とまったく同じ手順で指定すればいけるんじゃない?
具体的な方法が知りたければ描画部分のソースを書いてくれ
0060デフォルトの名無しさん
2010/07/08(木) 22:20:170061デフォルトの名無しさん
2010/07/08(木) 22:28:120062デフォルトの名無しさん
2010/07/08(木) 23:40:17ありがとうございます
>&をつけなかった場合、渡すのはポインタ変数の中身だ。
すさまじい勘違いでしたっorz
ちょっとC++に慣れて来てたと思ったらこんな初歩ががが
別な話になってしまいますが、
COMについて知っておくと結構いいことがありますか?
それともそんなことやるなら別なことをやった方がいいですか?
0063デフォルトの名無しさん
2010/07/08(木) 23:46:08そこまで突っ込んだことは要らないと思うけど
COMついでにちょっとスマートポインタだけググっとくと後々便利かもしれない
0064デフォルトの名無しさん
2010/07/08(木) 23:58:27参考になりまっす!
了解ですっ
0065デフォルトの名無しさん
2010/07/09(金) 03:13:48現在SDK SampleのTiny4のコードをほぼ原型通りの使い、1ファイルにモデルとモーションを詰めて利用していました。
そこからモデルとモーション1個1個を全て別々のファイルにし、モデルにモーションを適用させたく思ったのですが
適応してくれません・・orz
読み込み時点でモデルを保管するLPD3DXFRAMEと、モーションを保管するLPD3DXANIMATIONCONTROLLERを別々にはしてはいるのですが、
どこでこの2つが関わっているのかすら理解できず、別々に読み込んでもモーションを適用する事ができずに居ます。
私はどこらへんが理解できていないのでしょうか。 何かご助言を頂けますと幸いです。。orz
0066デフォルトの名無しさん
2010/07/09(金) 03:29:59D3DXFrameRegisterNamedMatrices
の存在を知れば解決するか?
0068デフォルトの名無しさん
2010/07/09(金) 16:40:580069デフォルトの名無しさん
2010/07/09(金) 17:03:090070デフォルトの名無しさん
2010/07/09(金) 20:00:020071デフォルトの名無しさん
2010/07/09(金) 23:43:24ポイントスプライトを使い動きは計算して行うのと、
モーション付きモデルとして再生するだけにしてしまう2択の場合。
現状、開発が楽な後者でやるつもりなのですが、大量描画する場合は前者の方が軽かったりするのでしょうか?
0072デフォルトの名無しさん
2010/07/10(土) 00:08:540073デフォルトの名無しさん
2010/07/10(土) 00:29:38大量に描画するなら
1つにつき座標変換が一回で済むポイントスプライトのが軽いでしょ
動きを頂点シェーダで計算すれば更に速い
でも>>72のアイデアも面白いと思った
0074デフォルトの名無しさん
2010/07/10(土) 01:19:19直線運動とか放物線とかSin波とか
終始ある程度幾何学的な動きならぶっちゃけ計算の方がむしろ楽だと思う
キーフレームごとに動きが有機的に変わるとかなら
計算でやると例えその方が軽くても非常にメンドイのでモーションでやった方が良いと思う
0075デフォルトの名無しさん
2010/07/10(土) 01:29:02007671
2010/07/10(土) 15:35:08色々な情報ありがとうございます。ポイントスプライトと計算の方が良さそうなのですね。
ただし複雑な動きはモーションの方が手っ取り早い と。
とても勉強になりました。シェーダに関しても地道に勉強を進めようと思います。ありがとうございました。
0077名無しさん@そうだ選挙に行こう
2010/07/11(日) 06:02:50DrawIndexedPrimitiveで例外が発生します。
返り値も-2005530516という値です。
この関数が失敗する原因に心当たりがある方がいればご教授ください。
0078名無しさん@そうだ選挙に行こう
2010/07/11(日) 09:47:23Name: D3DERR_INVALIDCALL
Description: Invalid call
Severity code: Failed
Facility Code: FACILITY_D3D (2166)
Error Code: 0x086c (2156)
呼び出しが無効です
そもそもデバイスの生成に失敗しててNULLポインタ指してるとか
引数が間違ってるとかくだらない理由
たぶんそこで例外がでるからDrawIndexedPrimitiveに失敗してるって勝手に思い込んでるだけで
もっと前の段階で何か失敗してる、ちゃんとデバックしろ
デバイスや頂点バッファ、インデックスバッファは本当にちゃんと生成できてるのか?
0079名無しさん@そうだ選挙に行こう
2010/07/11(日) 17:50:440080名無しさん@そうだ選挙に行こう
2010/07/11(日) 18:45:44とかじゃないの?
コードがないから誰も的確な答えとか出せないと思うけどね。
0081名無しさん@そうだ選挙に行こう
2010/07/11(日) 18:59:12引数の半分くらいは重要ではないしちょっとくらい大目に頂点数やプリミティブ数を指定しても動いちゃう
失敗するとすれば
インデックス配列が設定されていない場合、IDirect3DDevice9::DrawIndexedPrimitive は失敗する。
D3DPRIMITIVETYPE 列挙型の D3DPT_POINTLIST メンバはサポートされておらず、このメソッドの有効な型ではない。
くらいだろ
IDirect3DDevice9::SetIndicesしてないとか初歩的なミスだと思われる
0082名無しさん@そうだ選挙に行こう
2010/07/11(日) 19:18:42詳しい説明よろ〜
0083名無しさん@そうだ選挙に行こう
2010/07/11(日) 19:22:200084名無しさん@そうだ選挙に行こう
2010/07/11(日) 19:31:59すみません。
今教えて頂いたところを中心に調べています。
0085名無しさん@そうだ選挙に行こう
2010/07/11(日) 19:37:290086名無しさん@そうだ選挙に行こう
2010/07/11(日) 19:40:580087名無しさん@そうだ選挙に行こう
2010/07/11(日) 19:41:170088名無しさん@そうだ選挙に行こう
2010/07/11(日) 21:00:56だろ。の人はまだ荒らしてるのか
0089デフォルトの名無しさん
2010/07/12(月) 14:33:39かったのですが、ハードウェアカーソルではない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;
▲▲▲
以上、よろしくお願いします。
0090デフォルトの名無しさん
2010/07/12(月) 16:27:26こんなところで何を描画してるの?
009189
2010/07/12(月) 18:40:56Renderは、DirectXのすべての描画を行っています。
通常はアイドルでRenderを呼び出します。
しかし、以下図説の操作をするとアイドルに入らなくなり描画が止まります。
http://jishinkuma.aa0.netvolante.jp/etc/seigyo.png
アイドルのRenderではスプライトカーソルを描画していますが、上記操作をすると、
アイドルに入らなくなり描画が止まりスプライトマウスカーソルが固定位置で
表示されっぱなしのまま標準マウスカーソルも表示されてしまいます。
(マウスカーソルが2個表示される不具合。)
elseの中には、アイドルに入らなくなり描画が止まりスプライトマウスカーソルが
固定位置で表示されっぱなしの状態で入ってきます。elseの中のRenderでは、
事前にSetDispFlag(0)を設定することにより、スプライトマウスカーソル以外の
描画をします。(このRenderでスプライトマウスカーソルを画面から消去します。)
0092デフォルトの名無しさん
2010/07/12(月) 23:29:27ttp://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++なら買おうと思いますが。
0093デフォルトの名無しさん
2010/07/12(月) 23:32:07http://www.kohgakusha.co.jp/samples/3843/download/chotto_directx11_037.jpg
0094デフォルトの名無しさん
2010/07/12(月) 23:50:010095デフォルトの名無しさん
2010/07/13(火) 00:19:18ありがとさんです
0096デフォルトの名無しさん
2010/07/13(火) 05:20:110097デフォルトの名無しさん
2010/07/13(火) 10:07:260098デフォルトの名無しさん
2010/07/13(火) 11:24:31金の無駄としか思えない。
0099デフォルトの名無しさん
2010/07/13(火) 15:38:270100デフォルトの名無しさん
2010/07/13(火) 15:47:20http://msdn.microsoft.com/en-us/library/ff476340.aspx
0101デフォルトの名無しさん
2010/07/13(火) 15:54:13Samples\C++\Direct3D11\DetailTessellation11 (August 2009)
Samples\C++\Direct3D11\DecalTessellation11 (June 2010)
0102デフォルトの名無しさん
2010/07/13(火) 16:24:420103デフォルトの名無しさん
2010/07/13(火) 16:52:290104デフォルトの名無しさん
2010/07/13(火) 18:33:52最初のポリゴン1個を表示するのがどれほど大変か
ここにいる人なら実感してると思う。
なので最小のDirectXプログラムとか、三角ポリゴンを表示するだけのプログラムとか
できてるのがあればありがたい。
0105デフォルトの名無しさん
2010/07/13(火) 20:57:510106デフォルトの名無しさん
2010/07/13(火) 23:05:230107デフォルトの名無しさん
2010/07/13(火) 23:08:190108デフォルトの名無しさん
2010/07/13(火) 23:42:370109デフォルトの名無しさん
2010/07/14(水) 08:02:460110デフォルトの名無しさん
2010/07/14(水) 14:11:16011177
2010/07/14(水) 19:48:24>>80
>>81
解決しました。
問題はDirect3DDeviceの作成で、
D3DCREATE_MIXED_VERTEXPROCESSINGを使っていたのが原因でした。
D3DCREATE_HARDWARE_VERTEXPROCESSINGに変更したところすんなり描画できました。
D3DCREATE_MIXED_VERTEXPROCESSINGを使っていた場合、
ソフトウェアかハードウェア描画の切り替えを明示的に変更したらよいそうですがまだ試していません。
0112デフォルトの名無しさん
2010/07/14(水) 19:53:23肝心な箇所をピックアップしてくれた書籍を購入した方が早いと思います。
でもまあ、ソースを読む力がある人は必要ないんじゃないんですかね。
0113デフォルトの名無しさん
2010/07/14(水) 20:17:05OS:Windows7
開発環境:Visual C++ 2010 Express
開発アプリ:ゲーム
mp3を演奏する為にDirectShowを使用しているのですが、
IGraphBuilder::RenderFile()を使用すると、
IGraphBuilderとそこから取得した全インターフェースをRelease()しても
アプリケーション終了後に必ずそのアプリケーション名プロセスが残ってしまいます。
終了時にイベントキューを空にしたり、
WaitForCompletion(INFINITE, code)を使ってみても駄目でした。
実は昨月にVistaからWindows7に変更したのですが、同コードでも
Vistaではプロセスが残らなかったのに、Windows7では発生するようになりました。
どうかプロセスが残らずにFilterGraph関連物を終了できる方法を教えてくださいませ。
0114デフォルトの名無しさん
2010/07/14(水) 20:24:24Release()した前後でプロセスに何が起きてるのかデバッガで調べてみれ。
0115デフォルトの名無しさん
2010/07/14(水) 21:58:15いえいえ
0116デフォルトの名無しさん
2010/07/14(水) 23:28:13vshost.exeのことか?
0117デフォルトの名無しさん
2010/07/14(水) 23:41:48こっちの環境(Win7 VS2008)だとMFCのバージョンはプロセスは残ってない
C#のバージョンは、vshostが常駐しているみたい
どちらもDirectShowを使ったmp3プレーヤー
0118デフォルトの名無しさん
2010/07/15(木) 07:36:570119デフォルトの名無しさん
2010/07/15(木) 12:21:45試しにIGraphBuilderを使ってみたけどプロセスは残らなかけどなぁ。
DirectShowを使わなかったらプロセスは残るの?
0120デフォルトの名無しさん
2010/07/15(木) 20:09:030121デフォルトの名無しさん
2010/07/16(金) 18:54:14LPDIRECTSOUND3DBUFFERをSetPositionとかで移動させてる最中、
これをストリームバッファで録音とかできないの?
0122デフォルトの名無しさん
2010/07/16(金) 21:53:520123デフォルトの名無しさん
2010/07/17(土) 13:36:560124デフォルトの名無しさん
2010/07/17(土) 14:21:53自前で読み込んで表示することは当然可能だが
0125デフォルトの名無しさん
2010/07/17(土) 15:59:520126デフォルトの名無しさん
2010/07/17(土) 19:41:010127デフォルトの名無しさん
2010/07/17(土) 21:50:34あんた最低だな
0128デフォルトの名無しさん
2010/07/18(日) 13:58:22DrawPrimitiveUpなどUp系は内部でCreateVertexBufferなどしてて
低速だと聞きました
実際自作ゲームを作る際、Upは可能な限り避けるべきですか?
1、気にせずガンガン使う
2、デバックの時楽するためだけに使う
3、絶対に使わない
などの考え方があると思いますが、どのあたりが自然でしょうか?
0129デフォルトの名無しさん
2010/07/18(日) 14:05:42これが一番自然だろ。
なんで選択肢に入っていないんだ?
0130デフォルトの名無しさん
2010/07/18(日) 14:35:03本家に勝てるものが作れるなら自作版を使えばいいが、初心者には到底ムリだろうな。
0131デフォルトの名無しさん
2010/07/18(日) 14:39:13DX10, DX11で切り捨てられた贅肉の部分に含まれるわけで、
将来DX11やる人はそれくらい出来て当然。
0132デフォルトの名無しさん
2010/07/18(日) 15:26:54速度の問題じゃないな、比較してUpが遅いのはわかってる訳で
>>131
出来るか出来ないかの問題でもないわなあ
0133デフォルトの名無しさん
2010/07/18(日) 15:40:24つまり
「命令を入力してください、指示がないと動けません」
ということなのか?
0134デフォルトの名無しさん
2010/07/18(日) 15:53:20気にせず使っていいよ。
適切に使用したVertexBufferと比べれば低速だが、問題になるほど
遅くなるわけじゃない。
0135128
2010/07/18(日) 15:58:01ありがとうございましたっ
0136デフォルトの名無しさん
2010/07/18(日) 16:03:51相変わらず説教かw
0137デフォルトの名無しさん
2010/07/18(日) 19:17:10まずはゲーム作ってできてから考えろよw
0138デフォルトの名無しさん
2010/07/18(日) 19:47:55どんなゲームでもあるでしょう。
だからUP系やそれと同等の技術の需要はあるよ。
0139デフォルトの名無しさん
2010/07/18(日) 19:53:12そういうことをしないための頂点バッファな訳で
0140デフォルトの名無しさん
2010/07/18(日) 20:02:35最適化も出来て、ハードウェア支援も受けられるのに
UP系使うなんて手抜き以外のなんでもないだろ。
どう?どう?似てる?w
0141デフォルトの名無しさん
2010/07/18(日) 21:52:31D3DFVF_LASTBETA_UBYTE4で頂点バッファが作れません
CreateVertexBuffer関数でハングアップする形で止まってしまってエラーも見れません
どうしたらいいでしょうか?
ソースはこんな感じです
hr = pDevice->CreateVertexBuffer(mAll,D3DUSAGE_DYNAMIC,mFvf,D3DPOOL_DEFAULT,&mVertexBuffer,NULL);
注:mFvfはD3DFVF_LASTBETA_UBYTE4単独で作ろうとしています。
0142デフォルトの名無しさん
2010/07/18(日) 22:12:54D3DFVF_LASTBETA_UBYTE4はそういう使い方するものじゃないぞ?
D3DFVF_LASTBETA_UBYTE4は型を示してるのではなく
その直前のフォーマットの最後のベータ フィールドをUBYTE4型と解釈することを示すフラグ
単独で指定できるはずは無いと思うが
0143デフォルトの名無しさん
2010/07/18(日) 22:22:40マジですか?
ブレンドインデックス値を渡したかったんですけど整数型ってないみたいですね
D3DFVF_XYZWで渡したらうまくいきました
ありがとうございました
0144デフォルトの名無しさん
2010/07/18(日) 22:29:34解決したみたいだけど一応
そういう時は自分で頂点宣言して非FVFで頂点バッファ作ればいい
IDirect3DVertexDeclaration9とかD3DVERTEXELEMENT9でググれば情報でるはず
0145デフォルトの名無しさん
2010/07/19(月) 12:43:410146デフォルトの名無しさん
2010/07/19(月) 13:17:18>非FVF
これ、どうやっても作れないな
どこまで自由が利くのかさっぱりわからない
0147デフォルトの名無しさん
2010/07/19(月) 13:56:00引数mFvfでFVFを指定している所を0にすれば非FVF
なぜブレンドインデックス値を単独にしようとしたのか不明だが
想像するに1つの頂点の情報を複数の頂点バッファに分割して
特定情報だけ書き換えたり、入れ替えることで何かしたいってことでいいんだよね?
ここを参考にするといいかも
ttp://marupeke296.com/DXG_No53_DrawUsingStream.html
0148デフォルトの名無しさん
2010/07/19(月) 17:31:50それですそれです
もうだめだ
非FVFでやろうとするとなにがどう悪いのかすらさっぱりわからない
誰か整数型の頂点宣言、頂点バッファの作成からコードを書いて見せてくれってほどうまく動かない・・・orz
0149デフォルトの名無しさん
2010/07/19(月) 20:08:42何がどう分からないのか書いてくれないとアドバイスしようが無いのだが…
SDKサンプル
Tutorial 3: MatricesをFVFを使わずに書き直したもの
http://www5b.biglobe.ne.jp/~mya_a/dx/Matrices.zip
0150デフォルトの名無しさん
2010/07/21(水) 03:19:50AVIで動画テクスチャにしようと考えてます。
そこで質問なのですが
透過AVIも使用したいので、透過AVIを扱えるコーデックにする必要があるのですが
その使用するコーデックをOSにインストールされている物じゃなくて
別途プログラム実行ファイルと同梱にし、それを使用する事って可能ですか?
ユーザーに○○コーデックインストールしてね。ってアナウンスするのが
面倒なので、可能ならコーデック作者に許可貰って同梱したいなと
考えています。
まぁ、別にコーデックのインストールをアナウンスしてもいいんですけどね・・・。
readmeを読まないユーザーから 「うごかない」 と言われるのが
目に見えてるので出きるなら対応したいです。
「静止画の連番データを独自形式でかためればいいじゃん」
というのは、ごもっともなのですが、AVIでやってみたいので
ご存知の方いらっしゃいましたら、教えてください。
0151デフォルトの名無しさん
2010/07/21(水) 03:28:490152デフォルトの名無しさん
2010/07/21(水) 04:01:09たぶんこの世にそいつしか居ないだろうし
0153デフォルトの名無しさん
2010/07/21(水) 07:16:01どちらにせよ、いちいち動画をエンコードしながらアニメーション表示してたら
アホみたいなCPU負荷になること間違いなしだが
0154デフォルトの名無しさん
2010/07/21(水) 07:30:15エロゲーのタイトル画面や動く立ち絵などなら利用価値はありそうだけど・・・
実用になるものができたのかどうか覚えてない
0155デフォルトの名無しさん
2010/07/21(水) 08:09:10エンコードの意味は分かっているのか?
0156150
2010/07/21(水) 08:10:38こちらが指定したフォルダの中にある物を使うという事だったんですが
そういう事は出来ないという認識でよいですか?
後、ムービーテクスチャは連番静止画データに比べて
負荷が高いのですか?サンプル見た感じだと良く分かりませんでした。
0157150
2010/07/21(水) 08:15:56自分にたいしてのレスでしょうか。
エンコードというよりはデコードじゃないんですか?
コーデックを同梱したいのは
readmeに「○○コーデックをインストールする必要があります」と書いても
それを読まずに「うごかない」と言われるのが面倒だからです。
0158デフォルトの名無しさん
2010/07/21(水) 08:27:20DirectShowとDirect3Dを組み合わせたアレのことだよね?
別スレッドで動画をデコードしながら再生レートにしたがって
テクスチャを書き換えなきゃいけないんだから当然負荷は高いし
そんなに再生開始のレスポンスはあまり良くないぞ
画面上に動画を配置したいとかなら別にいいけど
アニメーションAからBにワンボタンで切り替えるような使い方は出来ないと思った方が良い
0159デフォルトの名無しさん
2010/07/21(水) 08:31:190160デフォルトの名無しさん
2010/07/21(水) 08:31:56やりもしない人間が想像で語るのはやめろ。
0161デフォルトの名無しさん
2010/07/21(水) 08:32:490162デフォルトの名無しさん
2010/07/21(水) 08:34:29あまりにアホだ。
0163デフォルトの名無しさん
2010/07/21(水) 08:35:310164デフォルトの名無しさん
2010/07/21(水) 08:37:35なんか右下のタスクトレイにいっぱいアイコンが出るアプリになりそうだね
0165デフォルトの名無しさん
2010/07/21(水) 08:43:12細切れで送るような馬鹿なまねをしない限り、負荷云々はあり得ない。
旧時代の知識を引きずって今を見ない奴が、嘘を流布するのはやめろ。
0166デフォルトの名無しさん
2010/07/21(水) 08:51:09DirectShowは手続きは面倒くさいが、そんなに不便じゃないぞ。
0167デフォルトの名無しさん
2010/07/21(水) 08:56:010168デフォルトの名無しさん
2010/07/21(水) 10:31:44勘弁してくれよ
0169デフォルトの名無しさん
2010/07/21(水) 11:06:530170デフォルトの名無しさん
2010/07/21(水) 11:15:12>後、ムービーテクスチャは連番静止画データに比べて
>負荷が高いのですか?サンプル見た感じだと良く分かりませんでした。
ムービー:毎フレームをCPUでデコードしてバスを通してGPUに送り描画
連番:フレーム毎に(もともとGPUにある)テクスチャのサブ領域を切り替えて描画
どっちが負荷が高いと思う?
0171デフォルトの名無しさん
2010/07/21(水) 11:21:55だがしかし、SVGA位の解像度の動画なら普通にできちゃうんだな。
絶対的に重いかどうかより、実用になるかどうかが重要なんだよ。
もちろん、HDサイズになるとただ動画を流すだけでも大変だが。
0172デフォルトの名無しさん
2010/07/21(水) 11:49:31DirectShowを通すにしてもテクスチャに描画となると
サンプルグラバなりカスタムVMRを実装する面倒臭さを
(SDKサンプルコピペだけでまともに動くと思うなよ?)
連番自前の実装と比較する必要があるし、
それ以前に透過情報をもつムービーを再生できるコーデックを
(インストール不要という要件を満たすために)
DirectShowフィルタのバイナリ以外の形式で入手する必要があるわけだ。
そんな感じで>>150にめんどくさくないソリューションを誰か紹介してあげてください。
0173デフォルトの名無しさん
2010/07/21(水) 11:49:330174デフォルトの名無しさん
2010/07/21(水) 12:01:07前者のGPU上に配置する作業が考慮されていないのは魔法でも使うつもりなのか?
動画をCPUでデコードする後者だって、あらかじめ全フレームをVRAMに上げておく方法は採れるぞ。
データが静止画と動画、方式がストリーミングか否か、それぞれを混同して話すな。
0175デフォルトの名無しさん
2010/07/21(水) 12:04:15「連番データから管理するのが面倒」って何が面倒なんだろう?
それ以前に「連番データから管理」って何?
普通に適当なアニメーション作成ツールでフォーム組んでデータ通りに再生すれば良いだけ違うん?
0176デフォルトの名無しさん
2010/07/21(水) 12:11:050177デフォルトの名無しさん
2010/07/21(水) 13:39:41ジャマイカ?の人は黙ってて下さい
0178150
2010/07/21(水) 13:51:51そこらへんの知識も薄いのですが
1枚の画像の場合4096x4096までとかグラボで制限ありますよね。
パターン数増えた場合はどうするのかが不明です。
地味に気になります。
>>164
そうなんですか、うちでは別途ウィンドウはでないですね。
>>170
どちらも一旦なんらかのデコード作業をしてからGPUに送るので
作業内容としては同じかとおもってました。
>>171
ゲーム中のアニメーション文字「STAGE 1」とか「GAME OVER」とかで
使おうとおもってるので、HDサイズ!ってわけじゃないですね
>>175
DirectShowの手続き云々は未知だったのもありますが
連番静止画、たとえば100枚で1つのアイテムとして
フォルダにいれて管理するのと
100フレームの映像ファイルとして管理する、といった視点で見た場合に
連番静止画は、ファイル数、下手したらフォルダ数も増えてしまうので
面倒だなと感じていました。
後、連番静止画を独自形式に固める作業も
間に何かするといった意味で面倒とおもったわけです。
言ってしまえばAVIという独自形式の単位で管理できたら良いなと。
0179デフォルトの名無しさん
2010/07/21(水) 14:06:11そんなに動画にしなければいけないほど広範囲が細かく変化するようなものなの?
100フレームのアニメーションがあったとして
それを再生するのに100枚の画像が必要ってわけじゃないぞ?
0180デフォルトの名無しさん
2010/07/21(水) 14:35:53・・・
みんな、もうやめにしようぜ
0181デフォルトの名無しさん
2010/07/21(水) 14:38:380182デフォルトの名無しさん
2010/07/21(水) 14:39:390183デフォルトの名無しさん
2010/07/21(水) 14:43:51VRAMに置く前にα値を設定する、ある程度大きいならPSで処理するも良し。
非可逆ならテキトーな閾値で切る。
0184デフォルトの名無しさん
2010/07/21(水) 14:50:03また頂点の変形程度で済むという話になって下らない結果になるぞ。
相手は想像しているよりも遙かに斜め上だ。
0185デフォルトの名無しさん
2010/07/21(水) 15:04:32静止画の連番ってことは、
Atack01.bmp
Atack02.bmp
とかで管理してるの?
それならAtack.bmpにひとつにまとめて、プログラムで順番になるように表示すれば
いいんじゃないの?
>1枚の画像の場合4096x4096までとかグラボで制限ありますよね。
パターン数増えた場合はどうするのかが不明です。
俺なら画像を分けるけど?
0186デフォルトの名無しさん
2010/07/21(水) 15:17:17静止画の連番ってことは、
Atack01.bmp
Atack02.bmp
とかで管理してるの?
それならAtack.bmpにひとつにまとめて、プログラムで順番になるように表示すれば
いいんじゃないの?
>1枚の画像の場合4096x4096までとかグラボで制限ありますよね。
パターン数増えた場合はどうするのかが不明です。
俺なら画像を分けるけど?
0187デフォルトの名無しさん
2010/07/21(水) 15:27:260188150
2010/07/21(水) 15:42:31こんな感じのAVIをテクスチャにして表示しようとおもってます。
http://uproda.2ch-library.com/lib271627.mp4.shtml
間違って30FPSで作ってしまったので、3秒90フレームですが
60FPSの場合、単純に180フレームですね。
0189デフォルトの名無しさん
2010/07/21(水) 17:38:05それ以上やろうとすると遅延がないぐらいたっぷり読んでおくとかそういう準備が必要になるけど
動画だとどうだろうね?
もし、10も20もやろうと考えてるならこの時点で実用に耐えないと思うけど
参考になるだろか?
0190デフォルトの名無しさん
2010/07/21(水) 17:48:10それはちょっと考えにくいな。DirectSoundが広く使われる前から
ビットレートは低いけど8音同時再生できるユーザードライバはあったし、
俺自身不定音数リアルタイム合成エンジンを10年ほど前にWindows向けに書いてる。(not DirectSound)
実装方法が悪いんじゃね?
異なる動画を10個以上同時再生か。
たとえは古いけど、NHKの映像の世紀のオープニングみたいなものかな。
あれはリアルタイムには難しいだろうね。
1動画256x256くらいのサイズに押さえてないと厳しいかも。
0191デフォルトの名無しさん
2010/07/21(水) 17:51:07サウンドボードの性能じゃなくて
HDDから同時にデータをロードできないんさって話だよ
0192デフォルトの名無しさん
2010/07/21(水) 17:57:35そんなの、圧縮されたままの音声データを事前に読んでおけばいいじゃないか。
展開、合成はリアルタイムで十分間に合う。
0193デフォルトの名無しさん
2010/07/21(水) 18:00:46メモリに全部おいておくなら動画の必要なくね?
アニメーションテクスチャ全部読むのとどう違うんだと
ストリーミングをしたい意味での動画再生じゃないってこと?
0194デフォルトの名無しさん
2010/07/21(水) 18:09:05「ストリーミングをしたい意味での」での動画ではないね
単純にアニメーション管理の知識が無いから
「動画にしといたら楽じゃね?」ってことだと思われる
>>188みたいな単発的な使い方するならそれも有りなので好きにさせれば良いと思うよ
後は
http://pc12.2ch.net/test/read.cgi/tech/1214127501/
に行ってもらうってことで
DirectShowの仕組みが分かってれば
CODECがどうたらとかなんって質問に意味が無いことがわかるはずだから
0195デフォルトの名無しさん
2010/07/21(水) 18:19:56よろしいよ。
つうかこのスレは質問をするか回答をするかのどっちかなのに
一人で両方するとか意味のわからん人だな
0196デフォルトの名無しさん
2010/07/21(水) 18:37:11少なくともコデクの悩みからは開放される
0197デフォルトの名無しさん
2010/07/21(水) 18:43:48ライセンスはLGPLか……。
最悪それしか無いなら使うけど、可能な限り避けたいところだな。
0198デフォルトの名無しさん
2010/07/21(水) 22:36:37ウィンドウ->フルスクリーンの切り替えで(ウィンドウサイズは800*600です)
フルスクリーン状態->ウィンドウモードに切り替えは問題なく動くのですが
フルスクリーン状態->デバイスロスト->フルスクリーン復帰->ウィンドウモードに切り替え
とおこなった時、最後のウィンドウ切り替えのIDirect3DDevice9のReset()の後で
BackBufferWidthとBackBufferHeightの値が794*568と妙な数値で帰ってきます
Reset後の値が変わるような要因がありましたら
教えていただけると助かります。
0199デフォルトの名無しさん
2010/07/21(水) 22:48:04復帰後にWindowの外枠の大きさが800x600になってるから、枠の分クライアント領域が狭くなる。
これはWindowsの仕様。
Window表示時のWindow全体の大きさを記憶しておくか、
フルスクリーン表示用のWindowを別に用意するかして対応する。
0200198
2010/07/21(水) 22:57:18どこが原因なんだーってデバイスロスト時の処理とかを
見直しまくって無駄に時間をすごしてしました・・・
明日すぐに修正してみます。
ありがとうございましたー
0201デフォルトの名無しさん
2010/07/21(水) 23:52:34Windows7なら既に内部的にはそういう実装になってるんじゃないの?
レガシな方法で再生するより、軽くなることはあっても重くなることはないんじゃないか
0202デフォルトの名無しさん
2010/07/22(木) 00:27:080203デフォルトの名無しさん
2010/07/22(木) 01:12:17HLSLコードで使われるセマンティクスのPSIZEというのは
ラスタライザかどっかが自動的にPSIZEに代入した半径の円として頂点をレンダリングしてくれるとかいうわけではなく
単にデータの目印として準備されているだけ(値の利用の仕方は手動で記述)という認識で正しいでしょうか?
0204デフォルトの名無しさん
2010/07/22(木) 02:10:332等分してその中に含まれる最大、最小の頂点からAABB作って、
って繰り返せばいいですか?
0205デフォルトの名無しさん
2010/07/22(木) 02:31:47頂点シェーダから
セマンティックPSIZEで出力すれば
そのサイズの円としてレンダリングされるよ
サイズの解釈は
D3DRS_POINTSCALEENABLEの設定によって違う
0206デフォルトの名無しさん
2010/07/22(木) 02:36:44それがDirectXと何の関係が?
0207デフォルトの名無しさん
2010/07/22(木) 02:46:20ゲームプログラムなら俺に聞けできいてみます。。。
0208デフォルトの名無しさん
2010/07/22(木) 05:59:48どのようにしたらいいのでしょうか?
検索してみたんですが、オイラー角とかそういうのばかり引っかかって。
単純にMatrixから回転角度を取得できる公式って無いんでしょうか?
0209デフォルトの名無しさん
2010/07/22(木) 07:23:35いったい何を言ってるんだ?
0210デフォルトの名無しさん
2010/07/22(木) 07:28:58結構、困難だよ
D3DXMatrixにそういうお手軽関数はなさげ
自力でやるとしたら
1軸固定(例えばY軸)にすればatan,atan2ぐらい使って楽にできた記憶がある
俺が昔やった感じだと1軸固定無しでは無理だった
ぐぐって調べたコードは一見できてそうに見えるんだけど
たまにブキッとあらぬ方向を向いてしまって制御不能だった
0211デフォルトの名無しさん
2010/07/22(木) 08:36:38親ボーンから見て、子ボーンがどの程度傾いているかを二つのマトリクスから
取得したかったんです。
>>210
その方法が一番自分に適しているような気もします・・・
親ボーンの逆行列を子ボーンのマトリクスにかければ、子マトリクスのローカル座標が取得できるので。
ソースコードとか残ってないですかね。
0212デフォルトの名無しさん
2010/07/22(木) 08:36:413軸はできなくはないけど
同じ回転行列でも回転の順番によって複数の答えができちゃうし
ジンバルロックおこしちゃうしコストが高すぎる
ところで本当に行列から回転角度を求めることが必要なの?
本当の目的は別のとことろにあって
回転角度が求められたらでききそうって自分で決め付けてない?
最終的に何をしたいのか言ってくれれば全然違うアプローチがあるかもよ
0213デフォルトの名無しさん
2010/07/22(木) 08:41:26組み合わせないほうがいいですかね?
どちらかに統一すべきですか?
0214デフォルトの名無しさん
2010/07/22(木) 10:50:520215デフォルトの名無しさん
2010/07/22(木) 11:06:56いいでしょうか?
どちらかに統一すべきですかね?
0216デフォルトの名無しさん
2010/07/22(木) 11:11:50デバイスを作らないでどうやって描画するつもりなんだ?
0217デフォルトの名無しさん
2010/07/22(木) 11:24:15おお、実際に円として描画してくれる機能だったんですね。
そんな便利な機能だったとは…
遅れながらありがとうございます。
0218デフォルトの名無しさん
2010/07/22(木) 11:50:32ごめん、嘘だった
円としては描画してくれない、サイズはあくまでポリゴンのサイズ
でも円とかのパーティクルのテクスチャを貼り付ければ一緒だよね?
0219デフォルトの名無しさん
2010/07/22(木) 12:26:21なるほど。考えてみればGPUが円を描こうと思ったら一番手っ取り早いのはポリゴンスプライトしかないですね
ポリゴンスプライトのほうはちまちまと作っていたのでそれを流用してやってみようとおもいます。
ありがとうございました。
0220デフォルトの名無しさん
2010/07/22(木) 12:41:500221デフォルトの名無しさん
2010/07/22(木) 13:36:270222デフォルトの名無しさん
2010/07/22(木) 14:27:050223デフォルトの名無しさん
2010/07/22(木) 16:58:49ボーン間の角度が知りたいだけなら軸のベクトルをマトリクスから求めて内積って話ではない?
0224デフォルトの名無しさん
2010/07/22(木) 17:52:31AのベクトルをX軸とY軸に何度ずつ動かしたらBの向きになるかってのを知りたいんです。(Z軸は動かさない)
どうしても、これが算出できなくて・・・
LightWave的に言うなら、ある角度のボーンをヘディングとピッチだけ動かして指定の向きのボーンと角度を一致させたいんです。
上で>>210氏が1軸固定なら簡単に算出できると書いてあるんですが、頭が悪くてどうしても回転角度の演算方法が分からないです。
0225デフォルトの名無しさん
2010/07/22(木) 19:35:56AとBの角度をABに直行する軸として回転するんじゃだめなの?
つかA(0,0,1)をX軸にx度回転するとどんなベクトルになるかがわからないとか?行列変換の基礎からどぞ
0226デフォルトの名無しさん
2010/07/22(木) 19:40:370227デフォルトの名無しさん
2010/07/22(木) 19:47:22全然関係無い衝突判定や設計の話になるとギリアウトかな
早い話が回答者の気分次第です
0228デフォルトの名無しさん
2010/07/22(木) 19:49:420229224
2010/07/22(木) 19:54:58上手く伝わらなかったかも。
A(0,0,1)とB(x,y,z)を同じ角度にするためにAをX軸にu度、Y軸にv度傾ける必要があって、uとvを算出したいんです。
それが出来れば問題は解決するんですが・・・。
0230デフォルトの名無しさん
2010/07/22(木) 20:10:130231224
2010/07/22(木) 20:23:21ただ、回転系の演算関数は意外とDirectXは便利な物を多くサポートしてるので、
そこまでスレ違いかと言われるとそうでもないとは思いますとだけ。
0232デフォルトの名無しさん
2010/07/22(木) 21:34:170233デフォルトの名無しさん
2010/07/23(金) 00:39:30色々やってみた結果、どうやってもうまく渡らないという結果になりました
整数を100分の1にして少数でもってて100倍して、その後整数に変換とかやっても駄目でした
PIXで確認
0234デフォルトの名無しさん
2010/07/23(金) 01:07:00それはなんか整数がどうとか以前に何か別の問題がありそう
コードは出せないのかい?
0235デフォルトの名無しさん
2010/07/23(金) 01:08:210236デフォルトの名無しさん
2010/07/23(金) 01:52:33いや、でかいというか広いというですね・・・とりあえず貼ってみます
>>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辺りに出力させてみると全然違う値が入っているわけです。
0237デフォルトの名無しさん
2010/07/23(金) 01:54:43VS_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);
シェーダ側の処理の頂点部分です。
0238デフォルトの名無しさん
2010/07/23(金) 02:01:27よくある手法だが頂点シェーダで
int index[ 4 ] = (int[ 4 ]) D3DCOLORtoUBYTE4( blends );
でどうよ?
0239デフォルトの名無しさん
2010/07/23(金) 02:04:36誤:blends
正:blend
0240デフォルトの名無しさん
2010/07/23(金) 06:06:26うーん、駄目でした
上記のコード入れる前にどう駄目かというと
本来、5,6,0,0とか値が入ってるところが0,0,160,64
とか値になってしまうんですね
んでこれが必ず同じ数値なら同じ値に変換されるわけではないみたいなんです
ただ、インデックスの4つの値が同じ並びの同じ数字だと同じ値になるみたいですけどね
んで上記のコードを入れると
40880,0,0,320とかさらに意味不明な値になりました
0241デフォルトの名無しさん
2010/07/23(金) 06:38:45float4 blend
なのにblend[0]とかってのが意味分からないし
D3DDECLTYPE_UBYTE4で宣言してるのに
型はfloat b[4];とかして頂点分確保ってもおかしくないか?
1頂点は4byteだぞ
0242デフォルトの名無しさん
2010/07/23(金) 06:45:57>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で試みてみます
0243デフォルトの名無しさん
2010/07/23(金) 07:30:36これはこれはもしかして・・・できた?
あれ?でもなんか・・・
なんかできたっぽいような感じですけど
もうちょっとチェックしてみます
0244デフォルトの名無しさん
2010/07/23(金) 08:18:450245デフォルトの名無しさん
2010/07/23(金) 15:16:460246デフォルトの名無しさん
2010/07/23(金) 16:12:240247デフォルトの名無しさん
2010/07/23(金) 19:00:060248デフォルトの名無しさん
2010/07/23(金) 21:24:28>D3DVERTEXELEMENT9 normal[]
これだと、4つストリームを使うみたいだが、
ちゃんと4つVBセットストリームしてるのか?
0249デフォルトの名無しさん
2010/07/23(金) 21:55:09してます
それがやりたくて普通の方法と違う感じで作って悩んでいたわけですが
DWORDで渡すようにしたらどうやらここの部分はできたっぽい?
感じになってきたんですがアニメーション箇所がバグっているのかなんなのか
まだまだきっちりできたといえない状況で現在修正中という感じな状況です
0250デフォルトの名無しさん
2010/07/24(土) 18:21:37やっとアニメーションまわりのバグもとれてついにスキニングのアニメーションができました!
>>241さんの指摘どおり、頂点バッファの確保をunsigned char b[4];にしたら動きました!
ありがとうございました
長かった・・・
これからスキンメッシュのアニメーションをする人は上記頂点バッファまわりの注意と
まず、スキニングではないアニメーションを完璧に作り上げてから
次に、シェーダ無しで一度普通に組んでみてできたらシェーダに直す手順を推奨
こうしないと不確定な要素のチェックばかりで時間が無駄に過ぎていく・・・orz
0251デフォルトの名無しさん
2010/07/24(土) 20:44:540252デフォルトの名無しさん
2010/07/24(土) 21:37:02DirectXの懐の深さを褒めるべきなのか、それともきっちり引導渡してやった方が良いのか
0253デフォルトの名無しさん
2010/07/24(土) 21:47:32やろうとしてること自体はそんなに間違いじゃないぞ
むしろ今風になってる
0254デフォルトの名無しさん
2010/07/24(土) 22:22:39えー、どの辺が駄目?
>>253
いいっすよね?
0255デフォルトの名無しさん
2010/07/24(土) 22:42:04なんだよ今風ってw
アホか
>>254
頂点バッファのフォーマットをUBYTE4にしてるのに、
他の型で格納してましたってこと?
これは想定外だなw
0256デフォルトの名無しさん
2010/07/24(土) 22:48:33ああ、なんだそっちか
んなこといってもPIXで確認するとunsigned charで送ると値が全部0になってるのに
floatで送るとちゃんと値が表示されんだもんよw
これはPIXの製作者を叩いてほしいところだよ
0257デフォルトの名無しさん
2010/07/24(土) 23:00:47レベルが知れるな
0258デフォルトの名無しさん
2010/07/25(日) 09:11:100259デフォルトの名無しさん
2010/07/27(火) 21:42:300260デフォルトの名無しさん
2010/07/27(火) 23:31:080261デフォルトの名無しさん
2010/07/28(水) 11:02:53反射率か減衰率の意味の、
記号Kとは何の略ですか?
0262デフォルトの名無しさん
2010/07/28(水) 21:02:55人にやらせる前に
まず自分からボケるのが礼儀じゃね?
0263デフォルトの名無しさん
2010/07/28(水) 23:21:43Direct2D、DirectWrite
Windows API Codepack
Visual Basic 2010
を使って、画像の合成を行うと思っていますが DirectX の恩恵ってありますでしょうか。
0264デフォルトの名無しさん
2010/07/29(木) 01:22:330265デフォルトの名無しさん
2010/07/29(木) 03:05:32マジで消えてくれないかなぁ
0266デフォルトの名無しさん
2010/07/29(木) 06:24:02具体的にはスキンメッシュで求めた行列をtransposeしてもうまくいかないっていうか
マジでこれ逆行列の変わりになってんのかよ?的なとこです。
0267デフォルトの名無しさん
2010/07/29(木) 06:53:05( ・∀・)つNVSDK
日本語で書かれた丸パクリできるサイト晒せという意味でしたら、期待に添えなくて申し訳ありません。
0268デフォルトの名無しさん
2010/07/29(木) 13:08:03どういう画像を作れば、イメージどおりのエフェクトができるかわからないんです。
なんかそんな解説が載ってるサイトはないでしょうか?
0269デフォルトの名無しさん
2010/07/29(木) 13:11:53↓
イメージ通りできるまで、繰り返し繰り返し色を混ぜましょう。
0270デフォルトの名無しさん
2010/07/29(木) 13:14:02エフェクトを描くのに最適なグラフィックフリーソフトでお勧めは何がありますか?
0271デフォルトの名無しさん
2010/07/29(木) 13:20:010272デフォルトの名無しさん
2010/07/29(木) 13:47:03ttp://tukiken.hp.infoseek.co.jp/muge/cr/tool/tool_A.html
でもDirectX関係ないからもう来ないでね
0273デフォルトの名無しさん
2010/07/29(木) 20:17:31スキンメッシュのサンプルとかみた感じ
なんか放置されてね?
頂点動かせば法線とかも動くじゃん?
したら合わせてライトのベクトルをボーンのローカルにもってこないと駄目なような気がするんだけど
サンプルはその辺おざなりになってるような気がするんだけっちょ・・・
0274デフォルトの名無しさん
2010/07/29(木) 20:52:46float3x3 wldinv = transpose((float3x3)wld);
ちなみにこれ↓はまるで駄目な感じだった
float4x4 wldinv = transpose(wld);
0275デフォルトの名無しさん
2010/07/29(木) 21:02:38法線はベクトルなのに移動成分を掛けちゃったら長さまで変わっちゃうでしょう
回転成分だけ掛けないと
0276デフォルトの名無しさん
2010/07/29(木) 21:23:01おお、それで気がつきましたがハーフベクトルもカメラ座標をローカルにもっていくんじゃなくて
視線ベクトルにして転置行列にかけないとおかしいですね
ありがとうございます
0277デフォルトの名無しさん
2010/07/30(金) 14:01:36サンプルのXAudio2BasicSoundをベースに効果音の再生を作ってるのですが
連続で音を鳴らすとノイズが入ってしまいます、どうやって対策すればよいでしょうか?
0278デフォルトの名無しさん
2010/07/30(金) 14:03:41原因はいろいろ考えられるが、
とりあえず音のデータ自体がちゃんとノーマライズされているかどうかをチェックしたほうがいいんじゃね?
0279デフォルトの名無しさん
2010/07/30(金) 14:50:03http://www1.axfc.net/uploader/He/so/287946.zip
これが改変済、元ソースと実行ファイル、効果音のファイルです
元ソースに単純な改変を行い、連続で音がなるようにしてみました
音が連続で再生されていますが、ESCを押すと音が鳴り止む前に打ち切られ
次の再生に入るようになっています。
ESCを連打するとプチプチとしたノイズが入るかと思います。
音を再生中にDestroyVoiceを行うのがまずいのでしょうか?
0280デフォルトの名無しさん
2010/07/30(金) 17:49:11>ESCを連打するとプチプチとしたノイズが入る
こういうことしたらxAudio2に限らず普通にノイズが入ると思われる
再生停止前にボリュームを0にするとかでもダメか?
0281デフォルトの名無しさん
2010/07/30(金) 23:11:49DirectMusicだと特に何もしなくとも連続再生に問題なかったのですが
xAudio詳しい人いたらお願いします
0282デフォルトの名無しさん
2010/07/31(土) 03:18:31XAUDIO2_BUFFER submit = {0};
submit.AudioBytes = FileSize;//バッファのバイト数
submit.pAudioData = &Buffer[0];//バッファの先頭アドレス
submit.LoopCount = XAUDIO2_LOOP_INFINITE; ←
submit.Flags = XAUDIO2_END_OF_STREAM;
これでだめなん?
間髪をおかず書き込み→再生→破棄
を繰り返したらノイズは仕方ないのかなぁ・・・
0283デフォルトの名無しさん
2010/07/31(土) 08:40:21それはループ再生なんでは?
連続再生ってのは例えばシューティングゲームで自キャラが弾を撃つときのように
前の音が鳴り止む前に停止して次の音がなるようなケースで使うかと
0284デフォルトの名無しさん
2010/07/31(土) 08:55:08バッファを2〜3系統用意して巡回させるのが良さそうかな、破棄とかせずに。
0285デフォルトの名無しさん
2010/07/31(土) 09:17:56waveデータの読み書きも停止と再生の間にはさんでるからとかかなぁ
0286デフォルトの名無しさん
2010/07/31(土) 12:26:39よく使うSEサウンドはオンメモリにしといて
再生時に先頭から再生にするのが普通
0287デフォルトの名無しさん
2010/07/31(土) 16:15:28再生中のを停止する時点でノイズ入ってるな
これは多分何やっても駄目だと思う
停止ではなく段階的にボリューム落として無音にしていきつつ
別バッファで新しく再生とやれば大丈夫だと思うが、多分これでは求めてる物にはならないだろう
AudioサンプルのXACTGameで効果音の連続再生やってるけど、こっちはxAudio使ってなかった
このサンプルをxAudioで作る事は出来ないんじゃないだろうか
0288デフォルトの名無しさん
2010/07/31(土) 16:26:27法線はベクトルなのに移動成分を掛けちゃったら長さまで変わっちゃうでしょう
回転成分だけ掛けないと
0289デフォルトの名無しさん
2010/07/31(土) 16:37:050290デフォルトの名無しさん
2010/07/31(土) 19:51:410291デフォルトの名無しさん
2010/07/31(土) 21:47:20だろ。
0292デフォルトの名無しさん
2010/07/31(土) 22:06:53このスレ見た感じだと上から目線で断定回答してる人?
雰囲気としては287の人がその人なの?
0293デフォルトの名無しさん
2010/07/31(土) 22:14:420294デフォルトの名無しさん
2010/07/31(土) 22:21:12前スレを「だろ。」で検索すると解決策にもなっていないような
駄レスを連発(おそらくすべて同一人物)してこんなネーミングがついちゃったw
0295デフォルトの名無しさん
2010/07/31(土) 22:38:040296デフォルトの名無しさん
2010/07/31(土) 22:40:40サーセンww
0297デフォルトの名無しさん
2010/07/31(土) 22:43:25だろ。の人の論法は
「質問自体が低級又は無意味であるから答えるに値しない」
と言うものだからすぐ分かる
そして自分以外の回答者にも食ってかかる
後もう1つ簡単に特定できる特徴があるんだがこれは本人も分かってわざとやってるんだよね?
0298デフォルトの名無しさん
2010/07/31(土) 22:44:480299デフォルトの名無しさん
2010/07/31(土) 22:46:35これだけレスあってもこれだって回答が無いってことはみんなxAudio使ってないのかね?
俺も使ってないけど
0300デフォルトの名無しさん
2010/07/31(土) 22:47:11思い込みだろうぜえんだよ荒らし
0301デフォルトの名無しさん
2010/07/31(土) 22:51:35被害妄想とはそういうもの
以後スルー推奨
0302デフォルトの名無しさん
2010/07/31(土) 22:52:090303デフォルトの名無しさん
2010/07/31(土) 22:58:49一体実際にいるのは何人なんだろうね
0304デフォルトの名無しさん
2010/07/31(土) 23:03:010305デフォルトの名無しさん
2010/07/31(土) 23:16:450306デフォルトの名無しさん
2010/08/01(日) 00:11:55あとたまあに分からないことあったら質問させてもらってます。
0307デフォルトの名無しさん
2010/08/01(日) 04:03:36確かに超高速でDestroyとsubmitするとノイズが入るな
wavデータをロードや破棄は関係なさそうだ
(StopとFlushSourceBuffersをつかってもノイズが出たから)
探ってみたがイマイチわからん
とりあえず再生開始からある程度(数フレームから数十フレーム?未検証)
時間が経てばノイズは出ないようだが・・・
0308デフォルトの名無しさん
2010/08/01(日) 04:19:16最低何十ミリ秒だかのデータ長の制限があったような気がする
もしかするとその線かも
0309デフォルトの名無しさん
2010/08/01(日) 05:58:38お前のブラウザぶっ壊れてるだろ。
0310デフォルトの名無しさん
2010/08/01(日) 12:38:57噂のだろ。厨?
0311デフォルトの名無しさん
2010/08/01(日) 15:57:03やっぱ、DirectX用にクラスを設計したほうがいいのか?
0312デフォルトの名無しさん
2010/08/01(日) 16:47:27DirectX初心者というより、C++初心者ですね。クラスの使いどころに自信を持てず、用語に振り回されています。
それを脱するには経験しかありません。
たとえば、Direct3Dの低レベルラッパークラスと上位クラスの二層構造にするとか、全然別のとか、なんでもいいので、
作りながらよりよい方法を模索してスキルを磨いてゆくしかありません。
0313デフォルトの名無しさん
2010/08/01(日) 16:48:080314デフォルトの名無しさん
2010/08/02(月) 00:02:20Begin、Draw、EndでDrawにテクスチャを指定して描画するんですよね?
このときテクスチャを複数表示するなら一度にDrawしてしまった方が良いの?
それともその都度Begin、Draw、Endをやっていいの?
0315デフォルトの名無しさん
2010/08/02(月) 00:10:270316デフォルトの名無しさん
2010/08/02(月) 00:12:48だっていっつも荒れるのはスプライトなんてない厨のせいなんだからスルーでいいじゃないですか
0317デフォルトの名無しさん
2010/08/02(月) 00:30:35ID3DXSprite::Drawは実際に描画するわけではなくバッチリストに登録するだけ
実際の描画はID3DXSprite::FlushかID3DXSprite::Endの呼び出し時に行われる
イメージとしてはDrawで溜め込んでEndでまとめて描画する感じなので
その都度Begin、Draw、EndするのはNG
コレをやると大幅なパフォーマンスダウンが生じる
0318デフォルトの名無しさん
2010/08/02(月) 00:32:07ありがとうございます
0319デフォルトの名無しさん
2010/08/03(火) 05:37:37テクスチャは四角です。間延びした感じになります
原因は三角ポリゴンのせいかわからないのですがどうすれば良いのでしょうか?
0320デフォルトの名無しさん
2010/08/03(火) 08:38:07その説明じゃエスパーじゃないと答えられない
頂点バッファに書き込んでるデータと
描画部のコードを書いて
0321デフォルトの名無しさん
2010/08/03(火) 09:43:170322デフォルトの名無しさん
2010/08/03(火) 10:35:57return E_FAIL;
と
hr = うんたら
if( FAILED( hr ) )
return hr;
の違いを教えて下さい
上にしたらそのままスルーされて(多分)思ったように動かなかったのですがエラーが出なかったのですごく怖く思いました
0323デフォルトの名無しさん
2010/08/03(火) 10:44:36そこにオカルトはありません。
0324デフォルトの名無しさん
2010/08/03(火) 10:50:47cache->vertexBuffer->Lock( 0, size, (void**)&pVx, 0 );
が2回目に呼ばれた時にハンドルされていない例外が発生するのですがなぜかわかりますか?
pVxは
struct CUSTOMVERTEX
{
D3DXVECTOR3 Pos;
D3DXVECTOR3 Norm;
float uv[ 2 ];
};
です
0325デフォルトの名無しさん
2010/08/03(火) 14:50:500326デフォルトの名無しさん
2010/08/03(火) 14:57:320327デフォルトの名無しさん
2010/08/03(火) 15:02:410328デフォルトの名無しさん
2010/08/03(火) 15:06:170329デフォルトの名無しさん
2010/08/03(火) 15:09:09あまり触りたくない臭いがする
0330デフォルトの名無しさん
2010/08/03(火) 15:10:37開いていっても座標の配列とか無いんだが
0331デフォルトの名無しさん
2010/08/03(火) 15:21:28わかります
0332デフォルトの名無しさん
2010/08/03(火) 15:24:050333デフォルトの名無しさん
2010/08/03(火) 15:27:18それはもう解決した
>>332
D3DFVF_VERTEXNORMAL, D3DPOOL_MANAGED
もう後ストリームに入るUV確認できたらできるっぽ
0334デフォルトの名無しさん
2010/08/03(火) 15:30:220335デフォルトの名無しさん
2010/08/03(火) 15:33:090336デフォルトの名無しさん
2010/08/03(火) 15:41:13Lockして中身のぞけよ
0337デフォルトの名無しさん
2010/08/03(火) 15:44:34Lockの仕方教えて
0338デフォルトの名無しさん
2010/08/03(火) 15:53:46自分でLockしてデータを書き込んだんじゃないのか?
0339デフォルトの名無しさん
2010/08/03(火) 15:58:47テクスチャが間延びして上手く貼れないしUV座標いじっても変わってないような気がするから
ストリームにちゃんと入ってるか見たいし入ってないだろうからその値がどこから来たかわかればできる(`・ω・´)
つかなんでストリームって座標のD3DXVECTOR3型と法線のD3DXVECTOR3をわけれてるかわからんどういう仕組みなの?
0340デフォルトの名無しさん
2010/08/03(火) 16:14:07デバイスに指定してる頂点宣言(もしくはFVF)が一致してない予感
いいからソース出せって
0341デフォルトの名無しさん
2010/08/03(火) 16:18:54見れるとか言ってて結局見れねーし
なんなんだよ
0342デフォルトの名無しさん
2010/08/03(火) 16:24:470343デフォルトの名無しさん
2010/08/03(火) 16:28:060344デフォルトの名無しさん
2010/08/03(火) 16:30:46LocKして何したら見れるんだよ
0345デフォルトの名無しさん
2010/08/03(火) 16:42:19Lockしたら、頂点バッファのアドレスが取れたと思う。
多分それはvoid*とかの汎用のポインタだとおもうので、そちらで想定してる型のポインタへキャストする。
そして、想定したデータと一致するかをチェックし、Unlockする。
0346デフォルトの名無しさん
2010/08/03(火) 16:45:050347デフォルトの名無しさん
2010/08/03(火) 16:47:130348デフォルトの名無しさん
2010/08/03(火) 16:47:56それで全て解決する。
0349デフォルトの名無しさん
2010/08/03(火) 16:59:08まともに説明する気があるとは思えん
それともこれがゆとりなのか?
0350デフォルトの名無しさん
2010/08/03(火) 17:01:36CreateVertexBuffer
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();
0351デフォルトの名無しさん
2010/08/03(火) 17:02:29それ以前にポインタの基礎も。
0352デフォルトの名無しさん
2010/08/03(火) 17:07:080353デフォルトの名無しさん
2010/08/03(火) 17:08:37限りなく怪しい
0354デフォルトの名無しさん
2010/08/03(火) 17:08:47どこから指摘していいのか分からないくらい
0355デフォルトの名無しさん
2010/08/03(火) 17:10:100356デフォルトの名無しさん
2010/08/03(火) 17:11:19D3DFVF_VERTEXNORMALがどうなっているのかも不明。
きりがない。
いいから元のソースを出せ。
0357デフォルトの名無しさん
2010/08/03(火) 17:17:18uvの部分消しても元のまま描画されるのだけどそもそも影響してないってことじゃん
0358デフォルトの名無しさん
2010/08/03(火) 17:18:30PIXで観れます!!!!!!!!!!
PIXで観れます!!!!!!!!!!
PIXで観れます!!!!!!!!!!
PIXで観れます!!!!!!!!!!
PIXで観れます!!!!!!!!!!
PIXで観れます!!!!!!!!!!
0359デフォルトの名無しさん
2010/08/03(火) 17:19:300360デフォルトの名無しさん
2010/08/03(火) 17:19:37//Effect->BeginPass( p );とエンドパスにしてるけどテクスチャ貼られてるし
0361デフォルトの名無しさん
2010/08/03(火) 17:22:29もともと座標と法線しかなったところにテクスチャ座標を追加したんだろ
D3DFVF_VERTEXNORMAL = D3DFVF_XYZ|D3DFVF_NORMAL ;
だったのを
D3DFVF_VERTEXNORMAL = D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEXCOORDSIZE0 ;
にしたのか?
デバイスに間違った頂点フォーマット送ってるんだから消しても変わるわけが無い
怪しいってのはそういうこと
0362デフォルトの名無しさん
2010/08/03(火) 17:22:57固定を使っているならD3DFVF_VERTEXNORMALが実際どうなっているのか不明じゃどうにもならないだろ。
0363デフォルトの名無しさん
2010/08/03(火) 17:24:14ここからやり直せ。
終わるまで戻ってくるな。
0364デフォルトの名無しさん
2010/08/03(火) 17:25:050365デフォルトの名無しさん
2010/08/03(火) 17:26:080366デフォルトの名無しさん
2010/08/03(火) 17:26:180367デフォルトの名無しさん
2010/08/03(火) 17:27:04初心者にどうやってそこだけに気づけって言うんだよ
玄人なら最初からそこ指摘しろや
0368デフォルトの名無しさん
2010/08/03(火) 17:28:160369デフォルトの名無しさん
2010/08/03(火) 17:34:22何レスかかってるんだw情報小出しの典型
0370デフォルトの名無しさん
2010/08/03(火) 17:34:560371デフォルトの名無しさん
2010/08/03(火) 17:40:46テクスチャ間延びしてるなー→デバイスのフラグ間違ってる(キリッ)
ってチュートリアルやってもわかんねえだろもっと単純なミスの可能性も高いし初心者だから
0372デフォルトの名無しさん
2010/08/03(火) 17:45:54PIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIX
PIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIX
PIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIX
PIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIXPIX
0373デフォルトの名無しさん
2010/08/03(火) 19:09:510374デフォルトの名無しさん
2010/08/04(水) 08:42:56エフェクトの中に何個もエフェクトが入るのでしょうか?そうだとしたらどういう意味なのでしょうか?
木が一つあるのですか10個ぐらい位置を変えて作りたいので、一つの木を使いまわして、ワールド座標だけ10個作る方法だと思うのですが
この場合DrawSubsetやBeginPassの中に10個保持して引数で10回回すのでしょうか?どういうコードを書けば良いですか?
0375デフォルトの名無しさん
2010/08/04(水) 09:05:06チュートリアルからやり直して下さい
0376デフォルトの名無しさん
2010/08/04(水) 09:18:08さすがにそのレベルの質問は無いわ…
チュートリアルからやり直して下さい
0377デフォルトの名無しさん
2010/08/04(水) 09:24:180378デフォルトの名無しさん
2010/08/04(水) 09:29:14木を10個表示させたいのです。おそらくDrawSubsetやBeginPassこの辺りを使うのが最適な方法だと思ったのですが方法がわかりません
教えてください
0379デフォルトの名無しさん
2010/08/04(水) 09:35:21が間違い
どっちも複数描画するためのものじゃないから
0380デフォルトの名無しさん
2010/08/04(水) 09:39:02とりあえず木を1本表示するところまでやってきなさい
話はそれからだ
0381デフォルトの名無しさん
2010/08/04(水) 09:41:06for(i = 0;i<10;i++)
{
effect->(テクスチャ,Tex[i])
effect->begin
mesh->DrawSubset(0);
effect->end
}
のような方法が最適なのでしょうか?
0382デフォルトの名無しさん
2010/08/04(水) 09:41:48それはもうできます
0383デフォルトの名無しさん
2010/08/04(水) 09:49:220384デフォルトの名無しさん
2010/08/04(水) 09:50:45ついでに最適な方法も一応教えてください
0385デフォルトの名無しさん
2010/08/04(水) 09:54:400386デフォルトの名無しさん
2010/08/04(水) 10:01:42どうすれば最適なのでしょうか?
0387デフォルトの名無しさん
2010/08/04(水) 10:33:010388デフォルトの名無しさん
2010/08/04(水) 10:42:490389デフォルトの名無しさん
2010/08/04(水) 10:56:23生意気ですね。
0390デフォルトの名無しさん
2010/08/04(水) 10:56:36| `゙''ー- 、 ________
| ,. -‐ ''´ ̄ ̄`ヽ、_ /
|, - '´ ̄ `ヽ、 /
/ `ヽ、ヽ /
_/ ヽヽ/
/ / / / / / ヽハ
く / /! | 〃 _/__ l| | | | | | | ||ヽ
\l// / | /|'´ ∧ || | |ー、|| | | l | ヽ
/ハ/ | | ヽ/ ヽ | ヽ | || /|ヽ/! |/ | ヽ
/ | ||ヽ { ,r===、 \| _!V |// // .! |
| || |l |ヽ!'´ ̄`゙ , ==ミ、 /イ川 |─┘
| ハ|| || | """ ┌---┐ ` / // |
V !ヽ ト! ヽ、 | ! / //| /
ヽ! \ハ` 、 ヽ、__ノ ,.イ/ // | /
┌/)/)/)/)/)/)/)/)/)/)lー/ ` ー‐┬ '´ レ//l/ |/
|(/(/(/(/(/(/(/(/(/(/│|| |\ 〃
r'´ ̄ヽ. | | ト / \
/  ̄`ア | | | ⌒/ 入
〉  ̄二) 知ってるが | | | / // ヽ
〈! ,. -' | | ヽ∠-----', '´ ',
| \| | .お前の態度が | |<二Z二 ̄ / ',
| | | _r'---| [ ``ヽ、 ',
| | | 気に入らない >-、__ [ ヽ !
\.| l. ヽ、 [ ヽ |
ヽ| \ r' ヽ、 |
0391デフォルトの名無しさん
2010/08/04(水) 11:01:31教えてください
0392デフォルトの名無しさん
2010/08/04(水) 11:10:340393デフォルトの名無しさん
2010/08/04(水) 11:21:20ビルボードの方法で木を表示したいのではないのですが
0394デフォルトの名無しさん
2010/08/04(水) 11:23:06effect->もろもろセット
effect->begin()
effect->beginPass()
for(i = 0;i<10;i++)
{
mesh->違う位置で絵を描きたい位置の行列のセット
mesh->CommitChanges();
mesh->DrawSubset(0);
}
effect->endPass();
effect->end()
こういうことを言いたいのじゃないか?
切り替えの回数を減らすという意味で
ってか答える奴何様だよこんなところでしか偉そうにできないからか?
まあこの書き込みが間違ってたらまた偉そうに指摘してくれるから
それで>>391と俺は勉強になるからいいと思うが
0395デフォルトの名無しさん
2010/08/04(水) 11:30:14基本的にポリゴン群を描くたびに呼び出す。
木を10本描くなら10回呼ぶ。
ID3DXEffect::BeginPassはエフェクトのアクティブパスを
設定するたびに呼び出す。
アンタのエフェクトファイルにはパスはいくつあるの?
ひとつなら当然一回でいい。
木の位置を変えるなど、パスに渡している変数の値を変えたい場合は、
変えてからID3DXEffect::CommitChangesを呼ぶ。
ID3DXEffect::Beginは、、ステートの保存等を行うらしいが
現在は殆ど形骸化してるな。とりあえず最初と最後に
BeginとEndを呼んどきゃいい。
0396デフォルトの名無しさん
2010/08/04(水) 11:36:310397デフォルトの名無しさん
2010/08/04(水) 11:37:32エフェクトまわりについては、ちゃんと答えようと思うと
内部的にどう動いているか理解してないと駄目。
下手に答えると、つっこまれるリスクを負うからな。
0398デフォルトの名無しさん
2010/08/04(水) 11:39:24ありがとうございます
いちいちエフェクト開始終了するより
mesh->CommitChanges();をする方がパフォーマンスが良いのですね
0399デフォルトの名無しさん
2010/08/04(水) 12:29:190400デフォルトの名無しさん
2010/08/04(水) 12:39:53後出し情報でそれをやると上手くいきませんとか言い出しそうだからほっといたのに・・・
そして>>398みたいな勘違いするし
0401デフォルトの名無しさん
2010/08/04(水) 12:41:120402デフォルトの名無しさん
2010/08/04(水) 12:45:24なんで質問者のレベルをはかるために駆け引きしないといけないんだよw
0403デフォルトの名無しさん
2010/08/04(水) 12:54:380404デフォルトの名無しさん
2010/08/04(水) 13:55:22別に全部出せってことでなくて
最小コードでも見ればほとんど一発で答えられる質問ばっかなのに・・・
何なの?自分のソースを見られるのが恥ずかしいの?
他所からコピペ改変してるだけなのがバレるのが嫌なの?
まさか、そんなまともに動かない糞ソースをパクられる心配してるわけじゃないよね?
0405デフォルトの名無しさん
2010/08/04(水) 14:10:020406デフォルトの名無しさん
2010/08/04(水) 14:15:45もう解決したんだろ?
0407デフォルトの名無しさん
2010/08/04(水) 14:40:020408デフォルトの名無しさん
2010/08/04(水) 14:57:58自分の持ってる情報を開示してサポートなり専門家に問い合わせればすぐ解決するのに
妙に嫌がって情報探してネットをさまよって何日も無駄にしたりとか
自分の無知を他人知られるのが恥ずかしいとかそういう心理が働くのだろか?
0409デフォルトの名無しさん
2010/08/04(水) 15:08:50スポーツ選手じゃないんだから
0410デフォルトの名無しさん
2010/08/04(水) 15:11:11どこの素人?
納期を守れるか守れないかが全てだ
0411デフォルトの名無しさん
2010/08/04(水) 15:16:43ネットが普及する前からそうだ
0412デフォルトの名無しさん
2010/08/04(水) 18:46:13俺が見てきた限りでは、そういう人にちゃんとした実力のある人は居ないな。
手が動くのは早いし実装出来てはいるんだけど
他の人の設計を破壊したり汎用性を損なうようなコードしか書けない。
ていうかコピペが異様に多い。
そもそもプログラマに向いてないタイプじゃないかね。
0413デフォルトの名無しさん
2010/08/04(水) 22:44:14他の業種だったら早々に衝突起こして退職かクビになってる。
0414デフォルトの名無しさん
2010/08/04(水) 22:56:59どうだろ?
ライブラリ製作者でもなければ(それこそDirectXを作るとか・・・)ほとんどコピペのが効率いいんじゃね?
ゲームPGなんて90%が末端PGだろ?
そこで汎用性だの設計だの話が出ちゃう現場のが俺は信用できない
「ほれ、ここ切り分けてやっからこの中ならなんでもしていいぞ」
って感じでやんじゃねーの?普通・・・
ってか俺5つぐらい現場移ってるけどこれ以外の開発みたことないや
0415デフォルトの名無しさん
2010/08/04(水) 23:34:11マスターすれば後はシラネって業界だからしょうがないんだろうけど
>>408
プライドが高いんじゃなくて、守秘義務であんまり情報出せないとかそういうのはないの?
どこまで情報出していいかって結構悩む
検索ワードにも気を使うし
0416デフォルトの名無しさん
2010/08/04(水) 23:47:58バグが再現する最小限のソースだろ常考
0417デフォルトの名無しさん
2010/08/05(木) 00:00:34>マスターすれば後はシラネって業界だからしょうがないんだろうけど
そういう問題じゃないんだな
ウィンドウズだってwin32apiやmfcを作る人間でもなきゃ汎用性なんて意識してPG書く必要ないよ
ライブラリを書いてみんなで使うってことはそれだけ資料を作ってみんなに周知させなきゃいけないってことだから
その手間考えたら「他で使うかも・・・」なんて希望的観測の汎用性なんてコストだけ無駄に高くて意味ないと思うな
みんなに使わせるってそれだけ大変だと思うんだよね
0418デフォルトの名無しさん
2010/08/05(木) 00:24:12守秘義務に引っかからない程度まで切り分けできるなら質問するまでもなくバグが取れそうなもんだけど
>>417
うっかりするとバグをばらまくことになるからあんまりコピペはしない方がいいよ
最初から汎用性を考慮する必要はないと思うけど
0419デフォルトの名無しさん
2010/08/05(木) 00:31:28>うっかりするとバグをばらまくことになるから
別に困らない
それがたとえ100箇所だったとしても
所詮同じバグんなもん30分〜1時間もあれば文字列置換やら検索やら駆使してなんとかなる
構造が複雑なほうが問題
こっちは下手したら丸一日〜一週間かかっても解決する兆しすら見えないこともある
こういう天秤のかけ方が下手糞なまんまだといつまでたっても苦労ばかりするぞ
0420デフォルトの名無しさん
2010/08/05(木) 00:34:58a_1 = 1;
a_2 = 2;
a_3 = 3;
...
みたいなのが延々と続く退屈なものだった
っつーかループ知らんのかとか
もしかして最適化なのかとか
メンテする度に数字書き直しとかで大変だろうなとか
いろんなことを思った
0421デフォルトの名無しさん
2010/08/05(木) 00:38:44その例はただの極論にしか見えないけど
ぶっちゃけそれでも問題おきないでしょ?
まず、メンテするかも・・・なんてのが希望的観測であって
メンテなんてない場合がほとんどでしょ?(よしんばあっても単調作業で終了)
これはゲームだからってよりも業務系でもいっしょだけどね
知らん人のソースみて一番嫌なのって構造が複雑なことじゃない?ちがう?
0422デフォルトの名無しさん
2010/08/05(木) 00:56:00それがコピペかどうかちゃんと把握できてるなら困らないけど
普通そんなの覚えてないよね
無理して汎用化しようとして構造が複雑になるのも問題だけど
簡単な構造でもコピペで済ませるやつが多いのがちょっとね
0423デフォルトの名無しさん
2010/08/05(木) 01:19:41似たような箇所がないかどうかまず検索かけてそれから修正入るから
覚えてる覚えてないは関係ないね
それと別に俺も>>420ででたみたいな極端なことはしてないし
それさえなきゃぶっちゃけ否定するところないでしょ?
効率効率あんまり叫ぶ人いるけどそれってライブラリ(3Dエンジン)開発者ぐらいなもんで
ゲーム作る人にはあんまり関係ないよ
やりたきゃライブラリでも売る仕事に就くんだね
0424デフォルトの名無しさん
2010/08/05(木) 01:34:30コピペした後に変数名を変えたりとか少し改造してあるから厄介なんだよな
個人的には絶対ダメとは言わないけどなるべく減らして欲しい
つかバグを修正する時期にコピペ探しで30分〜1時間もロスするのは精神的にツライ
さすがに>>420みたいなのは見ないな
0425デフォルトの名無しさん
2010/08/05(木) 03:19:43それを使ってるだけの側がゲームプログラマーじゃないの?
0426デフォルトの名無しさん
2010/08/05(木) 06:18:37江戸城建設したのは徳川家康か?太田道灌か?
0427デフォルトの名無しさん
2010/08/05(木) 06:25:36>構造が複雑なほうが問題
>こっちは下手したら丸一日〜一週間かかっても解決する兆しすら見えないこともある
こっちは見えないんだなw
0428デフォルトの名無しさん
2010/08/05(木) 07:43:18「下手したら」だろ
下手しなければ良いじゃん
>>424 のは下手しなくても修正の度に30分〜1時間ロスするんだぜ
0429デフォルトの名無しさん
2010/08/05(木) 07:56:420430デフォルトの名無しさん
2010/08/05(木) 09:15:19詳しく教えてください
0431デフォルトの名無しさん
2010/08/05(木) 11:03:04勘違いではないと俺は思ってる。
ってか>>400は、
間違ってると思うなら理由を含め書き込めよ
じゃないと次にこの書き込み読む奴のためにならんだろうが
頭使えks
とここまで煽れば400は答えてくれるんじゃないか?
0432デフォルトの名無しさん
2010/08/05(木) 11:54:15>>422
>無理して汎用化しようとして構造が複雑になるのも問題だけど
>簡単な構造でもコピペで済ませるやつが多いのがちょっとね
すでに書いたから触れなくていいかと思って
0433デフォルトの名無しさん
2010/08/05(木) 12:39:263択−一つだけ選びなさい
答え�@ハンサムの>>400は突如正しい答えがひらめく
答え�A仲間がきて助けてくれる
答え�B泣きながら逃走。 現実は非情である。
煽るならここまでしないと
0434デフォルトの名無しさん
2010/08/05(木) 14:38:100435デフォルトの名無しさん
2010/08/05(木) 16:35:44しかもVisualStudioの画面がテクスチャに貼られていたのですがどうなっているのでしょうか?
エフェクトファイルを追加していじっていたのですが
0436デフォルトの名無しさん
2010/08/05(木) 16:38:36大体そういうのは未初期化のテクスチャ張ったとか、
変数を初期化し忘れてるとか、
初期化し間違えてるとか
が多いな
すさまじいエラーのように見えても実はそんなものの場合が多いと思われる
何をしようとしていたのか詳細があればもっと答えてくれる人がいるだろう
0437デフォルトの名無しさん
2010/08/05(木) 17:50:18オブジェクト1、オブジェクト2、オブジェクト3の順に表示させたら
3が透けて1や2は見えるんですが
1は透けず2、3が見えないんですが
これはカメラ位置とオブジェクトの距離を計測して最適な順に並べなくてはいけないんでしょうか?
それともそれ以外の方法があるのでしょうか?
(Zバッファをオフにするってのも考えたけど余計変なことになりそうな・・・)
0438デフォルトの名無しさん
2010/08/05(木) 21:28:50α物はソートしなくてはいけないんですよマジで
0439デフォルトの名無しさん
2010/08/05(木) 21:39:23簡単なソートプログラムを作っておくか・・・
0440デフォルトの名無しさん
2010/08/05(木) 23:31:100441デフォルトの名無しさん
2010/08/05(木) 23:36:01仕組みを理解しようと考えないんだろう
別に理解できないことではないだろうに。
0442デフォルトの名無しさん
2010/08/05(木) 23:47:17仕組みを理解しようと考えないんだろう
別に理解できないことではないだろうに。(キリッ
0443デフォルトの名無しさん
2010/08/06(金) 00:18:13最適な方法を教えてください
とかわざわざ質問しなくて済むんだぜ?
んでもって知りたかったのは最適な方法じゃなくて
一般的な方法でしょ
0444デフォルトの名無しさん
2010/08/06(金) 00:20:07チュートリアルのスカイボックスみたいにしたいのですができません
テクスチャがおかしいのと、虎も消えてしまいます
よろしくおねがいします
0445デフォルトの名無しさん
2010/08/06(金) 03:39:53最初はみんな右も左もわからんだろう
そもそも回答したくなければ何も答えなければいいだろ
無駄レスばっかつけてんじゃねぇよ
0446デフォルトの名無しさん
2010/08/06(金) 07:55:480447デフォルトの名無しさん
2010/08/06(金) 10:18:36ちょっと「おかしいプログラム」
の幅が広すぎると思われる。
もうちょっと問題を分割して、おかしい部分を提示すれば、
良いアドバイスが得られるはずだ
0448デフォルトの名無しさん
2010/08/06(金) 10:22:32・241行: g_pEffect9[1]->SetTechnique("tec0");
・g_pTxture[1]はキューブテクスチャにする
・332行: for(int i=1;i>=0;--i)
これでそれっぽい絵が表示されたが。これでOKか?
あと1万回ぐらいここで書いてるけど、
DXのコンパネからD3D9のデバッグランタイムを有効にして
アウトプットをみろ。他にもバグっぽい表示は出ているぞ。
0449デフォルトの名無しさん
2010/08/06(金) 11:00:23うおおおおおできました
ありがとうございました!
コントロールパネルも見つけました。vistaはスタート→コントロールパネルに出ないらしいのでなかなか見つけられませんでした。使ってみます
なぜfor(int i=1;i>=0;--i)にすると両方表示されるのでしょうか?
変数もそれぞれ独立しているのでお互いに影響しないと思っていたのですが
0450デフォルトの名無しさん
2010/08/06(金) 11:18:29それはskybox01.fxがZEnableをfalseにしているからだ。
有効にすれば降順にしなくても表示される。
スカイボックスの用途からすると、Z参照は無効にして、
まずスカイボックスから表示が正しいだろう。
0451デフォルトの名無しさん
2010/08/06(金) 11:29:15なるほど!
ありがとうございました
0452デフォルトの名無しさん
2010/08/06(金) 11:37:190453デフォルトの名無しさん
2010/08/06(金) 14:09:21早く回答が欲しかったのなら、回答側が簡単にファイル落とせるように配慮ぐらいしろよ。
0454デフォルトの名無しさん
2010/08/06(金) 14:45:250455デフォルトの名無しさん
2010/08/06(金) 18:41:37そう?俺リトライばっかで途中でやめたけど。
昼間は混んでないから、普通に落とせるけど、>>444の時間帯じゃリトライ多くてね…
0456デフォルトの名無しさん
2010/08/06(金) 23:36:58お前何様なんだよw
自分を勘違いしすぎじゃねーの
0457デフォルトの名無しさん
2010/08/07(土) 00:09:38途中からちょっとムキになったが無理だった..
0458デフォルトの名無しさん
2010/08/07(土) 00:20:59初心者にウサギ跳びをさせ、膝を壊した奴はそもそも天才選手じゃないと捨て、千尋の谷から這い上がった天才を育てるようなもの。
天才でない者の末路は、エロゲ会社で腕を鈍らせるか、同人しながら派遣PG&自殺しかない。
0459デフォルトの名無しさん
2010/08/07(土) 00:27:210460デフォルトの名無しさん
2010/08/07(土) 00:56:52俺様
0461デフォルトの名無しさん
2010/08/07(土) 03:50:49千仞だと思ってた
0462デフォルトの名無しさん
2010/08/07(土) 03:52:200463デフォルトの名無しさん
2010/08/07(土) 04:09:490464デフォルトの名無しさん
2010/08/07(土) 09:44:48傲慢もいいとこだ
まあプログラマの3大美徳には入っているが、
ここの傲慢とは意味が違うがな
0465デフォルトの名無しさん
2010/08/07(土) 14:58:26ちょっと煽るくらいで情報引き出さないと想定できる問題点が多すぎて回答できないとかどうなのよ?
質問者は
素人判断で問題点を想像してそれを根拠に質問するな
大本の判断材料からすでに間違ってることが多すぎる
素直に最終的にやりたい事と現状どうなってるかを明確書け
0466デフォルトの名無しさん
2010/08/07(土) 15:01:390467デフォルトの名無しさん
2010/08/07(土) 15:10:41まったくその通りだねw
0468デフォルトの名無しさん
2010/08/07(土) 15:23:25質問者は、とりあえず
挙げた内容でわかる範囲の答えが欲しいだけ。
それで望む答えが得られなけば、掘り下げて
質問を続ける。または打ち切る。
いたって普通の2chの使い方じゃねーの。
0469デフォルトの名無しさん
2010/08/07(土) 15:46:52無視しとけ
0470デフォルトの名無しさん
2010/08/07(土) 15:57:43だろ。の使い方を間違ってる
0471デフォルトの名無しさん
2010/08/07(土) 16:10:45本人乙
0472デフォルトの名無しさん
2010/08/07(土) 16:19:060473デフォルトの名無しさん
2010/08/07(土) 17:57:340474デフォルトの名無しさん
2010/08/08(日) 16:46:59DirectXにスプライトはない厨のカスが帰ってきたかな?
0475デフォルトの名無しさん
2010/08/08(日) 17:24:53あらゆるものが自分で用意しない限りないんだから。
0476デフォルトの名無しさん
2010/08/08(日) 17:34:13GPUの進歩の方が早いし必死にDirectXの機能理解しても無駄
0477デフォルトの名無しさん
2010/08/08(日) 17:41:53今そのせいで発狂中ww
0478デフォルトの名無しさん
2010/08/08(日) 17:55:27MSが初心者お断りをしているとしか思えない。
0479デフォルトの名無しさん
2010/08/08(日) 18:04:490480デフォルトの名無しさん
2010/08/08(日) 18:11:43全然初心者向けレベルだよ。つか、マイクロソフトにはそうである必要がある
ま、猿の脳みそで苦労するのはDirectXだけじゃないからね
0481デフォルトの名無しさん
2010/08/08(日) 18:12:42DirectX9から使うより遙かに高速動作するのが利点。
全然違うんで驚いた。
0482デフォルトの名無しさん
2010/08/08(日) 18:17:36D3D11でD3DXが使えないとでも思っているのかね?
0483デフォルトの名無しさん
2010/08/08(日) 18:31:26使える、使えないものを挙げてみたら?
0484デフォルトの名無しさん
2010/08/08(日) 18:50:53少なくともヘルプぐらいは確認しようぜ。
確かにD3DXは残っているが、何が残っているのかよく見てみろ。
0485デフォルトの名無しさん
2010/08/08(日) 18:56:440486デフォルトの名無しさん
2010/08/08(日) 19:22:37移行できないのはD3DXに頼ってたからじゃなくてセンスが無いだけ
0487デフォルトの名無しさん
2010/08/08(日) 19:29:060488デフォルトの名無しさん
2010/08/08(日) 19:32:23おいそれとは移行出来ない。
例えば、マルチパスのHDRとか、デファードレンダリングとか。
D3D11で動くかもしれんがベストな実装方法じゃなくなってるし。
0489デフォルトの名無しさん
2010/08/08(日) 19:39:360490デフォルトの名無しさん
2010/08/08(日) 20:32:54D3DX11の定義が少ないのは、D3DX9のまま使えるのが再定義されてないだけ。
数学系関数なんかは互換性があるから、D3DX9のを使える。
0491デフォルトの名無しさん
2010/08/08(日) 20:43:06後三年は様子を見た方がよさそうだな
0492デフォルトの名無しさん
2010/08/08(日) 20:50:002割ほど性能が良い。こっち使った方がいい。
0493デフォルトの名無しさん
2010/08/08(日) 20:53:280494デフォルトの名無しさん
2010/08/08(日) 20:57:040495デフォルトの名無しさん
2010/08/08(日) 20:57:24ID3DXSpriteとかID3DXFontなんかの、ぶっちゃけどうでもいい機能は使えないけどね。
0496デフォルトの名無しさん
2010/08/08(日) 20:59:030497デフォルトの名無しさん
2010/08/08(日) 21:00:16SSEのレジスタがインラインで使い回されるからね。
組み方次第で差が出るよ。
0498デフォルトの名無しさん
2010/08/08(日) 21:02:33フォントはDirectWrite
Direct3D単独でやるなら自分でテクスチャに書き込むなり白
0499デフォルトの名無しさん
2010/08/08(日) 21:18:370500デフォルトの名無しさん
2010/08/08(日) 21:51:56気のせい
0501デフォルトの名無しさん
2010/08/08(日) 21:53:40?
0502デフォルトの名無しさん
2010/08/08(日) 22:15:30これは恥ずかしい
0503デフォルトの名無しさん
2010/08/08(日) 22:47:30>>493がコンパイラの最適化によってそうなってるって意味ならそうだろうなw
ただ、20倍はそうそう無いだろうけどインライン化されやすいこととSSEの効果を考えたら
D3DXと同等かそれ以下なんて有り得ない。
というか今までD3DXの数学周りが初心者向け過ぎた。
0504デフォルトの名無しさん
2010/08/09(月) 06:07:510505デフォルトの名無しさん
2010/08/09(月) 07:30:45サンプル見たらなんか変なユーティリティクラス作ってサンプル間で使いまわしてて
そんなもん作らないといけないならそれをSDKの中に入れとけよと言いたくなることとか
付属のヘルプが9,10,11全部一つになってるのだが、検索で見つかった奴の「場所」っていうのが
全部「Windows DirectX Graphics」になってて開いてみるまでどのバージョン向けかわからないとか
ずいぶん初心者に優しい作りになってるよね。
TWIN TAIL LOVERS.(仮)ってサイト見るまでポリゴンの一つも満足に表示できなかったよ。
0506デフォルトの名無しさん
2010/08/09(月) 07:36:20VisualStudioも最近センス悪いからなぁ
str系の関数全部警告だしたりw
こんなところで深刻なバグ出したことねぇよ
マニフェストとかもセンス悪い
ボタン一発で他で動く.exeができるのが魅力だったのに
0507デフォルトの名無しさん
2010/08/09(月) 09:02:54それとも無駄な処理が多いんですか?
0508デフォルトの名無しさん
2010/08/09(月) 09:24:500509デフォルトの名無しさん
2010/08/09(月) 09:27:400510デフォルトの名無しさん
2010/08/09(月) 09:32:240511デフォルトの名無しさん
2010/08/09(月) 09:33:430512デフォルトの名無しさん
2010/08/09(月) 09:35:36警告も切れるし、マニフェストも使わなければいい。
初期状態でそうしたいのならカスタムテンプレートを作ればいい。
きちんとカスタマイズできるように作られているのに、
くだらない愚痴をたれる意味が分からない。
0513デフォルトの名無しさん
2010/08/09(月) 09:41:50サンプルと同じ流れで組んでしまう人間には害悪にしかならない。
そして自分でものを考えずに評価すら他人に頼る人間には、
何もかもが害にしかならない。
0514デフォルトの名無しさん
2010/08/09(月) 09:47:320515デフォルトの名無しさん
2010/08/09(月) 09:53:00/ \
/ ⌒ ⌒ \
/ (●) (●) \ なに言ってんだろ こいつ
| 、" ゙)(__人__)" .)| ___________
\ 。` ⌒゚:j? ,/ j゙~~| | | |
__/ \ |__| | | |
| | / , \n|| | | |
| | / / r. ( こ) | | |
| | | ⌒ ーnnn |\ (?ソ .|_|___________|
 ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二 _|_|__|_
0516デフォルトの名無しさん
2010/08/09(月) 10:11:11わかります
0517デフォルトの名無しさん
2010/08/09(月) 14:16:240518デフォルトの名無しさん
2010/08/09(月) 14:17:44でも移行すると作ったプログラムはXPとかで動かないし・・・
0519デフォルトの名無しさん
2010/08/09(月) 14:18:00無理ってのはわかった
0520デフォルトの名無しさん
2010/08/09(月) 15:13:32それの繰り返しだよ
0521デフォルトの名無しさん
2010/08/09(月) 15:14:18完成するのはXPの公式サポートが切れた後だろう。
0522デフォルトの名無しさん
2010/08/09(月) 15:15:360523デフォルトの名無しさん
2010/08/09(月) 16:22:07D3D11が今のところ初心者に優しくないというのは同意だけど、X形式ってスキニングやアニメーションには
適してなかったからね。
四元数を格納出来ない=スキニングで関節がつぶれるわ、アニメーションでSlerpとか一切使えないわ、
大昔の固定機能パイプラインにあった行列パレットを使うってんならまだしも、
スキニングやアニメーションに手を出した瞬間X形式は使い物にならない。
(四元数格納出来ないってのが間違ってたらスマソ)
商用だろうと個人だろうと、どうせ自前形式を実装するはめになるんだから、X形式をD3DX10〜11で切ったのは
DirectX開発チームの英断だと思うけどねぇ。
現状に即した新しい形式が出てもいいとは思うけどね。
0524デフォルトの名無しさん
2010/08/09(月) 16:24:25しかしその自己形式もあれもこれもと弄ったらよくわからないことになって
Xファイルでイイよもう!ってなったことはあったけど
0525デフォルトの名無しさん
2010/08/09(月) 16:24:530526デフォルトの名無しさん
2010/08/09(月) 16:45:26SkinnedMeshサンプルのXファイルに無いから出来ないものと思い込んでた
0527デフォルトの名無しさん
2010/08/09(月) 17:28:25そこまでいろいろ考えてやったことない
というかみんなDirectXを何に使ってんだ?
そんな極めなきゃいけないことあったっけ?
0528デフォルトの名無しさん
2010/08/09(月) 17:28:540529デフォルトの名無しさん
2010/08/09(月) 17:31:03ってこういう勘違いしたい奴が必死に玄人気取ってるだけだろ。
0530デフォルトの名無しさん
2010/08/09(月) 18:22:47何がそんなに気に食わないんだw
0531デフォルトの名無しさん
2010/08/09(月) 18:38:490532デフォルトの名無しさん
2010/08/09(月) 19:09:05裸があってそこから服や帽子や武器を付けていくときにその都度ファイルを読み込んだ方が良いのですか?
それともファイルは最初に全部読み込んでおいてバッファ的なところに溜め込んでおいて表示だけしないというような感じなのでしょうか?
0533デフォルトの名無しさん
2010/08/09(月) 19:13:50文字の表示が若干ぼやけるようになってしまいました。
どうすればいいか教えて頂けませんか。
↓ソースです。
http://zif.hp.infoseek.co.jp/upload/font.h
このサンプルを参考にしています。
http://marupeke296.com/DXGSmp_No5_Font.html
0534デフォルトの名無しさん
2010/08/09(月) 19:23:45g_pD3DDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT );
g_pD3DDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT );
g_pD3DDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT );
0535デフォルトの名無しさん
2010/08/09(月) 19:35:11直りました。
ありがとうございました。
0536デフォルトの名無しさん
2010/08/09(月) 19:37:35多分SimpleProjectとかそういうやつの話だと思うけど、別にファイルの読み込みはイベントハンドラ内でなくとも
作るゲームの都合で好きなときにやればいい(デバイスが存在する時であれば)。
OnResetDeviceはデバイスロストでぐぐれば幸せになれるかと。
それもD3DPOOL_MANAGEDやSYSTEMMEMで作ったリソースには関係無いけどね。
0537デフォルトの名無しさん
2010/08/10(火) 09:19:41カメラの位置からカメラの視点まで線を引くときって頂点リストにどういう点を入れれば良いですか?
描画はシェーダです
0538デフォルトの名無しさん
2010/08/10(火) 09:24:41よく考えろ。
ディスプレイの真ん中に点を表示して何をするつもりだ?
0539デフォルトの名無しさん
2010/08/10(火) 09:29:390540デフォルトの名無しさん
2010/08/10(火) 10:05:590541デフォルトの名無しさん
2010/08/10(火) 10:21:090542デフォルトの名無しさん
2010/08/10(火) 10:27:47しかも物理エンジン使ってるのですが使えるのですか?
0543デフォルトの名無しさん
2010/08/10(火) 10:31:58ローポリゲーだろうが2Dゲーだろうが恩恵はある
0544デフォルトの名無しさん
2010/08/10(火) 10:40:37実装次第としか言いようがない。
>しかも物理エンジン使ってるのですが使えるのですか?
具体的に何かも分からないのに、他人が答えられるわけがないという判断は出来ないの?
それと「しかも」はどこにかかってるの?
0545デフォルトの名無しさん
2010/08/10(火) 10:47:500546デフォルトの名無しさん
2010/08/10(火) 10:52:17プログラマの性なんだろうな
0547デフォルトの名無しさん
2010/08/10(火) 10:52:570548デフォルトの名無しさん
2010/08/10(火) 10:59:300549デフォルトの名無しさん
2010/08/10(火) 11:06:49DirectX11の方が1.8倍ぐらいFPSが上だった。
0550デフォルトの名無しさん
2010/08/10(火) 11:22:450551デフォルトの名無しさん
2010/08/10(火) 11:22:59だいじなことなので(ry
0552デフォルトの名無しさん
2010/08/10(火) 11:29:390553デフォルトの名無しさん
2010/08/10(火) 11:35:430554デフォルトの名無しさん
2010/08/10(火) 11:55:150555デフォルトの名無しさん
2010/08/10(火) 12:00:35エミュじゃねえよ。
適当なことを言う前に、最低限チュートリアルぐらいは動かせ。
0556デフォルトの名無しさん
2010/08/10(火) 12:47:10エミュレートではなく下限の機能を指定して動かすんだよ
0557デフォルトの名無しさん
2010/08/10(火) 13:04:12それって9とか11とか関係無しに単にGPUの性能の差じゃ?
GeFoで言うとGTX480でもない限り
現行の400シリーズの性能は9世代のハイエンドクラスに及ばないぞ
0558デフォルトの名無しさん
2010/08/10(火) 13:07:439世代のビデオカードでDirect3D9と11を使った場合の性能差の話。
0559デフォルトの名無しさん
2010/08/10(火) 16:23:14なるほど。おかしな事いって申し訳ない。
なんかのニュース記事で見た気がしたけんだど、夢だったか・・・。
0560デフォルトの名無しさん
2010/08/10(火) 16:47:17現実的には使い物にはならないけどね。
DirectX9世代のビデオカードを11で動かすなら、
D3D_FEATURE_LEVEL_9_Xを利用することになる。
0561デフォルトの名無しさん
2010/08/10(火) 18:00:45GPUがその性能の半分も発揮できないんだよね。
0562デフォルトの名無しさん
2010/08/10(火) 20:58:430563デフォルトの名無しさん
2010/08/10(火) 21:29:54ステートの切り替えを気にせず並行処理出来る点が大きい
0564デフォルトの名無しさん
2010/08/10(火) 21:44:13コイツが何を言ってるか誰か説明してくれ。
0565デフォルトの名無しさん
2010/08/10(火) 21:49:47こういうのってDirectX9じゃどんなに自分でプログラム組んでもできないの?
0566デフォルトの名無しさん
2010/08/10(火) 22:10:11出来ないと思うよ
0567デフォルトの名無しさん
2010/08/10(火) 22:11:14デバイスを複数生成すれば出来るが、パフォーマンスが落ちる上にリソースが共有出来なくなるので事実上無理。
0570デフォルトの名無しさん
2010/08/11(水) 11:16:530571デフォルトの名無しさん
2010/08/11(水) 11:23:120572デフォルトの名無しさん
2010/08/11(水) 17:20:56D3DXMATRIX 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);
0573デフォルトの名無しさん
2010/08/11(水) 17:39:040574デフォルトの名無しさん
2010/08/11(水) 17:42:470575デフォルトの名無しさん
2010/08/11(水) 17:44:030576デフォルトの名無しさん
2010/08/11(水) 17:45:400577デフォルトの名無しさん
2010/08/11(水) 21:13:02D3DXMatrixTranslation(&mat, 327, 81, 0);
mat._22=-1;
でいいやん
0579デフォルトの名無しさん
2010/08/12(木) 10:24:35このSDKが入っていないPCで動作テストをしたところ
d3dx9d_40.dllが見つかりませんというエラーが出ます。
で、directx end-user runtimesとかを入れたりしてみたのですが
d3dx9d_40.dllは入っておらず、結局上記のSDKを入れることでしか解決できませんでした。
これだと起動できないPCはあの重いSDKをダウンロードしなきゃならないハメになるのですが
何か設定とか間違えてるんですかね・・・
0580デフォルトの名無しさん
2010/08/12(木) 10:31:020581デフォルトの名無しさん
2010/08/12(木) 10:50:570582デフォルトの名無しさん
2010/08/12(木) 11:02:23ってよく見たらデバッグバージョンじゃねーか
デバッグビルドは配布できないし、SDK無いと動かないのは当たり前
0583デフォルトの名無しさん
2010/08/12(木) 11:04:45以下に書いてあるものとプラスして必要な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
0584579
2010/08/12(木) 11:34:01やはり別のSDKに移し替えるというのが無難なんでしょうか
0585デフォルトの名無しさん
2010/08/12(木) 11:35:190586デフォルトの名無しさん
2010/08/12(木) 11:40:39もしかしてVisualStudioのExpressEditionとかだったら
ツールのオプションのプロジェクトおよびソリューションの全般から
ビルド構成の詳細を表示にチェック入れてDebug→Releaseに替えてビルド
0587デフォルトの名無しさん
2010/08/12(木) 11:54:160589デフォルトの名無しさん
2010/08/12(木) 12:28:52ビルドした後できるEXEの場所は変わるぞ?
DebugディレクトリのとこにReleaseディレクトリができてるはずだが
そこのEXEを動かしたか?
0590デフォルトの名無しさん
2010/08/12(木) 12:32:460591デフォルトの名無しさん
2010/08/12(木) 12:35:19#pragma comment( lib, "d3dx9d.lib" )
#else
#pragma comment( lib, "d3dx9.lib" )
#endif
0592デフォルトの名無しさん
2010/08/12(木) 12:40:23これはsdkにしか入ってない。これ直さない限りどのSDK使っても同じ
0593デフォルトの名無しさん
2010/08/12(木) 12:43:370594デフォルトの名無しさん
2010/08/12(木) 12:46:51一部のライブラリにバグがあるから知らずに使うのは危険
解かってて使うならまったく問題ない
EXEのサイズが大きくなるくらいか
0595デフォルトの名無しさん
2010/08/12(木) 12:50:30もうしてますと返ってこなかったとこみるとDebugビルドだったんじゃないの?
それだとSDKが解決しても今度はVC++インストールしてないと動かないと
言ってきそうな気がするw
0596579
2010/08/12(木) 13:35:00>>589
やり方が違うのかわかりませんが
こっちだとリリースビルドしても独立したReleaceフォルダが生成されます。
>>595
ちゃんとリリースにしてますよ。
0597デフォルトの名無しさん
2010/08/12(木) 13:46:28でそれはDebug、Release別々に設定できるのに、
わざわざ全ての設定に入れてたということだな
消してもビルドできるならヘッダのどこかでpragma指定で入ってんだろうけど
そこにd3dx9d.libと入れるよう指示したのはだれよ?
0599デフォルトの名無しさん
2010/08/12(木) 14:32:010600デフォルトの名無しさん
2010/08/12(木) 19:55:02PNGファイルの透過を使っていない画像を表示した時、
40×40の画像だったら64×64の余った部分が黒く表示されてしまいます。
*pSrcRectを指定する以外の解決する方法はありませんか?
0601デフォルトの名無しさん
2010/08/12(木) 20:32:4240x40以外の部分を透明色にしとけばいいじゃん
そうじゃなくて40x40の画像からテクスチャをつくってるのに64x64で表示されてしまうってこと?
あと「*pSrcRectを指定」がNGな理由を完結に
0602600
2010/08/12(木) 20:42:46後者の40×40の画像なのに表示は64×64ってことです。
PNGファイルで透過色を一色でも指定してあったら黒い部分は何故か消えます。
*pSrcRectを使うと画像のサイズ情報を入力しないとで不便なので
できれば使わずに表示したいと思ってます。
0603デフォルトの名無しさん
2010/08/12(木) 20:44:160604デフォルトの名無しさん
2010/08/12(木) 20:46:05D3DXCreateTextureFromFileじゃなくて
D3DXCreateTextureFromFileExでサイズを40x40でテクスチャ作ったら直らない?
0605600
2010/08/12(木) 21:26:25ファイルではなくリソースから読み込んでいるので
D3DXCreateTextureFromFileInMemoryExを使ってますが、
WidthとHeightを指定しても無理でした。
0606デフォルトの名無しさん
2010/08/12(木) 21:32:120607デフォルトの名無しさん
2010/08/12(木) 21:33:41この前提が間違っている。
まさか手動で入力しないといけないとか思っているとかいうことはないよな?
0608デフォルトの名無しさん
2010/08/12(木) 21:37:30うちの環境じゃ再現されないんだよね
D3DXCreateTextureFromFileやExでサイズ指定無しでテクスチャを作成した場合
2の累乗でテクスチャが作成されるのは仕様なんだけど
サイズを指定してもダメなのは>>603の言うとおりビデオカードの問題もあるかもしれない
サイズ指定でテクスチャを作った後
D3DSURFACE_DESC desc ;
テクスチャ->GetLevelDesc(0, &desc ) ;
でdescの中身を確認してテクスチャが本当に指定したサイズで作成されてるか確かめて見て
0609600
2010/08/12(木) 22:04:10テクスチャが作成されるようになりました。
レスくれた方ありがとうございました。
>>607
この前自動で入力しよう思って調べたけど良くわかりませんでした。
もしスレ違いでなかったら教えて頂けませんか。
0610デフォルトの名無しさん
2010/08/12(木) 22:16:18D3DXCreateTextureFromFileInMemoryExのヘルプをよく確認しろ。
分からないんじゃなくて確認を怠っているだけだ。
0611デフォルトの名無しさん
2010/08/13(金) 00:16:460612デフォルトの名無しさん
2010/08/13(金) 00:28:52お前は 3D 壁ずり でググることもできないの?クズなの?
ついでにDirectX関係ねーしそれ
0613デフォルトの名無しさん
2010/08/13(金) 00:52:410614デフォルトの名無しさん
2010/08/13(金) 01:38:32俺も探したがなかった。
適当に法線方向に戻す
0615デフォルトの名無しさん
2010/08/13(金) 01:40:21何かアドバイスできるかもしれない
0616デフォルトの名無しさん
2010/08/13(金) 01:55:15床ズリって発射するときどうすんの?
ちんこにあらかじめティッシュかぶせとくの?
0617デフォルトの名無しさん
2010/08/13(金) 02:03:14慣れないうちは目標を外して悲しいことになるんで注意だ
0618デフォルトの名無しさん
2010/08/13(金) 02:05:000619デフォルトの名無しさん
2010/08/13(金) 02:21:39で、キャラを中心にカメラを回転させる方法についてだが
0620デフォルトの名無しさん
2010/08/13(金) 02:33:26それのどこに悩む要素があるんだ?
0621デフォルトの名無しさん
2010/08/13(金) 13:03:46あぁバカにはわからないやつね。
0622デフォルトの名無しさん
2010/08/16(月) 10:52:42初歩的な質問かもしれませんが、DirectXを使って描画しているウィンドウの
クライアント領域(描画領域)が画面上から完全に見えなくなったとき
�@他ウィンドウでDirectXで描画を行っているウィンドウの描画領域を覆い隠す
�AタスクバーでDirectXで描画を行っているウィンドウの描画領域を覆い隠す
�BDirectXで描画を行っているウィンドウの最小化ボタンを押してウィンドウを最小化
(DirectXで描画を行っているウィンドウの描画領域が画面上から無くなる)
などの場合にCPU使用率が100%に張り付いてしまいます。
↓図説です。
http://jishinkuma.aa0.netvolante.jp/etc/cpu_full.PNG
このCPU使用率の100%張り付きの正しい対処法はございますでしょうか。
ご存知の人がいらっしゃれば、教えてくださらないでしょうか。
よろしくお願いします。
0623デフォルトの名無しさん
2010/08/16(月) 11:06:190624デフォルトの名無しさん
2010/08/16(月) 12:41:33WM_PAINTとかに置いてないよね?
0625622
2010/08/16(月) 14:48:19ご指摘ありがとうございます。
Sleepに0を指定するテクニックを初めて知りました。
>>624
レスありがとうございます。
while( msg.message!=WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
DrawSprite(); ← ★メインループはここに置いています
}
}
WM_PAINTには置いていません。
0626622
2010/08/16(月) 15:05:27g_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(); //転送
}
他にもっとよい方法があれば、ご教示よろしくお願いします。
0627デフォルトの名無しさん
2010/08/16(月) 15:25:13while( msg.message!=WM_QUIT )
がめちゃくちゃ臭いんだけど
WM_QUITのチェックは
PeekMessageの後にやったほうがいいんじゃないの?
0628622
2010/08/16(月) 17:00:51ご指摘ありがとうございます。
しかし、以下のように書いても結果は同じでした。
do
{
if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
// アイドル処理
if (!AppIdle())
{
// エラーがある場合,アプリケーションを終了する
DestroyWindow(g_hwnd);
}
}
} while (msg.message != WM_QUIT);
0629デフォルトの名無しさん
2010/08/16(月) 17:42:57こうすべきって話じゃ?
if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
break ;
0630デフォルトの名無しさん
2010/08/16(月) 17:46:35そういう時に、Sleep(0)するんだよ。
0631デフォルトの名無しさん
2010/08/16(月) 17:57:01どっかにカレントウィンドウじゃないときは描画(Present)しないって処理がはいってんじゃないの?
0632デフォルトの名無しさん
2010/08/16(月) 18:20:38ウィンドウ生成と初期化だけでもDXUT使えばいいのに
0633622
2010/08/16(月) 18:56:19話の切り分けありがとうございます。
(不覚にも>>627やったら問題解決するかとオモタ)
>>630
作法のご指導ありがとうございます。
処理しています。
>処理する必要が無い時
Presentもしています。
>>631
CPU使用率が100%に張り付く条件
>>622の�@の時にデバッガで止めて、
Presentを処理しているにも関わらず、
CPU使用率が100%に張り付くことを確認しました。
>>626の方法で100%に張り付かなくなったけど、
描画領域が表示されているときはCPU使用率5%
描画領域が表示されていないときはCPU使用率30%となり
気持ち悪い状態です。
>>632
DXUTって何でしょうか。
具体的に実装に必要な関数名を教えていただければ助かります。
0635デフォルトの名無しさん
2010/08/16(月) 19:27:25626のようなものはまずいと思われる
基本的にループではアイドリングのみのほうが良さそう
ループの中で、
if(今の時間 - BeforeFlameTime < 16/*1フレームの時間*/){
BeforeFlameTime = 今の時間;
Render();
}
sleep(0);//Sleep(1)でもいいかも
とかやってフレームレートを固定してみたらどうだろう
1000 / 60 = 16.666666だから上のだとずれるけど
0636622
2010/08/16(月) 22:05:54具体例をありがとうございます。
色々サイトを調べてみましたが
�@timeGetTime()(timeBeginPeriod()で精度を上げる)
�ASleep(0)
の組み合わせで制御したいと思います。
Sleep(1)は精度が悪く10msもスリープするらしいので使えません。
Sleep(0)で5μs程スリープするそうです。
timeGetTimeの精度が1msではないマシンは見捨てることにします
数日間プログラミングから離れるので報告は遅くなると思います。
色々参考になる意見を出していただきありがとうございました。
0637デフォルトの名無しさん
2010/08/16(月) 22:14:56チュートリアルそのままでのその現象は起きるわけ?
起きないんだったら自分で弄った設定を見比べれば自ずと原因が分かるはず
起きるんだったらハードとかドライバとかOSとの相性とかから見直す必要があるんじゃ
0638デフォルトの名無しさん
2010/08/16(月) 23:06:27DXUT使うかCD3DApplication使うか悩む。
0639638
2010/08/17(火) 01:07:44CD3DApplicationの頃のほうがオブジェクト指向!って感じで、洗練されているような
気がするんだけど、どう思う?
CD3DApplicationはt-potさんの9.0系ののサンプルでみれる。
俺はDirectXに関してにわかなので、ほかの人の感想聞きたい。
0640デフォルトの名無しさん
2010/08/17(火) 02:51:08俺はDirectXに関してはSDKをダウンロードしたことすらないがな
0641デフォルトの名無しさん
2010/08/17(火) 23:40:15他のOSでは問題なく動作していてるコードなのですが、windows7の64bitでLockRectを使用した場合にのみ
たまにLockRectを呼んだときにエラーも返って来ないまま動作が停止してしまいます。
何か対処法みたいのってありますでしょうか?
0642デフォルトの名無しさん
2010/08/18(水) 00:00:130643デフォルトの名無しさん
2010/08/18(水) 01:11:170644デフォルトの名無しさん
2010/08/19(木) 02:07:04準備状態と、キックと、銃を撃つアニメーションなのですが
プログラム上でアニメーションが切り替わる時にペロッと紙みたいになってしまいます
http://www1.axfc.net/uploader/Ar/so/22978
どうしてでしょうか?
0645デフォルトの名無しさん
2010/08/19(木) 02:32:56荒すぎてよく見えないけどモーション間の補完になにか問題あるんじゃないの?
補完してるならモーション補完切ってどうなるか試して見たら
補完してないならプログラムかファイルに問題あるんだろうけど動画からは判断できない
モデルファイルが自分しか読めない独自ファイルじゃないならそれをうp
0646デフォルトの名無しさん
2010/08/19(木) 02:39:220647デフォルトの名無しさん
2010/08/19(木) 02:43:530648デフォルトの名無しさん
2010/08/19(木) 02:47:43わざわざ動画にしてくるあたり
そのうちパクられるのが嫌なのでソースは出したくないファイルも出したくないって言い出しそうな空気
0649デフォルトの名無しさん
2010/08/19(木) 03:05:00できましたありがとうございました
0650デフォルトの名無しさん
2010/08/19(木) 15:32:210651デフォルトの名無しさん
2010/08/19(木) 23:11:03つーか君には大切なソースってもんが無いの?
こんなバカしかいないゴミ捨て場みたいな
ところに大切なソースを晒すなんて
俺だったら無理
0652デフォルトの名無しさん
2010/08/19(木) 23:20:560653デフォルトの名無しさん
2010/08/20(金) 00:15:150654デフォルトの名無しさん
2010/08/20(金) 00:50:280655デフォルトの名無しさん
2010/08/20(金) 02:24:440656デフォルトの名無しさん
2010/08/20(金) 02:34:240657デフォルトの名無しさん
2010/08/20(金) 07:00:300658デフォルトの名無しさん
2010/08/20(金) 08:49:05超画期的なシステム組んでるわけでもない
既存のありふれた手法さえまともに動かせないくせに
0659デフォルトの名無しさん
2010/08/20(金) 09:42:010660デフォルトの名無しさん
2010/08/20(金) 09:49:220661デフォルトの名無しさん
2010/08/20(金) 20:29:34windowsなら付属のムービーメーカーででも圧縮すれば
140MのAVIもせいぜい数十メガ程度にできるからそれを推奨だ
0662デフォルトの名無しさん
2010/08/20(金) 21:46:350663デフォルトの名無しさん
2010/08/21(土) 22:51:23バグは何が原因でしょうか?
ノートPCでもデスクトップPCでも、PS/2キーボードでもUSBキーボードでも
起きましたので特定のハードウェアが悪いというわけではなさそうですし
0664デフォルトの名無しさん
2010/08/21(土) 22:53:43取得したキー情報の扱いの方に問題があるんじゃないか?
0665デフォルトの名無しさん
2010/08/21(土) 23:07:02シェーダーに手を出そうと思いこんな風に作ってみました
ですがメッシュが灰色になり、メッシュの色が出ません(本当は赤青緑になると思う)
どこが悪いのでしょうか?
ピクセルシェーダーにうまくディフューズが行ってないのか・・・?
0666デフォルトの名無しさん
2010/08/21(土) 23:18:53BeginPass()とEndPass()
の中でパラメータでデータをセットしたら
ID3DXEffect::CommitChanges
しないと反映されないですぜ
といっても普通diffuseは頂点シェーダからピクセルシェーダへ出力
するのが普通じゃないか?
0667デフォルトの名無しさん
2010/08/21(土) 23:27:24あんなに悩んでたのがアホのようだ・・・
ありがとうございました
0668666
2010/08/21(土) 23:52:04下の文は以下スルーでたのむー
0669デフォルトの名無しさん
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
などのページを参考にしたのですが、解決しません。
何が原因か検討がつきません。
ご教授お願いします。
0670デフォルトの名無しさん
2010/08/22(日) 13:37:59extras\directshow\includeの優先順位を
PlatformSDKの優先順位より下げて見たら?
てか、2003だとDirectShowはPlatformSDKに入ってないの?
ウチの環境(WindowsSDK6.0&7.0)だと
dxtrans.hが無いとは言われるけどそこを直せばDWORD_PTR関連のエラーは出ないぞ
0671デフォルトの名無しさん
2010/08/22(日) 14:06:151.VisualStudio関係
2.DirectX SDK(November 2008)\Include
3.Platform SDK\Include
4.DirectX SDK(November 2008)\Extras\Include
にしていますが、669のようなエラーがでます。
今、検索してみたらPlatform内にもDirectShowがありました。
ですが、Platform内のDirectShowにはIncludeディレクトリはないのですがどうやってリンクするのですか?
見当違いな質問ならすいません。
0672デフォルトの名無しさん
2010/08/22(日) 14:54:29とりあえず4番を消せばいいんじゃないかな
0673669
2010/08/22(日) 14:57:070674デフォルトの名無しさん
2010/08/22(日) 15:00:260675669
2010/08/22(日) 15:11:471.Platform SDK
2.DirectX SDK(November 2008)
3.VisualStudio関係
の順番にしたところ、669のエラーはすべて消えました。
ありがとうございます。
次は、
fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください
というエラーになりました…
続けざまにすいません。
0676デフォルトの名無しさん
2010/08/22(日) 15:15:340677669
2010/08/22(日) 15:18:03strmiids.lib(strmiids.obj)でエラーになっています。
0678デフォルトの名無しさん
2010/08/22(日) 15:40:32VisualStudioのバージョン間の互換問題と思われ
特に理由がないなら2003じゃなくて新しくしたら?
そしてそろそろスレ違い
0679669
2010/08/22(日) 15:54:20ありがとうございます。
Releaseでコンパイル通ったので、とりあえずは良しとしてもっと勉強します。
0680デフォルトの名無しさん
2010/08/22(日) 16:12:410681デフォルトの名無しさん
2010/09/01(水) 11:09:37HRESULT hr = D3DXLoadMeshFromX(...);
if(FAILED(hr)){
assert(0 && "D3DXLoadMeshFromX");
}
などエラーチェックを書くのが良いと思うのですが、
HRESULT の戻り値を持つ関数が非常に多いのでどこまで付けたほうがよいのか?
と疑問に思いました
考えられる案としては、
1、何かを生成する関数の時だけチェックする
2、生成の時に加え描画もチェックする
3、すべてのHRESULTはチェックすべき
4、どの関数を使うかによるから答えは無い 経験で養え!
よろしくお願いします
0682デフォルトの名無しさん
2010/09/01(水) 11:22:020683デフォルトの名無しさん
2010/09/01(水) 16:42:28俺はMSのサンプルみたいに更にHRESULTで返すのがいやだから例外に変換してるけど
0684デフォルトの名無しさん
2010/09/01(水) 19:39:250685デフォルトの名無しさん
2010/09/01(水) 21:18:100686デフォルトの名無しさん
2010/09/02(木) 22:26:34D3DXQUATERNION 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で代用しておいた
0687デフォルトの名無しさん
2010/09/02(木) 23:25:52DirectXViewerでの確認は役に立たない
一体どういう風に組んでるのか知らんけど
普通に動くはずのものが崩れて表示される・・・ときがあるw(←ココ重要w)
0688デフォルトの名無しさん
2010/09/03(金) 00:05:34せっかく全ソースが付いてるので直して使ってる
まぁ、ただの確認用なら昔のSDKについてきたmeshviewを使ったほうが便利なんだけど
0689デフォルトの名無しさん
2010/09/05(日) 08:07:43ボーン入った物体とかもやってる?
また、プログラムで勝手にアルファ物判定ってできないよね?
具体的にはテクスチャのアルファとマテリアルのアルファの話なんだけど・・・
これってデザイナにこのモデルはアルファ物ですって指定してもらったほうがいいよね?
0690デフォルトの名無しさん
2010/09/05(日) 09:41:45出来たとしても事前処理のが圧倒的に効率いいからやらんけど
0691デフォルトの名無しさん
2010/09/05(日) 21:02:07エラーが出て起動できません。
pythonとか入れないと駄目なんでしょうか?
また、ほかに良いコンパイラがあれば教えてください。
0692デフォルトの名無しさん
2010/09/05(日) 22:34:450693デフォルトの名無しさん
2010/09/05(日) 23:07:02RenderMonkeyというのもあるそうだ
しかしまあ入門するのにはなくても十分だし、
普通にC++側でコンパイルするのが良いと思われる
0694デフォルトの名無しさん
2010/09/05(日) 23:19:32なくても大丈夫ですかね。わかりました。頑張ります。
ありがとうございました。
0695デフォルトの名無しさん
2010/09/06(月) 08:58:00DrawPrimitiveUPって使えないのでしょうか?
頂点バッファを使うDrawPrimitiveじゃないと駄目なんでしょうか?
0696デフォルトの名無しさん
2010/09/06(月) 09:00:37なぜ使えないと思ったのかよく分からないがもちろん使える
0697デフォルトの名無しさん
2010/09/06(月) 09:07:26ありがとうございます。
具体的にSetTextureとDrawPrimitiveUPはどこで呼び出せばいいのでしょうか。
ID3DXEFFECTインターフェースのBeginpassメソッドの後にDrawPrimitiveUPを
呼び出せばいいのでしょうか。
SetTextureはこのBeginPassメソッドよりも先に呼び出すのか後に呼び出すのか
どちらでしょうか?
0698デフォルトの名無しさん
2010/09/07(火) 07:02:58糞ァー(笑)
>697
テキトーにぐぐって出てきたけど流れぐらいはつかめるんじゃないかと?
http://www.t-pot.com/program/82_SAT/index.html
0699デフォルトの名無しさん
2010/09/07(火) 11:08:51しかし、皆さんレベル高いですねー
0700デフォルトの名無しさん
2010/09/07(火) 15:08:35DrawPrimitiveでモデルを描画する方法で、アニメーションさせようとしたら頂点一個ずつにアニメ用の行列を
掛けていくと思うのですが、例えばモデルの中で胴体は固定して腕だけを動かそうとしたら腕に該当する頂点
だけに行列を掛けていけばいいのですか?
0701デフォルトの名無しさん
2010/09/07(火) 15:41:49ワンスキンで考えてるならボーンやスキンメッシュの予備知識はあるの?
上の質問じゃどこから説明して良いのかわからん
0702デフォルトの名無しさん
2010/09/07(火) 16:07:011〜20番の頂点が胴体で21〜40番の頂点が腕として決めています。
ボーンやスキンメッシュ等の知識は無いです。
ただ、単純に腕の部分だけを動かすにはどうしたらいいのかなと思ったのです。
Xファイルだとアニメ用の命令があるからいいのですが、無しだとどの様にしたらいいのか
がわからないのです。
0703デフォルトの名無しさん
2010/09/07(火) 17:10:51Xbox360ではA2R10FG10FB10Fの32bitフォーマットが定義されていると聞きます。
(10Fのうち、仮数部が7bit、指数部が3bit)
DirectX上で利用可能なピクセルフォーマットで近いものといえば
A2R10G10B10が考えられますが、10bitは整数値となります。
そういった認識でよろしいでしょうか?
上位互換としてはA16B16G16R16Fが考えられますが、
この場合は帯域が2倍必要ですよね。
0704デフォルトの名無しさん
2010/09/07(火) 18:24:20頂点データにフレーム番号を設定して切り替える。
つまりスキンメッシュの変形版で出来る。
0705デフォルトの名無しさん
2010/09/08(水) 00:37:21もしかしてこんなこと聞いてる?
だったら腕を動かすボーンだけ動かせばいいのでは?
_ ∩
( ゚∀゚)彡 おっぱい!おっぱい!
( ⊂彡
| |
し ⌒J
AnimationSet「おっぱい」の腕のボーンのAnimation行列だけ
( ゚∀゚) ちんちん! ちんちん!
( )
| 彡つ
し∪J
AnimationSet「ちんちん」のチンコのボーンのAnimation行列だけ
おっぱい ( ゚д゚) ちんちん
\/| y |\/
これがどういうことか、後はわかるな?
0706デフォルトの名無しさん
2010/09/08(水) 00:50:42>これがどういうことか、後はわかるな?
_
( ゚∀゚)x"⌒''ヽ、 <こうですか?わかりません!
(| ...:: Y-.、
| イ、 ! :ヽ
U U `ー=i;;::.. .:ト、
ゝ;;::ヽ :`i
>゙::. .,)
/:::. /;ノ
ゞヽ、ゝヽ、_/:: /
`ヾミ :: :. ゙ _/
`ー--‐''゙~
0707デフォルトの名無しさん
2010/09/08(水) 06:40:49あくまでアニメーションを親子関係有でもってる場合のみ可
0708TinPocoRockET
2010/09/09(木) 22:57:58ボールベアリングが2億〜3億テトラ程度の精度らしいんですよ。
越えなきゃ!
0709デフォルトの名無しさん
2010/09/09(木) 23:02:590710デフォルトの名無しさん
2010/09/09(木) 23:22:24かぁーーーねだぁーーーーーーーーーーーーー!!!!
0711デフォルトの名無しさん
2010/09/10(金) 06:51:42DrawPrimitive一発でかける量にひっかかんね?
0712TinPocoRockET
2010/09/11(土) 03:44:25・・・どのくらいまで、どの程度のFPSで描けるんだろう?
・・・1割るよね?
越える?
0713デフォルトの名無しさん
2010/09/11(土) 10:27:20試せばいいじゃないか。
お前は何を言ってるんだ
0714デフォルトの名無しさん
2010/09/11(土) 11:46:25/__  ̄ ̄ ̄\
| | | | ̄\ /
(_) (__) (_)
テトラペイピッポォに雌は存在しません。
テトラペイピッポォ(雄)はペイピッポォの雌と生殖活動を行います。
このとき生まれてくるのはテトラペイピッポォです。
テトラペイピッポォは主にペイピッポォの雄を捕らえて食べて成長します。
0715デフォルトの名無しさん
2010/09/12(日) 08:38:52右手座標系で回転角XYZで表示されていたボーンの形を、左手座標系ではXYZにどの値を打ち込めば同じ形になるかを知る術はありますか?
0716デフォルトの名無しさん
2010/09/12(日) 09:45:50googleで「右手 左手 座標系」で検索して
「左手座標系と右手座標系間の変換 - 篤のメモ帳」
ってサイトが上手く解説してたよ
0717デフォルトの名無しさん
2010/09/12(日) 13:04:410718デフォルトの名無しさん
2010/09/12(日) 13:58:070719デフォルトの名無しさん
2010/09/12(日) 14:00:12ではいつVRAMに置かれるのですか?またいつ解放されるのですか?
0720デフォルトの名無しさん
2010/09/12(日) 14:11:230721デフォルトの名無しさん
2010/09/12(日) 14:19:10その限界の容量はVRAMのメモリぐらいしかないんですよね?
なので、もし作りすぎたら逐次解放しながら管理しなければいけないのかと
思ったんですが、どうなのでしょう?
もし入りきらなかったら、システムメモリに置かれるとかでしょうか?
0722デフォルトの名無しさん
2010/09/12(日) 14:24:080723デフォルトの名無しさん
2010/09/12(日) 14:26:02CreateVertexBufferの時に指定したD3DPOOLフラグによる
D3DPOOL_DEFAULT→ハードによるけど大体VRAM
D3DPOOL_MANAGED→VRAMとシステムメモリの両方(ロスト時やソフトウェア側から変更があった場合システムメモリからVRAMへコピーが行われる)
D3DPOOL_SYSTEMMEM →システムメモリ
0724デフォルトの名無しさん
2010/09/12(日) 14:30:17をしてました。
ありがとう。二度と来ません。
07265
2010/09/12(日) 22:00:450727726
2010/09/12(日) 22:02:400728デフォルトの名無しさん
2010/09/13(月) 07:12:37DrawPrimitiveのUPがあるのとないのとどっちがいい?
0729デフォルトの名無しさん
2010/09/13(月) 08:20:490730デフォルトの名無しさん
2010/09/13(月) 09:03:29お願い。深度バッファについて詳しく教えて。
深度バッファって、既に描画してあるポリゴンと
今から描画するポリゴンとのZ値というものを見比べて、自分の方が小さければ
描画するという仕組みですよね?
CreateDepthStencilSurfaceで深度バッファを作るじゃないですか?
でもこいつにZ値なんて設定する場所ないんですよ。
どこで設定するんですか?
考え方自体間違ってますか?
間違ってたら、わかるように説明してくれますか??
一ヶ月以上理解できなくて、いつも深度バッファ使っていなくて、
後ろから順番に描画していってるの疲れたのでお願いします。
0731デフォルトの名無しさん
2010/09/13(月) 09:14:000732デフォルトの名無しさん
2010/09/13(月) 09:28:160733デフォルトの名無しさん
2010/09/13(月) 11:58:250734デフォルトの名無しさん
2010/09/13(月) 12:05:21Clearするときにz値を指定して全体を初期化する。
ピクセル単位の値は、D3DRS_ZWRITEENABLEがTRUEになっていれば
DrawPrimitiveでポリゴンを描画するときに更新される。
Z値を比較して描画するかしないかは、D3DRS_ZENABLEで設定して
条件はD3DRS_ZFUNCで指定する。
CreateDeviceするときにEnableAutoDepthStencilをTRUEにしておけば
勝手に深度バッファを作ってくれるから、通常は自分でCreateDepthStencilSurfaceを
呼ばなくていい。
EnableAutoDepthStencilをTRUEにしておけば、D3DRS_ZENABLE等も
デフォルトで深度バッファを使う設定になっているから、普通はいじらなくてもいい。
0735デフォルトの名無しさん
2010/09/13(月) 12:13:37本当にすみません。
>>734
本当にありがとうございます!
大体分かったんですが、
DrawPrimitiveで描画するときに、z値の値なんて設定しないですよね?
Z座標は設定するのは知ってますが、Z値とはまた別ですよね?
描画するときのどのようにZ値というのは設定されているのでしょうか?
0736デフォルトの名無しさん
2010/09/13(月) 12:35:380737デフォルトの名無しさん
2010/09/13(月) 13:05:59当然「しっていた」んだろうから説明はしないけど
0738デフォルトの名無しさん
2010/09/13(月) 13:07:38Z値とZバッファの意味から勉強しなおせ。
0739デフォルトの名無しさん
2010/09/13(月) 13:09:11変換行列の求め方まで理解しなくていいけど
その変換によって座標値がどういう座標系に置かれたのかは理解した方がいいと思うが
0740735
2010/09/13(月) 13:21:10奥に位置することになるので、その分オブジェクトは小さくなるんですよね?
だから奥行き感が生まれる。
だから何なんでしょう?
あともう少しなんです。よろしくお願いします。
0741735
2010/09/13(月) 13:23:340742デフォルトの名無しさん
2010/09/13(月) 13:24:33違う
0743735
2010/09/13(月) 13:46:58結論から言うと「知らずにZバッファを使っていた」というのが結論です。
今まで当たり前のことかと思っていたんですが、
描画対象のオブジェクトのZ座標が既に描かれているオブジェクトより小さければ
描かれるのは当然というわけです。
逆に大きければ、既にあるオブジェクトに隠れるのは現実世界においても当然なわけで。
Zバッファを作っとけば、その部分の描画を省略してくれるというわけですね。
とまあ、こんなオチでした。
こんなクソつまらない話に付き合ってくださいまして、ありがとうございました。
また来ます。
ということで、次の方どうぞ〜
0744デフォルトの名無しさん
2010/09/13(月) 13:49:280745735
2010/09/13(月) 13:51:38ちょっとお待ちください。
0746735
2010/09/13(月) 13:57:250747デフォルトの名無しさん
2010/09/13(月) 14:01:55自分から突っ込んでたZ座標からZ値の求め方は
話を混ぜっ返したかっただけで本当は別に知りたかったわけじゃないんだろ?
0748735
2010/09/13(月) 14:06:42だから、デバイスでClearするときの1.0fの値がずっとわかりませんでした。
話してると、この1.0fの意味が知りたくなってきたので、
求め方が知りたくなってきました。
0749735
2010/09/13(月) 15:03:500751デフォルトの名無しさん
2010/09/13(月) 15:32:570752デフォルトの名無しさん
2010/09/13(月) 15:37:470753デフォルトの名無しさん
2010/09/13(月) 15:46:52ただ優越感に浸りたいからかな?
自分より出来ないのを見て安心したいのかな?
まあ所詮2chだからなにいってもしょうがないか
0754デフォルトの名無しさん
2010/09/13(月) 15:49:460755デフォルトの名無しさん
2010/09/13(月) 20:38:16昔はチャットレスってマルチ並みに嫌われてたと思うんだが、今はそうでもないのか
0756デフォルトの名無しさん
2010/09/13(月) 21:08:25zバッファはz値を書き込めるメモリ領域
0757デフォルトの名無しさん
2010/09/13(月) 21:22:340758デフォルトの名無しさん
2010/09/13(月) 21:41:260759デフォルトの名無しさん
2010/09/13(月) 21:45:31Z座標がいつ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値の精度が上がる
0760デフォルトの名無しさん
2010/09/13(月) 22:05:470761デフォルトの名無しさん
2010/09/13(月) 22:23:19いまの議論にどんな不具合が生じてるの?
0762デフォルトの名無しさん
2010/09/13(月) 22:34:45不具合が生じていても気がつくことすら出来ないだろう。
0763デフォルトの名無しさん
2010/09/13(月) 22:40:240764デフォルトの名無しさん
2010/09/13(月) 22:41:53申し訳ないが、Zバッファと深度バッファの区別が
できない初心者の俺に詳しく説明してくれないか?
http://msdn.microsoft.com/ja-jp/library/cc324546.aspx
方法論と実際のバッファとの違いだ、というなら別にそれでもいいんだが。
0765デフォルトの名無しさん
2010/09/13(月) 22:44:59深度バッファはzバッファやwバッファ等のことで
zバッファはzバッファじゃね?
0766デフォルトの名無しさん
2010/09/13(月) 22:49:57なるほど。早速Wバッファでぐぐってみたが、
z値をzの代わりに1/zで評価するだけであとの仕組みは同じなのか。
実に些細な差だなぁ。
色空間の違いと大差ないじゃないか。
0767デフォルトの名無しさん
2010/09/13(月) 22:51:400768デフォルトの名無しさん
2010/09/13(月) 22:52:060769デフォルトの名無しさん
2010/09/13(月) 22:52:32>>760は何が言いたかったの?
0770デフォルトの名無しさん
2010/09/13(月) 22:55:20今は使わない
0771デフォルトの名無しさん
2010/09/13(月) 22:55:32同じような流れを何度も見た気がする。
0772デフォルトの名無しさん
2010/09/13(月) 23:02:570773デフォルトの名無しさん
2010/09/13(月) 23:14:00貼ってみたんですが、端のほうが上手く貼れません
たぶん同じ頂点でtu=0,tu=1の2通り必要な箇所があるせいだと思うんですが
上手く貼る方法はないでしょうか?
0774デフォルトの名無しさん
2010/09/13(月) 23:15:030775デフォルトの名無しさん
2010/09/13(月) 23:15:15Zバッファと深度バッファを混同していると書かれているだろう。
0776デフォルトの名無しさん
2010/09/13(月) 23:17:28引用つけて抜き出せよ
っていうか今の流れと関係ないならそういってから指摘してほしいよ
なんか話の主旨まで180度変わっちゃうような間違いだったの?
0777デフォルトの名無しさん
2010/09/13(月) 23:17:49質問ですが、100×100の画像をそのままの大きさで指定した位置
に移動させるにはどうしたらいいのでしょう?
たとえば、頂点バッファの座標にそのまま100×100の大きさで
指定しても画像が実際の大きさより大きくなってしまいます。
あと、移動行列を使って、1進めたとしても2D座標で言うと100ぐらい移動してしまいます。
おそらく、ワールド、ビュー、射影変換によってスクリーン座標に変換
される際におかしくなってると思うんですが、
どのような座標の設定と行列を設定すれば、自分の思い通りの位置
に移動できるのでしょうか?
0778デフォルトの名無しさん
2010/09/13(月) 23:19:410779デフォルトの名無しさん
2010/09/13(月) 23:22:54その画像ってスクリーン座標に描いてるんちゃうのん?
0780デフォルトの名無しさん
2010/09/13(月) 23:24:51何て言ったらいいのか分かりませんが、
変換済座標を使ったときみたいに、スクリーン座標で指定できるような感覚で
オブジェクトの大きさと移動量を設定したいのです。
0781デフォルトの名無しさん
2010/09/13(月) 23:31:172Dスプライトを直感的にスクリーン座標と一致させたいってことだよね?
パースペクティブ射影(D3DXMatrixPerspectiveFovLH)じゃなくて
正射影(D3DXMatrixOrthoOffCenterLH)で射影行列作ればいいと思うよ
スクリーンサイズが800x600なら
D3DXMatrixOrthoOffCenterLH( D3DXMATRIX *pOut, 0, 800, 600, 0, FLOAT zn, FLOAT zf);
で左上(0.0)になって分かりやすいんじゃないかな
0782デフォルトの名無しさん
2010/09/13(月) 23:35:070783デフォルトの名無しさん
2010/09/13(月) 23:37:250784デフォルトの名無しさん
2010/09/13(月) 23:38:18こんな関数あったんですね・・・!
ちょっとやってみます。
0785デフォルトの名無しさん
2010/09/13(月) 23:51:21ありがとうございました。無事できました。
追加で質問なんですが、普通に射影変換を行ってオブジェクトを移動する場合、
スクリーン座標では横に10移動させたいというときは、
ワールド変換行列や座標の設定はどうすればよいのでしょう?
先ほども言ったように単に10とか設定しても移動しすぎたり、画像がおおきくなってしまいます。
今後3Dを扱っていく上で知っておきたいので、計算式等があれば教えてほしいです。
0786デフォルトの名無しさん
2010/09/13(月) 23:59:15とりあえずスクリーン座標をワールド座標に変換さえできればいいんかな?
http://marupeke296.com/DXG_No48_PointGroundInScreen.html
ワールド変換 → ビュー変換 → 射影変換 → ビューポート変換
ワールド変換でワールド座標(ワールド座標)
ビュー変換でカメラ座標(カメラのローカル座標)
射影変換で同次クリップ空間(xyが-1〜1になるzは0〜1)
ビューポート変換でスクリーン座標(スクリーンの座標になる)
ワールドからスクリーンまで
スクリーンからワールドが出したいときは全部逆のことする
0787デフォルトの名無しさん
2010/09/14(火) 00:01:113Dでスクリーンのドット単位で移動させることに意味があるの?
0788デフォルトの名無しさん
2010/09/14(火) 00:09:34あれじゃん?定番の
マウスで指したところにオブジェクト置きたいんですが・・・
的な・・・
ゲームじゃそんなねぇけどツールだと結構使うんじゃね?
0789デフォルトの名無しさん
2010/09/14(火) 00:09:59ありがとうございます。参考にさせていただきます!
>>787
うまくいえないんですが、今まで2Dではキャラの座標値をそのままパラメータに
してしまえば、その数値を変えるだけで思い通りの場所に動かせたんですが、
3Dになると思い通りの場所に動かすのが難しいんですよね。
なので、どうにかして、moveっていうパラメータを1増加させると自分の
思い描く場所に動かせたらいいなと思ったんです。
みなさんは、3Dの場合どの値を移動するときのパラメータとして持たせてるかがすごい疑問です。
移動行列の値でしょうか?
0790デフォルトの名無しさん
2010/09/14(火) 00:17:30そもそも3D空間における距離の単位は自分で任意に決めていいもの
距離1000の世界の中で1ずつ移動したらゆっくり移動してみえるけど
距離10の世界で1ずつ移動したらめっちゃ速いスピードで動いてるようにみえるでしょ?
まずやるべきことは距離1をどれくらい相当にするかを自分で決めること
それがタバコ1個分でも東京ドーム1個分でも構わないけど
あとはそのサイズにふさわしいモデルを用意したり移動量を与えたりすればいいだけ
0791デフォルトの名無しさん
2010/09/14(火) 00:18:27そうじゃなくて
こう3Dのバーチャルな閉じた世界を構築してそこをカメラで撮るって概念だから・・・
考え方の根っこの部分が違ってるような希ガス
見た目で設定しようとすると逆にカメラがたまたまその角度だったから、
たまたまそこが調度いい位置に見えただけってフェイクが多い気がする
モデリングソフトでも触ってみたらどうでしょうか?
メタセコイアのフリー版でチュートリアルでもやってみるとか・・・
0792デフォルトの名無しさん
2010/09/14(火) 00:24:57何か少しだけイメージが湧きました。お二人ともありがとうございます。
もっと勉強します。
本当にありがとうございました。
0793デフォルトの名無しさん
2010/09/14(火) 10:43:40ひび割れる場所は毎回ランダムでお願いします。
シェーダーはそこそこ使えます。
0794デフォルトの名無しさん
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には何が入っているのでしょうか?
0795デフォルトの名無しさん
2010/09/14(火) 11:17:32↓
最初からfloat4型にした場合〜
0796デフォルトの名無しさん
2010/09/14(火) 11:24:18お前のPCのディスプレイを窓から投げ捨てる。
じゃなくて全体が板ポリ自体の矩形になるよう複数のポリゴンで分割して、
頂点をアニメーション移動させれば良い。
固定テクスチャの場合はそれだけだけど、描画結果を処理したい場合は
フレームバッファの代わりにテクスチャに書き込む、いわゆるポストエフェクト処理が必要。
0797デフォルトの名無しさん
2010/09/14(火) 11:42:18ありがとうございます。
描画結果を処理したいので、ポストエフェクト処理はするんだろうと思ってました。
テクスチャに画面を描画するまではできるんですが、
複数のポリゴンにランダムで分割して、アニメーション移動させるには
どうすればいいのかが分からないんです。
0798デフォルトの名無しさん
2010/09/14(火) 11:52:150799デフォルトの名無しさん
2010/09/14(火) 11:54:030800デフォルトの名無しさん
2010/09/14(火) 11:55:50わからなかったら明日来るのでよろしくお願いします。
0801デフォルトの名無しさん
2010/09/14(火) 12:04:040802デフォルトの名無しさん
2010/09/14(火) 12:15:19面のランダムな方向に直線を入れる。
お好みの回数繰り返して、直線の交点すべてにに頂点を生成する。
後は頂点アニメーションでお好みの動作をする。その際UVの扱いはご一考。
0803デフォルトの名無しさん
2010/09/14(火) 12:19:26ありがとうございます。イメージは湧きました。
後は計算できるかにかかってます。
0804デフォルトの名無しさん
2010/09/14(火) 13:08:46もともとセマンティックPOSITIONで指定されたシェーダー データ型は
float4なのでfloat3にする意味はまったく無い
頂点ストリーム内のデータの成分が対応するシェーダー データ型よりも少ない場合
不足している成分は
w成分は1、それ以外は 0 に初期化される
つまりmul(float4(in_pos,1.0f),wvp)はまったくの無駄
0805デフォルトの名無しさん
2010/09/14(火) 13:25:02なるほど。ありがとうございます。
本の中でほかに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)
{
省略
}
0806デフォルトの名無しさん
2010/09/14(火) 14:01:23あれば便利だと思う
0807デフォルトの名無しさん
2010/09/14(火) 14:17:03別に間違いじゃないし、あまり気にするところではない
TEXCOORD[n]は本来float4型なので
float2にキャストしてるのは最初の2成分しか使用しないという意味でしかない
テクスチャ座標以外の頂点情報を送りたいときに
TEXCOORD1〜を使用するのは良くある手法、別にUとVの2成分だけを送るためのものじゃない
PSでfloat4で受け取っても
>804に書いた通り
足りてない成分はin_tex.z=0,in_tex.w=1に自動で初期化されるだけ
POSITIONの場合はw成分が1か0かで計算結果が変わってしまうので気にするのは正しい
0808デフォルトの名無しさん
2010/09/14(火) 14:31:13なるほど。本当にありがとうございます!
良い人がいてよかったです!
0809デフォルトの名無しさん
2010/09/14(火) 18:03:43プログラミングシェーダー使えばかわめ?
0810デフォルトの名無しさん
2010/09/14(火) 18:09:570811デフォルトの名無しさん
2010/09/14(火) 18:21:310812デフォルトの名無しさん
2010/09/14(火) 18:29:27必ず0.5ピクセル分ずれてるんでしょうか?
0813デフォルトの名無しさん
2010/09/14(火) 18:35:55そのテクスチャ座標を0,0にしたとするとテクスチャの左上部分が
そのピクセルの中心に重なるから0.5ピクセルずれるって本当ですか?
0814デフォルトの名無しさん
2010/09/14(火) 18:38:530815デフォルトの名無しさん
2010/09/14(火) 18:49:280.5だけずれた位置にボケずに描画されるなら意味がわかるんですけど、
なぜ「ボケ」るんですか?
意味がわかりません。
0816デフォルトの名無しさん
2010/09/14(火) 19:02:23誰かボケるなんていった?
0817デフォルトの名無しさん
2010/09/14(火) 19:10:10ピクセルは最小単位なんで
0.5ピクセルずらすとかできない
0818デフォルトの名無しさん
2010/09/14(火) 19:19:13ボケるのはフィルタかかってんじゃねーの?
0819デフォルトの名無しさん
2010/09/14(火) 20:11:44LINEARをかけた時の場合です。
LINEARをかけてテクスチャマッピングをしたら、ボケちゃうので、
必ず0.5ピクセルテクスチャ座標をずらす必要があるのでしょうか?
0820デフォルトの名無しさん
2010/09/14(火) 20:16:13http://msdn.microsoft.com/ja-jp/library/cc373047.aspx
0821デフォルトの名無しさん
2010/09/14(火) 20:23:29何いってるのかわからない
ボケる話とずらす話がなんだかマッチしない
バイリニアフィルタかけたときにズレる話が余計酷くなる的なケースは俺の脳みそにあるんだけどw
わかる人の降臨を待とう
0822デフォルトの名無しさん
2010/09/14(火) 20:27:12それに何らかのフィルターをかければ回りの色に影響されてボケるのは必然だと思うのだがね。
0823デフォルトの名無しさん
2010/09/14(火) 20:34:17だから、その位置にテクスチャの角っこが来るようになると0.5ピクセルずれちゃうと。
だから、あらかじめテクスチャ座標を0.5ピクセルプラスした値をその座標の
テクスチャ座標にしろとかいてあるんですよ。
0824デフォルトの名無しさん
2010/09/14(火) 20:37:200825デフォルトの名無しさん
2010/09/14(火) 20:48:03それはずらす話だろ?
ボケる話はどう絡んでくるんだよ
0826デフォルトの名無しさん
2010/09/14(火) 21:08:06ピクセル内の色を混ぜ合わせてしまうらしいんです。
つまり、0.5ずれてると、ピクセル内に本来あるべき画像が0.5ずつずれるわけです。
すると本来あるべきピクセルの半分とあるべきでないピクセルの半分とが
混ぜ合わされすこし汚い画像になってしまって、それがボケたように見えるらしいんです。
ピクセルは四角形です。
その中に画像を0.5ピクセルずらして考えてみたら、ああなるほどって分かります。
0827デフォルトの名無しさん
2010/09/14(火) 21:15:12じゃあ、とりあえずフィルタを切ればズレる話は解決してるんだな?
0828デフォルトの名無しさん
2010/09/14(火) 21:20:22ずれる話は解決してません。
フィルタを切れば、ボケないだけです。
ずれないようにするには、テクスチャ座標を0.5ピクセル分ずらすしかないようです。
0829デフォルトの名無しさん
2010/09/14(火) 21:21:040830デフォルトの名無しさん
2010/09/14(火) 21:23:370831デフォルトの名無しさん
2010/09/14(火) 21:26:540832デフォルトの名無しさん
2010/09/14(火) 21:41:02ヘ(^o^)ヘ
|∧ 私の世界
/ /
(^o^)/
/( ) 夢と恋と不安で出来てる
(^o^) 三 / / >
\ (\\ 三
(/o^) < \ 三 でも想像もしないもの
( /
/ く 隠れてるはず!
0833デフォルトの名無しさん
2010/09/14(火) 22:02:31フィルタかけるとまわりの色も混ざるぐらい敷き詰めてるのか?
0834デフォルトの名無しさん
2010/09/14(火) 22:10:20敷き詰めてるというかテクスチャ自体が色んな色が入ったテクスチャなので
混ざりやすいというか、混ざってしまう部分が多く汚く見えてしまう感じです。
0835デフォルトの名無しさん
2010/09/14(火) 22:12:02フィルタOFFにするかの話で悩むこっちゃない
0836デフォルトの名無しさん
2010/09/14(火) 22:18:350837デフォルトの名無しさん
2010/09/16(木) 09:44:49古いバージョンでつくったやつを動かしてもらうには古いバージョンのランタイムも入れてもらわないとダメなんだよね
0838デフォルトの名無しさん
2010/09/16(木) 09:51:39DirectX再頒布パッケージは
かなり古いバージョンのDirectXランタイムまで
同時に収録されているんだが、お前は何を言ってるんだ。
0839デフォルトの名無しさん
2010/09/16(木) 10:35:39サンクス
複数入れないとダメなのはSDKだよね
0840デフォルトの名無しさん
2010/09/16(木) 13:14:480841デフォルトの名無しさん
2010/09/16(木) 17:52:37SetTechniqueメソッドの呼び出しタイミングがいまいちわからないんです。
SetVectorとかSetmatrixなどを呼び出すまえに呼び出しときゃあいいんですか?
0842デフォルトの名無しさん
2010/09/16(木) 17:59:28それでいいと思うよ
俺もそうしてるし、それで動いてるし
0843デフォルトの名無しさん
2010/09/16(木) 18:20:08ありがとうございます。
追加で質問です。
同じエフェクトファイルのパスが三つあるとするじゃないですか。
で、その中でSetStreamSourceとかSetVertexDeclarationとか、
SetMatrixの設定をするじゃないですか?
でまず一つのパスの処理が終わってEndPassで終わらすじゃないですか?
で次のパスの描画を始めるときに、またこのストリームソースの設定とか
もう一度設定しなきゃならないんですか?
一度設定したらずっと有効なんですかね?
0844デフォルトの名無しさん
2010/09/16(木) 18:54:22シングルスレッドで処理している限りは基本的にされる。
VRAMが足りなかった頃は
1枚の大きな画像を断片化された複数のテクスチャに分割して
テクスチャ1枚分ずつ描いたりするテクニックがあった。
その時はxyz,uv,テクスチャデータ以外は同じパラメータで動かすから
割りと高速に描画できる。
0845デフォルトの名無しさん
2010/09/16(木) 18:57:58本当にありがとうございました!最高です!
0846デフォルトの名無しさん
2010/09/16(木) 19:00:31原理を覚えた方がいいよ。
0847デフォルトの名無しさん
2010/09/16(木) 20:04:41わかりました!やってみます!
0848デフォルトの名無しさん
2010/09/16(木) 20:32:510849デフォルトの名無しさん
2010/09/16(木) 21:10:360850デフォルトの名無しさん
2010/09/16(木) 21:45:420851デフォルトの名無しさん
2010/09/16(木) 21:49:210852デフォルトの名無しさん
2010/09/16(木) 22:07:01だいじょうぶ そんなむずかしくなかったよ
0853デフォルトの名無しさん
2010/09/16(木) 22:09:00うーん。そうですか。ありがとうございます。
現在はライトがでかすぎるのでどうにかして縮めようと格闘中です。。
0854デフォルトの名無しさん
2010/09/16(木) 22:36:56大抵こんな効果出したいときって加算か荷重平均でそれっぽいモデルを貼り付けたほうがいいよね
0855デフォルトの名無しさん
2010/09/17(金) 13:05:13質問があります。
m2tsファイルをレンダーして、そのファイルの時間幅を
IMediaSeekingのGetDurationを使用して取得しています。
自分のPCでは問題なく取得できているのですが、特定にPCで取得できません。
違いがあるとすれば
私のPC:WindowsXP SP2
ダメなPC:WindowsXP SP3(もしくはWindows7)
です。
WindowsXP SP2以前のPCでは大丈夫のようです。
XPがSP2からSP3に変わることで何かDLLなりが更新されたのでしょうか?
何か対応策を御存知の方、よろしくお願いします。
0856デフォルトの名無しさん
2010/09/17(金) 16:03:00>WindowsXP SP2以前のPCでは大丈夫のようです
の根拠は?複数のXPSP2のPCで試して問題ないの?
0857デフォルトの名無しさん
2010/09/17(金) 16:08:46> >>855
> >WindowsXP SP2以前のPCでは大丈夫のようです
> の根拠は?複数のXPSP2のPCで試して問題ないの?
はい、XP SP2のPC5台ほど試しましたが全部OKでした。
SP3も5台ほど試しましたが全部NGでした。
0858デフォルトの名無しさん
2010/09/17(金) 16:28:01そんなの、必要なコーデックがあるかどうかだろ?
m2tsってことは通常H264/MPEG-4 AVC形式のビデオデータだから
インストール直後のWindowsには入ってないはずだよ。
ゲームで使用したいならメディアにコーデックのインストーラーをつけるべき。
その辺色々とめんどくさいので、
ゲームに使用する動画はWMV9にしておくのがおすすめ。
これで十分綺麗だし、Windows機ならどこでも動く。
0859デフォルトの名無しさん
2010/09/17(金) 16:38:50> >>855,857
> そんなの、必要なコーデックがあるかどうかだろ?
> m2tsってことは通常H264/MPEG-4 AVC形式のビデオデータだから
> インストール直後のWindowsには入ってないはずだよ。
> ゲームで使用したいならメディアにコーデックのインストーラーをつけるべき。
>
> その辺色々とめんどくさいので、
> ゲームに使用する動画はWMV9にしておくのがおすすめ。
> これで十分綺麗だし、Windows機ならどこでも動く。
仕事で使用してるので、コーデック等全て同じ条件でインストールしています。
(勿論SP3特有のコーデックがあるのは知ってますが)
動いてたSP2をSP3にUpdateすると動かなくなります。
ちなみにフィルタの構築も自分で全部指定してコーディングしていますし
レンダーもオートレンダーではなく、自分で全て構築しています。
フィルターの構築・ピンの接続等でエラーが発生しないのはデバッグモードでも
確認済みで、レンダーは正しく完了しています。
後出しですみません。
動画の再生自体はSP2でもSP3でも問題なく出来ます。
再生してる途中でGetCurrentPositionやGetPositionsを実行すると
正しいカレント位置が返ってきますが、GetDurationが失敗して正しい値が取れません。
(エラーコードが0x80004001が返ってきます)
もう一つSetPositionsを実行するとエラーになります。
(エラーコードが0x80004005が返ってきます)
最初から最後まで再生して、最後の位置でGetPositionsを実行すれば
動画ファイルの時間幅は取得できるのですが、再生前にGetDurationなどで
時間幅情報を取得するのにエラーが返ってくるという状況です。
長文すみません
0860デフォルトの名無しさん
2010/09/17(金) 17:43:120861デフォルトの名無しさん
2010/09/17(金) 17:45:00質問内容は長いが、回答は割りと明確。
>正しいカレント位置が返ってきますが、GetDurationが失敗して正しい値が取れません。
>(エラーコードが0x80004001が返ってきます)
E_NOTIMPL
実装されてない。
>SetPositionsを実行するとエラーになります。
>(エラーコードが0x80004005が返ってきます)
E_FAIL
何か分からんが、とにかく失敗した。
要するに他の操作方法を考えろってことだね。
0862デフォルトの名無しさん
2010/09/17(金) 17:50:100863デフォルトの名無しさん
2010/09/17(金) 17:58:47お前がバカなのは知ってる
ttp://www.google.co.jp/search?hl=ja&q=mingw+directx&aq=2&aqi=g8g-r2&aql=&oq=MinGW+d&gs_rfai=
0864デフォルトの名無しさん
2010/09/17(金) 18:03:58>>11,16-17
0865デフォルトの名無しさん
2010/09/17(金) 18:07:12了解です、そちらに移動して聞いてみます。
0866デフォルトの名無しさん
2010/09/17(金) 18:52:40頂点座標とかテクスチャ座標以外の値をTEXCOORD#の頂点デクラレーションを
使えば色んな値を渡せるじゃないですか?
こうやってTEXCOORD#とかいっぱい使っていくと、自分ではどれがテクスチャ座標なのか分かりますが、
ラスタライザはいろんな情報を渡されても、何でテクスチャ座標がこのTEXCOORD#だ、と
理解してくれるのでしょうか?
FLOAT2型の変数でTEXCOORD型のものをテクスチャ座標と判断して
処理してくれるのでしょうか?
わかりにくくてすみません。よろしくお願いします。
0867デフォルトの名無しさん
2010/09/17(金) 19:34:57ありがとうございました
0868デフォルトの名無しさん
2010/09/17(金) 19:46:55ラスタライザはもともとそんなの判断しないぞ?
別にはいってきた情報ごとに処理が分かれてるわけじゃないし
なにか勘違いしてないか?
ラスタライザを抜けてきたデータをどう扱うかはピクセルシェーダの仕事だ
0869デフォルトの名無しさん
2010/09/17(金) 20:17:20ありがとうございます。
でも、頂点シェーダ側でテクスチャ座標をそのまま出力するとするじゃないですか?
でその後、ピクセルシェーダ側で「ピクセルごと」にtex2Dで読んでいくじゃないですか?
ということは、頂点シェーダ側で渡したテクスチャ座標がピクセルごとに自動計算されて分割されたものが
ピクセルシェーダに渡されるから、tex2Dでピクセルごとに処理できるのではないのですか?
根本的に考え方がおかしいんですかね?
0870デフォルトの名無しさん
2010/09/17(金) 20:52:40ラスタライザの中身はハードによって違うしあまり公開されてないけど
入力されたのがテクスチャ座標だろうが色だろうが法線だろうが
まったく同じ計算式で補完された値が出力されてる
何をなやんでるの?
0871デフォルトの名無しさん
2010/09/17(金) 21:01:12そうなんですか。もう一回整理しなおしてみます。
本当すみません。ありがとうございます。
0872デフォルトの名無しさん
2010/09/17(金) 21:08:09逆にそのままピクセルシェーダに渡されるって考えたら
すっきりしました。
なんかすみません。本当にありがとうございました。
0873デフォルトの名無しさん
2010/09/17(金) 21:22:09■■■■■■
■■■■■■
D3DPT_TRIANGLESTRIPで↑みたいに正方形を敷き詰めようとしたら
行の終わりと次の行の始まりが斜めにつながるんだけどどうして?
0874デフォルトの名無しさん
2010/09/17(金) 21:24:060875デフォルトの名無しさん
2010/09/17(金) 23:47:22ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=29&vew=220
0876デフォルトの名無しさん
2010/09/18(土) 17:31:02頂点ストリームは一旦空っぽになるんですか?
0877デフォルトの名無しさん
2010/09/18(土) 17:45:49ならない
入れたらクリアでもしない限り入ったまま
0878デフォルトの名無しさん
2010/09/18(土) 17:50:15DirectXで動くソフトウェアで遠隔対戦するようなソフトウェアがありますが、
どのように動作しているのでしょうか。(メモリをいじるなど)
端的に言えば、adonisの動作の仕組みを知りたいです。
仮想的なデバイスを用意しているのでしょうか?
0879デフォルトの名無しさん
2010/09/18(土) 18:16:12ありがとうございます。
頂点デクラレーションの作成でいくつかの頂点ストリームにわけて作ったときに、
必要なものだけセットして使うようにしたいのですが、
いつまでもクリアされなかったら、無駄なものがセットされたままになってしまいます。
いったんクリアするにはどうすればよいのでしょうか?
0880デフォルトの名無しさん
2010/09/18(土) 18:17:51そんなの、Adonisのreadmeに全部書いてあるじゃん。
公式ドキュメントすら読めないんかね。
0881デフォルトの名無しさん
2010/09/18(土) 18:22:38d3ddevice->SetStreamSourceは参照する予定の
バッファを設定するだけのことで、参照するのはDrawPrimitiveをかけた瞬間だけ。
心配ならnullでもセットしておけばいいんじゃね?
0882デフォルトの名無しさん
2010/09/18(土) 19:09:250883デフォルトの名無しさん
2010/09/18(土) 19:52:540884デフォルトの名無しさん
2010/09/18(土) 22:03:200885デフォルトの名無しさん
2010/09/19(日) 01:16:020886デフォルトの名無しさん
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つでテクスチャ座標も四つで一つのオブジェクトが
できるじゃないですか?
それぞれのオブジェクトに対して、値を与えて処理する方法が
わからないんです。
0887デフォルトの名無しさん
2010/09/19(日) 09:27:36VERTEX2とかいってその構造体、1頂点の内容じゃないだろ?
v[4]とかt[4]って1頂点の内容じゃなくて四角形の内容だろ?
1頂点に必要な内容と四角形に必要な内容を洗い出してもう一回聞きにきてくんね?
それともその内容で1頂点に対する内容であってるの?
0888デフォルトの名無しさん
2010/09/19(日) 09:52:07わかりにくい質問なのにすみません。ありがとうございます。
1頂点に必要な内容は
D3DXVECTOR3 v;
D3DXVECTOR2 t;
この頂点を表す座標とそのテクスチャ座標を表す2つだけです。
四角形に必要な内容は
D3DXVECTOR3 vector;//ベクトル
float time;//時間
その四角形の向きを表すベクトルと表示させておく時間の二つです。
上で書いていたVERTEX2という構造体にはv[4],t[4]っていうのもありますが
四角形には最低頂点とテクスチャ座標が4つ必要かと思いまして、
この二つもつけてしまいました。
こんな感じです。
わかりにくくて申し訳ないですが、よろしくお願い致します。
0889デフォルトの名無しさん
2010/09/19(日) 12:14:001つの頂点情報に4個分の情報を詰め込んでも処理できるわけなかろう?
四角形を描きたいなら頂点は4個必要だ
0890デフォルトの名無しさん
2010/09/19(日) 12:32:46ありがとうございます。
1頂点に必要な内容は
D3DXVECTOR3 v;//頂点
D3DXVECTOR2 t;//テクスチャ座標
頂点を表す座標とそのテクスチャ座標を表す2つの情報だけです。
これを四個作って、座標をセットしたら四角形を作れるのはわかります。
この四角形一つ一つに、ベクトルや時間の情報を与えてシェーダー側で処理
したいんですが、その際の頂点デクラレーションの定義と頂点バッファの
作成がわからないんです。
0891デフォルトの名無しさん
2010/09/19(日) 13:01:01これは頂点情報として持つべき情報なの?
だとしたら変化があるごとに頂点バッファをロックして書き換える予定なの?
それとも
ID3DXEffect::SetVectorとかでソフトウェア側から変化をシェーダーに伝えるの?
質問を変えて最終的に何をしたいのかをちゃんと書いた方がいい希ガス
0892デフォルトの名無しさん
2010/09/19(日) 13:31:07簡単に言うとポイントスプライトと同じ事を、普通の4つの頂点を定義して
四角形を作成してやりたと思っています。
ポイントスプライトでやると以下のコードのようになります。
文字数制限のため一旦きります。
0893892
2010/09/19(日) 13:37:06{
{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;
}
//以降は頂点デクラレーションで定義した値を全て埋めていく。
0894892
2010/09/19(日) 13:38:18こうすると、頂点シェーダ側では頂点デクラレーションで定義した値を
一つのポイントスプライトごとに受け取って処理できるので、
一つ一つ違った動きをさせることができます。
これと同じことを普通の4つの頂点で作った四角形で再現したいのです。
同じ事をするのは不可能なのでしょうか?
今ふとおもったんですが、頂点座標4つとテクスチャ座標4つの頂点デクラレーションを作成し、
それぞれの値はSetVectorで与えていって、描画したいオブジェクトの数だけ
DrawPrimitiveを連投するしかないのでしょうか?
0895デフォルトの名無しさん
2010/09/19(日) 14:16:090896デフォルトの名無しさん
2010/09/19(日) 14:30:29ビルボードを含めたポイントスプライトを完全再現したいの?
それとも頂点を4つにしないとできないような
例えばそれぞれの頂点が別方向に動くみたいななにか特別な理由があるの?
0897892
2010/09/19(日) 14:43:42ある場所を中心に飛び散る感じのやつです。
ビルボードは含めません。
そのエフェクトだけ再現したいと思っています。
頂点4つにしないと四角形が作れないと思ったから4つの頂点にしようと思いました。
基本的に頂点は全て同じ方向に動かす予定です。
テクスチャマッピングされた四角形のオブジェクトが、
パーッと飛び散る感じです。
分かりにくくてすみません。色々ありがとうございます。
0898デフォルトの名無しさん
2010/09/19(日) 15:02:55頂点バッファに入れるデータは頂点のデータであって
プリミティブのデータではない。
0899デフォルトの名無しさん
2010/09/19(日) 15:09:32スキンメッシュ組めばわかるんだけど
そういうのってインデックスもっておいてSetVectorで必要なもん全部渡すんだぜ
例えば1発のDrawPrimitiveで四角形を100個表示するとしたら
100個分の必要なもんをSetVectorで突っ込んでやればいい
このときの頂点バッファは>>888の1頂点に必要な内容で頂点数分作る
四角形に必要な内容はSetVectorで四角形の数の分だけぶち込むことになる
SetVectorで渡したものと頂点バッファで渡したものを結びつける情報が
1頂点に必要な内容の中に必要になるからそれは自分で考えろ的な感じ
0900892
2010/09/19(日) 15:25:43大分イメージが沸きました!
でもたくさんぶち込むとかなり処理落ちしそうですが、そんなもんなんですかね。
とりあえずガンガンぶち込んでやってみます!
ありがとうございました!
0901デフォルトの名無しさん
2010/09/19(日) 15:55:02SM3.0の256本はともかくSM2.0だと96本じゃなかったっけ?
微妙に無駄に見えるけど4頂点それぞれに同じ情報突っ込んどいた方が総合的には楽なんじゃない?
0902デフォルトの名無しさん
2010/09/19(日) 16:40:13現在のビデオチップだと最低5000〜7500プリミティブ位は1回で描画しないと
処理が軽すぎてビデオ側が空回りしてしまう。(CPUの処理能力が先に足りなくなる)
一方、〜100個くらいなら1個1個描画してても別に問題はないだろう。
0903デフォルトの名無しさん
2010/09/19(日) 17:10:520904892
2010/09/19(日) 17:18:15できれば、1000個ぐらい描画してド派手にしたいんですけどねぇ。
ほかにいい方法が思いつかなくて^^;
0905デフォルトの名無しさん
2010/09/20(月) 02:44:35デバイスロスト対策してなかった
デバイスロストで強制終了しますってダイアログが表示されて終わり
プロでも厄介なところには手を付けないものなんですか?
0906デフォルトの名無しさん
2010/09/20(月) 03:11:340907デフォルトの名無しさん
2010/09/20(月) 03:59:13DirectX10以降は、基本的にデバイスロストしないんだよ。
DirectX9で実装されてるってのなら知らないけど。
0908デフォルトの名無しさん
2010/09/20(月) 07:10:12リソース開放漏れがあったんだろう
0909デフォルトの名無しさん
2010/09/20(月) 08:55:31ポイントスプライトって皆さん使ってますか?
ポイントスプライトをサポートしてないビデオカードって今の時代でも多いですか?
0910デフォルトの名無しさん
2010/09/20(月) 11:08:53人に聞かないでdxinfoで調べろ。
0911デフォルトの名無しさん
2010/09/20(月) 14:49:52>>907
FF14はDirectX9だったと思う。つまり手抜き。
0912デフォルトの名無しさん
2010/09/20(月) 15:03:45やっつけだけど試しにやってみた(SDKサンプルSimpleSampleをベース)
1000個くらいならごり押しで平気そうな
てか別にポイントスプライトのほうが軽いんじゃね?と思ったり
最適化とかは考えてないので参考程度に
ttp://www5b.biglobe.ne.jp/~mya_a/dx/SimpleSample.zip
0913デフォルトの名無しさん
2010/09/20(月) 15:08:07てことではないかな。
0914デフォルトの名無しさん
2010/09/20(月) 16:27:25てことは10や11って必要あるの?
0915デフォルトの名無しさん
2010/09/20(月) 16:37:22MMO目的だから多数のキャラと背景を同時に描画しても大丈夫なようにポリも荒いし
エフェクトもそんなに凝ってるわけでもない
トータルかかってる手間は凄いとは思うが
0916デフォルトの名無しさん
2010/09/20(月) 16:52:42具体的に何が凄いのかを明確にしろ。
小学生の感想みたいな曖昧な表現じゃ、
それがDirect3D10以降の追加機能が必要なのか否か判断できない。
0917デフォルトの名無しさん
2010/09/20(月) 16:56:19APIの機能について分けて考えられない人間が、
プログラミングをやっている者にも存在することが残念でならない。
0918デフォルトの名無しさん
2010/09/20(月) 17:13:450921デフォルトの名無しさん
2010/09/20(月) 22:39:21途中で ビデカ引き抜いても?
0922デフォルトの名無しさん
2010/09/20(月) 22:41:060923デフォルトの名無しさん
2010/09/20(月) 22:51:44でもどの範囲でデバイスロストしないんだろね?
DirectXの機能使ったフルスクリーンモードの
スクリーンセーバー動いても大丈夫なレベルなのかな?
0924デフォルトの名無しさん
2010/09/20(月) 22:55:01自動復帰してくれるけど、デバイスロストになるんだろうかな
0925デフォルトの名無しさん
2010/09/20(月) 23:10:51俺もたまに飛ぶ
「XXXが停止しましたが復帰しました」みたいなメッセージがでるよ
0926デフォルトの名無しさん
2010/09/20(月) 23:15:49本当にいつロストするやら信用できない代物だった。
けど10以降(正確には9Ex以降)はこちらからフレームバッファのサイズを
変更掛けたりしない限りはリセットする必要はなくなったな。
Dx9のリセット復帰問題はマジ面倒。
だから商用のゲームエンジンでもウィンドウモードしか使ってない処理系が多い。
が、オレはプロの端くれとして、そんな手抜き実装は許せねえ。
0927デフォルトの名無しさん
2010/09/20(月) 23:42:290928デフォルトの名無しさん
2010/09/21(火) 11:43:380929デフォルトの名無しさん
2010/09/21(火) 11:45:550930デフォルトの名無しさん
2010/09/21(火) 12:16:030931デフォルトの名無しさん
2010/09/21(火) 18:42:570932デフォルトの名無しさん
2010/09/21(火) 19:57:32IDirectSoundBuffer8を使っているのですが、音の再生が終わったことをどうやって知ればよいのかで悩んでいます。
GetCurrentPositionで、再生ポジションが末尾にあるかどうかで判断するのでしょうか?
0933デフォルトの名無しさん
2010/09/21(火) 20:26:56DWORD dwStatus = 0;
IDirectSoundBuffer8::GetStatus( &dwStatus ) ;
if ( ( dwStatus & DSBSTATUS_PLAYING ) != 0 ){
}
0934デフォルトの名無しさん
2010/09/21(火) 20:33:01終了してるかどうかならifの条件変えてね
0935デフォルトの名無しさん
2010/09/21(火) 20:55:24たった21個のメソッドを、全部見て回っていなかったことを恥ずかしく思います・・・
GetCurrentPositionを見た瞬間に「これでとれってことだよね・・・変なの・・?」と思いこんでしまっていました
丁寧にありがとうございました
0936デフォルトの名無しさん
2010/09/26(日) 13:20:46何やら風景をxz平面でブロック化して一定距離のブロックだけを描画してる作品を見かけたのですが、
何かメリットが有るのでしょうか?
風景モデルがバラバラだと、マテリアルの切り替え回数が数倍化したり
負担が多いだけじゃないのかと思えてしまうのですが・・。
0937デフォルトの名無しさん
2010/09/26(日) 13:28:13詳しいことは分からないし作者に聞いたほうがいいと思うけど
0938デフォルトの名無しさん
2010/09/26(日) 13:44:02地形をQuatTreeで可視部分だけ描画、さらにはLODも、ローディングも裏でやる・・・・というシステムではあるが、
完成したらバーチャロンモドキになったので意味無かったとか。
そんな感じ。
0939デフォルトの名無しさん
2010/09/26(日) 14:31:21ログレベルをMAXまであげると
Direct3D9: (WARN) :Ignoring redundant SetRenderState - 19
というログが出るようになりました。
(変更がないのに同じ内容のSetRenderStateを行うと出ている?)
これは無視していても問題ないのでしょうか?
悪い影響があると恐いので…。よろしくお願いします。
0940デフォルトの名無しさん
2010/09/26(日) 14:47:22昔のビデオカードだとSetRenderStateの空回しは負荷になってたけど
ここ最近のチップならPIXで見る限り何の影響も与えてないように見える
ただ慣習的に不必要なレンダリングステートの変更は避けるようにはしてるけど
0941936
2010/09/26(日) 14:55:35ありがとうございます。何か特別主流だったり有効な技術が有るのかと思いましたが
そうでもないのですね。
0942デフォルトの名無しさん
2010/09/26(日) 15:19:33回答ありがとうございます。
昔はそうだったのですか…。
たいして描画するものがあるわけではないので、
不必要な変更は避けるように努めます。
ありがとうございました。
0943デフォルトの名無しさん
2010/09/27(月) 06:16:31モデリングツールだとトゥーンレンダリングでレンダリングできるのはなぜですか?
0944デフォルトの名無しさん
2010/09/27(月) 06:32:45ハード側の機能使ってないからじゃね?
その場合はCPUが頑張ってる
0945デフォルトの名無しさん
2010/09/27(月) 06:40:15使えれば多少パフォーマンスが上がるってだけで
普通に2パスか3パスで描けばいいだけじゃね?
0946デフォルトの名無しさん
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のモデリングやシェーダリング?を解説してる本みたいな本があったような気がするのですが何でしたっけ?
0947デフォルトの名無しさん
2010/09/27(月) 23:57:59ユーザーが別ウィンドウをゲーム中に最大化する場合なんてほとんどないからいいよね。
0948デフォルトの名無しさん
2010/09/28(火) 00:06:490949デフォルトの名無しさん
2010/09/28(火) 00:17:49まるで成長していないAAを貼ってやりたいぐらいだが
まあ続けているだけ良しとしよう
0950デフォルトの名無しさん
2010/09/28(火) 00:18:120951デフォルトの名無しさん
2010/09/28(火) 00:21:00普通のPCだと消失するんですか?
0952デフォルトの名無しさん
2010/09/28(火) 00:25:15まだXPなのか?
0953デフォルトの名無しさん
2010/09/28(火) 00:26:04Vista以降とXP以前で全然挙動が違う。
描画能力周りを突き詰めていくと、nVIDIA GeForce、ATI RADEON、Intel GMEで全部違う。
まあそう言うのは一つ一つつまずいて発見していくんだな。
0954デフォルトの名無しさん
2010/09/28(火) 00:31:37vistaです。
>>953
そこらへん将来的に統一してほしいですね。
0955デフォルトの名無しさん
2010/09/28(火) 00:44:15ちょwww答えになってねえwww一つぐらい教えてくれwwwww
0956デフォルトの名無しさん
2010/09/28(火) 01:03:01デバイスの復元が出来なかったのか・・・
0957デフォルトの名無しさん
2010/09/28(火) 10:49:390958デフォルトの名無しさん
2010/09/28(火) 12:35:03お前の頭の中にある定義をきちんと書かない状態で、他人が理解できるはずがないだろ。
0959デフォルトの名無しさん
2010/09/28(火) 12:43:090960デフォルトの名無しさん
2010/09/28(火) 13:10:31フルスクリーンモードだと消失するが、ウインドウだと消失しないだろ
必ず消失するのはCtrl+Alt+Delなので、これで消失復元実験するといい
0961デフォルトの名無しさん
2010/09/28(火) 15:08:45デスクトップが切り替わらないという。
0962デフォルトの名無しさん
2010/09/28(火) 15:17:150963デフォルトの名無しさん
2010/09/28(火) 23:52:210964デフォルトの名無しさん
2010/09/29(水) 00:35:18それともまだ余裕は無いですか?それか実はテクスチャがそう見えるだけで実はポリゴン数は多いとか
0965デフォルトの名無しさん
2010/09/29(水) 01:25:100966デフォルトの名無しさん
2010/09/29(水) 01:39:08出来るんなら移植の手順とか分かるサイトありませんか?
0967デフォルトの名無しさん
2010/09/29(水) 01:39:38FFなんか全然まともに動かないからもっと軽く作ってくれると助かるんだが
つまり何が言いたいのかというと、どういうユーザ層を想定してるのかによって全然違うんじゃないかと
0968デフォルトの名無しさん
2010/09/29(水) 01:47:40ローポリ ニノ国 アトリエ
ハイポリ 白騎士物語 デモンズソウル FPS全般 のイメージです
自分はローポリゲーを作ってるのですが、モデリングのサイトを見てると俺はこれだけポリゴンが少ないぜどうだ!みたいなサイトがよく見つかるのですが
最近のゲームが明らかに綺麗すぎて、もしかしてもうポリゴンとか気にする必要ないんじゃね?と思い始めて、モデリングは適当でポリゴン多めに作って整形しといて
テクスチャとかライティングの勉強した方が綺麗なローポリゲーになるんじゃね?と思い始めたのですがどうなのでしょうか?
0969デフォルトの名無しさん
2010/09/29(水) 01:54:190970デフォルトの名無しさん
2010/09/29(水) 01:57:230971デフォルトの名無しさん
2010/09/29(水) 02:00:58作ってるのは7000ぐらいです
Xファイルはカラーコーディネートの時頂点が分割されてないとできないから頂点数が増えると見たことがあって、分割させないと3000ぐらいになるのですが
0972デフォルトの名無しさん
2010/09/29(水) 02:03:04俺の中では7000って十分ハイポリのような気がする
0973デフォルトの名無しさん
2010/09/29(水) 03:36:11今のPCスペックならある程度ハイポリでも大丈夫って後押しが欲しいだけでしょ?
0974デフォルトの名無しさん
2010/09/29(水) 03:53:290975デフォルトの名無しさん
2010/09/29(水) 05:02:28そのどっちも、ローポリだと思わんが。
DSのニノ国を見てローポリとか言ってるなら、そもそもDSの性能考えろよ。
0976デフォルトの名無しさん
2010/09/29(水) 05:03:48ラブプラスはDSで5000ポリゴンを実現しているということで
技術的なトピックになったが、
これですら60FPSは出せてないから。
0977デフォルトの名無しさん
2010/09/29(水) 05:12:36ローポリだから良いってわけじゃなくて
ターゲットマシンに置いて最大キャラ数で処理落ちしなければいくつでもいいんじゃね?
360だとエフェクトとかばら撒きまくって
最大負荷がかかったときにギリギリ処理落ちが起きるくらいのバランスのが多いんじゃね?
0978デフォルトの名無しさん
2010/09/29(水) 05:17:42それを計算してから各オブジェクトを発注するとか?
0979デフォルトの名無しさん
2010/09/29(水) 05:29:120980デフォルトの名無しさん
2010/09/29(水) 07:51:50FFなんて秒間60フレを常に捨てることで派手にしてるときもあんぞ
PSのFFなんて秒間15フレームぐらいで動いてた
そういえば別スレで出てたクロスフェードも秒間30フレームぐらいにあきらめれば
どんなシーンでもクロスフェードできるじゃんなw
0981デフォルトの名無しさん
2010/09/29(水) 16:47:550982デフォルトの名無しさん
2010/09/29(水) 21:35:22横向きに転がってるんだけどどうして?
0983デフォルトの名無しさん
2010/09/29(水) 21:46:400984デフォルトの名無しさん
2010/09/29(水) 21:50:220985デフォルトの名無しさん
2010/09/30(木) 00:38:30VU座標の(1.0, 0.5)が右下になるのね。
故障?
0986デフォルトの名無しさん
2010/09/30(木) 00:42:120987デフォルトの名無しさん
2010/09/30(木) 00:44:170988デフォルトの名無しさん
2010/09/30(木) 00:45:19正方形のテクスチャしか作れなかったんじゃね?
グラボの能力調べたらどう
0989デフォルトの名無しさん
2010/09/30(木) 00:46:15これだろw
0990デフォルトの名無しさん
2010/09/30(木) 00:47:310991デフォルトの名無しさん
2010/09/30(木) 21:14:40フォトショで2階調補正して白黒にわけたa_.jpgを作って
DirectXTextureToolでテクスチャを作るという流れなのですが
さかい目のところにドットのつぶつぶが残って全然綺麗にできません。ある程度修正しても汚いです
3Dゲーム用のテクスチャですが512×512で一般的ですか?
どうすれば綺麗にできますか?
0992デフォルトの名無しさん
2010/09/30(木) 21:17:21それはCGスレに行って聞けw
0993デフォルトの名無しさん
2010/09/30(木) 21:19:23わかりました!
0994デフォルトの名無しさん
2010/09/30(木) 21:25:32つかフォトショがあるならわざわざツール使わんでもαチャンネル使ってできるだろう
jpgにした段階で圧縮レベルが高いとモアレがでて境目が綺麗にいかないとかそういうことじゃないのか?
どうしてもツールでやりたいなら未圧縮フォーマットでやらないと
0995デフォルトの名無しさん
2010/09/30(木) 21:35:38アンチエイリアスの仕組みでも勉強して円を綺麗に出す方法でも考えてみるべき
0996デフォルトの名無しさん
2010/09/30(木) 21:38:330997デフォルトの名無しさん
2010/09/30(木) 21:42:51>>996
ありがとうございます
サイトでそうやって作るって書いてあったのです
じゃあどうすれば良いんでしょうか?
最終的にddsで保存します
PNGでちょっとやってみます
0998デフォルトの名無しさん
2010/09/30(木) 21:46:21【C++】 DirectX初心者質問スレ Part31 【C】
http://hibari.2ch.net/test/read.cgi/tech/1285850721/
0999デフォルトの名無しさん
2010/09/30(木) 21:46:381000デフォルトの名無しさん
2010/09/30(木) 21:48:3410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。