【C++】 DirectX初心者質問スレ Part12 【C】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/12/24(日) 08:11:46これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
前スレ 【C++】 DirectX初心者質問スレ Part11 【C】
http://pc8.2ch.net/test/read.cgi/tech/1159456184/
0002デフォルトの名無しさん
2006/12/24(日) 08:12:18MSDN DirectX
http://www.microsoft.com/japan/msdn/directx/default.aspx
DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.mspx
BBX (掲示板)
ttp://isweb8.infoseek.co.jp/computer/bbx/
DXライブラリ置き場
ttp://homepage2.nifty.com/natupaji/DxLib/
Lamp:ゲーム開発とその学習をサポートするミドルウェア
ttp://lamp.sourceforge.jp/
TWINTAIL LOVERS.
ttp://www.twin-tail.jp/
Pastel's Laboratory
ttp://www.roy.hi-ho.ne.jp/pastel/home/index.html
GamDevPukiWiki - DirectX総合スレ (過去ログ等)
http://gamdev.org/w/?%5B%5BDirectX%C1%ED%B9%E7%A5%B9%A5%EC%5D%5D
GamDevPukiWiki - 3DCG製作ソフト (過去ログ等)
http://gamdev.org/w/?%5B%5B3DCG%C0%BD%BA%EE%A5%BD%A5%D5%A5%C8%5D%5D
ゲームを作るための素材を集めよう まとめサイト
http://paw.my-sv.net/index.html
0003デフォルトの名無しさん
2006/12/24(日) 08:12:590004デフォルトの名無しさん
2006/12/28(木) 21:08:38一回目起動して普通の状態からAlt+Enterでフルスクリーンにしようとすると
スプライトのOnLostDeviceので例外が発生する。
そのまま描画させると一応表示はされるんだがたまに表示がおかしくなる。
二回目は例外も発生せずに普通に表示される。
D3DXFontを使ってからおかしくなった。
D3DXFontもちゃんとOnLostDeviceしてる。
OnResetDeviceも両方やってる。
原因に心当たりのある方いませんか?
0005デフォルトの名無しさん
2006/12/28(木) 21:12:27スマソ
Windows Vista RC1(XP Proでやったときも起こった)
Visual C++ 2005 Academic
NVIDIA GeForce 6600
DirectX 9.0 2004 Dec
0006デフォルトの名無しさん
2007/01/04(木) 03:26:130007デフォルトの名無しさん
2007/01/04(木) 07:02:57お手軽フルスクリーン切り替えは鬼門
自分で全部面倒を見る覚悟がないとバグ地獄に突入する
0008デフォルトの名無しさん
2007/01/06(土) 22:37:00LPDIRECTXFILE系がdeprecatedになっていたので、
新しい方のLPD3DXFILEを使用して読み込む方法を試しています。
現時点で、ファイルに含まれるテンプレートGUIDをチェックして
各データを取得には成功しています。
しかし、tiny.xを読み込ませたときにおかしな挙動になりました。
TID_D3DRMMesh の場合が2度存在し、含まれるメッシュが2つという判断をしてしまいます。
従来コードと新しいコード、2つを記載しますので、アドバイスよろしくお願いします。
(どちらもEnumオブジェクトを生成した後の処理とお考え下さい)
0009デフォルトの名無しさん
2007/01/06(土) 22:37:30(読み込み途中、データ解析呼び出し元)
SIZE_T num = 0;
pEnumObj->GetChildren( &num );
for(SIZE_T i=0; i < num; i++ ) {
hr = pEnumObj->GetChild( i, &pDataObj);
if( SUCCEEDED(hr) ) {
parseXfileData( pDataObj );
}
}
void parseXfileData(LPD3DXFILEDATA pData) {
GUID templateType;
pData->GetType( &templateType );
if( tmemplateType == TID_D3DRMMesh ) {
/* ここへ2度来る */
}
SIZE_T num = 0;
pData->GetChildren( &num );
for( SIZE_T i=0;i<num; i++) {
if( SUCCEEDED( pData->GetChild( i, &pSubData ) ) {
parseXfileData( pSubData );
pSubData->Release();
}
}
}
0010デフォルトの名無しさん
2007/01/06(土) 22:39:03(読み込み途中、データ解析呼び出し元)
while( SUCCEEDED( pEnumObj->GetNextDataObject( &pDataObj ) ) ) {
parseXfileData( pDataObj );
}
void parseXfileData( LPDIRECTXFILEDATA pData ) {
LPDIRECTXFILEOBJECTpSubObj = NULL;
LPDIRECTXFILEDATApSubData= NULL;
LPDIRECTXFILEDATAREFERENCEpDataRef = NULL;
const GUID*pType = NULL;
DWORDdwSize = 0;
pData->GetType( &pType );
if ( *pType == TID_D3DRMMesh ) { /* こちら側だと1度しか来ない */ }
while( SUCCEEDED( pData->GetNextObject( &pSubObj ) ) ) {
if( SUCCEEDED( pSubObj->QueryInterface( IID_IDirectXFileDataReference, (LPVOID*)&pDataRef ) ) ) {
if( SUCCEEDED( pDataRef->Resolve( &pSubData ) ) ) {
parseXfileData( pSubData );
pSubData->Release();
}
pDataRef->Release();
}
if( SUCCEEDED(pSubObj->QueryInterface( IID_IDirectXFileData, (LPVOID*)&pSubData))) {
parseXfileData( pSubData );
pSubData->Release();
}
pSubObj->Release();
}
}
0011デフォルトの名無しさん
2007/01/08(月) 12:24:203つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。
□偽装派遣先の社員の意見にはたとえ間違っていても反対しない
□偽装派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□偽装派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□偽装派遣先社員より自分の生涯収入が低いのは当然だ
□偽装派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ偽装派遣先に常駐したい
0012デフォルトの名無しさん
2007/01/08(月) 12:38:020013デフォルトの名無しさん
2007/01/08(月) 15:40:370014デフォルトの名無しさん
2007/01/08(月) 15:41:47早く自分の会社へ帰れ!!
でないと人間腐るぞ!
0015デフォルトの名無しさん
2007/01/08(月) 18:46:13何これ?デジャビュ?
0016デフォルトの名無しさん
2007/01/08(月) 20:34:50俺も昔そういうのに悩まされて、Xファイルを使うのやめて自作フォーマットにした。
0017デフォルトの名無しさん
2007/01/09(火) 01:26:02大分早い気がする俺ガイル
0018デフォルトの名無しさん
2007/01/09(火) 09:58:200019デフォルトの名無しさん
2007/01/09(火) 20:34:09私は最近、DirectX8でゲームを作りたいと思い
HPを参考に勉強しているのですが、作り始めてすぐに壁にぶち当たってしまいました。
それは、d3dx8.hというファイルがDirectX9 SDKに入っていないのです。
参考にしているHPでは上記のファイルがインクルードされていて、どうしてもうまくいきません。
私のグラフィックボードはGeForceTi4800なので、DirectX8でどうしても作りたいのです。
どなたかd3dx8.hを手に入れる方法、またはd3dx8.hが無くても代わりにこれをインクルードすればいい、などの
解決法を教えてもらえませんか?お願いします。
失礼しました。
0020デフォルトの名無しさん
2007/01/09(火) 20:47:15それはさ。DirectX8なんかで作ろうと思ったのが運の尽きってことさw
あと、なんか勘違いしてない?
特にこの一文
>私のグラフィックボードはGeForceTi4800なので、DirectX8でどうしても作りたいのです。
「GeForceTi4800なので、DirectX8でどうしても作りたい」とか言ってるけど全く意味不明。
どうしてGeForceTi4800だとDirectX8で作らないといけないの?
あらかじめいっとくけど関係ないんだけど。
素直にDirectX9で作ればOKと言っておく。
このままDirectX8で作りたいっていうならこんな程度のことも自分で解決できないようじゃ。
無くなったヘッダーやらライブラリやらヘルプやらサンプルやら自分でかき集めてこれないだろ?
素直にやめとけと思う。
0021デフォルトの名無しさん
2007/01/09(火) 21:19:46GeForce4はDirectX8世代だったことから
DirectX9のプログラムは正常に動かないのではないかと思ってました。
ご返答ありがとうございました。
0022デフォルトの名無しさん
2007/01/10(水) 18:53:56非DirectXアプリケーションでマウスをグローバルフックして特定のマウスイベントを監視する
プログラムを作っています。
マウスが通常のウインドウ上にある場合は問題ないのですがDirectXを使ったウインドウ上にある
場合、フックはされるのですがマウス座量がボロボロの値(マイナス値とかありえない値)
になってしまいます。
フック方法は SetWindowsHookEx() API の WH_MOUSE_LL を使ったやり方で、DirectXは使っていません。
やりたいことは、マウスの正確な動きをログに取っておきたいのです。
マウスイベントは参照しているだけで、内容を変えるとか無効にするというような加工はしません。
そこで質問なのですが
1)別プロセスからDirectXアプリケーションウインドウのマウスイベントを得るには、特別な
方法があるのでしょうか? それとも、そもそも無理なのでしょうか?
2)無理な場合、マウスがあるウインドウがDirectXのウインドウなのかどうかを調べる方法は
あるでしょうか?
OSと開発環境はこんな感じです。どうかよろしくお願いします。
WindowsXP Home Edition SP2
DirectX 9.0c
VisualStudio .NET 2002
0023デフォルトの名無しさん
2007/01/10(水) 23:38:410024デフォルトの名無しさん
2007/01/14(日) 00:45:271フレームの間に1つの同じ三角ポリゴンを同じ座標に500回描画した時
(DrawIndexedPrimitiveを1フレームで500回呼んだ)
と
500ポリゴンのメッシュを描画した時を比べてみたら、
同じ500ポリゴンを描画しているはずなのに前者はフレームレートが
極端に下がってしまいました。
同じ座標に同じ三角形を重複して描画してしまうと
遅くなってしまうものなんでしょうか?
考えられる原因を教えてもらえないでしょうか?
よろしくお願いします。
0025デフォルトの名無しさん
2007/01/14(日) 07:21:272)秋葉原に500回行って、都度一本づつエロゲーを買う。
002624
2007/01/14(日) 13:09:23DrawIndexedPrimitive、DrawPrimitiveが重いってことを
言ってるのだろうけど、500回ぐらいで劇的に重くならないようです。
書き方が悪かったのかもしれません。申し訳ない。
急に重くなる時は、「カメラの近くに存在するポリゴンを
重複して描画する」時であり、具体例を出すとこれ↓
カメラは( 0.0f, 0.0f, -10.0f)に存在し、原点の方向を見ている。
描画する四角形の4頂点は、
D3DXVECTOR3(-1.5f, 1.5f, 0.0f );//頂点�@
D3DXVECTOR3( 1.5f, 1.5f, 0.0f );//頂点�A
D3DXVECTOR3(-1.5f, -1.5f, 0.0f );//頂点�B
D3DXVECTOR3( 1.5f, -1.5f, 0.0f );//頂点4
for(int i=0; i<500; i++){
//同じ四角形をループで500回描画します
pD3DDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
}
こんな感じの簡単なコードを書くと急にFPSが5ぐらいになってしまいます。
また、この状態で、カメラをポリゴンから遠ざけるためにカメラの位置を
(0,0,-50.0f)ぐらいにするとなぜか、FPSは75ぐらいに回復する。
zバッファ処理を疑ってみましたが、zバッファ
SetRenderState(D3DRS_ZENABLE, true)をON、OFFと切り替えても
遅いのは変わらない。
いろいろ試してみましたが、どうも原因の検討がつきません。
どなたか原因をご存知の方はいらっしゃらないでしょうか?
よろしくおねがいします。
0027デフォルトの名無しさん
2007/01/14(日) 14:00:032)画用紙いっぱいの四角を500回描く
絵の具をたくさん消費するのはどっち?
0028デフォルトの名無しさん
2007/01/14(日) 15:20:21なるほど。ポリゴンの塗りつぶし処理も結構手間が
かかっていると言うことですね。
つまり、ポリゴン数だけでなく、
画面に表示されるポリゴンの大きさによっても、
実行スピードが変わると言う認識で良いと言うことですよね?
0029デフォルトの名無しさん
2007/01/16(火) 02:36:14デバッガが使えなくて激しくダルイのですが。
0030デフォルトの名無しさん
2007/01/16(火) 04:04:200031デフォルトの名無しさん
2007/01/16(火) 07:47:53亀なうえに解決法は書けませんが、おそらくDirectInputで
マウス入力を取得するときに実マウスカーソルを無効にする方法と
して、そのアプリがマウス座標を画面外に飛ばしてるんじゃないでしょうか?
0032デフォルトの名無しさん
2007/01/16(火) 23:03:47リモートデバッガを利用する。
0033デフォルトの名無しさん
2007/01/16(火) 23:53:180034デフォルトの名無しさん
2007/01/17(水) 03:57:24機材の必要の無い方法はないもんですか?
0035デフォルトの名無しさん
2007/01/17(水) 04:47:31俺はデバッグ時は基本的にウィンドウモードにしてるよ。
0036デフォルトの名無しさん
2007/01/17(水) 19:43:110037デフォルトの名無しさん
2007/01/20(土) 13:12:18お前さんはまだわけぇから言いたいこともあるべぇ
だべな、派遣問題を口にするとムキになって怒る者がおるでよぉ
問題の指摘は駄目だっぺぇ
派遣のことは口にしちゃなんねぇ
この村みたいな民度ゼロの会社で現実忘れるためはよ
北朝鮮と一緒でよ、駄目のものを駄目と言ってはなんねえだべさ
タブーを口にしちゃいけねぇだ
0038デフォルトの名無しさん
2007/01/20(土) 14:09:59ビデオカードが違うとテクスチャのUV値が微妙に狂うのはどう対応すれば宜しいのでしょうか。
用意している画像は512x512のPNG形式(読み込みも512四方)
Radeon9200では1ドットも狂わず画像の一部分を切り取っているのに、
GeForce5950で見ると一回り小さい範囲で切り取られているため画像が崩れて見えます。
逆にGeForce5950に合わせて作るとRadeon9200でUV値が一回り大きく取られて崩れて見えます。
これはRenderStateで何か設定すれば直るのでしょうか。
0039デフォルトの名無しさん
2007/01/20(土) 14:31:36UVの補正をTweakツールでできる場合があるが、それはユーザー任せ。
Windowsでは基本的に公式の仕様に準拠して作ること。
あと、たった2個の比較で判断しないこと。もっと多く調べれば偏りが出るものだ。
完璧主義にならず、特定の機種だけの微妙な不具合は切り捨てる勇気を持て。
0040デフォルトの名無しさん
2007/01/20(土) 15:18:14レスありがとうございます。
MSゴシック12で「0123456789」と数値を作って表示させると
文字幅が1ピクセルなので認識できないほど崩れてしまいます。
表現上太くはしたくないとか表示させたい画像細かい場合、
微妙というレベルを超えて表示されますがやはり妥協点なのでしょうか。
0041デフォルトの名無しさん
2007/01/20(土) 15:47:54テクスチャを256*256に落としてみるとか。
0042デフォルトの名無しさん
2007/01/21(日) 07:48:39どんなコードなの
うちは古いnVIDIA(geforce4)でテストしてるけどその辺の問題ないよ
0043デフォルトの名無しさん
2007/01/21(日) 14:49:10よく調べたところ
http://www.microsoft.com/japan/msdn/directx/downloads.aspx
ここにWindows98ではサポートしていないと書かれていました
うちにはWindows98しかないのでDirectX 9.0b SDK (2002)を
ダウンロードしようと思いましたがマイクロソフトのページではできませんでした
OSを買い換えるしか方法はないのでしょうか?
他に方法があれば教えてください
0044デフォルトの名無しさん
2007/01/21(日) 15:28:28そんな状況ならPC買った方がトータルでいい希ガス
DirectXで3DやるならノートPCとかデスクトップで箱が小さくてグラボが交換できないのは買っちゃ駄目。
0045デフォルトの名無しさん
2007/01/21(日) 15:40:07レスありがとうございました
できれば私もそうしたいのですが事情があってできないのですorz
なんとかしてWindows98でDirectX SDKを使うことはできないでしょうか?
自分でも調べてみましたがよくわからないんです
0046デフォルトの名無しさん
2007/01/21(日) 16:08:310047デフォルトの名無しさん
2007/01/21(日) 16:15:490048デフォルトの名無しさん
2007/01/21(日) 21:21:44わかりました
そうしてみます
回答ありがとうございました
0049デフォルトの名無しさん
2007/01/29(月) 09:46:35一番最新のを導入しておけば問題はないのでしょうか?
例えばcyberlibrary等のラッパーはFebruary 2005のバージョンを落とすように書かれてありますが
最新では不都合あるとかあるんでしょうか?
0050デフォルトの名無しさん
2007/01/29(月) 13:49:41解らなければ作者やMLで聞いてみればいいんじゃないの。
ライブラリを一番理解しているのは、大抵は開発者なんだし。
0051デフォルトの名無しさん
2007/01/30(火) 09:03:11今は
D3DXVECTOR3 old_position(0.0f, 0.0f, 1.0f);
D3DXMATRIXA16 mat, mat_trans, mat_roty;
D3DXMatrixTranslation(&mat_trans, old_position.x, old_position.y, old_position.z);
D3DXMatrixRotationY(&mat_roty, D3DXToRadian(45.0f));
mat = mat_trans * mat_roty;
D3DXVECTOR3 new_position = D3DXVECTOR3(mat._41, mat._42, mat._43);
こんなことをやってるんですが…
0052デフォルトの名無しさん
2007/01/30(火) 16:54:41new_position = old_position * mat_rotyだけでいい。
0053デフォルトの名無しさん
2007/01/30(火) 21:05:320054デフォルトの名無しさん
2007/01/31(水) 07:46:560055デフォルトの名無しさん
2007/01/31(水) 16:13:32これはSDKのどのバージョンでビルドされているのでしょうか?
0056デフォルトの名無しさん
2007/01/31(水) 19:49:159.0cの何れかのバージョン
DLLを見ると細かいバージョンわかるぞよ
0057デフォルトの名無しさん
2007/01/31(水) 23:44:470058デフォルトの名無しさん
2007/02/01(木) 00:43:270059デフォルトの名無しさん
2007/02/01(木) 01:13:52マジすか。
ありがとうございます。
0060デフォルトの名無しさん
2007/02/01(木) 10:19:170061デフォルトの名無しさん
2007/02/01(木) 17:03:16オーバーレイで表示できない場合があるじゃないですか?
2枚目のオーバーレイは真っ黒表示になってしまったり。。
オーバーレイはもうこれ以上使えませんよ、みたいな
事を知る方法ありませんか?
ちなみにdwCurrVisibleOverlaysフラグは常にゼロみたいでした。
(このフラグっていったいなんだろ。。)
0062デフォルトの名無しさん
2007/02/01(木) 17:21:17Microsoft Platform SDK for Windows 2003 Server SP1
とかいうのがインストールされた。
俺のOSはWinXPSP2だ。
XPでDirectShowを実現するのは無理のようだ。
0063デフォルトの名無しさん
2007/02/01(木) 17:54:150064PPP
2007/02/01(木) 18:00:46を超えるものに対して、オプションでオプションにD3DXMESH_32BITを
つければいいと書いてありましたが、PCがフリーズします。
何か解決策があればご教授お願いします。
0065デフォルトの名無しさん
2007/02/03(土) 00:50:28DirectXのインターフェイスなのですが、dllの静的リンクを避ける場合等にはCoCreateInstanceや
関連インターフェイスからのQueryInterfaceで作成することができる(できていた)と理解しているのですが、
DX9の場合、IDirect3D9の作成にはDirect3DCreate9を使うしかないということでよいのでしょうか?
そしてdll静的リンクをしたくない場合はLoadLibraryを使えということなのでしょうか?
(そもそもLoadLibaryでできるんでしょうか。d3dを静的リンクした別dllを用意して(ryとかする必要あり?)
最初からDirectX9入ってない環境なんてお呼びじゃないんだぜ、と決め打ちするのが良いのでしょうけれど…
0066デフォルトの名無しさん
2007/02/03(土) 03:21:21QueryInterfaceは7あたりから廃止されたかな。
D3DはLoadLibraryで使えるけど、面倒ならDLLの遅延ロードを利用するのが楽かも。
遅延ロードはVC++6.0から追加された機能で、DLLの関数が初めて呼ばれた時点で
DLLが読み込まれる。このときDLLが存在しなければ例外が発生する。
例外をキャッチすれば、DLLが無いシステム上でもそのまま続行可能。
ただ、Direct3Dの場合はDLLがエクスポートしている関数は1つしか利用しないから、
LoadLibrary&GetProcAddressでも大した手間じゃないけど。
DirectX9はリリースされてからかなり時間が経ってるから、入ってないシステムは
切り捨てで全く問題ないと思う。
NT4.0とかをサポートしたいなら、最初からDirectX9なんて使わない方がいい。
006765
2007/02/03(土) 13:11:46丁寧な回答有難うございます。
なるほど、遅延ロードという手もありますね。すっかり失念していて気付きませんでした。
COMの癖になんでCo(ryで作成できないんだよ!と思っていたのですが、何やらDirectXのCOMは
独自の道を歩みつつあるようなのですね…。
確かに、今更DirectX9が入っていない環境を対象にして(9相当の)代替機能を考えること自体が
あまり現実的ではないようですし、この辺は昔ほど神経質にならずともよいようですね(目的にもよるだろうけれど)。
0068デフォルトの名無しさん
2007/02/07(水) 11:17:15DirectShowを使ってUSBカメラからAVIファイルを作成したく、Web上で見つけたサンプルをビルドしてみました。
しかし、ICaptureGraphBuilder2が定義されて無い、とコンパイルエラーになってしまいます。
パスを登録し、dshow.hをインクルードするだけではダメなのでしょうか。
試しにICaptureGraphBuilder2が記載されていると思われるstrmif.hも記述してみたのですが同じでした。
環境は
WinXP(SP2)/VC++(6)
SDKは
dxsdk_dec2006.EXE
5.2.3790.2075.51.PlatformSDK_Svr2003R2_rtm.img
です。
もしかして、VC6に対応していない版を使用してしまっているのでしょうか?
なお、サンプルは
ttp://www.geekpage.jp/programming/directshow/video-capture-save-avi.php
を参考にさせていただいております。
0069デフォルトの名無しさん
2007/02/07(水) 11:42:14ややスレ違い
DirectShowと戦うスレ Part 2
http://pc10.2ch.net/test/read.cgi/tech/1162913156/
一応応えておくと >> http://pc10.2ch.net/test/read.cgi/tech/1162913156/9-
VC6は標準準拠度にも問題あるし移行することをお勧めするが..
0070デフォルトの名無しさん
2007/02/09(金) 07:06:15・D3DXがstaticなライブラリで提供されていたころのDirectXSDKを使えば
ランタイムライブラリを再頒布しなくても大丈夫なのでしょうか?
・上の考えがあってる場合、どのバージョンのSDKを使うのが適当でしょうか?
・一般に売られているPCゲームではこの問題にどのように対処しているのでしょう?
よろしくお願いします。。。
0071デフォルトの名無しさん
2007/02/09(金) 07:12:120072デフォルトの名無しさん
2007/02/09(金) 07:16:040073デフォルトの名無しさん
2007/02/09(金) 10:09:30配布するときにそれだと問題にならないんでしょうか?
調べてみるとライセンス的にグレーだという話があるみたいですが
>>72
そうだったんですか・・・!
実際に私のPCで調べてみるとd3dx9_24〜30.dllまでが勝手に入っていました
SDKはApril2006しか入れてないのでゲームのインストーラが勝手にぶち込んだみたいですね
0074デフォルトの名無しさん
2007/02/09(金) 10:29:52>調べてみるとライセンス的にグレーだという話があるみたいですが
どこで調べたのか
0075デフォルトの名無しさん
2007/02/09(金) 10:35:48http://printf.jugem.jp/?eid=670
ここの人がそういうことを言ってますが、どうなんでしょう・・・?
0076デフォルトの名無しさん
2007/02/09(金) 11:05:49そりゃDLL単品はダメだけど再配布パッケージも添えれば何の問題もない
0077デフォルトの名無しさん
2007/02/09(金) 12:05:01そういう場合はすっぱり諦めてインストールを促すか、Dec2004までで我慢しろってことだな
0078デフォルトの名無しさん
2007/02/10(土) 17:51:51自分のゲームのexeのとなりにもD3DXのDLLを置いておけるってこと?
0079デフォルトの名無しさん
2007/02/10(土) 18:40:53よくわからんけどそういう裏技にはあんまりやさしくないと思う。
本質をわざとはずしたようなことやると後々うるさいから辞めた方がいいと思う。
ランタイムインストーラーを自動で勝手に起動するようにしてうながすほうがはるかに楽だぞ。多分。
0080デフォルトの名無しさん
2007/02/10(土) 19:17:550081デフォルトの名無しさん
2007/02/10(土) 19:21:310082デフォルトの名無しさん
2007/02/11(日) 01:54:27マイクロソフトからDirectX9をダウンロードしても
再起動の表示が出ませんどうすればいいですか?
0083デフォルトの名無しさん
2007/02/11(日) 02:09:000084デフォルトの名無しさん
2007/02/11(日) 02:15:54再起動しなくていいなんてラッキーじゃん
0085デフォルトの名無しさん
2007/02/11(日) 06:19:04インストールしてみれ
0086デフォルトの名無しさん
2007/02/11(日) 10:38:38と表示されるだけです
0087デフォルトの名無しさん
2007/02/11(日) 11:22:13`ー--‐r'´ / \::::::>
/ / / | ! ヽ ヽ ヽ:::::\
/ ! / / | | ! ヽ ! |ヽ ̄
/ 1 ,斗t 7 !. | Tiト、 .! ! レ--、____
/ / |/ V 、 ヽ| __ヽ \| ! | _ -、__} フヒヒwwサーセンwww
/ ∧ | r ニミ frぅミヽ. | ! |//≦三}
/ | |/ ハ__ハ {r、_!} レ !ハ/:::::::::::\
| |⌒| Vr_ソ 、 Vrソ | 「}く:::::::::::::::::::::::\
| ! ハ | :::: r--- z :::: | |ノ \:::::::::::::::::::;∧
| ! ! 弋! i | | |__ノ::::::::::::::::::::::::ハ
∨ ∧ i 人. | } V !::::::::::::::::::::::::::::::::::::}
_\| > へ>、_` ' _ イ \ハ/:::::::::::::::::::::::::::::::/
/==、 、. \} ¨ ´ ハ //:::::::::::::::::::::::::::/
<ユ二ー、 ヽヽ ∧_r‐ニニミ } //|::::::::::::::::::::::/
/⌒\ \ \\ ∨::Vフ// ///::::::::::>' ̄
. /::::::::::::::::ヽ ヽ \_ミヘ:::::::/ </ /:::::/
/:::::::::::::::::::::ヽ:::∨ ー‐ >‐>く__ /::} ̄
:::::::::::::::::::::::::::ヽ:::>―く::::(___人::r‐‐ュ::::|
::::::::::::::::::::::::::::::|:::::::::::::::::\:::/:: \::::::::::|
::::::::::::___:::__:::|:::::::::::::::::::::::::{::: \::ハ
rァ/ 、 、 、 \:::::::::::::::::::::::\ \|
0088デフォルトの名無しさん
2007/02/11(日) 11:42:44OSのインストールからやりなおしだな。
再起動表示がないときはインストールが中途半端な状態で終わってるから
一度OSをクリアしないと駄目だ。
0089デフォルトの名無しさん
2007/02/11(日) 11:49:000091デフォルトの名無しさん
2007/02/11(日) 12:32:54ああ、もう、OSの再インストールしか残って無いな
0092デフォルトの名無しさん
2007/02/11(日) 12:43:390093デフォルトの名無しさん
2007/02/11(日) 15:24:13自作のMeshクラスを下のように作ってメッシュを読み込もうとすると
'D3DXLoadMeshFromXA' : 7 番目の引数を 'cli::interior_ptr<Type>' から 'DWORD *' に変換できません。
とエラーがでます。こういう場合はどうやって書いたらよいのでしょうか?
ref class Mesh
{
private:
IDirect3DDevice9*pd3dDev;
ID3DXMesh*pMesh;
LPDIRECT3DTEXTURE9*pMeshTextures;
D3DMATERIAL9*pMeshMaterials;
DWORDdwNumMaterials;
public:
HRESULT Load(char* filename);
〜略
}
HRESULT Mesh::Load(char* filename)
{
〜略〜
hr = D3DXLoadMeshFromX(
filename,D3DXMESH_SYSTEMMEM,pd3dDev,NULL,&pD3DXMtrlBuffer,NULL,&dwNumMaterials,&pMesh);
〜略
}
009493
2007/02/11(日) 15:31:580095デフォルトの名無しさん
2007/02/11(日) 15:45:44{
pin_ptr<DWORD> p = &dwNumMaterials;
Func(p);
}
多分こうかしら。というかC++/CLIって今どうなのかしらね。
009693
2007/02/11(日) 15:58:29ありがとうございます。
でも同じエラーがでました。。。
0097デフォルトの名無しさん
2007/02/11(日) 16:38:48スタックに自動変数積んで、それのアドレスを渡してからメンバフィールドにコピー。
たぶんマネージ型のメンバとして持つとGC回収(もしくはメモリ移動)の可能性があるから
そのままアドレスが渡せないんじゃないのかな。
俺もよく忘れてそのエラー頻繁に見るよ……。
それとC++/CLIの質問はマネージ関連のスレでした方が良いかと。
見た目が似せてあるだけで全然違う言語だこりゃ。
0100デフォルトの名無しさん
2007/02/11(日) 20:21:10インデックスバッファと頂点バッファを用いて描画するのと、
頂点バッファのみ(予めインデックスデータを参照し配列を作っておく)では
どちらが速いですか?
0101デフォルトの名無しさん
2007/02/11(日) 22:26:33やってみりゃいいじゃん。
俺の予想としてはあんまりかわらないんじゃないかと・・・
0102デフォルトの名無しさん
2007/02/11(日) 22:37:22010368
2007/02/12(月) 15:27:17お礼を戦う〜に誤爆してしまいましたが、改めてお礼と報告です。
2003/Summerを使用し、VC6でビルドおよび動作させることができました。
ありがとうございました。
VC2003/2005にアップはだんだんと進めていかないと行けないようですが、なかなか難しいものですね。
0104デフォルトの名無しさん
2007/02/20(火) 15:07:36ですが、他のはDecember Aprilとかなのに
なぜこれだけSummerなのですか?
0105デフォルトの名無しさん
2007/02/20(火) 15:43:45デヴェロッパのストレス発散
0106デフォルトの名無しさん
2007/02/23(金) 00:56:25一時的にそっちからマウスやキーの情報を取得できないようにする方法ってないでしょうか?
0107デフォルトの名無しさん
2007/02/24(土) 04:49:17C++も初級レベルが、よろしくお願いします。
ttp://www.katolab.ee.kagu.sut.ac.jp/programing/capture.htm
・上記のリンクの図にUSBカメラから矢印が出てるデバイスフィルタ(IBaseFilter)
がありますが、このあたりをネットワークカメラ用になにかすると、
ほとんどプログラム変えないでもネットワークカメラの
画像も取り込めるのでしょうか?
USBカメラに関しては、いくつか解説してあるページ見つかりましたが、
ネットワークカメラの画像を取り込むには、なにから勉強すれば
良いのかという段階なんです。
・ネットワークカメラ用のサンプルプログラムの乗ってる本や
ページなどありますでしょうか。
スレ違いでしたら、誘導していただけますと助かります。
よろしくお願いします。
0108デフォルトの名無しさん
2007/02/24(土) 06:24:52DirectShowと戦うスレ Part 2
http://pc10.2ch.net/test/read.cgi/tech/1162913156/
0109デフォルトの名無しさん
2007/02/24(土) 11:13:16スレ教えていただきありがとうございます。
ネットワークカメラもDirectShowを使うんですね。
0110デフォルトの名無しさん
2007/02/27(火) 02:57:13if(キーが傾いている)
トラック0をFALSE
トラック1をTRUE
else if(キーが傾いていないアイドル状態)
トラック0をTRUE
トラック1をFALSE
でトラックの切り替えを行おうとしたのですが、
これではif文にくるたびに、切り替えが行われモーションが再生されているようには見えないです。
アイドル時と非アイドル時を判定し、トラックを切り替えたいのですが、
どのように書けば良いでしょうか?宜しくお願いします。
0111デフォルトの名無しさん
2007/02/27(火) 08:42:49今までC/C++では、コンパイルにBorlandのC++Compiler 5.5を利用していたのですが、
DirectShowのプログラムもこれでコンパイルできるでしょうか?
それともVCでないとダメでしょうか?
0112デフォルトの名無しさん
2007/02/27(火) 09:08:12試しにやってみようという気は0bitもないのでつか?
0114デフォルトの名無しさん
2007/02/27(火) 19:19:43〜>bcc32 test.cpp
〜
Fatal: オプションが必要 : LD:\Program Files\Microsoft Platform SDK\Lib
というエラーが出ました。
どんなオプションが必要なのでしょうか?
0115114
2007/02/28(水) 11:00:500116デフォルトの名無しさん
2007/02/28(水) 12:37:240117デフォルトの名無しさん
2007/02/28(水) 12:39:390118116
2007/02/28(水) 12:52:14Cをわずかに理解しているだけでBMSプレーヤーが作れるだろうか・・・
0119デフォルトの名無しさん
2007/02/28(水) 13:21:58拡張子はcppにして、C++としてコンパイルしないと、面倒だからね。
0120デフォルトの名無しさん
2007/03/01(木) 01:50:46pDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
pDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
以外に設定するものはあるのでしょうか。
Xファイル2つを表示させると後のものが必ず上に表示されます(同一のオブジェクトでも後に描画されたパーツが上に)。
何か設定を逃していると思うのですが、もしかすると別の問題なのでしょうか。
0121デフォルトの名無しさん
2007/03/01(木) 02:10:06→初期化で自動的に作る(D3DPRESENT_PARAMETERS)
→明示的に作って設定(pDevice->CreateDepthStencilSurface()とpDevice->SetDepthStencilSurface())
2.描画対象のZ値が完全に一致してしまっている。
→データを見直せ
3.どっかでエラー吐いたりハードが対応してなかったり
→エラーチェック。このPCでは利用できません
0122デフォルトの名無しさん
2007/03/01(木) 11:29:33射影行列のニアクリップの距離を0にしていないか?
0123120
2007/03/01(木) 14:00:35レスありがとうございます。お蔭様で解決できました。
>>122の最近距離は0ではなく0.1だったのですが、あまりにも大きな物体を遠くから見てたのでおかしくなってたようです。
今まで0.1で使っていて不具合が無かったので、こういう事態になるとは思いませんでした。
0124デフォルトの名無しさん
2007/03/01(木) 14:48:35x, z が 256*256 の heightfield を表示しようとして
DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 256*256, 0, (256-1)*(256-1)*2*3); とすると
GeForce4MX(最大インデックス数=65535)なので頂点数・インデックス数が多すぎと言われました。
そこで、頂点数を x, z = 5*5に減らして
DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 5*5, 0, (5-1)*(5-1)*2*3); とすると正常に表示されます。
ですが、最終的には大きなheightfieldを表示したいので、zの1行ずつ表示しようと考えました。
それで↓のようにしてみたのですが、表示がおかしくなってしまいました。
for (int i = 0; i < height - 1; i++){ // ここでのheightはzの数です。この例では5です
DrawIndexedPrimitive(
D3DPT_TRIANGLELIST,
i * height, 0, height*2,
0, (height - 1) * 2 * 3
}
ヘルプとかgoogleで探したいろんなサイトの説明を読んでみたりはしたのですが
DrawIndexedPrimitiveの引数になにを入れればいいのかよく理解できませんでした。
(http://www.dwahan.net/nyaruru/programming/dipmini.png とか見ました。)
↑のようにzの1行ずつする場合、どう書けばいいんでしょうか? よろしくお願いします。
0125デフォルトの名無しさん
2007/03/01(木) 15:56:36まずはC言語の・・・・・
0126デフォルトの名無しさん
2007/03/01(木) 16:14:58うしろの);がないとか、pDev->がないとかそゆこと?
それは実際のプログラムには書いてあります。
0127デフォルトの名無しさん
2007/03/01(木) 17:06:24PassメソッドはID3DXEffectインターフェースのメンバではない、というエラーが出ます。
これが解決できません。
VS2002で作られたサンプルをVS2005で動かそうとしているからなのか、DirectXのバージョンの問題なのか、
どちらかかなあとは思うんですが。わからないです。
0128デフォルトの名無しさん
2007/03/01(木) 17:26:57DirectX
0129127
2007/03/01(木) 17:44:390130デフォルトの名無しさん
2007/03/01(木) 17:56:53ニアクリップとファークリップは、比率が重要。
zf/znが小さいほどZバッファの精度がよくなる。
基本はニアクリップをできるだけ遠く、ファークリップをできるだけ近くする。
zf/znが1000くらいならあまり問題は起こらないかな。
Zバッファは手前は物凄く精度が高く、遠くになるほど劇的に精度が落ちる性質がある。
znやzfの調節では対応しきれないようなら、Wバッファを使ってみるといい。
それと、D3DRS_ZENABLEのパラメータはTRUE/FALSEじゃなくて、D3DZBUFFERTYPEだよ。
数値的にはD3DZB_FALSE = FALSE = 0, D3DZB_TRUE = TRUE = 1で一緒だが。
0131デフォルトの名無しさん
2007/03/01(木) 18:18:00引数の意味は
http://msdn2.microsoft.com/en-us/library/bb147325.aspx
このScenario 3〜4の図が分かりやすいかと。
コードも合わせて見ると分かりやすい。
BaseVertexIndexはVertexBufferの中の開始位置(オフセット)。
BaseVertexIndexの位置の頂点がインデックス0になる。
MinIndexは、このコールで使用するインデックスの最小値。
最適化に関係するだけなので、分からなければ0でいい。
NumVerticesは使用する頂点の数。(インデックスの最大値と最小値の差+1)
MinIndexとNumVerticesは面倒なら0とVBの頂点数のままでいい。
StartIndexはインデックスバッファの開始位置のオフセット。
0132デフォルトの名無しさん
2007/03/01(木) 18:38:06表示がおかしくなった原因はPrimitiveCountじゃないの?
これは(height - 1) * 2だと思うが。(そもそも5*5の方もおかしい)
ついでに言うと、普通はこういうやり方じゃなくて、同じテクスチャを
使用しているマスだけを選んで動的にVertexBufferを作って行くようにする。
0133127
2007/03/01(木) 18:50:04BeginPass,EndPassを使えばよかったみたいです。
0134デフォルトの名無しさん
2007/03/01(木) 19:37:11レスありがと〜。 まだmsのサイト全部は読みきれてないけど;
>>132
俺もおかしいとは思ってたw
普通のやり方がまだわかってなくておかしいとは思うけど、DirectXは最近はじめたばっかりなんで許してw
でも、同一テクスチャだけまとめて・・・ってのは、なるほど〜と思った。 ありがと。
で、まだ解決には至ってないんだけど、ぼーっと眺めてても理解が進まないし
ループを展開してとりあえず2行分ならべて書いてみようと思って
>>131がしてくれた説明をじぶんなりの理解(動いてないから曲解してるかも)で↓のように
DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0*width, 0, width*2, 0, (width-1)*2); // 1行目
DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 1*width, 0, width*2, (width-1)*2*3, (width-1)*2); // 2行目
書いてみたものの、1行目は表示されるけど、2行目が表示されない。
なにか根本的に勘違いしてる(and/or理解してない)のかもしれない。
0135デフォルトの名無しさん
2007/03/02(金) 23:53:440136デフォルトの名無しさん
2007/03/03(土) 23:11:10理解が中途半端だと結局あらゆるところで躓く。
0137デフォルトの名無しさん
2007/03/04(日) 07:44:46いやそれでは答えになってないしょう?
こっちはいろいろ考えて D3DXIntersect に落ち着いたのに、それを否定される筋合いはありません。
0138デフォルトの名無しさん
2007/03/04(日) 07:56:45基本的に対象とするメッシュと視線レイを与えて引数で結果を得るだけのものだし。
具体的な使い方も分からずに選択するのがいろいろ考えた結果なのか?
0139デフォルトの名無しさん
2007/03/04(日) 08:54:28具体的な使い方が書かれてるのが知りたいんです。
解説に動くプログラムが添えてあって、すぐ試せるようなのが理想です。
自分で最初から考えるよりすでにあるものをコピペしたほうが、確実だし時間もかからないですよね。
労力を金で買いたいと言ってるのに、「自分でやれ」はおかしいでしょう?
0140デフォルトの名無しさん
2007/03/04(日) 08:59:570141デフォルトの名無しさん
2007/03/04(日) 09:04:16頭が悪いのはどうにもならん。
0142デフォルトの名無しさん
2007/03/04(日) 11:23:06じゃ本と同じ値段で雇えるプログラマ教えろ、だろ次は
0143デフォルトの名無しさん
2007/03/04(日) 11:27:28ないよ
コレで満足?
0144デフォルトの名無しさん
2007/03/04(日) 11:31:18自分がプログラマだからここに聞きに来てるんですけど。それに丸投げしようとは思ってません。
正直言いますと3Dゲームを作るのは初めてですが、仕事なので仕上げないといけないんです。
まだマスターアップまで3週間あるとはいえ、なるべくなら短い時間で作りたいんですよ。
>>142
まさに正論ですね。
>>143
そうですか。ゲ製作で聞いたほうがよさそうですね。
0145デフォルトの名無しさん
2007/03/04(日) 11:38:31今後も無能なのに寄生して、会社に損害を与え続けるんだろうな。
0146デフォルトの名無しさん
2007/03/04(日) 12:07:560147デフォルトの名無しさん
2007/03/04(日) 12:40:36D3DXのアニメーション周りとか、内部的にややこしい(又はめんどくさい)処理が必要なものなら
まだ使いまわしたいってのは分かるし、実際に有用かもしれないが…
仮にD3DXIntersectの完全なサンプルソースがあったとしても、それを使いまわせるような人なら
そもそも関数の仕様を見た段階で何も考えずに実装できそうなものだが。その程度の処理しかしてないんだし。
0148デフォルトの名無しさん
2007/03/04(日) 12:57:34与える引数は3つですよね?
pMesh 地形マップのメッシュ BattleMap
pRayPos カメラの座標 D3DXVECTOR3(CamX,CamY,CamZ)
pRayDir カメラの向き D3DXVECTOR3(0,0,1)
関数は正常に動いてるのに、なぜか思ったような結果になりません。
目の前に山があるのに、カメラが前進すると山の中に入ってしまいます。
0149デフォルトの名無しさん
2007/03/04(日) 15:02:55やはり近道探すより自分であれこれ悩みまくった方が賢明ですね。
とりあえず、D3DXIntersect使って接触してるかなどは判定できるようになれたので
あとはトロトロやってみます。。
0150デフォルトの名無しさん
2007/03/04(日) 17:27:02思ったとおりの描画をしてくれるのに、HALだとただの
フォンシェーディングっぽくなってしまうのは何ででしょう?
GPUはRADEONX1950とGeForce6800で確認しましたが同じでした。
REFとHALって同じコードでも違う演算するんですか?
0151デフォルトの名無しさん
2007/03/04(日) 17:30:190152150
2007/03/04(日) 17:36:08早速のレスありがとうございます。
なるほど。
ということは、シェーダーでGPUのサポートしていない命令を使ってしまっているということですかね?
0153デフォルトの名無しさん
2007/03/04(日) 17:57:40たぶんシェーダが問題なのではなく、RenderState等だと思う。
シェーダに問題があれば、コンパイル時にエラーが出るんじゃないかな。
シェーダのコンパイルでエラー出てないよね?
RenderStateやSamplerStateは影響するものは全て自分で設定しないと駄目。
default値をあてにしてはいけない。ドライバで勝手に変えてる設定も多い。
HALとREFでは使える機能に差はあるが、使える範囲内で使う分には基本的に
動作に違いはないよ。(そのためのリファレンスラスタライザだし)
0154150
2007/03/04(日) 18:04:25ありがとうございます。
なるほど。確かにシェーダーのコンパイルでエラー出ませんね。
ちょっと全部のRenderState見直して設定してみます。
0155デフォルトの名無しさん
2007/03/05(月) 10:26:27となるとゲームとか作って配布する際にAVIファイルを丸出しにしないといけません。
それはいやなので、どうにかその生ファイルが見えない形にして
配布したいのですが、そういう場合はどういった方法がありますか?
0156デフォルトの名無しさん
2007/03/05(月) 11:01:48暗号化する
0157名無しさん@お腹いっぱい。
2007/03/05(月) 13:12:02ありがとうございます。暗号化は一つの方法としてあると思うんですが
ファイルの暗号化自体のプログラムについてはおいて置くとして、
まず動画ファイルを読み込んで再生するために
MDXを使う場合はnew Video(path);のようにファイル名を渡さないといけません。
プラットフォームSDKにもAVIFIELOPEN等、動画再生の関数があるみたいですが、
これもファイル名を指定して読み込んだりするようです。
なので暗号化したファイルを読み込み→再生する間の部分で
どういう事をすればよいのかが想像できないというか、分かりません。
その辺の事を教えていただけないでしょうか。
0158デフォルトの名無しさん
2007/03/05(月) 13:15:240159名無しさん@お腹いっぱい。
2007/03/05(月) 13:38:47暗号解除までのやり方はなんとなく想像がついていますが、
例えばこれが元もとAVI形式のファイルだった場合に
>デコーダのインタフェイスに渡して再生。
この辺がどうすればいいのか分かりません。
復号化したAVIのバイナリデータを渡したら再生してくれる
関数かなんかがどこかに用意されてるんでしょうか?
0160デフォルトの名無しさん
2007/03/05(月) 13:42:250161デフォルトの名無しさん
2007/03/05(月) 13:58:540162名無しさん@お腹いっぱい。
2007/03/05(月) 14:23:20要するに復号化したデータを渡す関数等がDirectShowにあるなら
名前を教えてください。調べてみたところどれも普通に〜.aviとか
ファイル名で指定してるようなので、どうしたらいいのかさっぱりわかりません。
0163デフォルトの名無しさん
2007/03/05(月) 14:34:49そしたら『普通に〜.aviとかファイル名で指定してる』の意味がわかるから。
0164名無しさん@お腹いっぱい。
2007/03/05(月) 15:11:28自分で暗号化したファイルを読み込んで複合化して、
それをどうやってその関数に渡したらよいのですか?
0165名無しさん@お腹いっぱい。
2007/03/05(月) 15:24:27私にそこから何を得る事を期待してそういって頂いているのかがわかりません。
例えば適当なバイナリのテキストファイルを読み込んで
暗号化したり複合化したりというのは、やろうと思えばできると思います。
でもデータはメモリの上で操作しているわけで、、、
再生関数などに渡す必要があるのは「ファイル名」でして・・・
複合化したデータをファイルに書き出したりするのはできますが、、、。
複合化したデータを一旦.aviで書き出してそれを再生関数に渡せといっているのか、、、それはないですよね?
0166デフォルトの名無しさん
2007/03/05(月) 16:01:49適切なソースフィルターを作成してバイナリーストリームを流し込み再生する。
0167デフォルトの名無しさん
2007/03/05(月) 16:57:040168名無しさん@お腹いっぱい。
2007/03/05(月) 17:58:55そこから何かを得られる事に期待します・・・
ありがとうございました。
0169デフォルトの名無しさん
2007/03/05(月) 21:09:410170デフォルトの名無しさん
2007/03/05(月) 21:21:070171名無しさん@お腹いっぱい。
2007/03/05(月) 21:37:41どんな形式のファイルを渡しても
勝手に解釈して読み込んで表示してくれる便利な関数があったら
ぜひ使いたいので教えてください。お願いします。
0172デフォルトの名無しさん
2007/03/05(月) 22:53:22全部とはいかんがな。
0173155
2007/03/06(火) 11:26:03普通に「ディスク上の.aviファイル」を再生するのは
フィルタグラフを作るまでもなくRenderFileで簡単にできました。
しかし今回は暗号化されたファイルを復号化して再生することが目的です。
なので次にttp://www.firefly-vj.net/dshow/graph/make.html
を参考にしつつ自前でフィルタグラフを構築して再生してみようと思ったんですけど、
結局ここでもAddSourceFilterの部分で「ファイルからロード」してるので
「復号化したメモリ上のデータ」からフィルタを作る方法が分かりませんでした。
>バイナリーストリームを流し込み再生する。
ここ↑がどうすればよいのか分かりません。
どなたか教えてください。お願いします。
0174デフォルトの名無しさん
2007/03/06(火) 12:02:590175デフォルトの名無しさん
2007/03/06(火) 12:06:150176155
2007/03/06(火) 12:19:39そういうことですか・・・
果てしなくめんどくさそうですねこれは・・・
勉強します。ありがとうございました。
0177デフォルトの名無しさん
2007/03/06(火) 13:09:05そっちも面倒そうだけどな。
0178155
2007/03/06(火) 13:12:42「暗号ファイル→復号→DS」以外の方法はないものですか。
0179デフォルトの名無しさん
2007/03/06(火) 13:15:230180デフォルトの名無しさん
2007/03/06(火) 13:17:030181デフォルトの名無しさん
2007/03/06(火) 13:17:412. 再生直前になったら先頭4バイトを元に戻す
3. DirectShow で再生する。
4. 終わったらまた4バイトを弄くっておく。
0183デフォルトの名無しさん
2007/03/06(火) 13:31:09memfile.cpp
0185デフォルトの名無しさん
2007/03/06(火) 15:00:56異常終了したときにavi丸出しになり、
次から再生できなくなるという罠か。
0186デフォルトの名無しさん
2007/03/06(火) 15:09:230187デフォルトの名無しさん
2007/03/06(火) 23:38:320188155
2007/03/07(水) 05:22:23メモリ上のバイナリデータをDSより簡単に再生する方法がありますか。
0189デフォルトの名無しさん
2007/03/07(水) 07:14:030190デフォルトの名無しさん
2007/03/08(木) 18:04:27ここで指定するデータサイズの上限ってあるのでしょうか?
構造体
D3DXVECTOR4を16個メンバとして持っている構造体のデータサイズ(sizeofで)を指定すると
stream stride is too big. Check device caps.
SetStreamSource failed.
とエラーが出ます。
御願いします。
0191デフォルトの名無しさん
2007/03/08(木) 18:42:59ビデオカードによって頂点数・インデックス数に制限がある。
GetDeviceCapsでMaxVertexIndexとかMaxPrimitiveCountとかみるか、
(SDKDir)\Samples\C++\Direct3D\ConfigSystemにある
CardCaps.xlsってのを見るといろいろ書いてある。
0192190
2007/03/08(木) 18:46:00それだとMaxStreamStrideだね。 でもそんなのなったことないから
解決するかどうかは知らん。
0193デフォルトの名無しさん
2007/03/08(木) 18:46:37名前190ってしたけど間違い191ね。
0194190
2007/03/08(木) 19:00:11CardCaps.xlsの私の使っているグラボを見るとMaxStreamStrideが255となってました。
D3DXVECTOR4 15個はOKなんのに16は駄目な理由が分かりました。
有り難うございますm(_ _)m
さて、どうしたらしいものか・・・
0195デフォルトの名無しさん
2007/03/08(木) 19:21:14255は無いだろ、常識的に考えて・・
と思ったけど、俺のカードは508だった
うざいなD3DCAPSは
0196デフォルトの名無しさん
2007/03/08(木) 23:27:464バイト4要素が指定できる最大サイズの型だから
16*16=256でMaxStreamStride256よりでかくても意味なくね?
0197デフォルトの名無しさん
2007/03/08(木) 23:46:08DirectShowにあるAsyncというソースフィルタのサンプルで
AVIファイルを開いて再生って出来る?
出来るならAsyncを改造するだけで出来そうだね。
ちょっとデータの一部をXORしたりして
再生できないようにするだけで目的は達成できそうだし。
独自のI/FでXORする値を指定するようにすれば
専用アプリなしのグラフエディットで再生させることも出来なくできるし。
ソースフィルタとスプリッタが一体なやつだと
この手は使えないかもしれないが
AVIはできたような気がする。
出来なかったらごめんね。
0198デフォルトの名無しさん
2007/03/09(金) 00:21:26ん?最高16ってMaxStream?
それはストリーム16本ってことだと思うけど。
1本のストリームに何頂点おくれるかは、
MaxPrimitiveCountとかIndexedならMaxVertexIndexの方だと思うけど。
0199デフォルトの名無しさん
2007/03/13(火) 19:16:55頂点座標とかを直打ちした板ポリみたいなのに適用するときはないとダメっぽかったんですけど、
Xファイルに頂点シェーダを適用するときはやらなくてもちゃんと動いたので、
必要なときと必要でないときの違いはあまりわかりません。
Xファイルだけ特殊ってことなんでしょうか?
0200デフォルトの名無しさん
2007/03/13(火) 20:46:30必要
まあ本当なら、不要な情報なんだけれど
D3Dがよこせと言っているんだから仕方ない。
>>Xファイル
これが何を指しているかは不明だが
D3DXのヘルパオブジェのことなら
あれは内部的に呼び出してる。
0201デフォルトの名無しさん
2007/03/14(水) 11:28:14どう見ても2Dなんですけど
0202デフォルトの名無しさん
2007/03/14(水) 11:41:362DだとDirectX使っちゃダメみたいな言い方だな。
何で作ってるかなんて知らないけど。
0203デフォルトの名無しさん
2007/03/14(水) 11:52:27なんでDX9で2Dゲーム作ったらダメなの?
DX10かもよwwww
0204デフォルトの名無しさん
2007/03/14(水) 11:55:37DirectSoundもDirectInputもだめですか>>201
0205デフォルトの名無しさん
2007/03/14(水) 19:34:58の利用法を指定する引数Usageについての質問です。
ヘルプを読むとD3DUSAGE 定数を指定すると書いてあり、
今まで、D3DUSAGE_WRITEONLYとかを指定していたわけですが、
今日、ふとヘルプをよく読んでいたら、ヘルプの[注意]の所に、
>頂点バッファを作成するとき、CreateVertexBuffer は利用法パラメータを使って、ハードウェアとソフトウェアのどちらで頂点を処理するか決定します。
>CreateDevice が D3DCREATE_HARDWARE_VERTEXPROCESSING を使う場合、CreateVertexBuffer は 0 を使う必要があります。
>CreateDevice が D3DCREATE_SOFTWARE_VERTEXPROCESSING を使う場合、CreateVertexBuffer は 0 または D3DUSAGE_SOFTWAREPROCESSING を使う必要があります。どちらの値でも、頂点はソフトウェアで処理されます。
>CreateDevice が D3DCREATE_MIXED_VERTEXPROCESSING を使う場合、CreateVertexBuffer は 0 または D3DUSAGE_SOFTWAREPROCESSING を使えます。
こんなことが書いてあり、これを読む限り、引数のUsageの所は、
0かD3DUSAGE_SOFTWAREPROCESSINGを使えと自分は解釈しました。
しかし、これじゃあ、D3DUSAGE_WRITEONLYとかは使ってはいけないことに
なってしまう・・・
DirectXの解説本とかでは、普通にD3DUSAGE_WRITEONLYとかを使っている・・
これは、どのように解釈することが正しいのでしょうか?
よろしくおねがいします。
0206デフォルトの名無しさん
2007/03/14(水) 20:47:48D3DUSAGEの項みろよ
0207デフォルトの名無しさん
2007/03/14(水) 20:54:59いちいち釣られるな
0208デフォルトの名無しさん
2007/03/14(水) 21:57:58D3DUSAGE定数の意味を聞いてるわけじゃないんですよ
[注意]の部分の説明は、
CreateDevice関数の引数で D3DCREATE_HARDWARE_VERTEXPROCESSING
を使ったら、CreateVertexBufferのUsageの引数に「0」を使う必要があると
書いてある。
この言い分だと、「0」以外の定数は使えないということになるけど、
実際は、サンプルとかでは「0」以外の定数をUsageに指定しています。
これはおかしくはありませんか?
[注意]が間違っているのか、サンプルが間違っているのか
どちらでしょう?
と言うことを質問しにきたんです。
0209デフォルトの名無しさん
2007/03/14(水) 23:11:29> ただし、使用法が必要な場合は、1 つまたは複数の D3DUSAGE 定数の組み合わせを使用する
0210デフォルトの名無しさん
2007/03/14(水) 23:22:17それは、exciteでの翻訳なので当てになりません。
0211デフォルトの名無しさん
2007/03/15(木) 03:12:240212デフォルトの名無しさん
2007/03/15(木) 03:28:120213デフォルトの名無しさん
2007/03/15(木) 03:35:49サンプルかなにかどっかにないもんでしょうか?
0214デフォルトの名無しさん
2007/03/15(木) 23:47:50何箇所かサイトを巡ったところ細かいところで違うような気がしたのですが
初期化などはその都度必要な事だけを書いているのでしょうか?
または、MSのほうで初期化ライブラリなどがあるのでしょうか?
0215デフォルトの名無しさん
2007/03/16(金) 00:00:590216デフォルトの名無しさん
2007/03/16(金) 00:23:55くだらんこと悩まずにさっさと書いちまえ。
0217デフォルトの名無しさん
2007/03/16(金) 00:27:18自分の環境だけで動かすんだったら0.001%かもしれんが
0218デフォルトの名無しさん
2007/03/16(金) 01:12:010219デフォルトの名無しさん
2007/03/16(金) 03:05:19いやいや、自分が満足できる初期化コードを1回書いたら
後から何かすることなんてそう頻繁にはないってことだろ
0220デフォルトの名無しさん
2007/03/16(金) 05:04:13以前のを代用できるところは代用するよな。
ゲームなら、UIとかも代用できる
ウェイ!
0221デフォルトの名無しさん
2007/03/18(日) 01:11:40たとえばalphablend=trueが記述されていて、ほとんどはそれを用いるけれど稀にfalseにしたいとか
lightingのon/offの違うのを見たいとか
いちいち別バージョンを作らなくてはならないんでしょうか。
組み合わせが爆発しないんでしょうか?
0222デフォルトの名無しさん
2007/03/18(日) 01:57:59technique T { pass P { fillMode = g_fillMode;}}
------------------------------------------
pEffect->SetInt( "g_fillMode", D3DFILL_SOLID);
0223デフォルトの名無しさん
2007/03/18(日) 02:43:25http://pc11.2ch.net/test/read.cgi/tech/1173535400/
ってどうちがうんだ?
あ、向こうは超初心者か。。
0224デフォルトの名無しさん
2007/03/20(火) 02:40:56ほかのひとPCでは、Clear()部分しか表示されません。
2D表示方法は板ポリゴンに、テクスチャをはっています。
SetTexture,SetFVF,DrawPrimitiveUPは成功しています。
開発環境はWinXPSP2 VC++2005とDirectX2006decです。
0225デフォルトの名無しさん
2007/03/20(火) 03:03:55ライティングをOFFにしてないとか?
0226224
2007/03/20(火) 03:12:450227224
2007/03/20(火) 14:00:28d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat= D3DFMT_D16;
上のコードを削除すればすべての環境で動くようになりました。
参考までに自分のビデオカードは、RADEON X700です。
ClearではZバッファを使用していないので、不具合が生じたと思います
0228デフォルトの名無しさん
2007/03/20(火) 14:21:39なんていうか EnableAutoDepthStencil = TRUE なら
Zバッファはちゃんとクリアしないといけないでしょ。
0229デフォルトの名無しさん
2007/03/20(火) 17:04:55開放するように記述すると、プログラム終了時にVC++が
デバッグ欄にメモリエラー報告しまくるんですが、
テクスチャの開放のタイミングはいつが適切なんでしょうか?
教えてください。
開発環境はVC++2005pro、DirectX9です。
D3DXCreateTexture()関数呼び出し直後や描画毎などに
開放した場合、メモリエラーは発生しません。
0230デフォルトの名無しさん
2007/03/20(火) 17:08:010231デフォルトの名無しさん
2007/03/20(火) 17:08:12行っていますが、こちらは問題なしです。
0232229
2007/03/20(火) 18:07:32ありがとうございます。
0233デフォルトの名無しさん
2007/03/28(水) 17:06:28テクスチャーを2600*2600などという大きいものにしたところ、どうやらビデオカードの限界だったらしく2048*2048に大きさが丸め込まれてしまいました。
それは構わないのですが、丸めこむときの挙動が
「はみでた部分を削除」なようなのです。
これは仕様に基づいた動作(他のビデオカードで丸め込まれた時も同じ挙動をする)なのでしょうか?
なんとなくイメージで「テクスチャーサイズ限界を超えた場合、限界サイズに収まるように勝手に画像が勝手に縮小される」のではないかと思っていたのですが…。(このイメージに根拠は無いです)
0234デフォルトの名無しさん
2007/03/28(水) 17:19:27テクスチャを2は累乗で表される幅と高さにしないとダメ
4096*4096でテクスチャを用意し、
2600*2600の部分だけ表示させればよい。
0235デフォルトの名無しさん
2007/03/28(水) 17:25:25お返事ありがとうございます。
確かに2の累乗しかサポートしていないボードがほとんどのようですね。
ただ、どうやら私のボードは2048*2048が限界らしいのです。
例えば800*600のテクスチャーは、読み込んだときに1024*1024になることを確認済みです。
描画するとき、tu=(1.0f * nX / 800)ではなく tu=(1.0f * nX / 1024)とすることで思ったとおりの描画ができていました。
ですが今回2600*2600を読ませたときは、期待通り4096*4096にしてくれなかったのです。
「それならきっと、(多少テクスチャが汚くなるけど)縮小して収めてくれてるだろう」と思ったら、切り捨てられていたのです。個人的にはちょっとびっくりでした。
0236デフォルトの名無しさん
2007/03/28(水) 17:27:24普通に考えてそんなにいらないしな
0237デフォルトの名無しさん
2007/03/28(水) 17:33:56報告させていただきます。
D3DXCreateTextureFromFileInMemoryEx
の
Filter引数に
D3DX_FILTER_NONE を指定していたからでした。
D3DX_FILTER_LINEAR を指定することで想定どおりとなりました。
ただ、限界を超えていないときにも(2の累乗以外の画像を読み込むと)、確保したサイズに強制的にあわせるようです。
つまり、無駄に「一旦引き伸ばしてテクスチャとして持ち、その後縮小して表示」することになるのでアンチエイリアシングが行なわれてしまうようです。
ドット絵のようなものは、素直に2の累乗にしたり、小さめの画像D3DX_FILTER_NONE読み込みしたほうが良いと思われます。
0238デフォルトの名無しさん
2007/03/28(水) 19:09:160239デフォルトの名無しさん
2007/03/28(水) 20:19:23それはD3DXのヘルパ関数の挙動だろ、D3Dやボードの挙動じゃない。
また2のn乗の制限や最大解像度は、全てCAPSから得られるので
そっちを根拠とすべき。
0240デフォルトの名無しさん
2007/04/03(火) 21:12:27D3DXCreateTextureFromFileExでD3DX_FILTER_NONEを指定して画像を読み込みました。
その後
m_pD3DDEV->SetSamplerState(0,D3DSAMP_MIPFILTER,D3DTEXF_LINEAR);
を設定した上で画像を矩形ポリゴンに貼り付けて表示したところ、なんだか不自然な挙動をします。
等倍の時はいいのですが、縮小されるように矩形ポリゴンの大きさを小さくしていくと、
テクスチャが黒ずんだり、さらに小さくするとテクスチャが透けたり、
D3DXCreateTextureFromFileExでD3DX_FILTER_LINEARを指定してやると、綺麗に縮小表示されます。
テクスチャの読み込みと、SetSamplerStateでの設定は、両方D3DX_FILTER_LINEARにしてやらないといけないのでしょうか?
両方D3DX_FILTER_NONEにしても想定通り縮小表示されたのですが、アンチエイリアシングがかからないためかなり荒かったです。
0241デフォルトの名無しさん
2007/04/03(火) 23:21:49どうでもいいが、SetSamplerStateで使うのはD3DX_FILTER_LINEARじゃなくてD3DTEXF_LINEARな
0242デフォルトの名無しさん
2007/04/03(火) 23:34:34D3DXCreateTextureFromFileEx のフィルタってFilterとMipFilterの2つあって、
Filter は 画像->テクスチャでサイズが違う時とかに掛けるフィルタだから
同サイズならNONEでもいけるかもしれないけど、
MipFilter は NONEだとまともなミップマップにならないわね。
0243デフォルトの名無しさん
2007/04/04(水) 04:00:30App.pDirect3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, App.hWindow, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &App.PresentParameter, &App.pDevice );
D3DXCreateFont( dev, 32, 16, FW_NORMAL, 0, FALSE, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_SCRIPT, TEXT("MS Pゴシック"), &font)
DirectX9.0cで、上記のCreateFontを実行すると、上のCreateDeviceでデバイス生成済みの場合は正常にフォントが作成できますが(ただし動作が遅すぎる)、
下のCreateDeviceを使った場合に、フォントの作成に失敗します
テスト環境はWindowsXP、グラフィックカードはIntel 82815(オンボード)、ドライバは最新版です
グラフィックカードは、DirectX9.0cに完全には対応してませんが、それが原因でしょうか。フォント作成で失敗するのが不可解です
オンボードなど多くの環境でできる、2D表示のRTSのネットゲーム(百人以上のユーザを想定)を作ってますが、
DirectXのバージョンを下げるなら、どのバージョンが適してるでしょうか
0244243
2007/04/04(水) 04:05:090245デフォルトの名無しさん
2007/04/04(水) 11:22:43関係ないと思うけど
×"MS Pゴシック"
○"MS Pゴシック"ね
0246デフォルトの名無しさん
2007/04/08(日) 22:32:300247デフォルトの名無しさん
2007/04/08(日) 23:18:40△→▽
□→■
色々あるんだがな。
しかもスプライトという用語自体がいったい何を指すのか不明だし。
0248デフォルトの名無しさん
2007/04/08(日) 23:28:08みたいな反転。
0249デフォルトの名無しさん
2007/04/08(日) 23:50:550250デフォルトの名無しさん
2007/04/08(日) 23:58:05UVの開始と終了の値を逆にする
0251デフォルトの名無しさん
2007/04/09(月) 00:00:46ヨ→m→Eなのか
ヨ→ | →Eなのかわからん
0252デフォルトの名無しさん
2007/04/09(月) 00:30:18それを知って何か意味があるの?
0253デフォルトの名無しさん
2007/04/09(月) 00:38:150254デフォルトの名無しさん
2007/04/09(月) 04:09:03180度回転は反転(=invert=裏返し)とは言わないだろ
0255デフォルトの名無しさん
2007/04/09(月) 07:53:04質問者が180度回転のつもりで反転という言葉を使う可能性は十分にあると思うぞ。
0256デフォルトの名無しさん
2007/04/10(火) 01:47:160257デフォルトの名無しさん
2007/04/10(火) 01:54:162次元脳はすっこんでろ
0258デフォルトの名無しさん
2007/04/10(火) 02:01:08スレも読めんのか低脳
0259デフォルトの名無しさん
2007/04/10(火) 02:48:560260デフォルトの名無しさん
2007/04/10(火) 05:48:383Dのレンダリングの際には
ワールド変換→ビュー変換→プロジェクション変換
がこの順番で行われるって書いてある本があるんだけど、
これは別にSetTransform()でセットする順番を
このとおりにしなきゃダメだって言ってるわけじゃないよね?
0261デフォルトの名無しさん
2007/04/10(火) 06:44:140262デフォルトの名無しさん
2007/04/10(火) 11:33:34変換が適用される順番だから、SetTransformの順番は関係ない。
行列の積はABとBAが等しくないので、計算する順番はとても重要。
実際の計算では3つの変換を順番にするのではなく、1つの行列に
まとめて1回の計算で済ますことが可能。
この、変換を合成できるという性質が、座標変換に行列が使われる理由。
行列で表現できる変換なら、どんなに複雑でも1つの行列に合成できる。
0263デフォルトの名無しさん
2007/04/15(日) 18:04:47今やっている方法は
・目標点の位置ベクトルから、ミサイルの位置ベクトルを引いて、
ミサイルから目標点への方向ベクトルを作る。
・(0,0,1)のベクトルを作り、方向ベクトルとの外積をVec1とする。
・(0,0,1)と方向ベクトルの内積と、アークコサインから、
二つのベクトルのなす角θを求める。
・Vec1を回転軸として、ミサイルをθだけ回転させる。
この方法だと、絶対座標で-Zの方向へ進むとき、変になる。
その辺の解決方法を教えてください。
0264デフォルトの名無しさん
2007/04/15(日) 19:10:190265デフォルトの名無しさん
2007/04/15(日) 19:14:35右か左かを外積で求めて進行方向のベクトルを一定角度だけ回転させるだけだよ
0266デフォルトの名無しさん
2007/04/15(日) 19:18:40適度にいい加減にあちこち乱れ飛んで見せてから100%命中させたいのですが
0267263
2007/04/15(日) 19:26:08・ミサイル自体を目標点の方向へ向ける。
今ある情報
・目標点の座標
・ミサイルの座標
・ミサイルの状態行列
です。
>>265
「右か左か」というのはなんですか?
0268263
2007/04/15(日) 19:28:37つねに、ローカル座標のZ方向に進むという仕様にしています。
なので、目標点へミサイル自身が向けばいい、というわけです。
0269デフォルトの名無しさん
2007/04/15(日) 19:41:030270263
2007/04/15(日) 19:48:41スターフォックス64のオールレンジモードの状態です。
絶対座標の(0,0,0)から、+X、−X,+Y,+Z,-Z方向に軸を伸ばしています。
-Y方向には伸ばしていません。
0271263
2007/04/15(日) 19:50:12ベクトルをワールド空間→ローカル空間への変換方法ですよね。
0272デフォルトの名無しさん
2007/04/15(日) 20:07:210273デフォルトの名無しさん
2007/04/15(日) 20:43:58例えば、目的の角度にする為に30度回転しなきゃならないとするだろォー
そこをあえて5度ぐらいにするんだよォーそうすりゃ徐々に目的地に向かうだろォー
んでそういう場合はククォータニョンを使うんだよォォーわかったかカスが
0274デフォルトの名無しさん
2007/04/15(日) 20:54:07右か左かってのは自機の進行方向に対して
敵が自機からみて右にいるか左にいるかってこと
それとお前のいってることおかしくね?
常にローカルのZ方向なんて仕様にはどうしたってならんでしょ?
別のゲームを実際に画面でそうみえる通りに作ってないか
どう作ってるのかしらんが内部ではちゃんと3Dの世界は構築できてるのか?
0275デフォルトの名無しさん
2007/04/16(月) 00:22:43現在の姿勢(A)から、目的の姿勢(B)への変換は M = invA・B だけど
ミサイルの上向きベクトル(ひねり)を"成り行き"で決めるんだとしたら、
Bは直接求められないから、AからBへの相対的な回転を求める必要があるわね。
回転は円弧 v1,v2 から求めるとして
v1 は、 現在の姿勢(A)の前向きベクトル、ニュートラルが(0,0,1)だとしたら
D3DXVec3TransformNormal(&v1, &D3DXVECTOR3(0,0,1), &A); で
v2 は、 (目標点)-(ミサイル点)ね
あとは、外積と内積で軸と回転角を求めて(ry ね。
角度を徐々に変化するなら回転量にリミッタをつけるわけね。
0276デフォルトの名無しさん
2007/04/16(月) 01:16:07角度なんてもっときゃいいじゃん
左右を判断するのに外積
進行方向を決定するのに現在の角度+回転したい角度
で内積どこに使うの?
0277デフォルトの名無しさん
2007/04/16(月) 01:28:22クランプしないといけないわね。
0278デフォルトの名無しさん
2007/04/16(月) 01:33:26何、残りって?
内積って光の計算とボールの反射角ぐらいしか使った覚えない
0279デフォルトの名無しさん
2007/04/16(月) 01:35:59いらんて
目でわからんほど小さい角度やんけ
0280デフォルトの名無しさん
2007/04/16(月) 01:47:20ブルブル震えるのを、許容するかどうかの問題ね。
0281263
2007/04/16(月) 02:02:57相当綺麗に誘導することができました。
ありがとうございます。
私の場合は、ミサイルの方向ベクトルと目標点への方向ベクトルの内積で
出た角度に制限(1フレームで30度以内)を付けました。
これならばミサイルがぶるぶる震えたりはしません。
ですが、この方法でも、目標点への方向ベクトルのz要素が負
(例えば、ミサイル絶対座標が(10,10,10)で
目標点の絶対座標が(5,1,5)の時のように方向ベクトルが(-5,1,-5)のとき)
などでは、ミサイルがあらん方向へと飛んでいきます。同高度の時でも、
50単位ぐらい離れていたら、誘導されるのですが、それ以上離れると、
いきなり完全な逆方向へ飛んでいきます。これはなぜなのでしょうか。
0282デフォルトの名無しさん
2007/04/16(月) 03:02:12多分計算間違いか(ベクトルの正規化し忘れとか)、外積の計算失敗とかだと思うけど。
(ちなみに(-5,1,-5)は(-5,-9,-5)の間違い?)
v1とv2が、ほぼ同じ向きの場合とか、正反対の場合、(|dot|>1.0-ε)
外積がうまく求まらなかったりするから、場合分けが要るわね。
(正反対の場合はY軸180度回転で決め打ちとか)
0283デフォルトの名無しさん
2007/04/16(月) 07:16:32内積は使うと色々面倒なんだぜ
場合分けあって
まあ、ポイントは外積の左右判断だけだと思うけどね
0284デフォルトの名無しさん
2007/04/16(月) 07:23:430>X1Y2-X2Y1
のどこにミスる要素が・・・
0285デフォルトの名無しさん
2007/04/16(月) 08:41:340286デフォルトの名無しさん
2007/04/16(月) 20:01:020287263
2007/04/17(火) 00:44:59なぜ変な方向へ行ってしまうかというのは、外積から求めた回転軸に問題がありました。
ほぼ同じ向きになったベクトルの外積はゼロベクトルに限りなく近くなります。
なので、軸ベクトルの長さが1以下の時には回転をしない、
という風にしたら何の問題もなく動きました。
みなさん、本当にありがとうございました。
0288デフォルトの名無しさん
2007/04/17(火) 05:52:460289デフォルトの名無しさん
2007/04/17(火) 07:04:27なにとんちんかんなこといってるの
外積で出したベクトルなんて使わないよ
0290デフォルトの名無しさん
2007/04/17(火) 07:25:15>外積で出したベクトルなんて使わないよ
ってどういうことよ?
まさか、外積がそのまま軸になるとか思っちゃってるわけ?
0291デフォルトの名無しさん
2007/04/17(火) 08:38:04アプローチ悪すぎ
アフォ過ぎ
0292デフォルトの名無しさん
2007/04/17(火) 08:58:290293デフォルトの名無しさん
2007/04/17(火) 14:13:54良いアプローチを提示できない時点で終わってる
0294デフォルトの名無しさん
2007/04/17(火) 19:31:38さんざん言ってんのにお前が馬鹿だから略
0295デフォルトの名無しさん
2007/04/17(火) 20:12:06傾けたい上ベクトルを指定
これとさっきだしたベクトルで外積
これらを行列に突っ込んで姿勢行列完成
どっから見てもレーザーに見える板ポリなんかもこんな感じ
0296デフォルトの名無しさん
2007/04/17(火) 20:37:28進行方向のがでてない
0297デフォルトの名無しさん
2007/04/18(水) 00:55:13ご存知でしたら教えてください。よろしくお願いします。
0298デフォルトの名無しさん
2007/04/18(水) 04:25:380299デフォルトの名無しさん
2007/04/19(木) 17:43:58ありがとうございます。参考にさせて頂きます。
0300デフォルトの名無しさん
2007/04/20(金) 01:54:38PlaySegmentEx でWavデータを再生しているのですが、ループ再生の挙動が
おかしいのです。SetLoopPoints(0,0) のSetRepeats(DMUS_SEG_REPEAT_INFINITE)で
指定しているですが、2回目のループから、何故か10秒ほど間があきます。
(1回目のループは問題なしです)
状況的には、
(1)250個ほどのwavファイルを読み込んでセグメントを作っている。
(2)うまくループし続けるセグメントもあれば、2回目から間の開くセグメントもある。
(3)空きメモリは2G程度ある。
こんな状況です…。色々試してみましたが、どうしても間が…。
よろしくお願いします。
0301デフォルトの名無しさん
2007/04/20(金) 08:59:57DirectX9の3Dのサンプルを起動すると...very hardの様な警告が表示され
処理が大変遅くなります。
最新のノートだと聞いたのですが、一方最近のVAIOのノートで起動すると
一目瞭然で段違いにスムースに動きます。
グラボの性能が違うのでしょうか?
教えてください。お願いします。
0302301
2007/04/20(金) 09:26:47グラフィックボードは
名前:Mobile Intel(R) 945GM Express Chipset Family
チップの種類:Intel(R) Calistoga Graphics Controller
メモリ合計:128.0MB
WindowsXP
FMVシリーズ
Intel(R) Celeron(R) M CPU
410 @ 1.46GHz
1.46GHz、504MB RAM
物理アドレス拡張
という感じです。すみません。
0303デフォルトの名無しさん
2007/04/20(金) 10:30:050304デフォルトの名無しさん
2007/04/20(金) 10:35:57ハードウェアに無い機能を使ったサンプルの場合、Direct3Dがリファレンスラスタイライザという
すべてをソフトウェアで処理するモードに切り替わるから超遅くなんのよ。
VGAの性能不足とゆーより機能不足が原因です。
0305301
2007/04/20(金) 17:47:28ありがとうございます。
オンボードGPUって何ですか。つなげて言われると分かりません。
確かにラスタライザとかエラー表記がありました。すみません。
参考書はI/O BOOKSのDirectX9 DirectX Graphics
という本なんですが、
その機能を使わなければどうしようもないですよね?
分解でもしないと、どうしようもないんですか?
0306デフォルトの名無しさん
2007/04/20(金) 18:07:58最低限トレースしてどこの分岐でメッセージを出力しているくらいはやっているんだろうな?
0307301
2007/04/20(金) 18:42:32ttp://www.uploda.org/uporg781097.txt
> if( NULL == pOldDeviceSettings &&
> pNewDeviceSettings->DeviceType == D3DDEVTYPE_REF &&
> !GetDXUTState().GetOverrideForceREF() )
> {
> DXUTDisplayErrorMessage( DXUTERR_SWITCHEDTOREF );
> }
おそらくこの辺りだと思いますが、解読できませんでした。すみません。
デバイスキャプスで探る方法も分からない屑ですが。
0308デフォルトの名無しさん
2007/04/20(金) 18:58:55サンプルを並の速度で動かしたいだけなのか?
DirectXを勉強したいのなら、初期化から始めれば自然と理解できるように
なると思うのだが。
0309デフォルトの名無しさん
2007/04/20(金) 19:49:03そのGPUにはそういう機能がない
だから遅くなる
分解だの改造だのやってもダメ
諦めて
0310デフォルトの名無しさん
2007/04/20(金) 20:00:03DirectX8のサンプルを見て、その範囲でやる方がいいな。
その辺のネトゲとかはそんなレベルだし。
0311301
2007/04/20(金) 20:51:20お騒がせしてすみませんでした。
ありがとうございます。
0312デフォルトの名無しさん
2007/04/21(土) 02:02:04どうやってIntersect用のメッシュを読み込めば良いかわかりません。
アニメーション用ではなかったとき、D3DXLoadMeshFromX()を使ってメッシュ情報を扱えたのですが、
今はD3DXLoadMeshHierarchyFromXを使っていて、判定用のメッシュが扱えません。
どなたかご存知の方、おられましたら、宜しくお願いします。
0313デフォルトの名無しさん
2007/04/21(土) 17:55:36「DirectX逆引き大全500の極意」という本があると思うのですが、
この本はどうなのでしょうか?
サイトにある目次を見た所、自分のやりたい事があったのですが、
プログラム&解説は詳しく載っているのでしょうか?
板違いならすいません。
よろしく御願いします。
0314デフォルトの名無しさん
2007/04/21(土) 18:15:300315デフォルトの名無しさん
2007/04/21(土) 18:40:100316デフォルトの名無しさん
2007/04/21(土) 19:49:24DirectInputを使いたいのですがコンパイルが通りません。
[dinput.h]はインクルードし、[dxguid.lib][dinput8.lib]はリンクしています。
書籍や説明をしているサイトの通り打っても[DirectInput8Create]が使えないと言われます。
何か別の関数に置き換わったのでしょうか?
0317デフォルトの名無しさん
2007/04/21(土) 20:03:210318デフォルトの名無しさん
2007/04/21(土) 20:23:28「コンパイルが通らない」だけで分かるかよ!
0319デフォルトの名無しさん
2007/04/21(土) 20:27:24なんだっけ?ライブラリか何かのファイルが9.0cからなくなっているんだよな
そこら辺詳しい人いないかね
0320デフォルトの名無しさん
2007/04/21(土) 20:48:42今までのSDKを適当に入れたら通る。
この解決方法でいいのか知らんが。
0321デフォルトの名無しさん
2007/04/21(土) 20:52:150322デフォルトの名無しさん
2007/04/21(土) 21:05:26を、DirectInput8Createを使ってるcppファイルの先頭付近に
追加してみろ。変わらずなら他のcppに次々追加していく。
stdax.cppだけじゃ駄目だ。
多分これでリンクが通るはずだ。理由はしらね。
0323デフォルトの名無しさん
2007/04/21(土) 22:50:12エラーメッセージ自体を貼り付けてみよう。
0324デフォルトの名無しさん
2007/04/21(土) 23:08:550325デフォルトの名無しさん
2007/04/22(日) 00:18:36局所サンプルで書かれてるので素人にはまったくオススメできません
DirextXのサンプルからいじってなんか作たぐらいの’まとめる’スキルが要ると思われる
0326316
2007/04/22(日) 08:16:222005Febを入れるかマクロを追記させるかのどちらかで解決するのを確認いたしました。
新しいSDKでDirectInputを使う場合、後者のほうがいいのでしょうか。
0327デフォルトの名無しさん
2007/04/23(月) 21:17:08>>316さんと同じところのDirectInput8Createで引数に使っているIID_IDirectInput8が使用できない状態です。
error LNK2001: 外部シンボル "_IID_IDirectInput8A" は未解決です
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#pragma comment( lib , "dxguid.lib" )
#pragma comment( lib , "dinput8.lib" )
これらをwindows.hなどのインクルード直後に書いています。
ちなみにIID_IDirectInput8を宣言している場所に移動は出来ます。
何が原因でのエラーなのでしょうか。
0328デフォルトの名無しさん
2007/04/23(月) 22:05:490329デフォルトの名無しさん
2007/04/26(木) 23:39:44現在、矢印キーでキャラクターをx,z軸方向へ移動させれるとこまでできておりまして、
今度はこのキャラクターに、Xファイルから読込んだ起伏のある地形の上を歩かせたいの
ですが、どのようにプログラムすれば実現できるのか分らなく苦戦しております。
実現方法や参考になるサイトなどをご存知の方がいましたらご教授ください。
よろしくお願いします。
0330デフォルトの名無しさん
2007/04/27(金) 00:25:57たくさん方法があるけど代表的で汎用性があるのを2つ
どっちがいいかでなくて、用途に応じて使いわけると開発が楽になる
1つ目は足元に見えない三角形(足場用当り判定ポリゴン)をデザイナさんにおいておいてもらって
1つ1つの三角形を片っ端から判定する(もちろん全部判定すると処理時間が半端でないのでオクツリーとか検索して幸せになる)
2つ目は2Dのマップ的な判定方法
とりあえず正方形のタイルが敷き詰められた床を想像する
真上からみると碁盤の目みたいになる
ここまでは2Dのマップチップと同じだ
横線と縦線が直行してる点を頂点として、その頂点の1つ1つに高さ情報をもたせる
とりあえずこれで山が表現できる
判定は2Dと同じようにどの四角形にキャラが乗っているか?を求めて高さの計算は
四角形の対角線で三角形2つに分ける上と下の2つの三角形に別れる
どの格子にいるかはわかっているので対角線の直線の方程式を使って上の三角形にいるか
下の三角形にいるか判断する
そしたら、平面の方程式(わからなかったらググレw)を使って高さを求める
0331デフォルトの名無しさん
2007/04/27(金) 10:36:31ご教授ありがとうございます。僕の頭ではこの問題は壁ですね…
どう解決したかを報告できるのはもうちょっと先になりそうです。
せっかく教えて頂いたのに申し訳ありません orz
0332デフォルトの名無しさん
2007/04/27(金) 10:42:410333デフォルトの名無しさん
2007/04/27(金) 11:03:34高校の教科書読んでみろとか
もうちょっと具体的な指示を
出してあげてもいいかも知れない
0334デフォルトの名無しさん
2007/04/27(金) 11:30:10ニートか大学生だろ。
0335デフォルトの名無しさん
2007/04/27(金) 11:34:290336デフォルトの名無しさん
2007/04/27(金) 20:23:31このライブラリって実際どのぐらい普及しているんでしょうか
0337デフォルトの名無しさん
2007/04/27(金) 20:57:310338デフォルトの名無しさん
2007/04/27(金) 21:08:26どうも。思ってたより少ないです
0339デフォルトの名無しさん
2007/04/27(金) 22:12:13アホかw
0340デフォルトの名無しさん
2007/04/28(土) 00:38:110341デフォルトの名無しさん
2007/04/28(土) 00:56:060342デフォルトの名無しさん
2007/04/28(土) 01:06:49劣化ライブラリでしたーってことになったら困る
0343デフォルトの名無しさん
2007/04/28(土) 01:20:49ダメプログラマがゲー専の卒業制作で使うとか
マイコンBASICマガジンの投稿作品に勝てないようなゲームしかないじゃない。
0344デフォルトの名無しさん
2007/04/28(土) 01:39:150345デフォルトの名無しさん
2007/04/28(土) 02:11:52キラーアプリを作ってしまえばもうウハウハです
0346デフォルトの名無しさん
2007/04/28(土) 10:56:48STARGAZERは実装としてはよくやったとおもう。
(デザインは既存ゲームのエッセンスをぱくりまくっただけだが、プログラム的にはそれは問題ではない)
BGMがらみで別ライブラリ使ってるから、ソースもいじってるのかもしれないが。
ライブラリを生かすも殺すも実力しだいか
0347デフォルトの名無しさん
2007/04/28(土) 12:50:200348デフォルトの名無しさん
2007/04/28(土) 12:55:51意味分からん。どの道、ライブラリなんて言っても
元々DirectXのラッパー程度なんだしそれのどこに劣化で問題がある?
むしろ、重要なのは権利回りで実用時に問題が無いか?とか
開発やサポートが止まってて予期せぬ中断を強いられないか?じゃないか?
0349デフォルトの名無しさん
2007/04/28(土) 14:12:130350デフォルトの名無しさん
2007/04/28(土) 22:17:41ライブラリの名声を借りなければ世の中を渡っていけない。
キャリア組の連中は現場のことなんて分かりやしないんだ!
0351デフォルトの名無しさん
2007/04/29(日) 07:45:510352デフォルトの名無しさん
2007/04/30(月) 00:29:22操作が遅延するのでゲームには使えないがデモに使えるのではないかと目論んでいます。
0353デフォルトの名無しさん
2007/04/30(月) 01:19:22画像ファイルからテクスチャを作るときどうしていますでしょうか?
パッキングされたものから画像を保存
それを読み込みしかないのでしょうか?
0354デフォルトの名無しさん
2007/04/30(月) 01:28:020355デフォルトの名無しさん
2007/04/30(月) 01:59:25自分のアプリで計測して比べてみ。一箇所の違いだから簡単だろ。
なんか結果でたら報告してくれよ
0356デフォルトの名無しさん
2007/04/30(月) 05:25:20そんなあらかじめ計算できるもんなら最初からデータにしとけよw
折角ゴイスーなデモやるなら操作できないと意味ない希ガス
見せるだけならムービーでいいじゃん
なんか3DMarkなんとか思い出したw
いま、全く聞かないけどどうなったんだろ?w
0357デフォルトの名無しさん
2007/04/30(月) 16:31:10ライブラリなしで作り始めるってのはありかな?
0358デフォルトの名無しさん
2007/04/30(月) 17:06:00そんなことできるもんか
下地をとっかえるなんてことは理論上簡単そうに見えても
実際には根が張るから不可能だ。
作り直したほうが速い典型だな
0359デフォルトの名無しさん
2007/04/30(月) 17:57:233DMark2007出るよ
0360デフォルトの名無しさん
2007/04/30(月) 17:58:50最初からライブラリを自分なりのラッパークラスでつつんで開発すれば
あとで実装を書き換えるだけになるからなんとかなるかも
最初からライブラリ使うな?それはごもっともw
0361デフォルトの名無しさん
2007/04/30(月) 18:49:063DMark2000,2001,03はタダだったから実行してみたな
驚いたのは2000ぐらいで後はフーンって感じだったw
こんときはセンスもよかったしね
3DMark05,06,07なんて俺のRadeon9600proで動かないだろうなw
っていうかまだタダでDownloadできるんだろうか?w
0362デフォルトの名無しさん
2007/04/30(月) 18:53:36でも06はむしろCPUがデュアルコアでメモリがたくさんないと駄目ってか?
いまってそういう時代なわけ?
完全に過去の人になったな俺w
0363デフォルトの名無しさん
2007/04/30(月) 19:11:200364デフォルトの名無しさん
2007/04/30(月) 19:18:17この銃撃戦バキュバキュって奴どんなに派手に作ったってよくみえねぇって
03のときも似たようなことやってなかったか?
技術的にいいところあっても真似してやろうと思わんよ
06はなんかドラゴン出てきてよさげっぽいからちょっと期待してみたりw
0365デフォルトの名無しさん
2007/04/30(月) 23:49:473DMark05と同じデモで終わり・・・ケチー!
終了ー!w
バッカじゃねぇのw
グラボももうネタねぇんだろw
0366デフォルトの名無しさん
2007/05/01(火) 00:06:43ok、気合入れてライブラリなしで作ってみるよ
まあまずはC++の勉強からだが…
0367デフォルトの名無しさん
2007/05/01(火) 09:35:270368デフォルトの名無しさん
2007/05/01(火) 09:44:060369デフォルトの名無しさん
2007/05/01(火) 12:30:560370デフォルトの名無しさん
2007/05/01(火) 13:59:57WindowsCEとかSDKによってはなかった希ガス(標準関数の方だったかな?)
後、組み込みとかだと標準ライブラリはほとんど使えなくて
標準関数とかも使えるもんと使えないもんとある環境があった希ガス
まあ、ゲームとは縁の無い話だがw
0371デフォルトの名無しさん
2007/05/01(火) 14:16:250372デフォルトの名無しさん
2007/05/03(木) 01:04:570373デフォルトの名無しさん
2007/05/03(木) 01:11:40はい、そうです。
0374デフォルトの名無しさん
2007/05/03(木) 01:17:02ありがとうございます!
早速DLします。
0375デフォルトの名無しさん
2007/05/03(木) 01:33:440376デフォルトの名無しさん
2007/05/03(木) 02:50:290377デフォルトの名無しさん
2007/05/03(木) 21:28:29だからこそ開発できるのに、根本的なところを理解していないと、すぐに無料とか安易な答えが返ってくる。
困ったものだ。
0378デフォルトの名無しさん
2007/05/04(金) 02:08:05何か致命的なとこがありそうで怖い
0379デフォルトの名無しさん
2007/05/04(金) 03:37:30わかったから消えろ
0380デフォルトの名無しさん
2007/05/04(金) 09:02:29安いのにはそれなりの理由があるんだよ。
0381デフォルトの名無しさん
2007/05/04(金) 11:11:33大丈夫。
つか、基本的にアカデミック版を買う奴らの方が、
長い目で見れば金を落としてくれるから、安くしてあるだけのこと。
(極端な話、プログラミングなんて始めるのにも学習時間が必要だし、
時間があまって、それなりに気力のある人間に多少安く売っておいても、
その後の20年30年で十分Payできるだけの投資価値があるって事。)
0382デフォルトの名無しさん
2007/05/04(金) 12:59:02ゲイツごめんね^^
0383デフォルトの名無しさん
2007/05/04(金) 15:27:27逆だよ。本当はアカデミック版価格でも十分は利益はだせるんだが、
絞れるヤツからは絞れるだけ絞りとってるだけ。これビジネスの常識。
0384デフォルトの名無しさん
2007/05/04(金) 15:56:35ところで、C/C++で何作ってるんですか??
0385デフォルトの名無しさん
2007/05/04(金) 16:07:590386デフォルトの名無しさん
2007/05/04(金) 16:23:080387デフォルトの名無しさん
2007/05/04(金) 16:27:010388デフォルトの名無しさん
2007/05/04(金) 17:20:03すごい
なんかうまく決まった感じだ
0389デフォルトの名無しさん
2007/05/04(金) 17:25:26みんな教科書の知識だけでしゃべってるんだから!
0390デフォルトの名無しさん
2007/05/04(金) 17:38:030391デフォルトの名無しさん
2007/05/04(金) 17:51:36教科書よりも書籍類の知識ってことで
0392デフォルトの名無しさん
2007/05/04(金) 18:33:180393デフォルトの名無しさん
2007/05/04(金) 18:45:34てか、一時期のシェーダバブルが終わってから勉強してないだろ?
0394デフォルトの名無しさん
2007/05/04(金) 19:46:10よろしくお願いします。
0395デフォルトの名無しさん
2007/05/04(金) 19:49:27教えるも何も見たまんまだ。
0396デフォルトの名無しさん
2007/05/04(金) 20:43:16そうではなくて頂点座標とか一部のみ抽出する方法を知りたいと言ってるんですが。
データが入ってるのは知ってますし、Xファイルのロードぐらいできますよ。
0397デフォルトの名無しさん
2007/05/04(金) 20:52:150398デフォルトの名無しさん
2007/05/04(金) 21:06:52すみません。それが分っていない奴でして…。
D3DXLoadMeshFromX()関数を使用してXファイルを読込む際に、第8引数に渡すLPD3DXMESH型の変数から
頂点座標を抽出できそうかな?と勝手に当てをつけているのですが…
例えばx成分だけを取り出すにはどうすれば良いのでしょう?
0399デフォルトの名無しさん
2007/05/04(金) 21:14:170400デフォルトの名無しさん
2007/05/04(金) 21:48:09D3DXLoadMeshFromX関数によって呼び出した場合は成分抽出は難しいということでしょうか?
IDirectXFile、調べてきます。
0401デフォルトの名無しさん
2007/05/04(金) 22:11:01>LPD3DXMESH型の変数から頂点座標を抽出できそうかな?
ここまで書いているのに、あくまでパーサー作らせようというのはどうよ?
>>400
君の予想通り、ID3DXMeshへの操作で可能。
ID3DXBaseMesh::LockVertexBufferで頂点配列へのポインタが得られる。
頂点要素のフォーマットはID3DXBaseMesh::GetDeclarationで得られる。
まあこれだけでは情報が足りず、ロックが失敗するなどかもしれんが
そこは頑張ってください。
0402デフォルトの名無しさん
2007/05/04(金) 22:33:46具体的な情報とご指示ありがとうございます!
頑張ります。( ゚∀゚)ゞ
0403デフォルトの名無しさん
2007/05/04(金) 22:39:40IDirectXFileがパーサーなのにパーサーを作らせようというのは意味不明。
0404デフォルトの名無しさん
2007/05/05(土) 11:38:000405デフォルトの名無しさん
2007/05/05(土) 12:18:490406デフォルトの名無しさん
2007/05/05(土) 17:19:06DirectXで、テクスチャに使える容量をゲットできる関数は見つける事が出来ました。
御願いします。
0407デフォルトの名無しさん
2007/05/05(土) 17:42:45いや、D3DXの話。Direct3D10でもDirect3D 9時代のD3DXが使えるのかな、とちょっと心配だったもので
0408デフォルトの名無しさん
2007/05/06(日) 21:59:110409デフォルトの名無しさん
2007/05/06(日) 22:41:12例えば、
「cout」をクリックするとサンプルソースのページへリンクしてる様な。
↓(使い方の例)
#include<iostream.h>
using namespace std;
int main()
{
cout<<"hello"<<endl;
}
って感じで。
0410デフォルトの名無しさん
2007/05/06(日) 22:50:390411409
2007/05/06(日) 23:20:220412デフォルトの名無しさん
2007/05/06(日) 23:33:18>using namespace std;
こういう間違った使い方の例をリンクしているページを探しているとは、
わけの分からん奴だな。
0413デフォルトの名無しさん
2007/05/06(日) 23:44:500414デフォルトの名無しさん
2007/05/06(日) 23:46:50君らもあっただろう
0415デフォルトの名無しさん
2007/05/06(日) 23:48:04マイクロソフトのDirectX SDKのサンプルコードは世界中のDirectX開発者が参考にしてるよ
0416デフォルトの名無しさん
2007/05/07(月) 00:18:01>using namespace std;
俺、これっていつもおまじないだと思って書いてるけど実はどうなの?w
0417デフォルトの名無しさん
2007/05/07(月) 00:19:130418デフォルトの名無しさん
2007/05/07(月) 00:21:11ありがとうございます。
0419デフォルトの名無しさん
2007/05/07(月) 00:34:07いや、津皮ネェ死
0420デフォルトの名無しさん
2007/05/07(月) 00:43:00名前空間は必要だよ。
0421デフォルトの名無しさん
2007/05/07(月) 01:04:58なんだよ、それ? 趣味がライブラリの作成? アホか?
・・・って、よくよく考えたら俺のことじゃねぇか。
0422デフォルトの名無しさん
2007/05/07(月) 01:12:40iostream.hとiostreamの違いについてレポートを提出せよ。
そうすれば412の言っている意味が分かる。
0423デフォルトの名無しさん
2007/05/07(月) 12:22:29市販のゲームとか、普通にFXファイルをロードするやり方しているのかな。
テキストファイルだし、遅いような気がするんだけど。開発時だけFXファイルで、
リリース時は別のファイルフォーマットに纏めていたりとかしないのかな。
FXファイルのロードとパースのスピードって実質どれくらい?
0424デフォルトの名無しさん
2007/05/07(月) 12:23:54いったい何を言っているんだ?
0425デフォルトの名無しさん
2007/05/07(月) 14:55:08それが質問に対する答えのつもりならTHE YUTORIか。
> Q. FXファイルのロードとパースのスピードって実質どれくらい?
> A. コンパイル済みにバイナリに直せるだろ。
こんなのあるかよ。
誰か試した人いる?
0426デフォルトの名無しさん
2007/05/07(月) 15:01:44YUTORIじゃなくてノーギャラの間違いだと思う。
まあ自分のところではFXファイルの数よりもテクスチャ枚数の方が桁で多いので、
先にテクスチャロードの方をチューンして満足しちゃうことの方が多いなぁ。
なのでFXファイルのロードとか気にしたことも無いよ。
0427デフォルトの名無しさん
2007/05/07(月) 15:18:48俺は424じゃないけど、テキストファイルだから遅いんじゃないかと気にしてる人に対して、
fxc.exeによるエフェクトのバイナリ化を勧めるのは不適切な回答ではないと思うよ。
それに>>423は全部質問的な口調だから最後の一文だけが質問ってわけじゃないだろ?
コンパイル済みでもD3DXの関数でテキストと同じようにロードできるし、速いし、隠蔽できるし。
特別トリッキーなことをしたいとかじゃない限り事前にコンパイルしない理由はないと思う。
0428デフォルトの名無しさん
2007/05/07(月) 15:19:52C++のコードをコンパイルする段階で組み込まれるようにしている。
0429デフォルトの名無しさん
2007/05/07(月) 15:22:26俺もそうしてる。
0430デフォルトの名無しさん
2007/05/07(月) 15:46:32DirectXでプログラムを組もうと思い、SDKをインストールしようとしたのですが
どのバージョンを入れるのが一般的には良いのでしょうか?
今公式で落とせるのは9.0のようなのですが
XPに標準で入っている8.1のSDKで組むほうが良さそうな気がしてきて
どうしようか悩んでいます。
というのも、DX9だと、同じ9.0cでもdllが足りなくて起動できなくなるというような話も
耳にしたことがあり、DX8.1のほうがいいのかなと思っております。
そこで、経験者の方で、経験上こっちのほうが良いという意見があったら
簡単な理由もつけて教えていただけけないでしょうか?
よろしくおねがい致します。
0431デフォルトの名無しさん
2007/05/07(月) 16:18:491. ポリゴンを使って、それを3D空間の正面に張って2Dに見せかける方法
2. スプライトですべて描画を行う方法
の2種類に分かれているのがわかりました。
この場合、どちらがどのようなメリットがあるのでしょうか。
両方とも同じだと考えて良いのでしょうか?
↑の方法について、素人考えで思う点がいくつかありまして
1の場合
・仮に2D平面のままX,Y軸回転を使いたくなったとき等に便利?
(例えば、カードをひっくり返すときの回転など)
・カメラの位置などをよほど厳密に合わせないと、タクスチャがにじんだりする?
(3Dと違って2Dの場合は1ドットのズレでも目立つような気がします)
2の場合
・800×600の背景画像などをスプライトにする例はサンプルでも見たことがない
(あまり大きい画像をスプライトにすると問題があるかもと思ってしまう)
・画像の描画座標が元々2D平面のため、座標ズレ、にじみ等が起こりにくい?
・ポイントスプライトやX軸orY軸回転など、様々なエフェクトが使いにくそう
(派手なエフェクトなどは無理そう?)
というような点が考え付くのですが、これらは間違った認識でしょうか?
0432デフォルトの名無しさん
2007/05/07(月) 16:49:11Direct3D8は間に合わせで作った出来の悪い粗悪品だから
仕様上の問題点も多いので、素直に9を使った方がいいよ。
DLLが足りない問題等は、ランタイムのウェブインストーラへの
リンクを書いておけばいいかと。
0433デフォルトの名無しさん
2007/05/07(月) 16:58:52あと、ユーザーは取説読まないので、起動時にDLLチェックして
無ければウェブインストーラのページに飛ばしてあげるとなお良いかな。
0434デフォルトの名無しさん
2007/05/07(月) 17:47:05お前はSP2が入っていない、MSですらサポートを打ち切った環境をターゲットにするつもりなのか?
0435デフォルトの名無しさん
2007/05/07(月) 17:48:00DirectXにはスプライト機能など存在しない。
0436デフォルトの名無しさん
2007/05/07(月) 18:35:48マジですか…
ID3DXSpriteと言うのを検索でいくつか
見つけたのであると思ってたのですが
これは違うのですか?
0437デフォルトの名無しさん
2007/05/07(月) 18:37:340438デフォルトの名無しさん
2007/05/07(月) 18:46:29スプライトはmicrosoftが作ったライブラリの機能であり
単にポリゴンを使った2D描画を簡単に扱えるだけで
中でやってることは全く同じである
むしろその分やれることが少なく、自由度は低い
であってますでしょうか?
だいたい431の内容の後半は当たっていると考えてよいですか?
0439デフォルトの名無しさん
2007/05/07(月) 19:37:00>>428
カスタムコンパイルって、VisualStudioのカスタムビルドのことね?
なるほど、その方がいいなぁ。
というかfxc.exeなんてのがあるって知りませんでした。
OpenGLから移ってきたばかりなもんで・・・。
0440デフォルトの名無しさん
2007/05/07(月) 20:43:44あれから調べていたら、9.0cで作ったプログラムを9.0cが入ってるマシンで
起動した場合でも、d3dx_**.dllが足りないというエラーが出ると聞いて
なんか紛らわしいなぁと思っていて、さらに深みにハマってたところです。
ただ、品質が悪いということなら、素直に9.0cにしておこうと思います。
回答ありがとうございます。
>>434
最近のゲームでも、8.1以上というゲームが多いため、
やはり8くらいからできるようにしたほうがいいのかな…と思っていました。
単に、昔から開発していたものだから8.1以上なだけかもしれませんね。
0441デフォルトの名無しさん
2007/05/07(月) 22:57:47俺もカスタムビルドにしてるよ。
>>428のヘッダ化というのがちょっと意味がわからないが。
エフェクトは便利だが、柔軟性がなく冗長なコードを書かされるのが
不満と言えば不満。
例えばテクニックの中でフロー制御出来て
ダイナミックにパスを組み立てて実行出来たら、もっと便利。
0442441
2007/05/07(月) 23:00:13なるほど、そっちの方が便利そうだなぁ。
0443デフォルトの名無しさん
2007/05/07(月) 23:27:10コンパイル済みのデータを使っているにもかかわらず、
どでかいシェーダコンパイラが一緒にexeに含まれること。
それほど複雑とは言えないシェーダの構文を変換するだけで500KB以上食うのはいくら何でもでかすぎ。
0444デフォルトの名無しさん
2007/05/07(月) 23:49:18それマジ?
俺のexe、半分以上がD3DXだったのか・・
ってd3dx9_33.dllてのあるし、実際のところどうだろうね?
何かわかる方法あるかな?
0445デフォルトの名無しさん
2007/05/07(月) 23:52:010446デフォルトの名無しさん
2007/05/07(月) 23:53:55面白いように実行ファイルのサイズが変わる。
0447デフォルトの名無しさん
2007/05/08(火) 00:00:04トランスフォーム済み頂点(TL頂点)使えばXYは画面のそれぞれの軸、Zが奥行きで指定できる。
SetFVFのヘルプ当たりを探っていたら〜RHWってのがあると思うから調べてね。
0448デフォルトの名無しさん
2007/05/08(火) 01:11:49ええと…トランスフォーム済み頂点を使えば
SpriteでもX軸回転やY軸回転ができるということでしょうか?
ちなみに、先ほどD3DXMatrixRotationZを用いてスプライトの回転ができたので
単純にD3DXMatrixRotationYを使ったところ、まともに回転しませんでした。
これからSetFVFについて調べて回転をしてみたいと思います。
0449デフォルトの名無しさん
2007/05/08(火) 06:49:17頂点座標を直接指定してDrawPrimitiveUPとかで描画。
回転なら行列をかけてもいいけど、sinやcosを使って計算しても簡単に出来る。
正方形なら画像の中心で横に(Z軸)回転する場合、v[0].x=sin( D3DXToRadian( 45 + Angle ) );とか。
0450デフォルトの名無しさん
2007/05/08(火) 22:23:35一通り勉強して理解しました。
スプライトでやろうが、rhwでやろうが、
はなっから2次元前提なので、Z軸回転しかできないってことですね。
では、スプライトはrhwでの描画を行うライブラリという概念でよいのでしょうか。
スプライトとrhwでの描画はまったく同じものであり、
3次元空間に描画を行わない限り過剰なエフェクトはかけられない
という認識で正しいですか?
0451デフォルトの名無しさん
2007/05/08(火) 22:27:55四の五のいうのはそれからでいい。
0452デフォルトの名無しさん
2007/05/08(火) 22:32:570453デフォルトの名無しさん
2007/05/08(火) 22:34:30>スプライトでやろうが、rhwでやろうが、
>では、スプライトはrhwでの描画を行うライブラリという概念でよいのでしょうか。
>スプライトとrhwでの描画はまったく同じものであり、
rhw、rhwって、おまえRHW(Reciprocal Homogeneous W)の意味わかって言ってるのか?
自前でTL頂点に変換するときに3次元空間上で回転させるのも自由だろ。
0454デフォルトの名無しさん
2007/05/09(水) 00:55:15SDKのチュートリアルは、一応一通り読みました。
(日本語版なので、2004年版と少し古いですが)
>>453
もちろんワールドからビューポート変換まで、全て自前でやるならば可能だと思います。
ですが、3D空間上にポリゴンをおき、それを完全に2Dスクリーン上に
1ドットの狂いもなく配置するとなると、非常に難しそうなイメージがあり
単にスプライトのように張っただけでもテクスチャがぼやけたりしそうだなと…
本格的に3Dをやるのではなく、あくまで2Dの補助として使いたい場合に
XYZRHWを用いて、なんとかごまかすなどの方法がないかと思ったのです。
伝わりにくかったかもしれませんが、rhwというのは
「D3DFVF_XYZRHW(スクリーン上の頂点座標)を用いて処理を行う場合」
という意味で使ったつもりです。
>>452
3Dの概念をうまく理解できないオールドタイプで申し訳ありません。
0455デフォルトの名無しさん
2007/05/09(水) 07:52:38XYZRHWはZ値(奥行き)がどうであれスクリーン座標の位置は変わらないから、UV値を間違えない限りぼやけることはない。
1ドットの線も綺麗に描画されるし。
>本格的に3Dをやるのではなく、あくまで2Dの補助として使いたい場合に
>XYZRHWを用いて、なんとかごまかすなどの方法がないかと思ったのです。
誤魔化すどころかこっちが主流じゃね?
ちなみに机の上に紙を置いた状態でZ軸回転は頭の中で理解出来ているよね。
これをノートのページをめくる様な見た目がX軸やY軸回転。
現実世界は3D、机の真上からノートを見たら2Dに見えるだけで(ry
0456デフォルトの名無しさん
2007/05/09(水) 08:18:24読んだだけでは理解できないんだから、
怠惰で手抜きせずにきちんと自分でコードを入力して、動かすところまでやれ。
0457デフォルトの名無しさん
2007/05/09(水) 10:37:18Microsoftのダウンロードセンターにももう無いみたいだし、ぐぐって見てもruntimeはあったんですがSDKはさすがに見つけられずで、あとは古い本に付属してるのを探すくらいしかないのかなあと思ってるんですが。
0458デフォルトの名無しさん
2007/05/09(水) 10:42:320459デフォルトの名無しさん
2007/05/09(水) 11:10:400460デフォルトの名無しさん
2007/05/09(水) 12:48:31通常通りだと何も描画されないはずなんですが、
全部描画されるんですけど仕様ですか?
素材をいじる以外で回避方法はありますか?
0461デフォルトの名無しさん
2007/05/09(水) 13:26:26説明するのが面倒なら他人を頼るな。
0462460
2007/05/09(水) 15:34:17bmpは、32bitのbmpです。
http://www.uploda.org/uporg803343.zip.html
pass: test
左から順に
・アルファが全部00のbmp
・左から右に00→FFなアルファのbmp
・全部FFのbmp
を表示しています
一番左が全部アルファ0なので非表示になると思うのですが全部表示されるんです。
真ん中は、綺麗に半透明にグラデーションがかかっています。
右は、普通に表示されています。
で、一番左の原因を知りたいのです。
動作環境は XPで
ボードは、GeForceFX5200と6600、両方とも同じ結果になりました。
VC++2003で
DirectXSDKは、October 2006だと思います。
他にも足りない情報があったら言ってください。
よろしくおねがいします。
0463460
2007/05/09(水) 15:38:33D3DXSpriteでも、同様の現象が出ます。
0464デフォルトの名無しさん
2007/05/09(水) 18:36:340465460
2007/05/09(水) 18:45:48修正しました。
http://www.uploda.org/uporg803484.zip.html
pass: test
やはり、左右ともベタ表示されます。
0466デフォルトの名無しさん
2007/05/09(水) 18:56:070467460
2007/05/09(水) 19:01:17textureをLockして、全部のアルファを00にしても同様の現象が起こるのです。
0468460
2007/05/09(水) 19:07:100469デフォルトの名無しさん
2007/05/09(水) 19:19:01D3DXCreateTextureFromFile は 32bpp の BMP を処理する際に、
ヒューリスティックな処理をおこなってα値の有無を決定している。
んでオールゼロだとただの(α無しの)BMPと判定される。
PNGを用いること。
とかそれらしいことを書こうと思ったのに
>textureをLockして、全部のアルファを00にしても同様の現象が起こるのです。
かw
0470デフォルトの名無しさん
2007/05/09(水) 21:27:44フォーマットにD3DFMT_X8R8G8B8が選択されてる悪寒
0471デフォルトの名無しさん
2007/05/09(水) 22:06:34469じゃないけどちょっとソース弄って試してみた。
GetLevelDesc で調べたら、案の定 test1.bmp だけ X8R8G8B8 になってるね。
D3DXGetImageInfoFromFile でも同様にフォーマットが X8R8G8B8 だと判断される。
で、試しに D3DXCreateTextureFromFileEx で強制的に A8R8G8B8 にしてみたら、
ファイルのアルファ値が無視されて全部FFになっちゃった(まあ当然だけど)。
もちろん、さらにロックして全部00に書き換えればちゃんと透明になってくれた。
0472460
2007/05/10(木) 00:15:33>textureをLockして、全部のアルファを00にしても同様の現象が起こるのです。
と言いましたが
作成後のLockじゃなくCreate〜FromMemoryに入れる数値をいじってたみたいでした。
すいません
現象の理由は解決しました。(Alphaが00の時、マスク無し形式とみなされる)
ありがとうございました。
0473デフォルトの名無しさん
2007/05/10(木) 21:09:26Loading effect Resource #103
というエラーが出て、見ることが出来なくなりました。
きっかけとして思い当たるのが、DirectXsdkを入れた事ぐらいなのですが、
解決方法の分かる方はいませんでしょうか?
0474デフォルトの名無しさん
2007/05/10(木) 21:25:410475デフォルトの名無しさん
2007/05/10(木) 23:09:17DirectX Viewerです。
Xファイルを上記の物で開くと、「問題が発生したため、DirectX Viewerを終了します」という
Windowsエラーメッセージ(?)を吐き出してきて、ViewerのログにLoading~というメッセージが表示されています。
0476デフォルトの名無しさん
2007/05/10(木) 23:13:14DirectX Viewerが内部で使うシェーダコンパイラが、Dec 2006 から
D3DX10版がデフォルトになって、そのせいでぐだぐだになってるわけね。
・他のビューアを使う
・Oct 2006 以前のSDKをインストール
・DxViewerのソースを修正してビルド
のどれかね。
0477デフォルトの名無しさん
2007/05/10(木) 23:14:16普段Xファイルを使わないのでいままで気づかなかったけど。
0478デフォルトの名無しさん
2007/05/10(木) 23:42:45他のビューア探してみましたがどうやら開けないっぽいorz
となると、ひとまずOct2006以前のSDK使用しか選択示は無いようで。
お早い回答、有難うございました。
0479デフォルトの名無しさん
2007/05/10(木) 23:57:30Dec 2006以降のD3DXではps_1_xのサポートを打ち切ったっというのが直接的な原因みたいだね。
DirectX Viewerのデフォルトエフェクトのピクセルシェーダは complie ps_1_1 になってるから
ID3DXEffectCompiler::CompileEffect によるコンパイルで失敗する。
0480603
2007/05/12(土) 19:14:10ちゃんと「完了」とでたんですが再起動してもインストール自体されてないっぽいんです
誰か教えてください、あとXPです
0481デフォルトの名無しさん
2007/05/12(土) 19:25:370482デフォルトの名無しさん
2007/05/12(土) 19:30:11インストールできていないと判断したんだ?
0483デフォルトの名無しさん
2007/05/12(土) 20:20:56ネットワークのとこにエラーがありました
デスクトップにアイコンがなかったのと
いつもなら新しくインストールしたらそう表示されるんですが
されなかったから勝手に判断したんですが
診断ツールのDirectXバージョンのところにDirectx9.0c
てあったからインストールされてたってことなんですかね?
ネットワークのエラーメッセージはdirectplay8○○Service Provider
が何かおかしいとのことです
0484デフォルトの名無しさん
2007/05/12(土) 20:23:07具体的に何のAPIを使ってエラーコードは何だったのかを書け。
0485デフォルトの名無しさん
2007/05/12(土) 21:32:29d i r e c t p l a y 8 と書いたんですけどカタカナじゃないと読めませんか?
>エラーコードは何だったのかを書け。
S e r v i c e P r o v i d e r と書いたん(ry
0486デフォルトの名無しさん
2007/05/12(土) 21:46:330487デフォルトの名無しさん
2007/05/12(土) 21:47:32要求しているのは具体的なAPIとそれを使った場合の戻り値。
頭が悪いにも程があるぞ。
0488デフォルトの名無しさん
2007/05/12(土) 21:52:06APIが特定出来た上で解決出来ないのならもう少し詳細を。
0489483
2007/05/12(土) 22:25:31すいませんAPIってなんのことかわかりません
どうやって確認するのか教えてください
エラーコードですがこれのこといってるのかわかりませんが
Directplay8 TCP/IP serviceprovider エラー
Directplay8 IPX serviceprovider エラー
Directplay8 modem serviceprovider エラー
Directplay8 serial serviceprovider エラー
エラーのついてる所を抜き出しました、違うとこいってたらすいません・・
あと485は俺じゃないです
0490デフォルトの名無しさん
2007/05/12(土) 22:34:240491デフォルトの名無しさん
2007/05/12(土) 22:35:40何故APIがわからないとか頓珍漢な発言が出てくるんだ?
0492デフォルトの名無しさん
2007/05/12(土) 23:12:43もし誰かが作ったアプリケーション(ゲームとか)を実行するときに出るなら、使っているPCが古すぎて対応していない可能性が一番高い。
0493デフォルトの名無しさん
2007/05/13(日) 00:16:30そもそもいきなり603って、こいつはどこから迷い込んだんだ?
0494483
2007/05/13(日) 00:35:46起動できなくてDirectxをインストールしたら動くようになるんじゃないかと
思ったんですがそれがうまくいかなくて気軽に書き込んだんですが
プログラマの方の板なんですね・・・だいぶスレ違いでした、すいません
あとそのネトゲはだいぶ昔のやつなんでPCは対応できるはずだと思います
0495デフォルトの名無しさん
2007/05/13(日) 00:39:149.0cが対応していない
0496デフォルトの名無しさん
2007/05/13(日) 00:43:48なんで板違いなのが分からないんだ?
ネットゲームなんて穴を掘って埋めるような作業を好んでやろうとするような奴だから、
脳味噌が腐っているんだろうけどな。
0498デフォルトの名無しさん
2007/05/13(日) 01:29:03どのサンプルでも以下のエラーがでます。
D3D10.hより
構文エラー:識別子'__out'
構文エラー:識別子'__in'
構文エラー:')'
コードは一切弄っていません。皆さんの環境でも同様のエラーはでますでしょうか?
解決方法を教えてください。よろしくお願いします。
0499デフォルトの名無しさん
2007/05/13(日) 04:15:41それHeader Annotationsのマクロなので、
Platform SDKとかWindows SDKの新しいの入れたらコンパイルできるようになると思う。
0500デフォルトの名無しさん
2007/05/14(月) 05:18:26D3D9を使ってサーフェイスのアルファブレンドをしようとしています。
まず最初に、次のようなことを試してみました。
1. OffscreenPlainのXRGBサーフェイスを作りCPUで描画。
2. OffscreenPlainのARGBサーフェイスをを作りCPUで描画。
3. ARGBサーフェイスをStretchRectでXRGBサーフェイスに転送。
てっきりこれでARGBサーフェイスのアルファ値で設定したようにXRGBサーフェイスにアルファブレンドしてくれるのかと思ったのですが駄目みたいです。
ただ単にあるサーフェイスを別のサーフェイスにアルファブレンドするには何が一番簡単な方法なんでしょうか?
一般的なドローソフトをD3D9に移植しており、特にテクスチャとかは使用せず、描画は全てCPUで行い、
表示する時にアルファブレンディングや拡大縮小が必要な時だけハードウェアを使いたいと考えています。
0501デフォルトの名無しさん
2007/05/14(月) 07:10:042D機能だけ使うなら拡大縮小はやってくれるかもしれんけどαブレンドはハード使えないことになる希ガス
描画はすべてCPUで行うって言ってるのに拡大縮小αブレンドだけハードっていうのがどういう状況かよくわからない
描画するのに拡大縮小とかαブレンドをする物体はなんかの状況に限られるってこと?
そんときだけテクスチャ使ってハードウェアの3D機能を使って描画するなら拡大縮小もαブレンドもできる。
ただ、それはD3D9サーフェイスじゃ出来ない上に3Dデバイスを初期化する必要がある。
GDI+使うのが一番いい気がするけどなぁ・・・
でも、やりたいことはそうじゃない感じ?
すまん、俺では何がやりたいのかよくわからない
0502デフォルトの名無しさん
2007/05/14(月) 08:22:22テクスチャから取得したサーフェイスにイメージを転送してからレンダリング。
0503デフォルトの名無しさん
2007/05/14(月) 10:03:19業務上の話なんで何がやりたいか詳しいことを書くのは勘弁してください。
現状だと、まずはD3D9デバイスを作り、そこからサーフェイスを作成して従来のコードを使い
CPUでサーフェイスに描画を行ってから、表示段階に拡大縮小とαブレンドをD3D9ハードを使いたいって感じです。
例えるとCPUでスプライトを書き、グラフィックチップで拡大縮小とαブレンドを行わせながら表示させていたようなソフトを
D3D9に移植し始めた第一段階みたいな感じと思っていただけるとイメージしやすいかもしれません。
GDI+だとハードを一切使ってくれないので1920x1080とかの解像度だと話になりませんでした。
0504デフォルトの名無しさん
2007/05/14(月) 10:08:44やはりStretchRectだと転送するだけで、転送時にα値を参照してαブレンディングをしてくれないという仕様なんでしょうか?
また、よく分からないのですが、SetRenderStateみたいなのってStretchRectには無関係でテクスチャだけなんでしょうか?
どうもどの関数がどの設定を使用しているとかさっぱり分からなくて。
用はあるサーフェイスに別のサーフェイスをαブレンディングしたいだけなんです。
テクスチャを使用しないとそういうことは無理なんでしょうか?
確かテクスチャサーフェイスってOffscreenPlainサーフェイスと違って色々解像度とか制限があった気がして、、、
ソフトの移植なんでそういった制限は現状だと回避が難しくて。
0505デフォルトの名無しさん
2007/05/14(月) 10:29:050506デフォルトの名無しさん
2007/05/14(月) 10:34:26とりあえずテクスチャ関係は一旦置いておきたいと思います。
StretchRectなんですが、α値の取り扱いってどう定義されているかご存知ありませんか?
0507デフォルトの名無しさん
2007/05/14(月) 11:06:44自己レスです。英語で検索してみたらほんの僅かにStretchRectに関して書いているところがありました。
どうやらStretchRectはただ単に元のα値を先の対応するピクセルにコピーするだけみたいですね。
拡大縮小つきのα値を含めたコピーでしかなく、ブレンディング機能はないといった感じに書かれていました。
これって正しいのでしょうか?
0508デフォルトの名無しさん
2007/05/14(月) 11:40:30ブレンディングは適用されないと思う。
ドローソフトってのがベクタ系ならともかくラスタ系だと、Direct3Dですぴーどあっぷ♪
てのは難しいと思うよ。そゆのにDirect3Dは向いてないもん。道具選びから間違ってる感じ。
やりたいことがよくわからないから、動的テクスチャを次善の策としてテキトーに提案してみる。
0509デフォルトの名無しさん
2007/05/14(月) 12:36:39だから他に方法がないんだよ。
手を抜こうとか怠惰な考えは捨てて、とっとと正攻法でやれ。
0510デフォルトの名無しさん
2007/05/14(月) 12:57:043Dの世界には疎いのですが、StretchRectはBegin/EndScene外で使用するようになっていることから
StretchRect自身は3Dエンジンとは別の、ドライバレベルだとBitBltの類にマップされていると思うのですが、
αブレンディングそのものはレンダリングステージでしか定義していないために、
StretchRectではαブレンディングが使用できないということなのかもしれませんね。
簡単に使用できるように設計できそうなのにちょっともったいないですね。
>>509
いや、正攻法どころか3Dに関してはさっぱりワケワカメでして。。。
他に方法がないという言い方からすると、やはりαブレンディングを行うためにはレンダリングステージを通る必要ありで、
そうするとテクスチャが必要になり、かつ、座標定義のためにバーテックスを作成する必要があるとか、、、
うわ、かなり面倒なんですかね?
αブレンディングをしたいかどうかだけで一気に難しくなりそうなんですね、D3D9って。。。
上位レイヤーの描画デバイスがD3D9を使用するように設計されているので、
下位レベルの2DエンジンをD3D9に移植しようとしてStretchRectだけで行けるかと思ったらαブレンディングのところで困ってしまった。
0511デフォルトの名無しさん
2007/05/14(月) 13:10:15HWサポートされないというのがDirectX の常識だったと思うけど・・・
0512デフォルトの名無しさん
2007/05/14(月) 13:11:20怠け者にも程があるぞ。
0513デフォルトの名無しさん
2007/05/14(月) 14:33:53遅レス申し訳ないです。情報ありがとうございました。
0514デフォルトの名無しさん
2007/05/14(月) 15:04:18DirectDrawも経験が無いんで知りませんでした。てか、一番最初に書いたとおりDirectXその物が初めてなもんで。
>>512
やっぱそれ以外実装方法が無いんですね?
とっととやる時間があれば良いのですが、本当にSDK読んでる暇とか無いんで、とりあえず没にしました。
当面は全部CPUでやることにしました。
0515デフォルトの名無しさん
2007/05/14(月) 16:48:52IDirect3DDevice9::Reset
で、0x8876086c とエラーが戻ってくるのです。 テクスチャー読み込んでペタペタ貼ってるだけなんですが。
どのあたりを調べれば原因がわかるでしょうか?
0516デフォルトの名無しさん
2007/05/14(月) 17:21:08まずはそのエラーコードが何を意味するのか調べようとするのが普通の人
0517デフォルトの名無しさん
2007/05/14(月) 18:34:11HRESULT: 0x8876086c (2289436780)
Name: D3DERR_INVALIDCALL
Description: Invalid call
Severity code: Failed
Facility Code: FACILITY_D3D (2166)
Error Code: 0x086c (2156)
ここまでは調べたものの、この先、どう調べていいか悩んでいたりします
0518デフォルトの名無しさん
2007/05/14(月) 19:41:33>メソッドの呼び出しが無効です。たとえば、メソッドのパラメータが有効なポインタではありません。
0519デフォルトの名無しさん
2007/05/14(月) 20:18:32Direct3Dの場合、エラーコードとだけ睨めっこしてもほとんど解決しないよ。
SDKの「DirectX Control Panel」でD3D RuntimeをDebugにして
VSとかのデバッグウィンドウを注視しなはれ。
0520デフォルトの名無しさん
2007/05/14(月) 23:33:200521デフォルトの名無しさん
2007/05/14(月) 23:58:01サイト管理人に連絡しなされ
0522デフォルトの名無しさん
2007/05/15(火) 16:23:14レスありがとです。頑張ってみます。
0523デフォルトの名無しさん
2007/05/15(火) 20:58:20D3D8の頃にあったD3DXCreateTextureFromFileEx
のようにカラーキーを設定して抜き色にする便利な関数はないんでしょうか?
0524デフォルトの名無しさん
2007/05/15(火) 22:15:170525523
2007/05/15(火) 23:06:49D3Dでは実装されてませんでしたが
D3DXの方で実装されていてテクスチャをロードする際に指定できました。
アルファ付のフォーマットでロードしようとすると自動でアルファ値を0にするだけでしたが。
パレットにも対応していたので個人的に好きだったんですが・・・
ないのであれば似たようなの作ります。
0526デフォルトの名無しさん
2007/05/16(水) 00:07:27普通にα掛けたほうが楽じゃね?
0527デフォルトの名無しさん
2007/05/16(水) 00:13:210528523
2007/05/16(水) 01:00:50>>527
PNGの存在をすっかり忘れてました。
使うツールも対応しているみたいなのでそれでいこうと思います。
お騒がせしました。
0529デフォルトの名無しさん
2007/05/16(水) 01:21:050530デフォルトの名無しさん
2007/05/16(水) 01:32:44俺はお前の存在を忘れることにするよ
0531515
2007/05/16(水) 12:18:09修正できました。 助言くれた方、ありがとうございました。
0532デフォルトの名無しさん
2007/05/17(木) 03:25:16hr = m_pDP->Host( 〜
で、ホストを立てるとAccess Violationで落ちました。
ソースの順番としては
1. CoInitializeでCOMの初期化
2. CoCreateInstanceでDirectPlay8Peerオブジェクトを作成
3. m_pDP->Initializeで、DirectPlay自体の初期化
4. CoCreateInstanceで、DirectPlay8Addressオブジェクトを作成
5. m_pDeviceAddress->SetSPで、サービスプロバイダの設定(TCP/IP)
6. m_pDeviceAddress->AddComponentで、ポートの設定
7. m_pDP->Hostでホストを立てる
ここで、Hostメソッドを実行後、大量のDLLを読んだあとに例外で飛びます。
0533デフォルトの名無しさん
2007/05/17(木) 03:26:15そのログをここに書き出します。
'C:\WINDOWS\system32\mswsock.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\hnetcfg.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\wshtcpip.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\dnsapi.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\winrnr.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\wldap32.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\rasadhlp.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\dpnhpast.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\iphlpapi.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\dpnhupnp.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\rasapi32.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\rasman.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\netapi32.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\tapi32.dll' を読み込みました。シンボルが読み込まれていません。
'C:\WINDOWS\system32\rtutils.dll' を読み込みました。シンボルが読み込まれていません。
0x7c941010 で初回の例外が発生しました: 0xC0000005: 場所 0xffff008f を読み込み中にアクセス違反が発生しました。
0x7c941010 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xffff008f を読み込み中にアクセス違反が発生しました。
通信関連のDLLばかりなので、通信でコケているらしいことはわかるのですが
具体的に何が悪かったのがさっぱりです。
どなたか、わかる方がいらっしゃいましたらご指導よろしくお願いいたします。
細かいパラメータが必要だということならば、全ソースをまとめて書き込みます。
0534デフォルトの名無しさん
2007/05/17(木) 04:08:101.MSのHPにDX9CとDX End-User Runtimes の2つのバージョンがあるのですが
何が違うのですか?
2.DX10は何処からダウンロードするのですか?MSのホームページ見ましたが
見あたらないので。
0535デフォルトの名無しさん
2007/05/17(木) 07:48:591. SDKかランタイムかの違いでは?
2. Vistaに最初から入ってる
0536デフォルトの名無しさん
2007/05/17(木) 08:21:450537デフォルトの名無しさん
2007/05/17(木) 09:45:46アイドル時にDirectXを使って自前で描画する場合に
CPU 負荷を下げる時には Sleep(0); を呼ぶのが普通。
0538デフォルトの名無しさん
2007/05/17(木) 14:42:53基本的にあまり描画しなくていいんだけど何かあった場合には即描画したい
というような場合は、適当にタイムアウトを指定したWaitForSingleObject とかで待つ。
別スレッドで SetEvent すればタイムアウトを待たずに即帰ってくるから。
0539デフォルトの名無しさん
2007/05/19(土) 15:09:13で、テキストボックスを作ったはいいのですが
DirectXを使っていると塗りつぶしなどの描画で上書きされてしまい、
まともに表示することができません。
textboxが存在する部分だけをα値ゼロで塗りつぶしたり、
pDevice->Clearでクリアするときにその部分だけを塗りつぶさないように
してもダメでした。
何か解決方法はありますでしょうか?
それとも、DIRECTXを使っている場合にはこういったBOXは使えないのでしょうか
0540デフォルトの名無しさん
2007/05/19(土) 15:58:38>pDevice->Clearでクリアするときにその部分だけを塗りつぶさないように
サーフェイスに対する操作をしても、そのサーフェイスをスクリーンに描いたら消えるのは当たり前だろ。
Presentするときに、該当部分を回避して転送すれば塗りつぶされない。
0541デフォルトの名無しさん
2007/05/19(土) 19:18:15普通作るときはダイレクトXやオープンGLを使うのか、何も使わないで
作るのか、教えてください
0542デフォルトの名無しさん
2007/05/19(土) 19:21:090543デフォルトの名無しさん
2007/05/19(土) 19:23:000544デフォルトの名無しさん
2007/05/19(土) 19:26:31GPU を直接自分で操作するというのならまた話は別だが・・・。
0545デフォルトの名無しさん
2007/05/19(土) 19:28:44ダイレクトXかオープンGLにしようと結論付けられました
有難うございました
0546デフォルトの名無しさん
2007/05/19(土) 20:00:08こんなのありえんよ。
0547デフォルトの名無しさん
2007/05/19(土) 20:17:230548デフォルトの名無しさん
2007/05/19(土) 20:17:57【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
0549デフォルトの名無しさん
2007/05/19(土) 21:57:11回答ありがとうございました。
範囲を絞る方向で色々やってみたのですが、どうにも綺麗にできなかったので
色々調べてみた結果、DXUTguiというものがあることを知りました。
DXUTの中でこの部分だけほしかったので、これだけ抜き出したところ
うまくいかず、次々とインクルードしていたら、収集がつかなくなってしまいました…
このライブラリは、もともとEmptyProjectを元にして作るために用意されたもので
あとから、この部分だけ付け加えるということはできないのでしょうか?
0550デフォルトの名無しさん
2007/05/19(土) 22:04:24「手に武器を持たせたい(ゲーム中に持ち替えたい)」のですが、
【手】の座標の取得の方法がわかりません。
頂点バッファにアクセスして、目的の頂点が得られるまで全頂点数で試さなきゃならないのでしょうか?
3000ポリゴンのモデルなので、気が遠くなりそうです・・・ orz
0551デフォルトの名無しさん
2007/05/19(土) 22:18:37ノード名とか取得できねーの?
各関節ごと名前あんだろ?
つか、Xファイルのフォーマットみてみろよ
0552デフォルトの名無しさん
2007/05/19(土) 22:18:51モデリングの段階で手の部分に接合用のダミーフレームを入れておけ。
0553デフォルトの名無しさん
2007/05/19(土) 22:25:54手に負えないのなら諦めろ。
0554デフォルトの名無しさん
2007/05/19(土) 22:31:55プログラムすればいいのですか?
0555デフォルトの名無しさん
2007/05/19(土) 22:33:260556550
2007/05/20(日) 00:09:55回答ありがとうございました。
Xファイルのフォーマットを見直し、Meshを分ければ取得が容易になるということに気づいたので、
手の位置に1枚の極小のポリゴンを設置し、それを取得することでできました!
これで先に進めます。ありがとうございましとぅあ!
0557デフォルトの名無しさん
2007/05/20(日) 00:54:410558デフォルトの名無しさん
2007/05/20(日) 01:07:44俺は手首ごととっかえてるから空フレームじゃやりずらいな
0559デフォルトの名無しさん
2007/05/20(日) 01:12:560560デフォルトの名無しさん
2007/05/20(日) 03:56:32理解はしたのですが、DXUTを丸ごと使わないといけないようなので
既にDirectXの簡易的な枠組みを作ってしまった身としては
また1から作り直すのは厳しいです…
ですけど、これを使わないとIMEを用いたEditBoxなんか
そう簡単には使えませんよね…とりあえずもう少しがんばって見ます。
回答ありがとうございました。
0561560
2007/05/20(日) 04:07:36単体でも使わせてくれればいいのに、と思ってしまいますね…
全てコールバックで処理しろっていわれると
フレームレート固定のゲームでは非常に厄介なわけで…
0562デフォルトの名無しさん
2007/05/20(日) 06:38:060563デフォルトの名無しさん
2007/05/20(日) 10:01:06何に使うんですか?
0564デフォルトの名無しさん
2007/05/20(日) 10:19:560565デフォルトの名無しさん
2007/05/20(日) 10:20:20お前に説明する必要とかあると思うか?
公式知らないなら口閉じてろ
誰か知ってる人いますか教えてください。
0566デフォルトの名無しさん
2007/05/20(日) 10:28:25知っているがお前の態度が気に入らない
0567デフォルトの名無しさん
2007/05/20(日) 10:38:560568デフォルトの名無しさん
2007/05/20(日) 10:52:58そんだけキーワードがわかってりゃ日本語でも英語でもキーワードで検索して少しは調べてきたんでしょうね?w
0569デフォルトの名無しさん
2007/05/20(日) 13:55:49おれはなんかサンプルがビルドできない。DirectX SDKもApril 2007入れてVisual Studioでパスも設定したのだが、
error C2660: 'D3DX10CreateEffectFromMemory' : 関数に 12 個の引数を指定できません。
error C2660: 'D3DX10CreateTextureFromResourceW' : 関数に 6 個の引数を指定できません。
.......
とか言われて怒られる。早くも仕様が変わったのか??
0570デフォルトの名無しさん
2007/05/20(日) 14:03:44Febuary 2007でないとだめだったみたい。
あと、警告をエラーとして扱う、というのもオフにする必要がある。
0571デフォルトの名無しさん
2007/05/20(日) 14:54:55について教えてください
0572デフォルトの名無しさん
2007/05/20(日) 15:07:45あるオブジェクトの先端に別のオブジェクトをくっつけて表示、というのをやりたいのですが、
現状取得しているのは、親オブジェクトのくっつける先の場所のローカルMatrixと、親オブジェクトのワールドMatrixのみ、というものです。
ここから、[取得したローカルMatrixをワールドMatrixに変換する]という作業が必要なのはわかるのですが、その手順がわかりません。
どなたかご教授お願いします!
0573572
2007/05/20(日) 15:25:44ローカルMatrix * ワールドMatrix で、できました・・・。
試してから書くべきでした。お騒がせしました。
0574562
2007/05/20(日) 15:26:062次元内での回転はできたのですが、3次元での回転が分かりません。
0575デフォルトの名無しさん
2007/05/20(日) 15:57:520576デフォルトの名無しさん
2007/05/20(日) 16:02:37仮に640×480の背景画像を用意する際には
テクスチャのサイズは縦横とも2の累乗でないといけないので
そのテクスチャサイズは1024×512となりますよね。
これって、画像を多数使う際には無駄以外の何者でもない気がするのですけども
どうにもならないんでしょうか?
D3DXCreateTextureFromFileの代わりにD3DXLoadSurfaceFromFileを使って
サーフェスとして画像を取れば無駄にならないし、
2Dゲームなら全く問題ないような気がするんですけども
DirectX系入門サイトでどこも扱ってないところを見ると
あまり良い方法では無いのでしょうか…?
もし問題点があれば、教えてくださればありがたいです。
0577デフォルトの名無しさん
2007/05/20(日) 16:09:59行列はかけ算の順序によって違うからダメ
0578デフォルトの名無しさん
2007/05/20(日) 16:13:10物理詳しくないので済みません
0579デフォルトの名無しさん
2007/05/20(日) 16:15:22ベクトル:1回のテンソル
単にテンソルというと、2回のテンソルを指す場合が多い。これは行列をつかう。
0580デフォルトの名無しさん
2007/05/20(日) 16:17:173階のテンソルはなにになりますか?
0581デフォルトの名無しさん
2007/05/20(日) 16:24:57グダグダ余計なことを考える方がよっぽど無駄。
どうでも良いことを考える暇があったらとっととコードを書け。
0582デフォルトの名無しさん
2007/05/20(日) 16:39:56無駄といっても、VRAMのサイズだろ?
このリソースは元々ゲームぐらいにしか使われないし
気にしないで使っていいんじゃないの。
また、サーフェイスって透過処理付のBLT出来たっけ?
それが出来ん限りテクスチャの代わりには使えんな。
0583デフォルトの名無しさん
2007/05/20(日) 16:40:49一応実装しては見たんですが、何も問題が無いので怖いんですよ。
背景の1枚絵として表示する分には何も問題がないというのなら
どう見てもSurfaceのほうがメモリ的に有利じゃないですか。
なのに、どこのサイトでもほとんど取り上げられてないようなので…
0584デフォルトの名無しさん
2007/05/20(日) 16:45:54そうですね。メモリ的にです。
ただ、640×480の画像を仮に20枚用意すると24Mじゃないですか。
これを1024×512で取ってしまうと41Mになるわけで、
無駄に必要スペックをあげるのもどうなのかなぁと疑問になったんです。
個人的には、回転や透過の必要なキャラチップなどはTexture、
回転などを一切せずに1枚絵として、せいぜい横に流すくらいの画像は
全てSurfaceで取ると(管理は面倒ですが)メモリの無駄はなくなると思いまして。
ただ、Surfaceなんて過去の遺物のように語られてるようなので
もしかしたら、例えばSurfaceとTextureをごっちゃで使うと速度が遅くなるとか
あくまで例ですけど、表に出ないような問題があるかもと心配になってしまったんです
0585デフォルトの名無しさん
2007/05/20(日) 16:53:41多分言葉が通じてないよ。
IDirect3DTexture9ってのは、MIPMAP用にIDirect3DSurface9を複数枚束ねたもの。
実際IDirect3DTexture9::GetSurfaceLevelで各Surfaceを取得できる。
そこにきておまいさんが一人で“Surface VS Texture”と盛り上がっていて、
みんなポカーンという状況。
0586デフォルトの名無しさん
2007/05/20(日) 16:57:180587デフォルトの名無しさん
2007/05/20(日) 17:08:05要するに
所詮2D描画しかしないのだったらMIPMAPも何も関係ないし
TextureでもSurfaceでもどうにでもなる。
ただし、初心者だったらもっと無駄な部分なんか腐るほどあるんだから
そんなことは気にしないで全部Textureでやっちまえ。
って感じですかね。
0588デフォルトの名無しさん
2007/05/20(日) 17:13:36冷蔵庫の中に卵を入れたら他のものは入らないのか。
0589デフォルトの名無しさん
2007/05/20(日) 17:16:020590デフォルトの名無しさん
2007/05/20(日) 17:17:06背景をおいたら、余った部分に他のパーツを詰めれば
管理は面倒でも無駄がなくなるってことですね。
なんか頭がガチガチになってたせいか、全く考え付かなかった…
0591デフォルトの名無しさん
2007/05/20(日) 17:20:16普通の2Dアクションやシューティングなら、1フレームに参照される2Dデータはせいぜい数Mバイトだろうから
キャッシュすればいいのに。
0592デフォルトの名無しさん
2007/05/20(日) 17:41:24季節物の服を押し入れの中にしまって手近な収納スペースを増やせ。
馬鹿みたいに詰め込もうとするのは、整理出来ない人間の典型例。
いる物といらない物を分けて考えることが出来ない。
0593デフォルトの名無しさん
2007/05/20(日) 17:55:18無駄に広くても、入れすぎて満杯に近くても、
引き出しに入りきらなくならないかぎり、どちらでも同じなんだよな
0594デフォルトの名無しさん
2007/05/20(日) 18:19:59ぎゅうぎゅう詰めになった収納へ出し入れするのと、
適度に空間の空いた収納へ出し入れするのは効率が全然違う。
0595デフォルトの名無しさん
2007/05/20(日) 18:33:22おまえA型だろ
0596デフォルトの名無しさん
2007/05/20(日) 18:46:220597デフォルトの名無しさん
2007/05/20(日) 19:12:250598デフォルトの名無しさん
2007/05/20(日) 19:14:59白熱して、流血事件にまで発展したときのために献血できる奴を確認しておくと吉
0599デフォルトの名無しさん
2007/05/20(日) 20:03:42例えば、肘のボーンの始点位置がずれていた場合にユーザーがアプリ上で修正できる
ようにしたいのです。
しかしながら、フレームのマトリクスやXFILEのボーンのマトリクスの値を変更
するとメッシュの形状まで崩れてしまいます。
分かりやすく言えばメッシュの形を変えずにボーンの形だけを変えたいのですが
どうすればよいのでしょうか・・・。
0600デフォルトの名無しさん
2007/05/20(日) 20:13:38インバースキネマティクスで頑張らないと・・・
0601599
2007/05/20(日) 20:26:34ぬぉぉお!拙者の力不足ゆえIKをどうすればいいか分かりません。
もうちょっとヒントを・・・!
上でも書きましたがXFILE上のボーンのマトリクスの値を手書きで書き換えても
メッシュが崩れてしまうことから、XFILEから読み込んだデータそのままでは
メッシュの形を変えずにボーンの形を変えるのは難しいのかも・・・。
(メッシュデータが各ボーンマトリクスの値と結びついて保存されてるため、
ボーン形状のみを変更する術が見つからない)
0602599
2007/05/20(日) 20:28:47ぬぉぉお!拙者の力不足ゆえIKをどうすればいいか分かりません。
もうちょっとヒントを・・・!
上でも書きましたがXFILE上のボーンのマトリクスの値を手書きで書き換えても
メッシュが崩れてしまうことから、XFILEから読み込んだデータそのままでは
メッシュの形を変えずにボーンの形を変えるのは難しいのかも・・・。
(メッシュデータが各ボーンマトリクスの値と結びついて保存されてるため、
ボーン形状のみを変更する術が見つからない)
0603デフォルトの名無しさん
2007/05/20(日) 20:31:040604デフォルトの名無しさん
2007/05/20(日) 20:35:15いや、書いてから気がついたけどなんか違うことやってる気がする>>600は忘れてくれw
0605デフォルトの名無しさん
2007/05/20(日) 20:47:11モデリングソフト側で直せよ。
0606デフォルトの名無しさん
2007/05/20(日) 20:56:14ついでにアニメーションデータも全部
0607デフォルトの名無しさん
2007/05/20(日) 20:59:08ぬぉぉお!拙者の力不足ゆえIKをどうすればいいか分かりません。
もうちょっとヒントを・・・!
上でも書きましたがXFILE上のボーンのマトリクスの値を手書きで書き換えても
メッシュが崩れてしまうことから、XFILEから読み込んだデータそのままでは
メッシュの形を変えずにボーンの形を変えるのは難しいのかも・・・。
(メッシュデータが各ボーンマトリクスの値と結びついて保存されてるため、
ボーン形状のみを変更する術が見つからない)
0608デフォルトの名無しさん
2007/05/20(日) 21:00:57ぬぉぉお!
(メッシュデータが各ボーンマトリクスの値と結びついて保存されてるため、
ボーン形状のみを変更する術が見つからない)
0609デフォルトの名無しさん
2007/05/20(日) 21:01:02ボーンの位置を変更するのがどれだけ大変な作業か分かりそうなものだが。
3Dプログラムをやるなら、最低限30日体験版でもいいからMAXあたりをいじっておけ。
0610デフォルトの名無しさん
2007/05/20(日) 21:45:400611デフォルトの名無しさん
2007/05/21(月) 09:39:26ようは2Dしか必要ない人がDX使おうとすると3Dに最適化され過ぎていて使いづらいと思うんだと思う。
0612デフォルトの名無しさん
2007/05/21(月) 10:29:21自分の言いたいことを無理矢理発言するために、自分勝手にありもしない状況設定をするな。
0613デフォルトの名無しさん
2007/05/21(月) 10:55:27俺たちみんなダイレクトエックサーだお!
0614599
2007/05/21(月) 11:15:52激しく連投になってしまいましたスレ汚し申し訳ございません。
>>ボーンの位置を変更するのがどれだけ大変な作業か分かりそうなものだが。
そのようです、どうやら考えていたほど簡単にはいかないようです。
とりあえず、ボーン変形後のメッシュをロックして無理やりボーン変形前の
メッシュの形状に戻すやり方を試してみようと思います。
最終的には3Dモデラー的な物を作りたいのでボーンのウェイト値も操作したいのですが
ボーンのウェイト値を操作する関数等ってありますでしょうか?
SetBoneInfluence辺りがそうなのかと思って弄くっていますが、試しに4番目の引数の
weightsの値を全部0にして設定してもメッシュのアニメーションは変わらず・・。
0615デフォルトの名無しさん
2007/05/21(月) 11:29:19関数がどうこう言っている時点で問題外だが。
0616599
2007/05/21(月) 11:44:00ぬぁぁあ!一応3Dモデラーとしてお仕事してました!
使用ソフトはメタセコ、LightWave、MotionBuilder、MAXって感じです。
3Dプログラム開発の経験はあるのですが、ボーンウェイトや頂点を直接いじる処理は
なかなかサンプルや資料が見つからんのですよ・・・。
0617デフォルトの名無しさん
2007/05/21(月) 13:05:440618デフォルトの名無しさん
2007/05/21(月) 14:06:550619599
2007/05/21(月) 14:24:45それがベストですよね・・・。
とはいえ時間的労力的にもD3DXの機能を使うのが現実的な選択肢なので出来うる限り
D3DXを利用したいのです。
ボーンの位置だけを変える処理は一度ボーンを操作してから、ボーンの移動量
から変形前のメッシュを逆算する事で実現出来ました。
こうなってくるとボーンウェイトの値を操作する処理も実装したいのですが
ネットに資料等が無く、具体的な術が見つかりません。
どなたかボーンウェイトの値を操作する関数や方法等をアドバイスして頂けないで
しょうか?
0620デフォルトの名無しさん
2007/05/21(月) 14:39:000621デフォルトの名無しさん
2007/05/21(月) 15:02:4518年!
ぬぁぁあ!
0622デフォルトの名無しさん
2007/05/21(月) 16:54:560623デフォルトの名無しさん
2007/05/21(月) 18:34:560624デフォルトの名無しさん
2007/05/21(月) 20:50:300625デフォルトの名無しさん
2007/05/21(月) 20:57:530626デフォルトの名無しさん
2007/05/21(月) 21:10:270627デフォルトの名無しさん
2007/05/21(月) 21:12:570628デフォルトの名無しさん
2007/05/21(月) 21:43:180629デフォルトの名無しさん
2007/05/21(月) 21:50:46DXライブラリみたいな奴のことです
0630デフォルトの名無しさん
2007/05/21(月) 21:53:55別にありえなくは無いと思うけど、暇で暇で困ってるとかいうのでなければ
行列演算とかはライブラリ使った方がいいんじゃない?
0631デフォルトの名無しさん
2007/05/21(月) 22:04:02やっぱり普通はライブラリ使いますか
企業のゲーム開発とかもやはりライブラリとか使ってるんでしょうか?
0632デフォルトの名無しさん
2007/05/21(月) 22:20:09グチグチグチグチ、いちいち周りを気にするな。
0633デフォルトの名無しさん
2007/05/22(火) 00:33:51ライブラリを使うタイミングとちまちま最適化するタイミングをうまく使い分ける必要がある。
そういったことを考えられずにここでライブラリを使う使わないって吠えているやつは素人か実際の会社では駄目男。
0634627
2007/05/22(火) 08:55:55ソース公開など制限があるライブラリが多いので企業ではどうしてるのか気になったもので
>>632-633
レスありがとうございました
0635デフォルトの名無しさん
2007/05/22(火) 09:50:360636デフォルトの名無しさん
2007/05/22(火) 12:24:25directx9をダウンロードしたのですが、ランタイムコンポーネントのDLしている
途中で、「ファイルをダウンロードできませんでした。後でもう一度実行するか、ネットワーク接続を確認してください。」
と表示され、DLできません。なにか対処法はないでしょうか?
ちなみに一回DirectXのファイルを消してやりましたが、同じ結果に成りました。
0637デフォルトの名無しさん
2007/05/22(火) 12:43:240638デフォルトの名無しさん
2007/05/22(火) 14:07:11iriaとか使ってみては?
0639デフォルトの名無しさん
2007/05/22(火) 15:14:15ライブラリ不可と言う処は水準を明確に示さないと片落ちなんだけどな。
0640デフォルトの名無しさん
2007/05/22(火) 21:32:13プログラミング技術評価不能=不採用。
ま、よほどゲームが面白いとかCGデータが良ければそっちの方面で評価するかもなってこと。
0641デフォルトの名無しさん
2007/05/22(火) 23:57:07しろーとっぽい感じだねあんた
0642デフォルトの名無しさん
2007/05/23(水) 00:24:320643デフォルトの名無しさん
2007/05/23(水) 11:05:48問題はそのライブラリをどのように使うかのセンス。
0644デフォルトの名無しさん
2007/05/23(水) 11:54:31自分で自分の作った作品を評価しようという姿勢が全く無いな
あきれるよ
0645デフォルトの名無しさん
2007/05/23(水) 11:57:19他人が口を挟むようなことじゃない。
0646デフォルトの名無しさん
2007/05/23(水) 18:30:18他人が見て初めて気付く部分や妥協の許容の違いが分からないと進歩しない件。
俺は褒めることはせず、気になった点のみ伝える。
酷かも知れんが、評価をするような作品のプログラムの記述方法に正解なんて無いから、
変だったり明らかな間違いじゃない限り意見しにくい。
0647デフォルトの名無しさん
2007/05/23(水) 18:37:16しかも自分で自分の作品を評価する話から、
誰も聞いていないことを突然勝手に語り出す。
0648デフォルトの名無しさん
2007/05/23(水) 18:58:530649デフォルトの名無しさん
2007/05/23(水) 19:10:090650デフォルトの名無しさん
2007/05/23(水) 21:24:20特定のボーンウェイトを含む頂点を赤く色をつけて表示したいのです。
ボーンウェイトの配列は取得できたので、この配列をシェーダに持って
行って頂点のDiffuseの値にでもブチ込んで色をつけようと考えました。
しかしながら、今何番目の頂点を処理しているかシェーダ上で取得する
術が見当たらないので四苦八苦してます。
なにかいい方法等は無いでしょうか?
VS_OUTPUT Vertex_Shade(VS_INPUT i, uniform int NumBones){//シェーダ関数
//============省略========−
Output.Diffuse = Bone_Weight[現在の頂点];
return Output;
}
上記のプログラムみたいな事をやりたいのですが「現在の頂点」を取得する
方法が分からなくて悩んでいます。
法線の値やUVの値と一緒にボーンウェイトもシェーダに渡す術があると一番
楽なのですが…
0651デフォルトの名無しさん
2007/05/23(水) 22:15:19>プログラミング技術評価不能=不採用
ライブラリ使っちゃうとこれが測定不能になるからやめてほしいよね
例えば、誰かのライブラリ使って、入門書でSTGの基本だけ丸パクリして、
敵の動きだけ、自分で組んできました。
でも、就職作品の注釈には描画ライブラリのみ人のを使いました。
って書くでしょ?
これだともう残念だけど、評価のしようがない。
ゲーム部分だけピックアップしてみても正直ドングリの背比べで工夫した部分とかもうわからん
やっぱね、描画エンジンってどこまでわかってるかの基準になるから俺は自分で作ってほしいな。
っていうか全部(Win32APIやDirectXはみんな共通のライブラリだからわかる)作ってきてほしいな。
描画エンジンたって、3Dモデルを表示するだけならDirectXのチュートリアルやれば1日でできるじゃん。
音鳴らすんだって、ストリーミングまでやってもDirectX実践プログラミングとかページめくりながらやればできるじゃん。
多分、作業量だけで言えば1週間いらずにできちゃうでしょ?
あとはゲーム作りながら動作確認して・・・って感じ?
別に無理やりゲームを作ってこなくてもいいんだぜ。
描画ライブラリに力いれて作ってきちゃったら、デモみたいなもん作ってもいいし。
どーも、他の人のライブラリ使っちゃうとどこまで使ってあるか疑わしい
入門書も最近、ゲームの作り方まで載ってるのあるし、どこまで自分で考えたのか評価しづらい。
0652デフォルトの名無しさん
2007/05/23(水) 22:19:14・それでもだめなら、ツール用で固定形状・単体表示でいいんだからCPUで処理して実用十分だろ。
0653デフォルトの名無しさん
2007/05/23(水) 23:17:14Direct3D標準だと、頂点当たり
boneIndexがint8 x 4、
boneWeightがfloat x 4(実際は3だが)
これを直接PixelShaderに渡して、パレットカラーサンプリングに
利用して表示するというのはどうだ?
sampler g_spPaletteTable;
float4 pixel_main( const in float4 boneIndeces, const in float4 boneWeights)
{
float4 color = 0.xxxx;
for( int_i = 0; i < 4; i++)
color += tex1D( g_spPaletteTable, boneIndeces[i]) * boneWeights[i];
return color;
}
0654653
2007/05/23(水) 23:22:32俺が思ったことと違うことをやろうとしているみたいだな。
何をやろうとしているのかよくわからんが。
>>653は華麗にスルーしてね
0655デフォルトの名無しさん
2007/05/24(木) 00:09:26頂点フォーマットにUVでもXYZでも追加して
インデックス(か、計算に必要なもんを)をブチ子んどきなさいよ
0656デフォルトの名無しさん
2007/05/24(木) 07:46:55その方法が自分にとっては一番手っ取り早いようです。早速実装してみます。
アドバイスありがとうござます。
>>654
実は653の内容が勉強不足でよく分かってなかったりするのでこの期に勉強
させて頂きます。レスありがとうございます。
0657デフォルトの名無しさん
2007/05/24(木) 09:12:580658デフォルトの名無しさん
2007/05/24(木) 09:17:470659デフォルトの名無しさん
2007/05/24(木) 09:27:420660デフォルトの名無しさん
2007/05/25(金) 00:41:34インデックスを知りたいのです。
頂点が隣接しているか否かというのはどのように調べればよいのでしょうか?
GetIndexBufferあたりの関数がそれっぽい感じがしているので調べている
最中なのですが、全然見当違いの可能性もありそうなので、どなたか良い
手段がありましたらご教授お願いします・・・。
0661デフォルトの名無しさん
2007/05/25(金) 02:39:35Indexを全部チェックして同じ頂点を共有している辺を探す。
0662デフォルトの名無しさん
2007/05/25(金) 04:21:23プロジェクトにD3DXのヘッダファイルを追加するといいよ
0663デフォルトの名無しさん
2007/05/25(金) 07:21:11やはりその方法でやるんですね。
ありがとうございます!
0664デフォルトの名無しさん
2007/05/25(金) 07:41:14はじめっから隣接してる頂点の情報を頂点フォーマット拡張してつっこんどきゃいいじゃん
0665デフォルトの名無しさん
2007/05/25(金) 08:05:29おお、それはどのようにやるのですか?
頂点フォーマットというのはFVFの事でしょうか?
頂点に隣接している他の頂点の数は頂点ごとに変わってくるので(3〜∞かな)
普通にやったら難しそうな気がします。
0666デフォルトの名無しさん
2007/05/25(金) 08:34:30Cloth Simulation on GPU
つか、そのレベルにない人はシェーダよりまずCPUで計算できるようになれよ。
0667デフォルトの名無しさん
2007/05/25(金) 08:56:51むしろCPUでやる話でしょ。
0668660
2007/05/25(金) 09:12:04投げる事ができるのなら投げたいと思ってたので感激です。
まだ軽くしか読んでないのですが、テクスチャを介してやる事で
シェーダでのクロスシミュ処理結果を保存してるのかな。
早速がむばってみます、アドバイスありがとうございます!
0669デフォルトの名無しさん
2007/05/26(土) 01:02:12>頂点に隣接している他の頂点の数は頂点ごとに変わってくるので(3〜∞かな)
本気で理解できない
クロスシミュレータってそんなことになるっけ?
格子状のメッシュになると想像してるんだけど、間違ってる?
無限ってどういう状況を言ってるの?
0670デフォルトの名無しさん
2007/05/26(土) 01:26:51浮動小数点テクスチャが必要なのですが、浮動小数点テクスチャって使えない
環境の人とかどのくらいいるのか・・・
>>669
基本的には格子上のメッシュで行うのが理想であり、その場合は隣接する頂点は
最大で8個に抑えられるべきなのでおっしゃる事は間違っていません。
とはいえ、マント程度ならともかく複雑な形状のメッシュを揺らしたいとなると
メッシュを格子状の形に維持して作るのは困難です。
その場合一つの頂点に隣接する頂点の数は8を超える可能性があります。
簡単に言えば格子状以外の形をとる状況の際に頂点の数は2〜∞となると
0671デフォルトの名無しさん
2007/05/26(土) 01:35:12想像できん
0672デフォルトの名無しさん
2007/05/26(土) 01:40:46開いた傘を真上から見た形のメッシュを想像して欲しい。
傘の骨を増やせば増やす程、中心の頂点に隣接する頂点は骨の数だけ
増えていく。
0673デフォルトの名無しさん
2007/05/26(土) 01:42:500674デフォルトの名無しさん
2007/05/26(土) 01:49:31無駄なことしてる予感
勝手にオーバークオリティ想定して無駄に苦労してんじゃねぇの?
0675デフォルトの名無しさん
2007/05/26(土) 01:59:06そうそう、そういう状況を見越して作っておくの。現実に∞の傘が存在するかはともかく。
>>674
実は、ボーンだけ揺らしてっていうのは既にやっている!!
それで思った事は意外と処理量が多い。
綺麗に揺らそうと思ったらボーン本数増やさないといけないし、ボーンを
入れるのも結構な手間。
(ボーンマトリクスの演算や位置の計算だけではなく回転の計算等も入るので
大分ややこしい&重い)
両方作った実感としては頂点演算のクロスシミュの方が簡単だし汎用性あるよ。
処理の重さも頂点の数を抑えればいいし、GPUに丸投げできるんならそれほどでもないのでは。
あと、頂点ごとのクロスシミュの法がマントのビラビラが綺麗だよ。
「マリリンモンローの下から風が吹いてスカートがビラビラ」ってのが実現できる。
0676デフォルトの名無しさん
2007/05/26(土) 14:53:20サンプルを改造したいんだけど、
ProjectName
って変更出来ないの?
0677デフォルトの名無しさん
2007/05/26(土) 14:55:52ごめっ。
0678デフォルトの名無しさん
2007/05/26(土) 15:01:21できません。
0679デフォルトの名無しさん
2007/05/26(土) 15:08:37ダサ
0680デフォルトの名無しさん
2007/05/26(土) 15:41:01>簡単に言えば格子状以外の形をとる状況の際に頂点の数は2〜∞となると
ごちゃごちゃうるせー
実際、想定してる範囲のことやったときの最大数を出せよ
それに制限をかけるかどうかの問題なんだろ
例えば本当は20個ほしいけどさっぴいて8個で動かすことになったと(つまり残りの12個は連動しない)
それで期待してる結果の90%ぐらいまでもっていけたらそれでいいじゃねぇか
0681デフォルトの名無しさん
2007/05/26(土) 16:01:44GetBoneInfluenceとSetBoneInfluenceがそれらしい関数だと思い、実際
GetBoneInfluenceでボーンウェイトの配列を取得できたのですが、
SetBoneInfluenceで新たにボーンの値をセットしてもモーションが全く変わりません。
(GetBoneInfluenceで値を見てみると確かに値は更新されているにも関わらず)
何か他に操作を加えないとウェイト値はモーションに反映されないのでしょうか?
>>680
ですよねー。
0682デフォルトの名無しさん
2007/05/26(土) 16:04:28最初の二つを少し使ってみましたが、なかなか興味深いものがあります。
サーチかけてみて、期待してる結果に対するS/N比が悪くて困ったような経験あったら、
試してみるといいかもしれません。
0683デフォルトの名無しさん
2007/05/26(土) 20:38:57SetBoneInfluenceでボーンウェイトの値を操作すると、2つ以上の
ボーンが影響する頂点の動作の変更を確認できました。
試しにSetBoneInfluenceで全ての頂点のボーンウェイトを0に設定してみると
今まで複数のボーンの影響を受けて動作していた頂点が単一のボーンの影響
しか受けなくなりました。
てっきり全てのボーンのボーンウェイトが0の場合は頂点はどのボーン
からも影響を受けなくなり、アニメーションしなくなるものだと考えて
いましたが、全然違う結果になってしまい訳がワカメ。
腕のボーンウェイトを0にした状態でも腕のメッシュは腕の動きに
合わせて動作しているのですが、何故なんでしょうか・・・。
0684デフォルトの名無しさん
2007/05/26(土) 21:01:07DXのヘルプにジオメトリブレンディングってページが
あるからそこをみろよ。
ウエイトの算出について書いてある。
0685デフォルトの名無しさん
2007/05/26(土) 21:01:11SetBoneInfluence等の変数によって頂点がどのボーンの影響も受けない
ように変更された場合、何かしらのボーンの影響(恐らく最初に設定して
あったボーン?)を受けた物として処理されるようです。
(つまりどのボーンからも影響を受けない頂点というのは作れない?)
試しに適当なボーンの影響を受けるように値を設定してみたら思惑通りの
動きをしてくれました。ご迷惑おかけしました。
0686デフォルトの名無しさん
2007/05/27(日) 14:46:53MeshViewerを利用したXFILEの書き出しの場合は成功するのですが、自分の
アプリで同じモデルを書き出すと読み込めないXFILEとなってしまいます。
立方体のスキンメッシュモデルを書き出して、書き出したXFILEのデータの
中身を見てみると、VertexDuplicationIndicesの値がMeshViewerによって
書き出されたものと違うのを発見しました。
自分のアプリで書き出したXFILEではVertexDuplicationIndicesのインデックスの
値が12まであるのに対しMeshViewerので書き出したのは8までしかありません。
(立法体を書き出しているのでインデックスが8まである方が正常なのでしょう)
つまり頂点データのインデックス化が自分のアプリでは上手く行っていないの
だと思いますが、どうすればいいのでしょうか?
0687デフォルトの名無しさん
2007/05/27(日) 19:12:58LightScatteringを実装しようと思い
FVF_XYZWで格子状のものを作り太陽の部分を実装して
何度かテクスチャ同士を掛け合わせたりしたところ
ttp://up.spawn.jp/file/up22942.jpg
このように線状のものがでてしまいました。
これの原因は何なのでしょうか?
わかる人お願いします
0688デフォルトの名無しさん
2007/05/27(日) 19:47:15; `、
: 、::;' ::; :;
:、 ` ;
: `' :'
`: ,、、, ;'
`: `` :
: ;'
`、 :
0689デフォルトの名無しさん
2007/05/27(日) 21:28:52どこのサイトが初心者に分かりやすいサンプル置いてありますか?
0690デフォルトの名無しさん
2007/05/27(日) 21:36:040691デフォルトの名無しさん
2007/05/27(日) 21:54:23http://www.microsoft.com/japan/download.htm
0692デフォルトの名無しさん
2007/05/27(日) 21:56:26ConvertAdjacencyToPointReps関数を使い、メッシュの隣接情報を
操作したら正常に書き出すことが出来ました。
>>687
白い線も気になるけど、上と左に見える赤いラインが気になる。
ブルームやHDRIみたいな処理をやってるだとしたら、もしかすると
ピクセルシェーダでのピクセル操作に何かマズい部分があるのかも。
一度ピクセルシェーダを外して描画して確認してみるといいのでは。
>>688
((((;゜Д゜)))
0693デフォルトの名無しさん
2007/05/27(日) 23:19:23まさしくそんな感じです。
ブルームの類に近いですね。
全面に張っているはずなのに・・・なぜか端に描画されてないという
0694デフォルトの名無しさん
2007/05/27(日) 23:27:45ロードに関してどこかに良いサンプルソースなどはないでしょうか?
0695デフォルトの名無しさん
2007/05/27(日) 23:43:18なんだそのメリットなさそうなもん
なんで作る?
0696デフォルトの名無しさん
2007/05/27(日) 23:54:18どういう事情か知らないけど、メタセコで直接mqo読みこんで、Xで吐き出すんじゃだめなの?
サンプルなら、FF11っていうゲームの3Dモデルを見れる(個人製作の)ビューワが何個かあって、
その中にmqoファイルをロード・セーブする機能付きの物がある。 (恐らくDirectX使用)
ソースがサンプルとして役に立つか分からんが、興味があるならぐぐればすぐ見つかる
(無論ソース見るだけならゲーム本体は不要)
0697デフォルトの名無しさん
2007/05/28(月) 00:23:09メリットなさそうなもんフェチなんじゃね
0698デフォルトの名無しさん
2007/05/28(月) 00:41:41メタセコのファイルを読み込んで、ボーンウェイトやボーン編集できる
ビュアー(というよりはLightWaveのシーン)的な物を作りたいんだ。
FF11ビュアーは前に使ったことがあるが、メタセコのインポート用の
ソースが公開されてるとは知らなかった、早速探してみます。
アドバイス感謝!
0699デフォルトの名無しさん
2007/05/28(月) 00:45:28�@ブルームエフェクト用のサーフェイスでも、Zバッファやステンシルよバッファを
クリアしてやらないとゴミが残ったりする。
�Aビデオカードの不具合、ドライバをアップデートすると直ったりする。
�Bピクセルシェーダの記述ミス
0700デフォルトの名無しさん
2007/05/28(月) 01:13:050701デフォルトの名無しさん
2007/05/28(月) 02:39:33かわいいバッファだな
0702デフォルトの名無しさん
2007/05/28(月) 03:10:24まだ公開してるよ/(^o^)\
0703デフォルトの名無しさん
2007/05/28(月) 07:12:40とても困っています。
文字列を画面に描画した後に
最後の文字の右にクリック待ち画像を表示したいと
思っているのですが、最終行の文字幅の取得ができません。
DrawTextで描画した文字列の最終行の幅を
取得するにはどうすればいいんでしょうか?
文字の折り返しはDT_WORDBREAKを指定して
フォントはD3DXFontを使っています。
0704デフォルトの名無しさん
2007/05/28(月) 08:04:46GetTextExtentPoint32
0705デフォルトの名無しさん
2007/05/28(月) 08:55:22なんとか辿り着く事が出来ました、本当にありがとうございます。
0706デフォルトの名無しさん
2007/05/28(月) 19:57:58返答ありがとうございます。
変な縦線に関しては3番でした。
ですが上と左の隙間に関してはピクセルシェーダーでなくとも
画面全体に1枚絵を貼り付けるとおきるためまだまだ考えなければならないようです
しばらくして解決できなかったらまたここで質問します
0707デフォルトの名無しさん
2007/05/28(月) 20:04:24呼ばれるオブジェクトに頂点が含まれているか否かでボーンの影響範囲を
決めていますよね。
あるオブジェクト内に頂点が含まれているか、というのはどうやって
調べたらよいのでしょうか?
0708デフォルトの名無しさん
2007/05/28(月) 22:14:37テクスチャのリニア補完によるぼかしが原因かもな。
試しにテクスチャアドレッシングモードやテクスチャフィルタリングを
変更してみてると改善される可能性があるかも。
一応俺の考えでは画面外の部分は画面に貼り付けてある一枚絵のアルファの
値が0になっていて、リニア補完の関係で上と左のピクセルが半透明の状態に、
そしてアルファテストによって上と左の半透明のピクセルが「抜き」の状態に
なってるのではないか?
試しにちょっと大きめに一枚絵を貼り付けるか、アルファテストの値を
いじってみてはどうだ?
一枚絵が2ピクセル程右下にずれて貼られている可能性の方が大きそうだが。
0709デフォルトの名無しさん
2007/05/28(月) 22:56:20ググったりしてもなかなか良い関数がでてこないので
そうなんじゃないかと思っていたのですが
やはり自前ですか。
GetTextExtentPoint32を参考に
自前で最終行の幅をだす関数を作ろうと思います。
ありがとうございました。
0710デフォルトの名無しさん
2007/05/28(月) 23:08:37新造人間に似た名前の奴だよね。探したけどどうにもダメ。ヒントください
0712デフォルトの名無しさん
2007/05/28(月) 23:51:45返答ありがとうございます
ですが、自己解決しました
原因はテクセルアライメントだったようです。
全面テクスチャは(-1,1) (1,1) (-1,-1) (1,-1)でやっていたのですが
これでは上記のように若干の隙間ができ
結局 テクセルアライメントの0.5の分を考慮して
(-1,1)を
-1.0f - 2 * (0.5f / Width);
+1.0f + 2 * (0.5f / Height);
にしてみたら直りました
Geforce7900GSなのになんでこんなことでノイズが・・・orz
0713デフォルトの名無しさん
2007/05/29(火) 05:58:04>>700も>>705もおおよそどのツールおことを言ってるかは分かるんだが
人造人間って何だ。
あと例のビューワのソース見てみた。
確かに、mqoの読み込んでDirectXで表示しているぽいんだが・・・
なんというべきか、これは参考にはならないような・・・
0714デフォルトの名無しさん
2007/05/29(火) 06:16:230715デフォルトの名無しさん
2007/05/29(火) 07:01:35これ見ても作れないならもう諦めたほうがいいと思うんだが・・・
あなた某MMO作者にもスルーされてたでしょ・・・
0716デフォルトの名無しさん
2007/05/29(火) 17:57:440717デフォルトの名無しさん
2007/05/29(火) 18:02:21つってもこの板の時点で同じソース探している人間二人位いるし
需要のありそうなソースだから、聞けばサンプルくらい見つかると
思ったんだ。
実際ボーンやアンカーまでメタセコイアでセットアップしたデータを
読み込むのは結構膨大な作業量。まぁ、ちびちびと実装している最中だが。
0718デフォルトの名無しさん
2007/05/29(火) 19:11:240719デフォルトの名無しさん
2007/05/30(水) 01:21:34つーことはアニメーションまでできんの?
0720デフォルトの名無しさん
2007/05/30(水) 01:25:510721デフォルトの名無しさん
2007/05/30(水) 01:49:090722デフォルトの名無しさん
2007/05/30(水) 05:07:49別のアプリでモーション付け出来たと覚えてる
そのためのボーンだから、普通の3DCGなんかのボーンと違う
0723デフォルトの名無しさん
2007/05/30(水) 19:29:42どうみても初心者です。回答おねがいします
0724デフォルトの名無しさん
2007/05/30(水) 19:36:00メタセコイアからメッシュデータやボーンウェイト等のデータを読み込む
トコまではいったんですが、D3DXFRAME等のいわゆるフレームの階層構造
というのはどのように作成すればよいのでしょうか?
今まではD3DXLoadMeshHierarchyFromX関数によってルートのフレームを
作成していましたが、内部で何やってるかイマイチ良く分からないです。
(ブラックボックス的にフレームの階層構造が生成されてる)
いっそ、一度XFILE形式でデータを保存してD3DXLoadMeshHierarchyFromXで
再度読み込む手も考えてますが、どう見ても二度手間になるので出来れば
別の手段をとりたいです。
質問が分かりにくくてすみません。
要約するとメッシュ情報やボーンの親子関係情報やマトリクスを与えると
D3DXLoadMeshHierarchyFromX関数のようにルートのフレームへのポインタを
返してくれるような便利な手段や関数があるかどうか知りたいのです。
フレーム作成処理が難しいようならば、諦めてXFILEを経由した読み込み
手段を取ろうと考えています。
0725デフォルトの名無しさん
2007/05/30(水) 19:38:48長文で邪魔してスマンな
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1982205
これじゃないか?
0726デフォルトの名無しさん
2007/05/30(水) 19:51:14解決しました
0727デフォルトの名無しさん
2007/05/30(水) 20:07:080728デフォルトの名無しさん
2007/05/30(水) 20:58:350729デフォルトの名無しさん
2007/05/31(木) 09:45:16ボーン仕込んだメタセコイアデータ読み込みのサンプルソース見つけたww
つーか今までメタセコデータの中身見て自力でやれって言ってた奴
絶対に悪意を持ってミスリード誘ってただろwww。
膨大な時間無駄にしたわ、ふざけんなww。
おかしいと思ったんだよ。MQOの読み込みにボーンまで対応しているアプリは
結構見かけるのにいざ自分も同じように実装しようとすると異様に難しいし。
0730デフォルトの名無しさん
2007/05/31(木) 12:52:110731デフォルトの名無しさん
2007/05/31(木) 14:36:410732デフォルトの名無しさん
2007/05/31(木) 15:23:030733デフォルトの名無しさん
2007/05/31(木) 15:29:13俺も昔MQOからの読み込みを試したことがあるが、ボーンデータやウェイト
データも読み込むとなると大変だろう。
ボーンウェイトは一度MQO読み込んでから頂点がアンカーに包まれているか
どうか自力で判定して取得する必要があるし、メタセコでボーン入れたから
といっても、せいぜい位置情報しかもってこれないからボーン階層や浮動
ボーンの作成は自アプリ上で行う必要があるだろうし。
0734デフォルトの名無しさん
2007/05/31(木) 21:21:23すまん、出てこないんだけどもう遅い?
0735デフォルトの名無しさん
2007/05/31(木) 21:51:59慣れじゃないかな。
ロゴライターとか小さいころからプログラミングをオモチャ代わりにしてたから時間はかかったけどサクサク出来た。
いきなり目標に突っ走るか、まずツール類を作るか、ライブラリなどの基礎固めから始めるか・・・何から始めるかだけでもやることの印象変わるし。
0736デフォルトの名無しさん
2007/05/31(木) 22:29:05FFXI モデルビューア
とかで検索してみ。
今現在、目的のページはトップにくる。
ソースはちょっと分かりにくい所に隠されているが、すぐに見つかる。
つーかこのソースはまじで期待しないほうがいいぞ
0737デフォルトの名無しさん
2007/06/01(金) 12:10:57これはどうやったらいいのでしょうか?
0738デフォルトの名無しさん
2007/06/01(金) 13:31:45行列の(_11, _12, _13)が変換後のX軸の基底ベクトル、
(_21, _22, _23), (_31, _32, _33)がY軸とZ軸の基底ベクトル。
これらを正規化すれば回転成分が求まる。
逆に、各ベクトルの長さが、それぞれの軸にそった拡大成分。
(_41, _42, _43)が平行移動成分。
ただし、_14, _24, _34が全て0で、_44が1の行列に限る。
0739デフォルトの名無しさん
2007/06/01(金) 18:37:42D3DXMATRIX mat; だとすると
mat._32 がZ軸のYベクトル、あとは>>738
0740デフォルトの名無しさん
2007/06/01(金) 19:38:35大変勉強になりました、ありがとうございます。
0741デフォルトの名無しさん
2007/06/01(金) 20:27:08サンクス
漸く見つけられた
0742デフォルトの名無しさん
2007/06/01(金) 20:52:23検索すると結構いろんなビューアが出てくるな
エフェクトまで再現できるビューアとかもあって中々面白そうなんだが、
ソース公開されてないのね、、、orz
0743デフォルトの名無しさん
2007/06/01(金) 21:57:170744デフォルトの名無しさん
2007/06/01(金) 23:15:22ためにソース公開して欲しいよなぁ・・・。
3Dって開発が異常に難しいじゃん。実際大概の奴らがXファイルの
読み込みでつまづくべ?
それに加えてビュアー開発やら最近のシェーダ技術の研究までやって
たら時間がいくらあっても足りないよ・・・。
0745デフォルトの名無しさん
2007/06/01(金) 23:43:52これはかなり人に依ると思うが。
あと「Xファイルの読み込み」の難しさと「3D」の難しさは直接関係しないと思う。
0746デフォルトの名無しさん
2007/06/02(土) 00:26:49やはり数値が三次元的になったのもあって、単純に計算量は2Dより増えるし。
むしろ3Dで作る方が2Dで作るより簡単なアプリやゲームってどんなのがあるのよ。
0747デフォルトの名無しさん
2007/06/02(土) 00:42:410748デフォルトの名無しさん
2007/06/02(土) 12:55:140749デフォルトの名無しさん
2007/06/02(土) 13:33:04DX自体GLと比べてもワールド行列の設定とか楽だし。
0750デフォルトの名無しさん
2007/06/02(土) 21:51:370751デフォルトの名無しさん
2007/06/02(土) 23:42:33ゲーム性を上げるため視野(Far)を5000にしているのですが、
500程度離れてしまうとロボの手に持った武器が常にロボの手前に表示されてしまいます。
Nearは0.1、ロボの描画をすべで終えた後に武器の描画を行っています。
カメラのNear-Far間が広いため起こっている現象だとは思うのですが、
視野を狭めると遠方の地形や敵等が見えないのでプレイヤーにも空間が狭いと感じさせてしまいます。
何かいい解決方法はありませんでしょうか。
0752デフォルトの名無しさん
2007/06/02(土) 23:49:14Far=5000
かよ。凄まじいな
ここまで凄まじいのは初めてみた
射影後のZの精度はNearの値に結構左右されるから、
Nearを出来るだけ大きくしてみると良いかもしれない
0753デフォルトの名無しさん
2007/06/03(日) 00:24:371=1mでやっており、Near10(m)-Far5000(m)辺りが限度です。
フライトゲームになると数十キロ先が見えつつ、非常に手前の機体同士や弾の前後関係がちゃんと計算されていますがどうなっているのやら・・
0754デフォルトの名無しさん
2007/06/03(日) 03:17:25ちょっと設定部分みてみろ
0755デフォルトの名無しさん
2007/06/03(日) 04:24:40そういう場合はZバッファよりもWバッファの方がいい。
0756デフォルトの名無しさん
2007/06/03(日) 08:05:462 1のZバッファだけクリアし、Farを近くして武器を描画
0757デフォルトの名無しさん
2007/06/03(日) 09:33:56ラデ9200ですが、AutoDepthStencilFormatをD3DFMT_D32にすると
D3DDEVTYPE_HALでデバイスが作成できないのでD3DFMT_D16にしています。
自分の環境がヘボいのかも知れませんが。
0758デフォルトの名無しさん
2007/06/03(日) 10:22:35D32よりもD24X8, D24S8の方が一般的だから、そっちも試そう。
CheckDepthStencilMatchで確認するのが一番だが、成功するまで
AutoDepthStencilFormatを変えながらCreateDeviceしてみるのも有り。
0759デフォルトの名無しさん
2007/06/03(日) 10:37:27>D32よりもD24X8, D24S8の方が一般的だから、そっちも試そう。
2つとも実行には問題ありませんでした。視野の設定を変えているので元に戻してみます。
ところでこの2つはゲフォやラデのどの辺りから対応しているのでしょうか。
対応していなければ書いてある通り値を変えてデバイスの生成をすればいいですがちょっと気になったもので。
0760デフォルトの名無しさん
2007/06/03(日) 11:11:11レスをしてくださった方、本当にありがとうございました。
0761デフォルトの名無しさん
2007/06/03(日) 11:38:36ちょっと興味もったw
0762デフォルトの名無しさん
2007/06/03(日) 18:16:44D24が使えたからってNear:Far=1:50000の比率はあまりお勧めできないよ。
0763デフォルトの名無しさん
2007/06/03(日) 18:54:110764デフォルトの名無しさん
2007/06/03(日) 20:44:17z' = (z - n)f / (f - n)z
で計算される。この式を z について解くと、逆変換は次のようになる。
z(z') = fn / (f - (f - n)z')
このとき、z' の分解能を r とすると、far平面付近での z の分解能は z(1) - z(1-r) で求められる。
D24(24bit整数)の分解能は r = 1/2^24 だから、これと n = 0.1、f = 5000 を代入すると、
z(1) - z(1-r) = 5000 - 4985.1 = 14.9
となる。
つまり、単位がメートルだとすると、5km先では15m程度の分解能しかなくなるということ。
これが n = 0.5 だったら5km先で3mくらいの分解能になる。
上の式でいろいろ試してみるといいよ。
0765デフォルトの名無しさん
2007/06/04(月) 01:15:18現在3Dの戦闘機を使ったゲームを作ってるんですが
戦闘機のコクピットからの視点が上手くいきません。
カメラの上方向ベクトルが上手いこと作成できてないみたいなんです。
UpVec(0, 1, 0);
これを、機体のXYZ軸の回転量でまわした
RotationMatrix
で変換をしてやり
D3DXMatrixLookAtLH(&CameraMatrix, (D3DXVECTOR3 *)&From, (D3DXVECTOR3 *)&At, (D3DXVECTOR3 *)&Up);
でカメラ行列を作っているのですが……。
0766デフォルトの名無しさん
2007/06/04(月) 18:28:33自機のMatrixのY軸のベクトルをUpVecにそのまま入れればいいのに。
というか、カメラの姿勢=自機の姿勢だから何の計算もいらんがな。
0767デフォルトの名無しさん
2007/06/05(火) 00:03:13そのままUpVecにいれたら成功しました。
お騒がせしてすいません。
0768デフォルトの名無しさん
2007/06/05(火) 14:33:26==初期化処理==
//フォントを用意
fd.Height = 24;
fd.FaceName = "MS ゴシック";
_font = gcnew Microsoft::DirectX::Direct3D::Font(this->_device, fd);
// テクスチャー作成
this->_texture = TextureLoader::FromFile(this->_device, "C:\\aaa.bmp");
// スプライトを作成
this->_sprite = gcnew Sprite(this->_device);
==実際の処理をするループ==
//文字aを書きたい
this->_font->DrawText(this->_sprite, "a", 5, 5, Color::Black);
DrawTextの第一引数をnullptrにすれば、書くことはできるのですが、aaa.bmpを表示する為に、
this->_sprite->Draw2D(this->_texture, Rectangle::Empty, System::Drawing::SizeF(690, 690), System::Drawing::PointF(0, 0), 0.0, System::Drawing::PointF(0, 0), Color::White);
これを文字を書く前に入れると、nullptrでは見えなくなってしまいます。
_font->DrawText()の第一引数のスプライトって制限があるのでしょうか?
0769デフォルトの名無しさん
2007/06/05(火) 15:15:20スプライトのBeginで引数がSpriteFlags::Noneになっていた所を直したら、動きました。お騒がせしました。
0770デフォルトの名無しさん
2007/06/05(火) 23:33:210771デフォルトの名無しさん
2007/06/06(水) 11:15:29(ビデオカードの)GPU負荷を調べる方法ってありますでしょうか?
シェーダ開発用にGPUの負荷が%で分かるようにしたいのですが・・・。
0772デフォルトの名無しさん
2007/06/06(水) 11:44:46NVPerfHUDとか。
とはいえ長いパイプラインかつ高並列な最近のGPUについて、
%で表現されるような負荷を定義するのって難しいよ。
ボトルネックの箇所が違えば、20%+40%が60%にならないし。
そもそも普段無条件に信用しているCPU使用率だって、
実際の計算方法を知ってみれば結構ザルだって事がわかる。
0773デフォルトの名無しさん
2007/06/06(水) 12:27:24たった一次元の数値に落とし込んでるわけだからな
0774デフォルトの名無しさん
2007/06/06(水) 13:40:36Vistaだったらパフォーマンスビューアーにコマンドバッファーの占有率みたいなのがあったと思うよ。
手持ちがXPなんで確認できませぬが。
0775デフォルトの名無しさん
2007/06/06(水) 13:49:07その辺はRTM直前にいろいろバグが見つかったからまだ手を出さないほうが吉。
Vista SP1でETW (Event Tracing for Windows)と連携して細かいタイミング情報が取れるようになる。
0776デフォルトの名無しさん
2007/06/06(水) 14:46:53RTM版でも一応使えるよ。
0777デフォルトの名無しさん
2007/06/06(水) 15:19:43パフォーマンスカウンタのVideo Schedulerカテゴリにある"% GPU Busy"のことであってる?
うちは数字は表示されるけど化け化けで少なくとも%にはみえない。
0778デフォルトの名無しさん
2007/06/06(水) 15:22:03ってもしかしてETW使ったDirect3D 10のプロファイリングって
Vista無印でもう実装されてたってこと? だったらスマソ。
0779デフォルトの名無しさん
2007/06/06(水) 18:49:59早速NVPerfHUD試してみました。
思った以上に様々な情報が取得できそうです。
有用なアドバイスありがとうございました。
>>773〜
自分もXPなので試せませんが、Vistaに乗り換えた際には試して見ます。
アドバイスありがとうございます。
0780デフォルトの名無しさん
2007/06/07(木) 00:16:00シェーダの動作やオブジェクト毎の描画のチェックやシェーダに突っ込む
テクスチャの確認等…便利です。
NVPerfHUDの2.0β版だとプログラムを書き換えなくても動作させる事が可能
らしいので、市販のゲーム等のシェーダプログラミングを参考に出来ると
考えたのですが、今はβ版って手に入らないのでしょうか?
0781デフォルトの名無しさん
2007/06/07(木) 01:33:49Video SchedulerってのがGPUの使用率をCPU側から監視したデータだからそれが一番近いよ。
>>778
D3D10は知らないけど、Video SchedulerのカウンタってETWを使ってるはず。
0782デフォルトの名無しさん
2007/06/07(木) 17:15:36ビューポートの中心を変えたいのですが、
DirectXでやるにはどうしたらいいでしょうか。
0783デフォルトの名無しさん
2007/06/07(木) 17:44:09D3DXMatrixOrthoOffCenter*H
D3DXMatrixPerspectiveOffCenter*H
とかのOffCenter(中心が離れている)系関数を使うと一発。
詳細はヘルプで
0784デフォルトの名無しさん
2007/06/07(木) 22:28:29サンクス。D3DXは使ってないけど、数式が書いてあって助かった。
0785デフォルトの名無しさん
2007/06/09(土) 15:40:00方法はこれであっているでしょうか?
メッシュクラスに、この様な関数を作って
bool CMesh::CloneAnimationController( LPD3DXANIMATIONCONTROLLER *lpAnimCtrl )
{
if( FAILED ( m_pAnimController->(~引数略~, lpAnimCtrl ) ) )
return false;
return true;
}
LPD3DXANIMATIONCONTROLLER *GetAnimationController(){ return &m_pAnimController; }
こうやって使っているんですが↓
for( int i = 0; i < 3; ++i )
e->CloneAnimationController( enemy[i]->GetAnimationController() );
0786デフォルトの名無しさん
2007/06/09(土) 15:52:03引数を略すのは構わんがメソッド名まで略す奴は始めてみたよ
俺はエスパーじゃないので他当たってくれ
0787デフォルトの名無しさん
2007/06/09(土) 16:26:34ティーポットなどの単純なもので解説したサイトはあるのですが、
Xファイル1つに複数のパーツがあったり、1枚のテクスチャに複数の絵(目や服など)がある場合に応用が出来ず困っています。
服1つにしても縞模様にしたい場合、1次元テクスチャにできないですよね。
毎フレーム頂点1つ1つ触るのも頂点数が多いと効率が悪く感じます。
何か参考になるようなサイトや書籍はないでしょうか。
0788デフォルトの名無しさん
2007/06/09(土) 16:41:44海外のフリーのゲームでソースとデータを公開しているものを探して見るといいが、おそらく>>787は満足できないだろう。
応用例は複雑なプログラムになるのは予想できるよな? コピペすれば動くようなものではない。
データの作り方もひとつと決まっているわけでもない。個別のデータの製作者のクセや使用ツールにも依存してくる。
0789デフォルトの名無しさん
2007/06/09(土) 16:56:03ああ、トゥーんっていうから輪郭抽出とかのことかと思ったけど、
一次元テクスチャうんぬんとか書いてるとこみると、陰影周りのことだったのね
モデルそのものにテクスチャがあるのなら、
テクスチャステージ0にモデルのテクスチャ
テクスチャステージ1に陰影用の一次元テクスチャ、
とかすればいたって簡単にできるよ
0790デフォルトの名無しさん
2007/06/09(土) 16:57:13LPD3DXANIMATIONCONTROLLER m_pAnimController
FAILED ( m_pAnimController->CloneAnimationController(~引数略~, lpAnimCtrl )
でした、すいません
0791デフォルトの名無しさん
2007/06/09(土) 23:18:20質問したくても答えれそうな人がいるのってこのスレぐらいしかいそうになさそうですので
ここで問題なければ質問したいのですがダメですか
0792デフォルトの名無しさん
2007/06/09(土) 23:49:52メタセコのスレなら、詳しい人もいるかもね。
0793デフォルトの名無しさん
2007/06/10(日) 02:00:03なんだか情報あさればあさるほど微妙な気がしてくるんですけど…。
・シェーダーでの頂点レジスタが少なすぎる
・なんだか頂点レジスタたくさん使うと遅くなるようなことが
nVidia のスライドにあったかも
・radeon でちゃんとうごくの?
・結局頂点バッファにたくさんの重複モデルをしこんでおいて
定数レジスタにマトリクスを送るのと大差ないんじゃない?
などが、疑問点です。
ストリームに違う頂点バッファをいくつも仕込めて、
違うモデルを一回の描画で行えるとかのほうが重宝するのになぁ。
0794デフォルトの名無しさん
2007/06/10(日) 11:46:530795デフォルトの名無しさん
2007/06/10(日) 12:19:020796デフォルトの名無しさん
2007/06/10(日) 12:34:590797デフォルトの名無しさん
2007/06/10(日) 13:00:420798デフォルトの名無しさん
2007/06/10(日) 13:05:190799デフォルトの名無しさん
2007/06/10(日) 13:05:39至って普通の回答だけどな。
方法を書くにしても多すぎるしコードを書くなんて手間だから回答者もやりたくないだろ。
ググったりSDK見てもらったほうが質問者にとっても分かりやすいんじゃないかな。
0800デフォルトの名無しさん
2007/06/10(日) 13:09:27もうひとつ質問なんですが、
スマートポインタというのは
CComPtr<IDirect3DDevice9> m_pd3dDevice;
という風にしておくだけで勝手にreleaceしたりdeleteしてくれるものなのですか?
もしそうなら凄く便利ですよね
0801デフォルトの名無しさん
2007/06/10(日) 13:12:280802デフォルトの名無しさん
2007/06/10(日) 13:16:080803デフォルトの名無しさん
2007/06/10(日) 13:16:580804デフォルトの名無しさん
2007/06/10(日) 13:28:37他の関連リソースの状況を考えて適切に利用しないとならない。
勝手にリソース管理をやってくれる物だと思って>>800みたいな考えで馬鹿が使うと簡単に破綻する。
0805デフォルトの名無しさん
2007/06/10(日) 13:32:12いや、別に破綻しないが。
0806デフォルトの名無しさん
2007/06/10(日) 13:34:52普通に使ってる限りにおいて気をつけるべきは循環参照くらいでないかね
0807デフォルトの名無しさん
2007/06/10(日) 14:04:240808デフォルトの名無しさん
2007/06/10(日) 14:11:500809デフォルトの名無しさん
2007/06/10(日) 14:12:120810デフォルトの名無しさん
2007/06/10(日) 15:35:01今、2Dメインのアドベンチャーゲームを作ってるとして、
そこに一部だけ(エフェクトなど)、3Dを使おうと考えています。
この場合、以下のどれが一般的なんでしょう?
1) 2D部分も含めて、描画は全て Direct3D で行う。基本的に画像1枚に対してポリゴン1つ(四角形だから2枚だけど)(最終的な転送は Present)
2) 2D部分全体に対してポリゴンは1つのみ。2D合成済みのサーフェスを作成し、その唯一のポリゴンを使って描画(最終的な転送は Present)
3) エフェクト部分だけを Direct3D でサーフェスに描画し、そのサーフェスを2D画像として合成(最終的な転送は BitBlt)
Direct3D を使う以上は (1) が自然だとは思うのですが、
遠くにあるほど小さく写るわけでもない、Zソートはピクセル単位でなく画像単位で行いたい、
そもそも画像の拡縮すらめったに行わないアドベンチャーゲームで、
Direct3D は本当に向いているのか?という疑問を持っています。
よろしくお願いします。
0811デフォルトの名無しさん
2007/06/10(日) 15:38:18デバイスを作るときに渡したパラメータにより内部の挙動は変化します
0812デフォルトの名無しさん
2007/06/10(日) 15:54:48何と比べて?ってのが非常に気になるが・・・
問題は回転と速度ぐらいだよ
そんな面倒なことしないならGDI+で十分。回転もできる。
ただ、任意のアルファ効かせながら、カラーキー的なアルファも同時に使うとか微妙なことがやりにくい。
それと色々(この色々も微妙なんだが)やってしまうと遅いので画面の描画物も数えられるぐらいに留めておいたほうがいい
ただ、開発してるとわかるんだけど色々ごちゃごちゃ考えなきゃならないなら
いっそDirect3Dの最低限の機能だけで組んでしまったほうが色々と楽
なので今はDirect3Dが向いてるかどうかじゃなくて
Direct3D以外の選択肢がほとんどないってとこ
0813810
2007/06/10(日) 16:04:13>>810 の (1)〜(3) まで考えたのですが…。
>>810 で言う2D処理は、最終的な画面への転送こそ BitBlt ですが、他の部分で GDI は使いません。(全て自作ルーチンで行っています)
0814デフォルトの名無しさん
2007/06/10(日) 16:19:31とりあえず>>812の2行目を解決してくれ。
車を選ぶのだって最高速度を重視するのか、燃費を重視するのか、オプションを重視するのか、見た目を重視するのかなど色々ある。
お前は何を比較して選びたいんだ。
0816810
2007/06/10(日) 16:46:47基本は速度重視で行きたいです。
画像の回転は、頻繁には行いませんが、必要です。
また、描画する物体もそこそこ必要です。微妙なこともやりたいです。
現状、2Dのみですが、そこそこいろいろできるものがあります。
ただ、これに3D処理を追加したい、3D処理ならやはり Direct3D を使った方が高速と考えました。
3D処理を追加することで、現状の機能を犠牲にはしたくないので、
贅沢ですが、「現状のいろいろな機能を実現できることが必要で、その中で可能な限り速度を追求したい」といった感じです。
いろいろな機能というのは、おっしゃられたとおりの、回転や半透明、カラーキーなど、いろいろです。
0817デフォルトの名無しさん
2007/06/10(日) 17:07:07テクスチャ読み込みの段階でカラーキーは設定できるし、半透明だってD3DXCOLORでRGBとアルファ値が設定できる。
回転もRotationZでもかければいいのかな。
初めからDirectXで組んでいれば何の問題も妥協もなさそうだが。
0818デフォルトの名無しさん
2007/06/10(日) 18:46:50お前頭悪いだろ。
0819810
2007/06/10(日) 19:09:00うーん、他の方はどんな感じに設計してるんでしょう…。
0820デフォルトの名無しさん
2007/06/10(日) 19:22:06基本的な処理だと思った俺は馬鹿なのか(´・ω・`)
0821デフォルトの名無しさん
2007/06/10(日) 19:39:21スプライト描画するのも1つだよ。
個人的には>>817が書いているTL頂点が好きなのでやってる。
考え方は3Dと同じだし、頂点1つ1つに色やテクスチャが設定できるから様々な表現が出来る。
もちろん回転や半透明描画、自分で設定しているわけだから四角形じゃなくても台形やそれ以上の多角形も描画できる。
まぁ、今回の場合は全部簡単なものを作って、1秒間に同一のものを何枚描画できるか試したほうが良さそう。
試せないような状態であれば直感で1つを突き進め、理解して余裕が出だしたら他の手段を試して比較するとか。
>>820
>>818は天才だからZ軸回転なんか使わずXY軸回転だけで表現するんだよ。
0822デフォルトの名無しさん
2007/06/10(日) 19:55:380823810
2007/06/10(日) 20:03:53みなさんの話を聞いてると、(1) の方法が前提のようですね。
とりあえず (1) でやってみます。自作2D処理ルーチンはほぼ完全に捨て去ることになりそうです。
ありがとうございました。
0824デフォルトの名無しさん
2007/06/10(日) 20:19:07D3Dやれば後は何も考えなくても良いわけではないよな
画面構成や演出には気を使う
0825デフォルトの名無しさん
2007/06/10(日) 20:48:13Direct3D全く役に立たんぜw
0826デフォルトの名無しさん
2007/06/10(日) 20:51:17見積もりと大分違うことになると思う
前にそういう仕事があった
出す画面全部にDirect3D使って描画する必要があるの
アフォかと思った
0827デフォルトの名無しさん
2007/06/10(日) 21:08:44アフォなのはお前。
0828デフォルトの名無しさん
2007/06/10(日) 21:28:020829デフォルトの名無しさん
2007/06/10(日) 21:50:08SwapChainも知らずに随分偉そうだな
0830デフォルトの名無しさん
2007/06/11(月) 07:19:55マジでw
でも重要なのはそこじゃなくて色んな部分に3D画面はっつけるのが結構面倒だったって話なんだ
0831デフォルトの名無しさん
2007/06/11(月) 08:15:580832デフォルトの名無しさん
2007/06/11(月) 12:21:45Vistaは無駄な機能が多いと聞きますし、DX10+Vistaで飛躍的に能力が上がるとも考えられませんしやはり遅くなるのですかね。
0833デフォルトの名無しさん
2007/06/11(月) 15:39:47は、「やはり遅くなる」の理由になってないだろ!!ほんと頭悪いな
0834デフォルトの名無しさん
2007/06/11(月) 15:43:360835デフォルトの名無しさん
2007/06/11(月) 15:53:180836デフォルトの名無しさん
2007/06/11(月) 15:54:34Vistaじゃないから試せないけどベンチの結果が悪いとは聞くね。
XP用のをVista用に変えたベンチだから悪くなったのか、そもそもVista自体に問題があるのか分からんが。
0837デフォルトの名無しさん
2007/06/11(月) 16:09:06Vistaの無駄はDX10+Vistaで飛躍的に能力が上がらない限りXPと同等以上にはならんぞw
ちょっとやそっとの処理能力改善なのであれば遅くなる。
DirexrXに限ったことじゃないがアプリケーションが重くなるとの理由で避けている人も多い。
XP以上の性能にすることも出来るが現状では現実的じゃないね。
物ゲームだと今のハイエンドクラスをプレイヤー全員に望むことになりそうだし。
0838デフォルトの名無しさん
2007/06/11(月) 18:01:450839デフォルトの名無しさん
2007/06/11(月) 18:40:270840デフォルトの名無しさん
2007/06/11(月) 18:41:030841デフォルトの名無しさん
2007/06/11(月) 18:45:490842デフォルトの名無しさん
2007/06/11(月) 18:56:48馬鹿はそういうことを疑問に思わないんだな。
0843デフォルトの名無しさん
2007/06/11(月) 18:57:16DXスレでなんてことを
0844デフォルトの名無しさん
2007/06/11(月) 19:04:42別に俺らが集計しているわけじゃないし、気になるんなら相応の会社に聞いてくれ
0845デフォルトの名無しさん
2007/06/11(月) 19:09:424月で3パーセントだね。
XPがかなり普及している中で3%は順調と言っていいのかな。
0846デフォルトの名無しさん
2007/06/11(月) 19:10:390847デフォルトの名無しさん
2007/06/11(月) 19:30:02そうゆう、宣伝目的のプロパガンダを信用しない方が良いよw
3パーセントにして一番得するのはだれで、利権を保有しているのがだれかを
よく考えてみれば、いうまでもない。
0848デフォルトの名無しさん
2007/06/11(月) 19:48:01どういう計算で「3%はプロバガンダだ」と判断した?
一般的な家庭用PCの買い替えサイクルは10年に満たないわけだから、
現時点で 3% ってのはかなり控えめな数字だと思うけど。
0849デフォルトの名無しさん
2007/06/11(月) 20:06:08そのけいさんでは10年後にはwindowsXPは消滅するなwwwwwwww
頭を使いたまえ厨房くんwwww
0850デフォルトの名無しさん
2007/06/11(月) 20:25:04でも実際買い替えのときに今更95にする人は稀だし、95搭載のメーカーPC販売なんか0で消滅と言えるんじゃないかな。
自作せず買い換えるということであれば、既に大半がVista搭載になっているので
1年後にはXPの月間販売シェアが0%(0じゃなくて約0)になっても不思議じゃない。
でもこれは販売シェアじゃなくてネットに繋がっているPCのOSの集計だからね。
繋がっていないPCにはXPが多いと思うけど、俺たちゃそんな輩を相手に作っているわけじゃないから関係ないけどね。
まさか業務内容の不明点をここで書くやつはいないと思うが。
0851デフォルトの名無しさん
2007/06/11(月) 20:33:14あまり相手しない方がいいよ。
時間の無駄だから。
0852デフォルトの名無しさん
2007/06/11(月) 20:45:27だから調べようがないから、自分の利益になる数字にすると考えるのが妥当だろうね
0853デフォルトの名無しさん
2007/06/11(月) 21:09:57IE や Firefox をそのまま使ってるんなら、OS ごとに UA が違うから OS は解る。
調査対象となったサイトが非公開なので、どの程度あてになる数字なのかは
全くわからないけど。
ホームページ持ってる人なら自分のページで調べてみるのもいいかもね。
0854デフォルトの名無しさん
2007/06/11(月) 21:42:140855デフォルトの名無しさん
2007/06/13(水) 13:44:420856デフォルトの名無しさん
2007/06/13(水) 14:51:210857デフォルトの名無しさん
2007/06/13(水) 15:23:330858デフォルトの名無しさん
2007/06/13(水) 17:25:450859デフォルトの名無しさん
2007/06/13(水) 17:38:160860デフォルトの名無しさん
2007/06/13(水) 17:40:46スクリーン上の表示位置は変わりますよね?それを簡単に調べられないかということなんですが
0861デフォルトの名無しさん
2007/06/13(水) 18:05:00昔のやつからそのまま引っ張ってきたやつのコピペだから、あとは変数名でなんとか理解してくれ。
Screen3.x、Screen3.yにスクリーン上のXY座標。
Screen3.zがマイナスだとカメラの後ろにいるんだっけか。
matWorldが
D3DXMatrixIdentity(&matWorld);
しか処理してねぇけどこれでよかったっけwwwww
0862デフォルトの名無しさん
2007/06/13(水) 18:19:33カメラの位置は自分で指定しているんだからその通りに表示されているだろ。
自分で表示しているのに何で調べられないんだ?
0863デフォルトの名無しさん
2007/06/13(水) 18:24:591+2=3
足す数を変えると答えが変わりますよね?それを簡単に調べられないかということなんですが
答え
普通に計算しろ
0864デフォルトの名無しさん
2007/06/13(水) 18:52:49要するに、3D空間のある座標(x,y,z)にある物体が、
ウィンドウのどの位置(x,y)にあるかのウィンドウ座標を調べたいってことでしょ?
単に座標変換後の座標を調べればよくない?
0865デフォルトの名無しさん
2007/06/13(水) 19:07:07具体的にどのようにすればいいのでしょうか・・・
使う式や関数を教えていただけないですか?
>>864
座標変換後の座標??
0866デフォルトの名無しさん
2007/06/13(水) 19:19:22書いてあるじゃん、スレ読めよ
0867デフォルトの名無しさん
2007/06/13(水) 19:28:57DirectX9でビルドしていたソースをDirectX10でビルドするには場合によって大半の修正をしなければなりませんが、
10のビルドでは修正しなければならないアプリケーションを9で実行可能ファイルにした場合はVistaでも動くのでしょうか。
(= VistaでDirectXのアプリケーションを実行するには必ず10でビルドされている必要があるのかどうか)
0868デフォルトの名無しさん
2007/06/13(水) 20:45:35Vista では DirectX 9 を使ったアプリは動かないから、DirectX を用いた
ゲームやアプリは今のとこカプコムの Lost Planet 以外一切動かないよ。
・・・とか思う?
0869デフォルトの名無しさん
2007/06/13(水) 21:42:203Dゲーは特に突然止まったり落ちたりする。
これがDX10でビルドするとエラーを吐く部分なのかもね。
0870デフォルトの名無しさん
2007/06/13(水) 21:59:240871デフォルトの名無しさん
2007/06/13(水) 21:59:31そこまで酷いってのは、ドライバの問題じゃない?
漏れは洋ゲーのデモとかベンチとか試してるんだけど、
今のとこ 100% 動いてるなぁ。7,8本しか試してないが。
自作のアプリでもこれといって問題ないし。
0872デフォルトの名無しさん
2007/06/13(水) 22:05:33DirectSound3Dも
0873デフォルトの名無しさん
2007/06/13(水) 22:05:430874デフォルトの名無しさん
2007/06/13(水) 22:14:11BBXってサイトいって
検索キーワードに「ワールド座標からスクリーン座標」っていれて検索してみ?
0875874
2007/06/13(水) 22:18:33ただ、ここで出てきたプログラムを何も考えずに実装して「はいおしまい」じゃ進歩がない
結局、お前、何か作ることばっかりあせってるみたいだけど
正直、なにも得られず終わると思う。
何作ってるか知らないけど基本の座標変換もわからず前へ進もうってのが
結果としてすげーまわり道してると思う
多分、ローカル→ワールドの変換も知らないだろうし、スクリーン→ワールドもやっぱりわからないだろう
なにかやるたびにすぐつまずいておもしろくないと思う
0876デフォルトの名無しさん
2007/06/13(水) 22:19:310877デフォルトの名無しさん
2007/06/14(木) 18:07:56MSが推奨するリンク先や提供しているバナーなどあるのでしょうか
0878デフォルトの名無しさん
2007/06/14(木) 18:14:00http://www.microsoft.com/japan/windows/directx/downloads/default.mspx
バナー
http://www.microsoft.com/library/media/1033/windowsvista/images/experiences/homepage/herospot_top_expwinvista2.jpg
0879デフォルトの名無しさん
2007/06/14(木) 18:32:12ありがとうございます。
でもバナーのほうは違いますよね、これ
0880デフォルトの名無しさん
2007/06/14(木) 18:53:46http://www.microsoft.com/sverige/nr/rdonlyres/96153B39-ECA2-4A09-B5A5-791EBD0EE83E/15546/top_directx1.jpg
バナー (400 x 84)
http://www.microsoft.com/japan/users/mobile/017/img17-3.jpg
0881デフォルトの名無しさん
2007/06/14(木) 19:00:09バナーあったんであげる pass:directx
DirectX Download (320 x 63)
ttp://www.uploda.org/uporg854822.gif.html
0882デフォルトの名無しさん
2007/06/14(木) 21:11:230883デフォルトの名無しさん
2007/06/14(木) 21:25:160884デフォルトの名無しさん
2007/06/14(木) 21:40:34横からだが保存した
サンクス
0885デフォルトの名無しさん
2007/06/14(木) 21:45:190886デフォルトの名無しさん
2007/06/16(土) 12:11:57D3DPOOL_SYSTEMMEMで作ったオフスクリーンサーフェス(以下A)から、
D3DPOOL_DEFAULTで作ったテクスチャのサーフェス(以下B)に
UpdateSurface()で転送を行い、直後にBのテクスチャをSetTexture()して
普通に4角形ポリゴンで表示しているのですが、
正しく表示されません。毎フレーム更新しているはずなのですが、
動いている様子もありませんでした。
D3DXCreateTextureFromFile()で読んだテクスチャをSetTexture()すると正しく表示されるし、
D3DXSaveSurfaceToFile()やD3DXSaveTextureToFile()でBのサーフェスやテクスチャを
BMPに保存してみると、毎フレーム更新した内容が正しく反映されています。
SetTexture()で貼り付けるとおかしくなる原因が見当つかないので、
アドバイスいただけないでしょうか。宜しくお願いします
0887デフォルトの名無しさん
2007/06/16(土) 14:22:05Offscreen Surfaceとかってどうやって移植すればいいのでしょう?DX10にはそれらしい物が一切ないんです。
DX9でやっていることは、CreateOffscreenPlainSurfaceで1920x1080のサーフェイスを確保し、
Pixel Shaderでαブレンディングやミキシング、その他編集を行ってから、StretchRectでバックバッファーに転送しPresentを行っています。
DX10は初めてなんですが、なんというか全然違うものになっているような感じです。
0888デフォルトの名無しさん
2007/06/16(土) 15:28:13正しく表示されたのですが、D3DXMatrixScalingを使って拡大したところ枠線がでてきてしまいました。
背景は最大で640*480ドットほどなのでそのサイズのバッファを用意してもいいのかなと思っています。
そこで、
・拡大しても枠線が出ないようにする方法
・背景用のバッファの作成方法
を教えてください。
環境はDirectX9+VisualStudio2005です。よろしくお願いします。
0889デフォルトの名無しさん
2007/06/16(土) 17:00:48前者:グラボによる
後者:テクスチャと同じ
0890デフォルトの名無しさん
2007/06/16(土) 17:02:12そこまでわかってて聞きにくる必要があるわけねー
てめー調べるのが面倒臭いから誰かにやらせるつもりできただろ
この糞やろー
手間を惜しむならゲームなんて作るのやめろ馬鹿
0891デフォルトの名無しさん
2007/06/16(土) 17:17:18ネトゲプレイのためにDirectX9,0cを一応インストールした(つもり)なのですが、
本当にインストールできたのかどうかすら分かりません。OTL
なんかいい確認方法かなんかありません?
馬鹿にされるのは承知の上で。
0892デフォルトの名無しさん
2007/06/16(土) 17:22:23コントロールパネル→プログラムの追加と削除
の一覧にあるはず
9.0cならDecember 2004
ってでるかも、たしか
0893デフォルトの名無しさん
2007/06/16(土) 17:32:07なぜそのネタでム板のDirectXスレなんだ?ってのはおいといて
「ファイル名を指定して実行」でdxdiagでもやればよろし
0894デフォルトの名無しさん
2007/06/16(土) 17:32:28ひとまず返答ありがとうございます。
で、確認してみたところありませんでした(ノ∀`)
DirectXのダウンロードページで続行クリック
↓
正規のWindows(?)をダウンロード
↓
DirectXRuntimeってのを実行
↓
DirectXセットアップウィザードが出たので、使用承諾契約に同意して完了
という手順まで踏んだのですが、ここからどうすればダウンロードできるのかがまったく分かりません・・・
すみませんが、誰か手順を詳しく教えてくれないでしょうか?
勿論馬鹿にされるのは承知の上で
0895デフォルトの名無しさん
2007/06/16(土) 18:03:11ここプログラミング板だからランタイムは板違い
0896デフォルトの名無しさん
2007/06/16(土) 19:10:11馬鹿にするのは遠慮しとくが、
ここはC/C++を使ったDirectXプログラミングについて扱うスレだ。
なんでスレ違い、もっと言うと板違い。
他所で質問した方が的確な答えが返ってくるよ。
0897888
2007/06/16(土) 19:42:21テクスチャ作ってそこに書き込めばいいのですね。
テクスチャに書き込む方法調べてみます。
ありがとうございます。
>>890
>>1にのっとり、質問する資格があると判断して質問しました。
それにしても暑い日が続きますね。
0898デフォルトの名無しさん
2007/06/16(土) 20:10:45自分のが正しくスレを使ってるんだぞってアピールだろうけど
正直、てめーみたいな糞は何を作ろうとしても駄目だと思う
0899デフォルトの名無しさん
2007/06/16(土) 20:19:55だったらはじめからチップなんて使うなよw雑魚w
同じがもんがダブるんだったらpngで敷き詰めておいても圧縮がかかるから
サイズは増えなかったりするw
0900デフォルトの名無しさん
2007/06/16(土) 20:20:04お前、キモいから失せろよ。
スレタイも読めないのか?
0901デフォルトの名無しさん
2007/06/16(土) 20:49:34そんなに褒めなくていいぜw
0902デフォルトの名無しさん
2007/06/16(土) 21:10:300903デフォルトの名無しさん
2007/06/16(土) 21:16:46どのレスとどのレスを自演だと思っているの?
0904デフォルトの名無しさん
2007/06/16(土) 21:34:440905886
2007/06/17(日) 02:39:44CreateTexture()の引数のLevelsに0を指定していた為
自動的にミップマップが作られてて、レベル0にしか書き込んでなかった為
いつもレベル1以上のサイズで描画していたからでしたヽ( ´・ω・)ノ
Levelsに1を指定したらうまく表示できました。
0906デフォルトの名無しさん
2007/06/17(日) 05:34:13DX9でのCreateOffscreenPlainSurface→(Pixel Shader)→StretchRect→Presentを
DX10で同等の処理を行うためには一般的にどのような方法があるかヒント頂けませんか?
SDKを見た感じだと余りにもShaderや3Dモデルに傾斜しすぎている見たいでDDrawやDX9までの知識と全然違うみたいです。
0907デフォルトの名無しさん
2007/06/17(日) 06:58:320908デフォルトの名無しさん
2007/06/17(日) 14:23:24ビデオカードやGPUを使って計算したりしてるんですか?
0909デフォルトの名無しさん
2007/06/17(日) 14:25:530910デフォルトの名無しさん
2007/06/17(日) 14:44:370911デフォルトの名無しさん
2007/06/17(日) 14:45:360912デフォルトの名無しさん
2007/06/17(日) 16:23:54だから学校の教師は自分がそうされると激怒するのだ。
0913デフォルトの名無しさん
2007/06/17(日) 18:23:41んで
計算してたからなんだっていうの?
してなかったからなんだっていうの?
なんなの?
0914デフォルトの名無しさん
2007/06/17(日) 18:40:210915デフォルトの名無しさん
2007/06/17(日) 18:44:15何が「もう」だ。三回も言いやがって。
副詞のリフレインは頭が悪く見えるぜ。
0916デフォルトの名無しさん
2007/06/17(日) 22:16:320917デフォルトの名無しさん
2007/06/17(日) 22:23:55ショウ:GPUで支援
インプット:デバイス内のチップで処理後に入力
プレイ:蟹さんががんばってます
入門書の最初のほうに書いてあるかも
あとパーツのマニュアルとか・・・
GPU使うかどうかはDirectXがグラフィックのために自動的に使う以外は
プログラマの裁量次第
ミドルウェアでGPU使うこともあるけど無料のやつでは見たことないなぁ
0918デフォルトの名無しさん
2007/06/17(日) 22:30:26PS4.0を使うことが最大の目的なら、その目的のために自分が先駆者になれ。
0919デフォルトの名無しさん
2007/06/18(月) 04:02:30ってことは、DX10にはOffscreen Plain Surface見たいな物はなく、たとえただ単にサーフェイスに
書き込みを行いたいだけでもテクスチャーとして扱うしかないという事ですか?
初心者質問スレなのに先駆者になれとか全然スレのタイトルと違う感じが、、、
どなたかDXグルの人でDX10でOffscreen Plain Surfaceを扱う術をご存知の方いらっしゃいませんか?
0920デフォルトの名無しさん
2007/06/18(月) 06:57:46ただのバッファのことちゃうの?
0921デフォルトの名無しさん
2007/06/18(月) 07:02:510922デフォルトの名無しさん
2007/06/18(月) 07:18:39は?
0923デフォルトの名無しさん
2007/06/18(月) 07:29:500924デフォルトの名無しさん
2007/06/18(月) 07:35:45DX9のOffscreen Plain Surfaceって知らんのか?
知らないのにこのスレで何しとるん?
0925デフォルトの名無しさん
2007/06/18(月) 07:45:48知らないから、聞いているんじゃないの?
0926デフォルトの名無しさん
2007/06/18(月) 08:13:15その用途がよくわからん
アレって何に使えるんだっけ?
テクスチャはまあテクスチャとして使えるけど
サーフェイスってなんにもつかえねーじゃん
メモリデバイスコンテキストっていうか、画像のRGBを詰め込んだバッファ以上の働きすんの?あれ
つまり何がいいたいかというといらねーからなくなったんじゃねーの?
って感じ
0927デフォルトの名無しさん
2007/06/18(月) 08:15:55まともにプログラムを組んだことがないのが丸わかり。
そんな疑問を持つ前に手を動かせよ、どうせ頭が悪いんだから考えたって無駄。
0928デフォルトの名無しさん
2007/06/18(月) 08:22:15だからこそ、テクスチャを貼るとポリゴンに画像が表示される
D3Dで画像を保持するリソースはサーフェスだけ。
間違ってもテクスチャそのものではない。
0929デフォルトの名無しさん
2007/06/18(月) 08:27:270930デフォルトの名無しさん
2007/06/18(月) 08:29:380931デフォルトの名無しさん
2007/06/18(月) 08:35:44しかもせっかくもらった回答文を真面目に読んでいないことが見え見え
サーフェスとは何かテクスチャとはどういう関係か、なんて
初心者向けの入門やらヘルプやら幾らでも資料あるのに。
以下スルーでお願いしますね〜
0932デフォルトの名無しさん
2007/06/18(月) 09:03:52インデックスバッファーの学習をしているのですが、
インデックスバッファーには16ビット用と32ビット用があるみたいなのですが、
例えば16ビット用だったら、65536個の頂点まで使えるということでしょうか?
それとも、65536個のインデックスを使えるということなのでしょうか?
まだあまり複雑な処理はやらない(できない)ので問題にならないようなきもしますが、
気になったので。
0933デフォルトの名無しさん
2007/06/18(月) 11:04:17>それとも、65536個のインデックスを使えるということなのでしょうか?
インデックスバッファの要素が16bitという意味なので正解は前者。
インデックスバッファの要素数自体には制限は無いよ。
0934デフォルトの名無しさん
2007/06/18(月) 14:19:25残念ながら俺もDX10はこれからって所なんで直ぐには回答できないが、同じく興味はある。
ぱっとSDKを見た感じだと残念ながらオフスクリーンサーフェイスのようなものはもはやDX10にはなさそう。
多分だけど2Dテクスチャーってのを使うことで同じようなことが同じようなことが出来そうだけど、
output managerとかraster stageとか、ミップマップ、テクスチャー、その他もろもろ、
DX9までは一切考える必要のなかったことまで一応理解して設定しないといけないみたい。
面倒だけどしょうがないかな?
もっと他に良い方法があったら教えて欲しい。
0935デフォルトの名無しさん
2007/06/18(月) 15:00:23未だに質問の内容がよくわからんのだけど
CreateOffscreenPlainSurfaceで作ったサーフェイスって何に使ってるの?
Pixel Shaderの入力なの? 出力なの?
>>919 を見る限り出力っぽいけど、
レンダーターゲットサーフェイス作るなら普通CreateRenderTarget使うよね。
それともレンダーターゲットは別にあってGetRenderTargetDataで取り込んでるの?
ちなみに自分の場合、DX9の時代からいつもレンダーターゲットテクスチャとして作っていた。
んで、後で3Dオブジェクトに貼ったりPixel Shaderに再投入したりするための仕組みを
一通りつくっちゃったので、「たとえただ単にサーフェイスに書き込みを行いたいだけでも」
と言われてもあんまり切実さが伝わってこない。
てかStretchRect使うのは邪道だと思ってるし。
0936デフォルトの名無しさん
2007/06/18(月) 15:30:02恐らくだが、画像処理ソフトかその類なんだろう。
例えば、1024x768の画像をオフスクリーンサーフェイスに読み込み、
それに対してPixel Shaderで処理を行い、
StretchRectでウィンドウの大きさに設定されているバックバッファーに転送して、
そのままPresentで表示しているだけなんじゃね?
ビデオとかドロー系の2Dソフトだとそういう処理を良く見かけるけどな。
そういったソフトだと3Dとかテクスチャーの概念は一切出てこないから。
StretchRectって2D系だと良く使うよ。
一番典型的なのはアスペクト比を変更する場合とかかな?
720x480の動画を16:9でワイドスクリーンに1920x1080に表示するとか。
このスレは3D系の人が多いと思うけどスレタイの通りDirectXだから2Dも考えないとな。
0937デフォルトの名無しさん
2007/06/18(月) 15:40:22>それに対してPixel Shaderで処理を行い、
割と長いことDirectX使ってるけど
CreateOffscreenPlainSurfaceで作ったサーフェイスを
Pixel Shaderの入力に使う方法って無いと思ってた。
実はできるの?
一瞬D3DXFillTextureTXのことかと思ったけど
これも対象はテクスチャだしなぁ。
0938デフォルトの名無しさん
2007/06/18(月) 16:54:58あ、確かに駄目かも。
って事は、オフスクリーンサーフェイスをCPUで処理するためかな?
0939デフォルトの名無しさん
2007/06/18(月) 19:25:12>>887と>>906によるとDX9でOffscreenPlainSurfaceに対してPixelShaderを使ってるような口ぶりなんだよな。
0940デフォルトの名無しさん
2007/06/18(月) 22:05:59質問者は実現したいことを書け
「DirectX10でOffscreenPlainSurfaceを使いたい」
ってのは実現したいことじゃなくてあくまで方法止まり
これにとらわれているより直接的な方法を聞いてしまったほうが早い
(例:ムービーを再生したい、ピクセルシェーダで描画したい等)
どうしてもこの方法でいかなきゃいけないときは
過去の資産をなるべく使いたいので〜とか
そういう理由をちゃんと書いてくれ。無駄に荒れるだけ。
いくら質問掲示板だって入力したら出力がでるわけじゃないんだ
ディスプレイ越しでわかりにくいですが相手は人間だよ
社会人として恥ずかしくない行動を心がけよう
0941デフォルトの名無しさん
2007/06/18(月) 22:10:12長すぎる。却下。
つかこのスレを見ているのは社会人だけじゃないぞ
勝手に限定すんな
0942デフォルトの名無しさん
2007/06/18(月) 22:12:53霊長類として恥ずかしくない行動を心がけよう
0943デフォルトの名無しさん
2007/06/18(月) 22:13:41勝手に限定すんな
0944デフォルトの名無しさん
2007/06/18(月) 22:14:33いや、手短にいうとこれ↓だけ
「質問者は実現したいことを書け」
0945デフォルトの名無しさん
2007/06/18(月) 22:23:39このスレは社会人はともかく、霊長類ですらない何かも読んでいるのか・・・
あなおそろしや
0946デフォルトの名無しさん
2007/06/18(月) 23:06:52ラスタオペレーションを使った描画(描画する画像のRGB値反転など)はどうやったらいいですか
ピクセル単位でRGB値をいじるにはどうしたらいいですか
0947デフォルトの名無しさん
2007/06/18(月) 23:27:57ステートを工夫すればアルファブレンディングで似たようなことは可能。
ピクセルを直にいじるには描画先のサーフェスをロックして書き込み。
だがそういう用途をメインに使うことを考慮して設計されているわけではないので効率は悪いし
環境や条件によっては不可能な場合もある
0948デフォルトの名無しさん
2007/06/19(火) 00:40:27繰り返し出てくるけど、まともに初心者向きに答えている人いないね。
>>940
自分自身で勝手に仮定立てて勘違いしているのお前かもな。
スレタイ嫁。初心者質問だぜ?
>「DirectX10でOffscreenPlainSurfaceを使いたい」
立派に実現したいことと思うけど?
>>946
CPUとGPUのどちら側から弄りたいのか?それで話がかなり変わるから。
0949デフォルトの名無しさん
2007/06/19(火) 00:42:30じゃあ、お前が教えてやれよw
何もしないで偉そうにしゃべってんじゃねー
改善案出しただけだろ
初心者が誰も使ってないようなサーフェイス使おうと頑張ってるところで俺は止めてやるがな
0950デフォルトの名無しさん
2007/06/19(火) 02:08:07お前が出て行くべきだと思うけどな。
少なくとも>948は>946の話を聞いてるし。
0951デフォルトの名無しさん
2007/06/19(火) 02:29:100952デフォルトの名無しさん
2007/06/19(火) 03:09:09安価打てよ
それだと誤爆と思われるぞw
0954デフォルトの名無しさん
2007/06/19(火) 07:37:520955デフォルトの名無しさん
2007/06/19(火) 07:42:430956デフォルトの名無しさん
2007/06/19(火) 07:46:26お前は誰の質問にも答えてないからお前が一番出てけばいいと思うよ
人のレスばかりすくいとって自分のしたい流れにもってきたいのがミエミエ
0957デフォルトの名無しさん
2007/06/19(火) 07:53:26「DirectX10でOffscreenPlainSurfaceを使いたい」
こういう↑意味の無い(と思われる)質問ってどうよ?
すげー無駄だと思わねー?
まず、なにがしたくてこんなことしてるのかからはっきりしてくれないと
上のレス群みればわかるように無駄に荒れる
もし、なにか別の目的のためにたまたまそいつがみつけた方法がこれであったのなら
別の手段を考えたほうがいいと思う。初心者スレでもあるわけだし
判断のミスも考慮したい
0958デフォルトの名無しさん
2007/06/19(火) 14:12:57てか、荒れている原因は別だろ?
回答がさくっと出てこない→なんでそんなことする必要あるんだ?→質問者が悪い。っていうパターンに見える。
>>919
質問内容はDX9にあるOffscreenPlainSurfaceと同等の処理をDX10でも行う方法を知りたい。
行間を読むと、DX9で行っている2DのコードをDX10に移植したい。じゃないか?
もしそうだとすると、2Dテクスチャーを使えばいいよ。
つまり、DX10からはDX9のOffscreenPlainSurfaceに該当するものはなくなっちゃいました。
DX9だとパイプラインを全く考えずに2D用のバッファーを扱えましたが、
DX10だと一応テクスチャーを意識して設計する必要がある。
ま、Winプログラム組む時に初期化やら呪文やらあるのと同じようにちょっとしたコードが必要になる。
レンダーターゲットビューとかアウトプットマネージャーに設定とか、ビューポート等の呪文が必要。
面倒だけど汎用性と効率のために設計されてからしょうがないと思って諦めてくれ。
0959デフォルトの名無しさん
2007/06/20(水) 01:01:08俺はこんな回答を返す奴が良くないと思う。
わからんなら黙っとけと、俺みたいによ。
ちなみにオフスクリーンサーフェイスは使うよ。
デバイスのCAPSに影響されず、必ず作成が成功するのは魅力だ。
当然PixelShaderのdestには使えないが、質問者は端折っただけだろう。
んで、DX10はCAPが無くなったと聞く。
なら、オフスクリーンサーフェイスが無くなってもしかるべきかもな。
0960デフォルトの名無しさん
2007/06/20(水) 01:29:49それじゃ進歩がねーじゃん
このスレだって質問者のためだけにあるわけじゃねーし
これこれこういう風に考えて、これを使うという結論に至りました
ってちゃんと言えれば、「おおなるほど、でもね〜orじゃあ〜」って繋がるわけだし
質問者も回答者も黙ってるのは一番よくないと思う。
ちょっとでも知ってたり、もしかして〜みたいなことやろうとしてる?っていうところから
会話ってはじまるんだと思う
質問者に完璧な質問を望んでいないのと同様、回答者にも完璧な回答を求められても困る
だいたい全部ピンポイントで返せるわけがない
そこらへんは人が人に頼む以上ある程度の受け答えは覚悟しないと・・・
そういうのが我慢ならないなら、全部自分でなんとかすりゃいーじゃん。人になんかたよんないで。
質問者、回答者双方ともなんも答えない状況ってのは俺は回避したいと思う
一応初心者スレなわけだし、一般的なやり方ってのを知りたい奴が質問にくるんだと思う
初心者だから、いま自分が詰まってるところを局所的に質問してしまうんだけど
本当はこういうやり方が一般的で君のやり方はちょっと一般的でないとかそういう場面のが多いと思う
そこで「なんでそんなことしてんの?」って聞いてくれる状況は俺はありがたいと思うが、どうだろうか?
0961デフォルトの名無しさん
2007/06/20(水) 01:53:02そんな細かいことはフェイスツーフェイスの時だけにしてくれ。
スレでいちいち細かいこと書かれたら読むほうもウザイ。
それよかピンポイントが2hらいしいと思う。
お前みたいなやつはここには合わないからリアルでリアル人間に煙たがれてくれ。
>>958
>>959
その回答で質問者も納得だろうね。別に返事をもらわなくても分かるだろうし。
0962デフォルトの名無しさん
2007/06/20(水) 07:11:48それはお前のニュアンスだけじゃん
0963デフォルトの名無しさん
2007/06/20(水) 07:36:04掲示板と実際に顔合わせて話すのとで何の違いがあってそんなこと言ってるの?
面倒だろうがどうだろうが通じるわけないじゃない
0964デフォルトの名無しさん
2007/06/20(水) 07:51:20駄目だと思うけどなぁ。
0965デフォルトの名無しさん
2007/06/20(水) 09:04:02>当然PixelShaderのdestには使えないが、質問者は端折っただけだろう。
いや、だからsrcに使うのも無理じゃね? という話を上に書いたとおりなんだが。
質問者はあたかもDX9ではできていたかのように書いているけど
仕様を良く読めばそれはもともとDX9でもできないことのはずで、
微妙に釣りっぽい気がしてきたのでしばらくスルーしてた。
0966デフォルトの名無しさん
2007/06/20(水) 10:42:17ここほどではないが、くだすれもたまにそうなるし。
初心者はわからないから、おかしい質問だってするのに、初心者丸出しの質問に
大しては、まず罵倒するか自分の意見を押しつけるだけで的確なアドバイスを
する空気すらないもんな。
この分だと、しっかり入門・初心者・素人と細かく分けないと、本当に始めたばかりの
初心者とか、3Dの知識が乏しい人間とかはまず問題解決できないよな。
大抵こう言うと、金もらっているわけじゃないのだから、そこまで親切にする必要はないとか
言うのいるが、なら黙ってろと思うし。
今回のOffscreenPlainSurfaceに関しては、随分時間が掛かって質問自体が少しおかしい
と言うことが説明されているが、初心者にはそんなこと言われなければわからない。
今回に限らず、仕様や関係まで把握してプログラム組めるようになればそれは初心者卒業レベルだと
思うぞ。
> 仕様を良く読めばそれはもともとDX9でもできないことのはずで
今回のこのグダグダぶりはそれだけが原因じゃないだろうけどね。
一番最初にそれを指摘すれば良いだけだったんだし。
0967デフォルトの名無しさん
2007/06/20(水) 10:52:37>初心者とか、3Dの知識が乏しい人間とかはまず問題解決できないよな。
問題解決の場所は何も2chだけじゃないんだが。
0968デフォルトの名無しさん
2007/06/20(水) 10:58:17>4.余計な雑談は不要ですよ
0969デフォルトの名無しさん
2007/06/20(水) 11:34:08まぁそろそろスレも途切れるしことだし、
質問するタイミングがつかめない他の初心者さんはもう少し待っててね☆
0970デフォルトの名無しさん
2007/06/20(水) 12:17:280971デフォルトの名無しさん
2007/06/20(水) 14:00:22CreateRenderTarget()で作成したターゲットサーフェス(≠テクスチャ)に対して
描画したデータをCPU側で取得したいときに間接的に必要になる。
D3DPOOL_DEFAULTのレンダーターゲットは直接ロックはできないから、
GetRenderTargetData()でシステムメモリにコピーするときにOffscreenPlainSurfaceを介する。
http://msdn2.microsoft.com/en-us/library/bb174405.aspx
The destination surface must be either an off-screen plain surface
or a level of a texture (mipmap or cube texture) created with D3DPOOL_SYSTEMMEM.
まあ、これはDX9をある程度使い込んでる人には常識だよね。
もしこれ以外にOffscreenPlainSurfaceの有効な活用法があるなら是非教えてほしい。>>959
0972デフォルトの名無しさん
2007/06/20(水) 14:24:250973デフォルトの名無しさん
2007/06/20(水) 14:40:36俺は>>971の用法ではヘルプの指示どおりD3DPOOL_SYSTEMMEMで作ってる。
一方、>>887のようにStretchRectでオフスクリーン→デバイスの方向に転送する
場合にはD3DPOOL_DEFAULTで作っておかないと駄目らしい。ややこしいな・・・。
D3DPOOL_SCRATCHはDX8との互換性のために残してるだけじゃないかね。
>>887の「Pixel Shaderでαブレンディングやミキシング、その他編集を行ってから」は
いまだに気になるところ。
0974デフォルトの名無しさん
2007/06/20(水) 14:59:45単純にバックバッファを VRAM に持ちたくないってことなんじゃないだろうか。
0975デフォルトの名無しさん
2007/06/20(水) 15:11:51Pixel Shader云々のくだりはCPUで同等の処理をやってるってことか?
0976デフォルトの名無しさん
2007/06/20(水) 17:14:11OffscreenPlainSurfaceがDX10で見つからないんだけどって言うことだけでしょ?
Pixel Shaderの部分はDX9だろうがDX10だろうがテクスチャー経由にする必要があるから
別に>887はそこに関しては話を端折ったんだろ?
OffscreenPlainSurfaceに関しては>958が的確に回答しているからもうよいのでは?
0977デフォルトの名無しさん
2007/06/20(水) 20:34:55http://www.4gamer.net/news.php?url=/news/history/2007.06/20070620113933detail.html
0978デフォルトの名無しさん
2007/06/20(水) 21:15:400979デフォルトの名無しさん
2007/06/20(水) 21:30:01まあ実はSDKも出てるんだけどな。
0980デフォルトの名無しさん
2007/06/20(水) 21:53:120981デフォルトの名無しさん
2007/06/20(水) 23:01:31D3DXMatrixIdentity(&m_view);
// カメラからの距離
const float fDistance = 0.1f;
// カメラの全計算を入れる
D3DXVECTOR3 vec3From;
D3DXMATRIX tmp;
// 回転
static float roty = 0.04f * (float)PAI / 180.0f; // 相対的な回転角度
if ( button == 3 )roty += 0.05f;
if ( button == 4 )roty -= 0.05f;
D3DXMatrixRotationY(&tmp,roty);
// 上下左右移動
D3DXVECTOR3 vec3NormalizeDir( x,y,z+100); // 正規化された対象からの向き
D3DXVECTOR3 vec3At(x,y,z); // カメラの対象をSet
0982デフォルトの名無しさん
2007/06/20(水) 23:02:19D3DXVec3TransformCoord(&vec3NormalizeDir,&vec3NormalizeDir,&tmp);
// 上記計算を格納
vec3From = fDistance * vec3NormalizeDir + vec3At;
// カメラの上をSet
D3DXVECTOR3 vec3Up(0.0f,1.0f,0.0f);
// カメラ位置を設定
D3DXMatrixLookAtLH(&m_view,
&vec3From, // カメラの位置
&vec3At, // カメラの方向を向ける点
&vec3Up // カメラの上の方向
);
// 生成したカメラを反映
m_pD3DDevice->SetTransform(D3DTS_VIEW,&m_view);
のようにしてるんですが、カメラを回転させた後、カメラが向いている方向にズームしたいんですが
ぜんぜん別の方向にズームしてしまうんです
どうやって解決してるんでしょうか・・・m(_ _)m
0983デフォルトの名無しさん
2007/06/20(水) 23:03:50つまり回転しても常に注視点のほうへ動いてもらいたいんです
0984デフォルトの名無しさん
2007/06/20(水) 23:22:51まずはD3DXに頼らずビューを動かすところから始めましょう。
0985デフォルトの名無しさん
2007/06/20(水) 23:26:32わからないやつは書き込まないでください
お前の意見は聞いてません
さぁ、誰かわかる人教えてください
0986デフォルトの名無しさん
2007/06/20(水) 23:44:130987デフォルトの名無しさん
2007/06/20(水) 23:47:080988デフォルトの名無しさん
2007/06/20(水) 23:50:46ttp://pc11.2ch.net/test/read.cgi/tech/1166915506/
くだすれDirectX(超初心者用) part.2
ttp://pc11.2ch.net/test/read.cgi/tech/1173535400/
【簡単にゲーム作成言語】BASIC+DirectX=LGP
ttp://pc11.2ch.net/test/read.cgi/gamedev/1034694683/
[DirectX][.NET][XBOX360][C♯C#] XNA Game Studio
ttp://pc11.2ch.net/test/read.cgi/tech/1159367275/
鬱だ氏のう DirectX (Part 16)
ttp://pc11.2ch.net/test/read.cgi/tech/1133007002/
DirectX10詐欺 被害者の会
ttp://game12.2ch.net/test/read.cgi/gamef/1177184432/
【PureVideo】DirectX Video Acceleration【AVIVO】
ttp://pc11.2ch.net/test/read.cgi/tech/1178285897/
DirectX10スレ
ttp://pc11.2ch.net/test/read.cgi/win/1172751913/
[詳細不明]DirectX9.0c日本語リリース[人柱]
ttp://pc11.2ch.net/test/read.cgi/win/1090985428/
windows XPでDirectX 10が使えるらしい!?
ttp://pc11.2ch.net/test/read.cgi/jisaku/1177234545/
DirectX総合スレ (Part7)
ttp://pc11.2ch.net/test/read.cgi/gamedev/1179516297/
DirectXとOpenGL、ゲーム作るならどっち?
ttp://pc11.2ch.net/test/read.cgi/gamedev/1009941920/
Managed DirectX vol.2
ttp://pc11.2ch.net/test/read.cgi/tech/1061285378/
出やがったなDirectX8.1
ttp://pc11.2ch.net/test/read.cgi/win/1005383406/
DirectXのサンプルをしゃぶりつくす!
ttp://pc11.2ch.net/test/read.cgi/gamedev/1032657642/
2D!!のDirectXをやってみるかもな
ttp://pc11.2ch.net/test/read.cgi/gamedev/1005133911/
0989デフォルトの名無しさん
2007/06/21(木) 00:04:51http://pc11.2ch.net/test/read.cgi/tech/1182351826/l50
0990デフォルトの名無しさん
2007/06/21(木) 00:19:31(・ω・`)乙
これはポニーテールで勘違いがうんたらかんたら
0991デフォルトの名無しさん
2007/06/21(木) 00:20:350992デフォルトの名無しさん
2007/06/21(木) 00:25:11>>981←この明らかになんもわかってねぇ奴どうすんの?
ここできても1週間もすりゃ飽きてやめてそー
0993デフォルトの名無しさん
2007/06/21(木) 00:49:10ヒント:画角とはなにかを調べよう
0994デフォルトの名無しさん
2007/06/21(木) 01:01:44できた
ありがとよブタw
0995デフォルトの名無しさん
2007/06/21(木) 01:05:18お前ができるわけないだろw
0996981
2007/06/21(木) 02:17:340997デフォルトの名無しさん
2007/06/21(木) 03:55:220998デフォルトの名無しさん
2007/06/21(木) 13:55:400999デフォルトの名無しさん
2007/06/21(木) 13:57:501000デフォルトの名無しさん
2007/06/21(木) 13:57:5210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。