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

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

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

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

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

前スレ 【C++】 DirectX初心者質問スレ Part11 【C】
http://pc8.2ch.net/test/read.cgi/tech/1159456184/
2デフォルトの名無しさん:2006/12/24(日) 08:12:18
【関連サイト】

MSDN 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
3デフォルトの名無しさん:2006/12/24(日) 08:12:59
We wish you a Merry Christmas.
4デフォルトの名無しさん:2006/12/28(木) 21:08:38
Alt+Enterでフルスクリーンにできるゲーム作ってるんだが、
一回目起動して普通の状態からAlt+Enterでフルスクリーンにしようとすると
スプライトのOnLostDeviceので例外が発生する。
そのまま描画させると一応表示はされるんだがたまに表示がおかしくなる。
二回目は例外も発生せずに普通に表示される。

D3DXFontを使ってからおかしくなった。

D3DXFontもちゃんとOnLostDeviceしてる。
OnResetDeviceも両方やってる。

原因に心当たりのある方いませんか?
5デフォルトの名無しさん:2006/12/28(木) 21:12:27
環境を忘れた
スマソ

Windows Vista RC1(XP Proでやったときも起こった)
Visual C++ 2005 Academic
NVIDIA GeForce 6600
DirectX 9.0 2004 Dec
6デフォルトの名無しさん:2007/01/04(木) 03:26:13
D3DXFont/D3DXSprite関連の解決方→そんなの使うな。自分で作れ。
7デフォルトの名無しさん:2007/01/04(木) 07:02:57
>>4
お手軽フルスクリーン切り替えは鬼門
自分で全部面倒を見る覚悟がないとバグ地獄に突入する
8デフォルトの名無しさん:2007/01/06(土) 22:37:00
LPD3DXFILEを使用するXファイルの読み込みについて質問です。

LPDIRECTXFILE系がdeprecatedになっていたので、
新しい方のLPD3DXFILEを使用して読み込む方法を試しています。

現時点で、ファイルに含まれるテンプレートGUIDをチェックして
各データを取得には成功しています。
しかし、tiny.xを読み込ませたときにおかしな挙動になりました。

TID_D3DRMMesh の場合が2度存在し、含まれるメッシュが2つという判断をしてしまいます。
従来コードと新しいコード、2つを記載しますので、アドバイスよろしくお願いします。
(どちらもEnumオブジェクトを生成した後の処理とお考え下さい)

9デフォルトの名無しさん: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();
  }
 }
}
10デフォルトの名無しさん: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();
 }
}
11デフォルトの名無しさん:2007/01/08(月) 12:24:20
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□偽装派遣先の社員の意見にはたとえ間違っていても反対しない
□偽装派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□偽装派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□偽装派遣先社員より自分の生涯収入が低いのは当然だ
□偽装派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ偽装派遣先に常駐したい
12デフォルトの名無しさん:2007/01/08(月) 12:38:02
全問正解したのでなにかください
13デフォルトの名無しさん:2007/01/08(月) 15:40:37
つ VisualStudio .NET 2002
14デフォルトの名無しさん:2007/01/08(月) 15:41:47
>>11
早く自分の会社へ帰れ!!
でないと人間腐るぞ!
15デフォルトの名無しさん:2007/01/08(月) 18:46:13
え?えっ…?
何これ?デジャビュ?
16デフォルトの名無しさん:2007/01/08(月) 20:34:50
>>8-10
俺も昔そういうのに悩まされて、Xファイルを使うのやめて自作フォーマットにした。
17デフォルトの名無しさん:2007/01/09(火) 01:26:02
Xファイルの仕様とかインタフェース覚えるよりフォーマット自作した方が
大分早い気がする俺ガイル
18デフォルトの名無しさん:2007/01/09(火) 09:58:20
ツールどーすんの
19デフォルトの名無しさん:2007/01/09(火) 20:34:09
こんばんは、探しても探しても見つからないのでこちらで質問させて頂きます。

私は最近、DirectX8でゲームを作りたいと思い
HPを参考に勉強しているのですが、作り始めてすぐに壁にぶち当たってしまいました。
それは、d3dx8.hというファイルがDirectX9 SDKに入っていないのです。
参考にしているHPでは上記のファイルがインクルードされていて、どうしてもうまくいきません。

私のグラフィックボードはGeForceTi4800なので、DirectX8でどうしても作りたいのです。
どなたかd3dx8.hを手に入れる方法、またはd3dx8.hが無くても代わりにこれをインクルードすればいい、などの
解決法を教えてもらえませんか?お願いします。

失礼しました。
20デフォルトの名無しさん:2007/01/09(火) 20:47:15
>>19
それはさ。DirectX8なんかで作ろうと思ったのが運の尽きってことさw
あと、なんか勘違いしてない?
特にこの一文

>私のグラフィックボードはGeForceTi4800なので、DirectX8でどうしても作りたいのです。

「GeForceTi4800なので、DirectX8でどうしても作りたい」とか言ってるけど全く意味不明。
どうしてGeForceTi4800だとDirectX8で作らないといけないの?
あらかじめいっとくけど関係ないんだけど。
素直にDirectX9で作ればOKと言っておく。

このままDirectX8で作りたいっていうならこんな程度のことも自分で解決できないようじゃ。
無くなったヘッダーやらライブラリやらヘルプやらサンプルやら自分でかき集めてこれないだろ?
素直にやめとけと思う。
21デフォルトの名無しさん:2007/01/09(火) 21:19:46
DirectX9で作ればおkなのですね。
GeForce4はDirectX8世代だったことから
DirectX9のプログラムは正常に動かないのではないかと思ってました。
ご返答ありがとうございました。
22デフォルトの名無しさん: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
23デフォルトの名無しさん:2007/01/10(水) 23:38:41
ネットゲームのチートスレとかの方が詳しい人がいるんじゃないかな
24デフォルトの名無しさん:2007/01/14(日) 00:45:27
質問させていただきます。

1フレームの間に1つの同じ三角ポリゴンを同じ座標に500回描画した時
(DrawIndexedPrimitiveを1フレームで500回呼んだ)

500ポリゴンのメッシュを描画した時を比べてみたら、
同じ500ポリゴンを描画しているはずなのに前者はフレームレートが
極端に下がってしまいました。

同じ座標に同じ三角形を重複して描画してしまうと
遅くなってしまうものなんでしょうか?
考えられる原因を教えてもらえないでしょうか?
よろしくお願いします。
25デフォルトの名無しさん:2007/01/14(日) 07:21:27
1)秋葉原に1回行って、500本のエロゲーを買う。
2)秋葉原に500回行って、都度一本づつエロゲーを買う。
2624:2007/01/14(日) 13:09:23
>>25
DrawIndexedPrimitive、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と切り替えても
遅いのは変わらない。

いろいろ試してみましたが、どうも原因の検討がつきません。
どなたか原因をご存知の方はいらっしゃらないでしょうか?
よろしくおねがいします。
27デフォルトの名無しさん:2007/01/14(日) 14:00:03
1)画用紙に小さい四角を500回描く
2)画用紙いっぱいの四角を500回描く

絵の具をたくさん消費するのはどっち?
28デフォルトの名無しさん:2007/01/14(日) 15:20:21
>>27
なるほど。ポリゴンの塗りつぶし処理も結構手間が
かかっていると言うことですね。

つまり、ポリゴン数だけでなく、
画面に表示されるポリゴンの大きさによっても、
実行スピードが変わると言う認識で良いと言うことですよね?
29デフォルトの名無しさん:2007/01/16(火) 02:36:14
フルスクリーン時のデバッグって、皆さんどうやってます?
デバッガが使えなくて激しくダルイのですが。
30デフォルトの名無しさん:2007/01/16(火) 04:04:20
マルチスクリーン
31デフォルトの名無しさん:2007/01/16(火) 07:47:53
>>22
亀なうえに解決法は書けませんが、おそらくDirectInputで
マウス入力を取得するときに実マウスカーソルを無効にする方法と
して、そのアプリがマウス座標を画面外に飛ばしてるんじゃないでしょうか?
32デフォルトの名無しさん:2007/01/16(火) 23:03:47
>>29
リモートデバッガを利用する。
33デフォルトの名無しさん:2007/01/16(火) 23:53:18
自宅では電気代が怖いよね
34デフォルトの名無しさん:2007/01/17(水) 03:57:24
>>30,32
機材の必要の無い方法はないもんですか?
35デフォルトの名無しさん:2007/01/17(水) 04:47:31
8以降はフルスクリーンかウィンドウかなんてあまり気にする必要ないから、
俺はデバッグ時は基本的にウィンドウモードにしてるよ。
36デフォルトの名無しさん:2007/01/17(水) 19:43:11
5以前はデバッガが効かなかった。
37デフォルトの名無しさん:2007/01/20(土) 13:12:18
若いの オラが村では派遣労働の問題を口にしちゃなんねーだ
お前さんはまだわけぇから言いたいこともあるべぇ
だべな、派遣問題を口にするとムキになって怒る者がおるでよぉ
問題の指摘は駄目だっぺぇ
派遣のことは口にしちゃなんねぇ
この村みたいな民度ゼロの会社で現実忘れるためはよ
北朝鮮と一緒でよ、駄目のものを駄目と言ってはなんねえだべさ
タブーを口にしちゃいけねぇだ
38デフォルトの名無しさん:2007/01/20(土) 14:09:59
トランスフォーム済み(数値などの2D)の画像を表示させているのですが
ビデオカードが違うとテクスチャのUV値が微妙に狂うのはどう対応すれば宜しいのでしょうか。
用意している画像は512x512のPNG形式(読み込みも512四方)
Radeon9200では1ドットも狂わず画像の一部分を切り取っているのに、
GeForce5950で見ると一回り小さい範囲で切り取られているため画像が崩れて見えます。
逆にGeForce5950に合わせて作るとRadeon9200でUV値が一回り大きく取られて崩れて見えます。
これはRenderStateで何か設定すれば直るのでしょうか。
39デフォルトの名無しさん:2007/01/20(土) 14:31:36
>>38
UVの補正をTweakツールでできる場合があるが、それはユーザー任せ。
Windowsでは基本的に公式の仕様に準拠して作ること。
あと、たった2個の比較で判断しないこと。もっと多く調べれば偏りが出るものだ。
完璧主義にならず、特定の機種だけの微妙な不具合は切り捨てる勇気を持て。
40デフォルトの名無しさん:2007/01/20(土) 15:18:14
>>39
レスありがとうございます。
MSゴシック12で「0123456789」と数値を作って表示させると
文字幅が1ピクセルなので認識できないほど崩れてしまいます。
表現上太くはしたくないとか表示させたい画像細かい場合、
微妙というレベルを超えて表示されますがやはり妥協点なのでしょうか。
41デフォルトの名無しさん:2007/01/20(土) 15:47:54
そのクラスのビデオカードだと、精度が9bitの可能性が高いから
テクスチャを256*256に落としてみるとか。
42デフォルトの名無しさん:2007/01/21(日) 07:48:39
>>38
どんなコードなの
うちは古いnVIDIA(geforce4)でテストしてるけどその辺の問題ないよ
43デフォルトの名無しさん:2007/01/21(日) 14:49:10
DirectX SDKを初めてダウンロードしようとしている者ですが
よく調べたところ
http://www.microsoft.com/japan/msdn/directx/downloads.aspx
ここにWindows98ではサポートしていないと書かれていました
うちにはWindows98しかないのでDirectX 9.0b SDK (2002)を
ダウンロードしようと思いましたがマイクロソフトのページではできませんでした

OSを買い換えるしか方法はないのでしょうか?
他に方法があれば教えてください
44デフォルトの名無しさん:2007/01/21(日) 15:28:28
>>43
そんな状況ならPC買った方がトータルでいい希ガス
DirectXで3DやるならノートPCとかデスクトップで箱が小さくてグラボが交換できないのは買っちゃ駄目。
45デフォルトの名無しさん:2007/01/21(日) 15:40:07
>>44
レスありがとうございました
できれば私もそうしたいのですが事情があってできないのですorz
なんとかしてWindows98でDirectX SDKを使うことはできないでしょうか?
自分でも調べてみましたがよくわからないんです
46デフォルトの名無しさん:2007/01/21(日) 16:08:31
古めのSDKが入ってる書籍でも探してみたら?
47デフォルトの名無しさん:2007/01/21(日) 16:15:49
古本屋でC Magazineのゲーム開発か3Dの特集やってる号をさがすとか
48デフォルトの名無しさん:2007/01/21(日) 21:21:44
>>46>>47
わかりました
そうしてみます
回答ありがとうございました
49デフォルトの名無しさん:2007/01/29(月) 09:46:35
DirectX SDKをダウンロードする際、過去のバージョンがかなり掲載されていますが、
一番最新のを導入しておけば問題はないのでしょうか?
例えばcyberlibrary等のラッパーはFebruary 2005のバージョンを落とすように書かれてありますが
最新では不都合あるとかあるんでしょうか?
50デフォルトの名無しさん:2007/01/29(月) 13:49:41
ラッパライブラリに疑問があるならマニュアルやFAQを調べて
解らなければ作者やMLで聞いてみればいいんじゃないの。
ライブラリを一番理解しているのは、大抵は開発者なんだし。
51デフォルトの名無しさん: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);

こんなことをやってるんですが…
52デフォルトの名無しさん:2007/01/30(火) 16:54:41
>>51
new_position = old_position * mat_rotyだけでいい。
53デフォルトの名無しさん:2007/01/30(火) 21:05:32
そんな技が!ありがとうございました
54デフォルトの名無しさん:2007/01/31(水) 07:46:56
D3DXVec3TransformCoord(&new_position, &old_position, &mat_roty)
55デフォルトの名無しさん:2007/01/31(水) 16:13:32
よく市販のゲームで「DirectX9.0c以降」などと表記されていますが
これはSDKのどのバージョンでビルドされているのでしょうか?
56デフォルトの名無しさん:2007/01/31(水) 19:49:15
>>55
9.0cの何れかのバージョン
DLLを見ると細かいバージョンわかるぞよ
57デフォルトの名無しさん:2007/01/31(水) 23:44:47
DirectShowってなくなったんですか?
58デフォルトの名無しさん:2007/02/01(木) 00:43:27
Platform SDKに移管
59デフォルトの名無しさん:2007/02/01(木) 01:13:52
>>58
マジすか。
ありがとうございます。
60デフォルトの名無しさん:2007/02/01(木) 10:19:17
HIDの制御に参考になるページか書籍でよいものありませんか?
61デフォルトの名無しさん:2007/02/01(木) 17:03:16
他のアプリケーションがオーバーレイを使っているなどして
オーバーレイで表示できない場合があるじゃないですか?
2枚目のオーバーレイは真っ黒表示になってしまったり。。
オーバーレイはもうこれ以上使えませんよ、みたいな
事を知る方法ありませんか?
ちなみにdwCurrVisibleOverlaysフラグは常にゼロみたいでした。
(このフラグっていったいなんだろ。。)

62デフォルトの名無しさん:2007/02/01(木) 17:21:17
PlatformSDK入れたら
Microsoft Platform SDK for Windows 2003 Server SP1
とかいうのがインストールされた。
俺のOSはWinXPSP2だ。
XPでDirectShowを実現するのは無理のようだ。
63デフォルトの名無しさん:2007/02/01(木) 17:54:15
はいはいアホスアホス
64PPP:2007/02/01(木) 18:00:46
質問なんですが、MeshObjectをCreateする処理で最大頂点数が65534個
を超えるものに対して、オプションでオプションにD3DXMESH_32BITを
つければいいと書いてありましたが、PCがフリーズします。
何か解決策があればご教授お願いします。
65デフォルトの名無しさん:2007/02/03(土) 00:50:28
5とか6とか7とかの時代の知識で止まってて、最近勉強を再開したのですが一つお聞かせください。
DirectXのインターフェイスなのですが、dllの静的リンクを避ける場合等にはCoCreateInstanceや
関連インターフェイスからのQueryInterfaceで作成することができる(できていた)と理解しているのですが、
DX9の場合、IDirect3D9の作成にはDirect3DCreate9を使うしかないということでよいのでしょうか?
そしてdll静的リンクをしたくない場合はLoadLibraryを使えということなのでしょうか?
(そもそもLoadLibaryでできるんでしょうか。d3dを静的リンクした別dllを用意して(ryとかする必要あり?)

最初からDirectX9入ってない環境なんてお呼びじゃないんだぜ、と決め打ちするのが良いのでしょうけれど…
66デフォルトの名無しさん:2007/02/03(土) 03:21:21
>>65
QueryInterfaceは7あたりから廃止されたかな。

D3DはLoadLibraryで使えるけど、面倒ならDLLの遅延ロードを利用するのが楽かも。
遅延ロードはVC++6.0から追加された機能で、DLLの関数が初めて呼ばれた時点で
DLLが読み込まれる。このときDLLが存在しなければ例外が発生する。
例外をキャッチすれば、DLLが無いシステム上でもそのまま続行可能。

ただ、Direct3Dの場合はDLLがエクスポートしている関数は1つしか利用しないから、
LoadLibrary&GetProcAddressでも大した手間じゃないけど。

DirectX9はリリースされてからかなり時間が経ってるから、入ってないシステムは
切り捨てで全く問題ないと思う。
NT4.0とかをサポートしたいなら、最初からDirectX9なんて使わない方がいい。
6765:2007/02/03(土) 13:11:46
>>66
丁寧な回答有難うございます。

なるほど、遅延ロードという手もありますね。すっかり失念していて気付きませんでした。
COMの癖になんでCo(ryで作成できないんだよ!と思っていたのですが、何やらDirectXのCOMは
独自の道を歩みつつあるようなのですね…。
確かに、今更DirectX9が入っていない環境を対象にして(9相当の)代替機能を考えること自体が
あまり現実的ではないようですし、この辺は昔ほど神経質にならずともよいようですね(目的にもよるだろうけれど)。
68デフォルトの名無しさん:2007/02/07(水) 11:17:15
はじめまして。皆様のお知恵を拝借できませんでしょうか。
DirectShowを使って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
を参考にさせていただいております。
69デフォルトの名無しさん:2007/02/07(水) 11:42:14
>>68
ややスレ違い

DirectShowと戦うスレ Part 2
http://pc10.2ch.net/test/read.cgi/tech/1162913156/

一応応えておくと >> http://pc10.2ch.net/test/read.cgi/tech/1162913156/9-
VC6は標準準拠度にも問題あるし移行することをお勧めするが..
70デフォルトの名無しさん:2007/02/09(金) 07:06:15
D3DXのDLLのバージョンが違って動作しない問題について質問です

・D3DXがstaticなライブラリで提供されていたころのDirectXSDKを使えば
 ランタイムライブラリを再頒布しなくても大丈夫なのでしょうか?
・上の考えがあってる場合、どのバージョンのSDKを使うのが適当でしょうか?
・一般に売られているPCゲームではこの問題にどのように対処しているのでしょう?

よろしくお願いします。。。
71デフォルトの名無しさん:2007/02/09(金) 07:12:12
exeと同じところかに必要なDLLを置いておく。(DLLを別の場所にする方法もあるけど)
72デフォルトの名無しさん:2007/02/09(金) 07:16:04
一般に売られているPCゲームではランタイムライブラリも再頒布しますが何か?
73デフォルトの名無しさん:2007/02/09(金) 10:09:30
>>71
配布するときにそれだと問題にならないんでしょうか?
調べてみるとライセンス的にグレーだという話があるみたいですが

>>72
そうだったんですか・・・!
実際に私のPCで調べてみるとd3dx9_24〜30.dllまでが勝手に入っていました
SDKはApril2006しか入れてないのでゲームのインストーラが勝手にぶち込んだみたいですね
74デフォルトの名無しさん:2007/02/09(金) 10:29:52
>>73
>調べてみるとライセンス的にグレーだという話があるみたいですが
どこで調べたのか
75デフォルトの名無しさん:2007/02/09(金) 10:35:48
「d3dx」とかでぐぐりました

http://printf.jugem.jp/?eid=670
ここの人がそういうことを言ってますが、どうなんでしょう・・・?
76デフォルトの名無しさん:2007/02/09(金) 11:05:49
>>75
そりゃDLL単品はダメだけど再配布パッケージも添えれば何の問題もない
77デフォルトの名無しさん:2007/02/09(金) 12:05:01
まあ、配布する手段によっては再頒布を一緒に入れるのはキツイかもしれんが
そういう場合はすっぱり諦めてインストールを促すか、Dec2004までで我慢しろってことだな
78デフォルトの名無しさん:2007/02/10(土) 17:51:51
つまり、CDやDVDの中にランタイムを入れておけば
自分のゲームのexeのとなりにもD3DXのDLLを置いておけるってこと?
79デフォルトの名無しさん:2007/02/10(土) 18:40:53
>>78
よくわからんけどそういう裏技にはあんまりやさしくないと思う。
本質をわざとはずしたようなことやると後々うるさいから辞めた方がいいと思う。
ランタイムインストーラーを自動で勝手に起動するようにしてうながすほうがはるかに楽だぞ。多分。
80デフォルトの名無しさん:2007/02/10(土) 19:17:55
directxsetupというのを使うと幸せになれるみたいだ
81デフォルトの名無しさん:2007/02/10(土) 19:21:31
幸せになれませんでした
82デフォルトの名無しさん:2007/02/11(日) 01:54:27
質問します
マイクロソフトからDirectX9をダウンロードしても
再起動の表示が出ませんどうすればいいですか?
83デフォルトの名無しさん:2007/02/11(日) 02:09:00
自分がアホであることを認識する
84デフォルトの名無しさん:2007/02/11(日) 02:15:54
>>82
再起動しなくていいなんてラッキーじゃん
85デフォルトの名無しさん:2007/02/11(日) 06:19:04
>>82
インストールしてみれ
86デフォルトの名無しさん:2007/02/11(日) 10:38:38
>>85インストールしましたがコンポーネントを使用する準備ができました
と表示されるだけです
87デフォルトの名無しさん:2007/02/11(日) 11:22:13
        ,. -‐  ̄  ̄ ̄ ` ヽr―‐ 、
   `ー--‐r'´    /         \::::::>
      /    / / | !  ヽ ヽ   ヽ:::::\
      /  !  / / | |  !  ヽ !    |ヽ ̄
     /  1 ,斗t 7  !. | Tiト、 .!    ! レ--、____
     / / |/ V 、   ヽ| __ヽ \|   ! | _ -、__}   フヒヒwwサーセンwww
    / ∧ | r ニミ     frぅミヽ. |   ! |//≦三}
   /  |  |/ ハ__ハ     {r、_!} レ    !ハ/:::::::::::\
   |   |⌒| Vr_ソ 、   Vrソ |    「}く:::::::::::::::::::::::\
   | !  ハ | ::::  r--- z   :::: |    |ノ \:::::::::::::::::::;∧
   | !  ! 弋!    i    |    |    |__ノ::::::::::::::::::::::::ハ
   ∨ ∧ i 人.   |    }    V   !::::::::::::::::::::::::::::::::::::}
    _\| > へ>、_`  '  _ イ  \ハ/:::::::::::::::::::::::::::::::/
  /==、 、.   \}  ¨ ´ ハ     //:::::::::::::::::::::::::::/
<ユ二ー、 ヽヽ  ∧_r‐ニニミ }   //|::::::::::::::::::::::/
  /⌒\ \ \\ ∨::Vフ// ///::::::::::>' ̄
. /::::::::::::::::ヽ ヽ  \_ミヘ:::::::/ </ /:::::/
/:::::::::::::::::::::ヽ:::∨ ー‐ >‐>く__ /::} ̄
:::::::::::::::::::::::::::ヽ:::>―く::::(___人::r‐‐ュ::::|
::::::::::::::::::::::::::::::|:::::::::::::::::\:::/:: \::::::::::|
::::::::::::___:::__:::|:::::::::::::::::::::::::{:::   \::ハ
rァ/ 、 、 、 \:::::::::::::::::::::::\    \|
88デフォルトの名無しさん:2007/02/11(日) 11:42:44
>>86
OSのインストールからやりなおしだな。
再起動表示がないときはインストールが中途半端な状態で終わってるから
一度OSをクリアしないと駄目だ。
89デフォルトの名無しさん:2007/02/11(日) 11:49:00
コントロールパネルの部分でテストしてみたら?
90デフォルトの名無しさん:2007/02/11(日) 12:29:59
>>88初期化?
>>89ファイル名を指定して実行ってこと?
91デフォルトの名無しさん:2007/02/11(日) 12:32:54
>>90
ああ、もう、OSの再インストールしか残って無いな
92デフォルトの名無しさん:2007/02/11(日) 12:43:39
ばーか
93デフォルトの名無しさん:2007/02/11(日) 15:24:13
c++/CLIでDXを使いたいのですが、
自作の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);

〜略
}
9493:2007/02/11(日) 15:31:58
ちなみにマネージドDXではなくて普通のDXです。
95デフォルトの名無しさん:2007/02/11(日) 15:45:44
>>93
{
pin_ptr<DWORD> p = &dwNumMaterials;
Func(p);
}
多分こうかしら。というかC++/CLIって今どうなのかしらね。
9693:2007/02/11(日) 15:58:29
>>95
ありがとうございます。
でも同じエラーがでました。。。
97デフォルトの名無しさん:2007/02/11(日) 16:38:48
>>95
スタックに自動変数積んで、それのアドレスを渡してからメンバフィールドにコピー。

たぶんマネージ型のメンバとして持つとGC回収(もしくはメモリ移動)の可能性があるから
そのままアドレスが渡せないんじゃないのかな。
俺もよく忘れてそのエラー頻繁に見るよ……。
それとC++/CLIの質問はマネージ関連のスレでした方が良いかと。
見た目が似せてあるだけで全然違う言語だこりゃ。
9897:2007/02/11(日) 16:42:24
アンカミス
- >>95
+ >>93
9993:2007/02/11(日) 16:58:38
>>97
なるほど、うまくいきました!(多分)
とりあえずここのエラーは消えました。
ありがとうございました。
100デフォルトの名無しさん:2007/02/11(日) 20:21:10
描画速度についての質問なんですが、
インデックスバッファと頂点バッファを用いて描画するのと、
頂点バッファのみ(予めインデックスデータを参照し配列を作っておく)では
どちらが速いですか?
101デフォルトの名無しさん:2007/02/11(日) 22:26:33
>>100
やってみりゃいいじゃん。
俺の予想としてはあんまりかわらないんじゃないかと・・・
102デフォルトの名無しさん:2007/02/11(日) 22:37:22
最近のGPUではキャッシュの都合上前者が有利とよく言われている。その程度。
10368:2007/02/12(月) 15:27:17
>>69
 お礼を戦う〜に誤爆してしまいましたが、改めてお礼と報告です。
2003/Summerを使用し、VC6でビルドおよび動作させることができました。
ありがとうございました。
VC2003/2005にアップはだんだんと進めていかないと行けないようですが、なかなか難しいものですね。
104デフォルトの名無しさん:2007/02/20(火) 15:07:36
すみません。DirectX(Summer 2004)ていうのをみたの
ですが、他のはDecember Aprilとかなのに
なぜこれだけSummerなのですか?
105デフォルトの名無しさん:2007/02/20(火) 15:43:45
>>104
デヴェロッパのストレス発散
106デフォルトの名無しさん:2007/02/23(金) 00:56:25
DirectInputのSetCooperativeLevelがDISCL_BACKGROUNDで動いてるロガーがあるのですけど、
一時的にそっちからマウスやキーの情報を取得できないようにする方法ってないでしょうか?
107デフォルトの名無しさん:2007/02/24(土) 04:49:17
ネットワークカメラの画像取り込みを、これから勉強したいと思っております。
C++も初級レベルが、よろしくお願いします。

ttp://www.katolab.ee.kagu.sut.ac.jp/programing/capture.htm
・上記のリンクの図にUSBカメラから矢印が出てるデバイスフィルタ(IBaseFilter)
がありますが、このあたりをネットワークカメラ用になにかすると、
ほとんどプログラム変えないでもネットワークカメラの
画像も取り込めるのでしょうか?
USBカメラに関しては、いくつか解説してあるページ見つかりましたが、
ネットワークカメラの画像を取り込むには、なにから勉強すれば
良いのかという段階なんです。

・ネットワークカメラ用のサンプルプログラムの乗ってる本や
ページなどありますでしょうか。

スレ違いでしたら、誘導していただけますと助かります。
よろしくお願いします。
108デフォルトの名無しさん:2007/02/24(土) 06:24:52
109デフォルトの名無しさん:2007/02/24(土) 11:13:16
>>107
スレ教えていただきありがとうございます。
ネットワークカメラもDirectShowを使うんですね。
110デフォルトの名無しさん:2007/02/27(火) 02:57:13
モーショントラックが二つ存在するxファイルの再生なんですが、


if(キーが傾いている)
  トラック0をFALSE
  トラック1をTRUE

else if(キーが傾いていないアイドル状態)
  トラック0をTRUE
  トラック1をFALSE

でトラックの切り替えを行おうとしたのですが、
これではif文にくるたびに、切り替えが行われモーションが再生されているようには見えないです。

アイドル時と非アイドル時を判定し、トラックを切り替えたいのですが、
どのように書けば良いでしょうか?宜しくお願いします。
111デフォルトの名無しさん:2007/02/27(火) 08:42:49
DirectShowのプログラムを始めたいと思っています。
今までC/C++では、コンパイルにBorlandのC++Compiler 5.5を利用していたのですが、
DirectShowのプログラムもこれでコンパイルできるでしょうか?
それともVCでないとダメでしょうか?
112デフォルトの名無しさん:2007/02/27(火) 09:08:12
>>111
試しにやってみようという気は0bitもないのでつか?
113111:2007/02/27(火) 17:43:29
>>112
できました。
ありがとうございました。
114デフォルトの名無しさん:2007/02/27(火) 19:19:43
DirectShowのプログラムをボーランドのC++コンパイラでコンパイルしようとしたところ、

〜>bcc32 test.cpp

Fatal: オプションが必要 : LD:\Program Files\Microsoft Platform SDK\Lib

というエラーが出ました。
どんなオプションが必要なのでしょうか?
115114:2007/02/28(水) 11:00:50
自己解決しました。
116デフォルトの名無しさん:2007/02/28(水) 12:37:24
Visual C++ 2005 Express EditionでDirectXを扱えますか?
117デフォルトの名無しさん:2007/02/28(水) 12:39:39
ます
118116:2007/02/28(水) 12:52:14
じゃあインストールしてみます。
Cをわずかに理解しているだけでBMSプレーヤーが作れるだろうか・・・
119デフォルトの名無しさん:2007/02/28(水) 13:21:58
DirectX使うなら、自分がCしか使わないとしても
拡張子はcppにして、C++としてコンパイルしないと、面倒だからね。
120デフォルトの名無しさん:2007/03/01(木) 01:50:46
Zバッファを使いたいのですが
pDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
pDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
以外に設定するものはあるのでしょうか。
Xファイル2つを表示させると後のものが必ず上に表示されます(同一のオブジェクトでも後に描画されたパーツが上に)。
何か設定を逃していると思うのですが、もしかすると別の問題なのでしょうか。
121デフォルトの名無しさん:2007/03/01(木) 02:10:06
1.Zバッファを作成し忘れてる。
 →初期化で自動的に作る(D3DPRESENT_PARAMETERS)
 →明示的に作って設定(pDevice->CreateDepthStencilSurface()とpDevice->SetDepthStencilSurface())

2.描画対象のZ値が完全に一致してしまっている。
 →データを見直せ

3.どっかでエラー吐いたりハードが対応してなかったり
 →エラーチェック。このPCでは利用できません
122デフォルトの名無しさん:2007/03/01(木) 11:29:33
>>120
射影行列のニアクリップの距離を0にしていないか?
123120:2007/03/01(木) 14:00:35
>>121,122
レスありがとうございます。お蔭様で解決できました。
>>122の最近距離は0ではなく0.1だったのですが、あまりにも大きな物体を遠くから見てたのでおかしくなってたようです。
今まで0.1で使っていて不具合が無かったので、こういう事態になるとは思いませんでした。
124デフォルトの名無しさん:2007/03/01(木) 14:48:35
DrawIndexedPrimitiveの引数について教えてください。

x, 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行ずつする場合、どう書けばいいんでしょうか? よろしくお願いします。
125デフォルトの名無しさん:2007/03/01(木) 15:56:36
>>124
まずはC言語の・・・・・
126デフォルトの名無しさん:2007/03/01(木) 16:14:58
>>125
うしろの);がないとか、pDev->がないとかそゆこと?
それは実際のプログラムには書いてあります。
127デフォルトの名無しさん:2007/03/01(木) 17:06:24
HLSLやろうと思ってネットでサンプル落としてコンパイルかけたんですが、
PassメソッドはID3DXEffectインターフェースのメンバではない、というエラーが出ます。
これが解決できません。
VS2002で作られたサンプルをVS2005で動かそうとしているからなのか、DirectXのバージョンの問題なのか、
どちらかかなあとは思うんですが。わからないです。
128デフォルトの名無しさん:2007/03/01(木) 17:26:57
>>127
DirectX
129127:2007/03/01(木) 17:44:39
これどうすればいいんですか?
130デフォルトの名無しさん:2007/03/01(木) 17:56:53
>>123
ニアクリップとファークリップは、比率が重要。
zf/znが小さいほどZバッファの精度がよくなる。

基本はニアクリップをできるだけ遠く、ファークリップをできるだけ近くする。
zf/znが1000くらいならあまり問題は起こらないかな。

Zバッファは手前は物凄く精度が高く、遠くになるほど劇的に精度が落ちる性質がある。
znやzfの調節では対応しきれないようなら、Wバッファを使ってみるといい。

それと、D3DRS_ZENABLEのパラメータはTRUE/FALSEじゃなくて、D3DZBUFFERTYPEだよ。
数値的にはD3DZB_FALSE = FALSE = 0, D3DZB_TRUE = TRUE = 1で一緒だが。
131デフォルトの名無しさん:2007/03/01(木) 18:18:00
>>124
引数の意味は
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はインデックスバッファの開始位置のオフセット。
132デフォルトの名無しさん:2007/03/01(木) 18:38:06
>>124
表示がおかしくなった原因はPrimitiveCountじゃないの?
これは(height - 1) * 2だと思うが。(そもそも5*5の方もおかしい)

ついでに言うと、普通はこういうやり方じゃなくて、同じテクスチャを
使用しているマスだけを選んで動的にVertexBufferを作って行くようにする。
133127:2007/03/01(木) 18:50:04
自己解決しました。
BeginPass,EndPassを使えばよかったみたいです。
134デフォルトの名無しさん:2007/03/01(木) 19:37:11
>>131
レスありがと〜。 まだ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理解してない)のかもしれない。
135デフォルトの名無しさん:2007/03/02(金) 23:53:44
D3DXIntersect の具体的な使い方について、書かれている書籍ってないですか?
136デフォルトの名無しさん:2007/03/03(土) 23:11:10
衝突判定の類は、D3DXに頼らず自分でロジックを組むところから始めた方がいい。
理解が中途半端だと結局あらゆるところで躓く。
137デフォルトの名無しさん:2007/03/04(日) 07:44:46
>>136
いやそれでは答えになってないしょう?
こっちはいろいろ考えて D3DXIntersect に落ち着いたのに、それを否定される筋合いはありません。
138デフォルトの名無しさん:2007/03/04(日) 07:56:45
MSDNのヘルプでも見て引数を知って、後は実際に試してみればいいと思うんだが…
基本的に対象とするメッシュと視線レイを与えて引数で結果を得るだけのものだし。

具体的な使い方も分からずに選択するのがいろいろ考えた結果なのか?
139デフォルトの名無しさん:2007/03/04(日) 08:54:28
>>138
具体的な使い方が書かれてるのが知りたいんです。
解説に動くプログラムが添えてあって、すぐ試せるようなのが理想です。
自分で最初から考えるよりすでにあるものをコピペしたほうが、確実だし時間もかからないですよね。
労力を金で買いたいと言ってるのに、「自分でやれ」はおかしいでしょう?
140デフォルトの名無しさん:2007/03/04(日) 08:59:57
プログラマを雇った方が確実だな
141デフォルトの名無しさん:2007/03/04(日) 09:04:16
技術は金では買えないから、技術者を雇うというのが正解。
頭が悪いのはどうにもならん。
142デフォルトの名無しさん:2007/03/04(日) 11:23:06
おまえら本当に頭が極端だなw
じゃ本と同じ値段で雇えるプログラマ教えろ、だろ次は
143デフォルトの名無しさん:2007/03/04(日) 11:27:28
>>135
ないよ

コレで満足?
144デフォルトの名無しさん:2007/03/04(日) 11:31:18
>>140-141
自分がプログラマだからここに聞きに来てるんですけど。それに丸投げしようとは思ってません。
正直言いますと3Dゲームを作るのは初めてですが、仕事なので仕上げないといけないんです。
まだマスターアップまで3週間あるとはいえ、なるべくなら短い時間で作りたいんですよ。

>>142
まさに正論ですね。

>>143
そうですか。ゲ製作で聞いたほうがよさそうですね。
145デフォルトの名無しさん:2007/03/04(日) 11:38:31
>>144を雇っている会社は、そのぶん有能な技術者を雇う人件費を損失している。
今後も無能なのに寄生して、会社に損害を与え続けるんだろうな。
146デフォルトの名無しさん:2007/03/04(日) 12:07:56
ゲ製作技術板にまで迷惑をかける気か。最低の人間だ。
147デフォルトの名無しさん:2007/03/04(日) 12:40:36
幾ら短期間で仕上げるのが目的とはいえ、この程度の仕様の関数に具体的なソースもクソもないだろ
D3DXのアニメーション周りとか、内部的にややこしい(又はめんどくさい)処理が必要なものなら
まだ使いまわしたいってのは分かるし、実際に有用かもしれないが…

仮にD3DXIntersectの完全なサンプルソースがあったとしても、それを使いまわせるような人なら
そもそも関数の仕様を見た段階で何も考えずに実装できそうなものだが。その程度の処理しかしてないんだし。
148デフォルトの名無しさん:2007/03/04(日) 12:57:34
じゃあ質問の仕方をかえます。D3DXIntersect をどう使えばいいのか教えて下さい。
与える引数は3つですよね?
 pMesh 地形マップのメッシュ BattleMap
 pRayPos カメラの座標 D3DXVECTOR3(CamX,CamY,CamZ)
 pRayDir カメラの向き D3DXVECTOR3(0,0,1)
関数は正常に動いてるのに、なぜか思ったような結果になりません。
目の前に山があるのに、カメラが前進すると山の中に入ってしまいます。
149デフォルトの名無しさん:2007/03/04(日) 15:02:55
>>136
やはり近道探すより自分であれこれ悩みまくった方が賢明ですね。
とりあえず、D3DXIntersect使って接触してるかなどは判定できるようになれたので
あとはトロトロやってみます。。
150デフォルトの名無しさん:2007/03/04(日) 17:27:02
シェーダーなんですが、REFだとものすごく重いんだけど、
思ったとおりの描画をしてくれるのに、HALだとただの
フォンシェーディングっぽくなってしまうのは何ででしょう?
GPUはRADEONX1950とGeForce6800で確認しましたが同じでした。

REFとHALって同じコードでも違う演算するんですか?
151デフォルトの名無しさん:2007/03/04(日) 17:30:19
すべての機能が使える仮想環境と一部使えない実環境だからでは?
152150:2007/03/04(日) 17:36:08
>>151
早速のレスありがとうございます。

なるほど。
ということは、シェーダーでGPUのサポートしていない命令を使ってしまっているということですかね?
153デフォルトの名無しさん:2007/03/04(日) 17:57:40
>>152
たぶんシェーダが問題なのではなく、RenderState等だと思う。
シェーダに問題があれば、コンパイル時にエラーが出るんじゃないかな。
シェーダのコンパイルでエラー出てないよね?

RenderStateやSamplerStateは影響するものは全て自分で設定しないと駄目。
default値をあてにしてはいけない。ドライバで勝手に変えてる設定も多い。

HALとREFでは使える機能に差はあるが、使える範囲内で使う分には基本的に
動作に違いはないよ。(そのためのリファレンスラスタライザだし)
154150:2007/03/04(日) 18:04:25
>>153
ありがとうございます。

なるほど。確かにシェーダーのコンパイルでエラー出ませんね。
ちょっと全部のRenderState見直して設定してみます。
155デフォルトの名無しさん:2007/03/05(月) 10:26:27
DirectXでAVI等の動画ファイルを再生する関数などはあったとおもうんですけど、
となるとゲームとか作って配布する際にAVIファイルを丸出しにしないといけません。
それはいやなので、どうにかその生ファイルが見えない形にして
配布したいのですが、そういう場合はどういった方法がありますか?
156デフォルトの名無しさん:2007/03/05(月) 11:01:48
>>155
暗号化する
157名無しさん@お腹いっぱい。:2007/03/05(月) 13:12:02
>>156
ありがとうございます。暗号化は一つの方法としてあると思うんですが
ファイルの暗号化自体のプログラムについてはおいて置くとして、
まず動画ファイルを読み込んで再生するために
MDXを使う場合はnew Video(path);のようにファイル名を渡さないといけません。
プラットフォームSDKにもAVIFIELOPEN等、動画再生の関数があるみたいですが、
これもファイル名を指定して読み込んだりするようです。
なので暗号化したファイルを読み込み→再生する間の部分で
どういう事をすればよいのかが想像できないというか、分かりません。
その辺の事を教えていただけないでしょうか。
158デフォルトの名無しさん:2007/03/05(月) 13:15:24
バイナリを自前で読んで暗号を解除した後、デコーダのインタフェイスに渡して再生。
159名無しさん@お腹いっぱい。:2007/03/05(月) 13:38:47
>>158
暗号解除までのやり方はなんとなく想像がついていますが、
例えばこれが元もとAVI形式のファイルだった場合に
>デコーダのインタフェイスに渡して再生。
この辺がどうすればいいのか分かりません。
復号化したAVIのバイナリデータを渡したら再生してくれる
関数かなんかがどこかに用意されてるんでしょうか?
160デフォルトの名無しさん:2007/03/05(月) 13:42:25
DirectShow
161デフォルトの名無しさん:2007/03/05(月) 13:58:54
まずは、自前で普通のファイルを対象としたストリーミングを組んでごらん。
162名無しさん@お腹いっぱい。:2007/03/05(月) 14:23:20
図々しくてすいませんが余裕がないんで端的に教えて欲しいんですけど、
要するに復号化したデータを渡す関数等がDirectShowにあるなら
名前を教えてください。調べてみたところどれも普通に〜.aviとか
ファイル名で指定してるようなので、どうしたらいいのかさっぱりわかりません。
163デフォルトの名無しさん:2007/03/05(月) 14:34:49
161と同じで、とりあえず組め。
そしたら『普通に〜.aviとかファイル名で指定してる』の意味がわかるから。
164名無しさん@お腹いっぱい。:2007/03/05(月) 15:11:28
でも最終的にファイル名を指定して渡さなきゃいけないんですけど・・・
自分で暗号化したファイルを読み込んで複合化して、
それをどうやってその関数に渡したらよいのですか?
165名無しさん@お腹いっぱい。:2007/03/05(月) 15:24:27
・・・自分で組んでみろというのが
私にそこから何を得る事を期待してそういって頂いているのかがわかりません。
例えば適当なバイナリのテキストファイルを読み込んで
暗号化したり複合化したりというのは、やろうと思えばできると思います。
でもデータはメモリの上で操作しているわけで、、、
再生関数などに渡す必要があるのは「ファイル名」でして・・・
複合化したデータをファイルに書き出したりするのはできますが、、、。
複合化したデータを一旦.aviで書き出してそれを再生関数に渡せといっているのか、、、それはないですよね?
166デフォルトの名無しさん:2007/03/05(月) 16:01:49
複合化したaviファイルのヘッダ部分からcodec情報等を取り出して、
適切なソースフィルターを作成してバイナリーストリームを流し込み再生する。
167デフォルトの名無しさん:2007/03/05(月) 16:57:04
フィルタグラフの勉強からやり直して来い
168名無しさん@お腹いっぱい。:2007/03/05(月) 17:58:55
では普通のファイルを再生する奴を作って
そこから何かを得られる事に期待します・・・
ありがとうございました。
169デフォルトの名無しさん:2007/03/05(月) 21:09:41
こいつは何で拡張子に囚われてるんだ?春休みだからか。。。
170デフォルトの名無しさん:2007/03/05(月) 21:21:07
初心者相手に嫌みか
171名無しさん@お腹いっぱい。:2007/03/05(月) 21:37:41
>>169
どんな形式のファイルを渡しても
勝手に解釈して読み込んで表示してくれる便利な関数があったら
ぜひ使いたいので教えてください。お願いします。
172デフォルトの名無しさん:2007/03/05(月) 22:53:22
つ [チャンクヘッダ]
全部とはいかんがな。
173155:2007/03/06(火) 11:26:03
昨日から引き続き恐縮ですが、やはり「メモリ上のデータ」を渡す方法が分かりませんでした。
普通に「ディスク上の.aviファイル」を再生するのは
フィルタグラフを作るまでもなくRenderFileで簡単にできました。
しかし今回は暗号化されたファイルを復号化して再生することが目的です。
なので次にttp://www.firefly-vj.net/dshow/graph/make.html
を参考にしつつ自前でフィルタグラフを構築して再生してみようと思ったんですけど、
結局ここでもAddSourceFilterの部分で「ファイルからロード」してるので
「復号化したメモリ上のデータ」からフィルタを作る方法が分かりませんでした。

>バイナリーストリームを流し込み再生する。
ここ↑がどうすればよいのか分かりません。
どなたか教えてください。お願いします。
174デフォルトの名無しさん:2007/03/06(火) 12:02:59
>適切なソースフィルターを 作 成 してバイナリーストリームを流し込み再生する。
175デフォルトの名無しさん:2007/03/06(火) 12:06:15
暗号化したaviを復号するソースフィルタを作ればいいんじゃね?
176155:2007/03/06(火) 12:19:39
えー!!そこから!!!???
そういうことですか・・・
果てしなくめんどくさそうですねこれは・・・
勉強します。ありがとうございました。
177デフォルトの名無しさん:2007/03/06(火) 13:09:05
ReadFileでもフックするか?www
そっちも面倒そうだけどな。
178155:2007/03/06(火) 13:12:42
なんかもう既に手におえなそうな雰囲気なんで挫折気味なんですけど、
「暗号ファイル→復号→DS」以外の方法はないものですか。
179デフォルトの名無しさん:2007/03/06(火) 13:15:23
暗号化しない。
180デフォルトの名無しさん:2007/03/06(火) 13:17:03
復号化して一時ファイル作ってそれを読み込む。
181デフォルトの名無しさん:2007/03/06(火) 13:17:41
1. とりあえずファイルの先頭4バイトだけ弄くっておく。
2. 再生直前になったら先頭4バイトを元に戻す
3. DirectShow で再生する。
4. 終わったらまた4バイトを弄くっておく。
182155:2007/03/06(火) 13:25:37
>>179-181
この辺が身の丈にあってるというかスキル的に妥当な線かもしれません。
試してみます。ありがとうございました!!
183デフォルトの名無しさん:2007/03/06(火) 13:31:09
>>182
memfile.cpp
184155:2007/03/06(火) 14:37:16
>>183
サンプル発見。これなら頑張れば分かるかもしれません。
ありがとうございます!
185デフォルトの名無しさん:2007/03/06(火) 15:00:56
>>181
異常終了したときにavi丸出しになり、
次から再生できなくなるという罠か。
186デフォルトの名無しさん:2007/03/06(火) 15:09:23
DirectShowなんて使わないという選択肢もある。
187デフォルトの名無しさん:2007/03/06(火) 23:38:32
答えが出たな。。。
188155:2007/03/07(水) 05:22:23
参考までに、DS使わなかったら何を使えばいいですか。
メモリ上のバイナリデータをDSより簡単に再生する方法がありますか。
189デフォルトの名無しさん:2007/03/07(水) 07:14:03
video for windows
190デフォルトの名無しさん:2007/03/08(木) 18:04:27
SetStreamSource()の第4引数でデータサイズをしてすると思うのですが
ここで指定するデータサイズの上限ってあるのでしょうか?
構造体
D3DXVECTOR4を16個メンバとして持っている構造体のデータサイズ(sizeofで)を指定すると
stream stride is too big. Check device caps.
SetStreamSource failed.
とエラーが出ます。
御願いします。
191デフォルトの名無しさん:2007/03/08(木) 18:42:59
>>190
ビデオカードによって頂点数・インデックス数に制限がある。
GetDeviceCapsでMaxVertexIndexとかMaxPrimitiveCountとかみるか、
(SDKDir)\Samples\C++\Direct3D\ConfigSystemにある
CardCaps.xlsってのを見るといろいろ書いてある。
192190:2007/03/08(木) 18:46:00
>>191 って、書いたけど1個の頂点のサイズのことかな。
それだとMaxStreamStrideだね。 でもそんなのなったことないから
解決するかどうかは知らん。
193デフォルトの名無しさん:2007/03/08(木) 18:46:37

名前190ってしたけど間違い191ね。
194190:2007/03/08(木) 19:00:11
>>191-193
CardCaps.xlsの私の使っているグラボを見るとMaxStreamStrideが255となってました。
D3DXVECTOR4 15個はOKなんのに16は駄目な理由が分かりました。
有り難うございますm(_ _)m

さて、どうしたらしいものか・・・
195デフォルトの名無しさん:2007/03/08(木) 19:21:14
>>194
255は無いだろ、常識的に考えて・・
と思ったけど、俺のカードは508だった
うざいなD3DCAPSは
196デフォルトの名無しさん:2007/03/08(木) 23:27:46
しかもCardCaps.xls内のグラボは頂点1つにつき最高16データしか送れないみたいだな・・・
4バイト4要素が指定できる最大サイズの型だから
16*16=256でMaxStreamStride256よりでかくても意味なくね?
197デフォルトの名無しさん:2007/03/08(木) 23:46:08
>>178
DirectShowにあるAsyncというソースフィルタのサンプルで
AVIファイルを開いて再生って出来る?
出来るならAsyncを改造するだけで出来そうだね。
ちょっとデータの一部をXORしたりして
再生できないようにするだけで目的は達成できそうだし。

独自のI/FでXORする値を指定するようにすれば
専用アプリなしのグラフエディットで再生させることも出来なくできるし。

ソースフィルタとスプリッタが一体なやつだと
この手は使えないかもしれないが
AVIはできたような気がする。

出来なかったらごめんね。
198デフォルトの名無しさん:2007/03/09(金) 00:21:26
>>196
ん?最高16ってMaxStream?
それはストリーム16本ってことだと思うけど。
1本のストリームに何頂点おくれるかは、
MaxPrimitiveCountとかIndexedならMaxVertexIndexの方だと思うけど。
199デフォルトの名無しさん:2007/03/13(火) 19:16:55
HLSLの頂点シェーダに頂点情報を引数として渡すのにSetVertexDeclarationは必要ですか?
頂点座標とかを直打ちした板ポリみたいなのに適用するときはないとダメっぽかったんですけど、
Xファイルに頂点シェーダを適用するときはやらなくてもちゃんと動いたので、
必要なときと必要でないときの違いはあまりわかりません。
Xファイルだけ特殊ってことなんでしょうか?
200デフォルトの名無しさん:2007/03/13(火) 20:46:30
>>199
必要
まあ本当なら、不要な情報なんだけれど
D3Dがよこせと言っているんだから仕方ない。

>>Xファイル
これが何を指しているかは不明だが
D3DXのヘルパオブジェのことなら
あれは内部的に呼び出してる。

201デフォルトの名無しさん:2007/03/14(水) 11:28:14
メイプルストーリーってDX9で作ってるんですか?
どう見ても2Dなんですけど
202デフォルトの名無しさん:2007/03/14(水) 11:41:36
>>201
2DだとDirectX使っちゃダメみたいな言い方だな。
何で作ってるかなんて知らないけど。
203デフォルトの名無しさん:2007/03/14(水) 11:52:27
>>201
なんでDX9で2Dゲーム作ったらダメなの?
DX10かもよwwww
204デフォルトの名無しさん:2007/03/14(水) 11:55:37
DirectDraw使ったらだめですか
DirectSoundもDirectInputもだめですか>>201
205デフォルトの名無しさん:2007/03/14(水) 19:34:58
頂点を作成するための関数IDirect3DDevice9::CreateVertexBuffer
の利用法を指定する引数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とかを使っている・・

これは、どのように解釈することが正しいのでしょうか?

よろしくおねがいします。
206デフォルトの名無しさん:2007/03/14(水) 20:47:48
>>205
D3DUSAGEの項みろよ
207デフォルトの名無しさん:2007/03/14(水) 20:54:59
>>202-204
いちいち釣られるな
208デフォルトの名無しさん:2007/03/14(水) 21:57:58
>>206
D3DUSAGE定数の意味を聞いてるわけじゃないんですよ

[注意]の部分の説明は、
CreateDevice関数の引数で D3DCREATE_HARDWARE_VERTEXPROCESSING
を使ったら、CreateVertexBufferのUsageの引数に「0」を使う必要があると
書いてある。

この言い分だと、「0」以外の定数は使えないということになるけど、
実際は、サンプルとかでは「0」以外の定数をUsageに指定しています。
これはおかしくはありませんか?
[注意]が間違っているのか、サンプルが間違っているのか
どちらでしょう?

と言うことを質問しにきたんです。
209デフォルトの名無しさん:2007/03/14(水) 23:11:29
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/directx9_c/directx/graphics/reference/d3d/interfaces/idirect3ddevice9/createvertexbuffer.asp
> ただし、使用法が必要な場合は、1 つまたは複数の D3DUSAGE 定数の組み合わせを使用する
210デフォルトの名無しさん:2007/03/14(水) 23:22:17
>>208
それは、exciteでの翻訳なので当てになりません。
211デフォルトの名無しさん:2007/03/15(木) 03:12:24
セカンドライフみたいに3Dの上にブラウザを重ねて表示させるのってどうやってるんですか?
212デフォルトの名無しさん:2007/03/15(木) 03:28:12
ブラウザ表示させればおk
213デフォルトの名無しさん:2007/03/15(木) 03:35:49
>>212
サンプルかなにかどっかにないもんでしょうか?
214デフォルトの名無しさん:2007/03/15(木) 23:47:50
DirextXの初期化などのソースコードは皆さんはどうしていますか?
何箇所かサイトを巡ったところ細かいところで違うような気がしたのですが
初期化などはその都度必要な事だけを書いているのでしょうか?
または、MSのほうで初期化ライブラリなどがあるのでしょうか?
215デフォルトの名無しさん:2007/03/16(金) 00:00:59
必用なことを書かないでどうする?
216デフォルトの名無しさん:2007/03/16(金) 00:23:55
初期化なんて一本アプリを作るうちの0.001%くらいのもんだろう。
くだらんこと悩まずにさっさと書いちまえ。
217デフォルトの名無しさん:2007/03/16(金) 00:27:18
初期化は大切だろ…
自分の環境だけで動かすんだったら0.001%かもしれんが
218デフォルトの名無しさん:2007/03/16(金) 01:12:01
初期化を既存のコードで代用しようとするな!ぼげぇ!
219デフォルトの名無しさん:2007/03/16(金) 03:05:19
>>217
いやいや、自分が満足できる初期化コードを1回書いたら
後から何かすることなんてそう頻繁にはないってことだろ
220デフォルトの名無しさん:2007/03/16(金) 05:04:13
毎回シコシコ書きなおしてるかと。
以前のを代用できるところは代用するよな。
ゲームなら、UIとかも代用できる
ウェイ!
221デフォルトの名無しさん:2007/03/18(日) 01:11:40
HLSLで
たとえばalphablend=trueが記述されていて、ほとんどはそれを用いるけれど稀にfalseにしたいとか
lightingのon/offの違うのを見たいとか
いちいち別バージョンを作らなくてはならないんでしょうか。
組み合わせが爆発しないんでしょうか?
222デフォルトの名無しさん:2007/03/18(日) 01:57:59
int g_fillMode = 2; // D3DFILL_WIREFRAME

technique T { pass P { fillMode = g_fillMode;}}
------------------------------------------
pEffect->SetInt( "g_fillMode", D3DFILL_SOLID);
223デフォルトの名無しさん:2007/03/18(日) 02:43:25
こことここ↓
http://pc11.2ch.net/test/read.cgi/tech/1173535400/
ってどうちがうんだ?

あ、向こうは超初心者か。。
224デフォルトの名無しさん:2007/03/20(火) 02:40:56
2Dの描画部分で自分のPCでは、ちゃんと表示されるのですが、
ほかのひとPCでは、Clear()部分しか表示されません。

2D表示方法は板ポリゴンに、テクスチャをはっています。
SetTexture,SetFVF,DrawPrimitiveUPは成功しています。
開発環境はWinXPSP2 VC++2005とDirectX2006decです。
225デフォルトの名無しさん:2007/03/20(火) 03:03:55
>>224
ライティングをOFFにしてないとか?
226224:2007/03/20(火) 03:12:45
ライティングOFFにしましたが、やはり表示されませんでした。
227224:2007/03/20(火) 14:00:28
解決しました。
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat= D3DFMT_D16;

上のコードを削除すればすべての環境で動くようになりました。
参考までに自分のビデオカードは、RADEON X700です。
ClearではZバッファを使用していないので、不具合が生じたと思います
228デフォルトの名無しさん:2007/03/20(火) 14:21:39
>ClearではZバッファを使用していないので、不具合が生じたと思います

なんていうか EnableAutoDepthStencil = TRUE なら
Zバッファはちゃんとクリアしないといけないでしょ。
229デフォルトの名無しさん:2007/03/20(火) 17:04:55
すいません、テクスチャオブジェクトを描画クラスのデストラクタ内で
開放するように記述すると、プログラム終了時にVC++が
デバッグ欄にメモリエラー報告しまくるんですが、
テクスチャの開放のタイミングはいつが適切なんでしょうか?
教えてください。

開発環境はVC++2005pro、DirectX9です。

D3DXCreateTexture()関数呼び出し直後や描画毎などに
開放した場合、メモリエラーは発生しません。
230デフォルトの名無しさん:2007/03/20(火) 17:08:01
D3Dデバイス解放より前
231デフォルトの名無しさん:2007/03/20(火) 17:08:12
また、デストラクタ内では頂点バッファの開放も
行っていますが、こちらは問題なしです。
232229:2007/03/20(火) 18:07:32
解決しました。
ありがとうございます。
233デフォルトの名無しさん:2007/03/28(水) 17:06:28
Direct3D(DirectX9.0)について質問です。
テクスチャーを2600*2600などという大きいものにしたところ、どうやらビデオカードの限界だったらしく2048*2048に大きさが丸め込まれてしまいました。

それは構わないのですが、丸めこむときの挙動が
「はみでた部分を削除」なようなのです。
これは仕様に基づいた動作(他のビデオカードで丸め込まれた時も同じ挙動をする)なのでしょうか?

なんとなくイメージで「テクスチャーサイズ限界を超えた場合、限界サイズに収まるように勝手に画像が勝手に縮小される」のではないかと思っていたのですが…。(このイメージに根拠は無いです)
234デフォルトの名無しさん:2007/03/28(水) 17:19:27
>>233
テクスチャを2は累乗で表される幅と高さにしないとダメ
4096*4096でテクスチャを用意し、
2600*2600の部分だけ表示させればよい。
235デフォルトの名無しさん:2007/03/28(水) 17:25:25
>>234
お返事ありがとうございます。
確かに2の累乗しかサポートしていないボードがほとんどのようですね。

ただ、どうやら私のボードは2048*2048が限界らしいのです。

例えば800*600のテクスチャーは、読み込んだときに1024*1024になることを確認済みです。
描画するとき、tu=(1.0f * nX / 800)ではなく tu=(1.0f * nX / 1024)とすることで思ったとおりの描画ができていました。

ですが今回2600*2600を読ませたときは、期待通り4096*4096にしてくれなかったのです。
「それならきっと、(多少テクスチャが汚くなるけど)縮小して収めてくれてるだろう」と思ったら、切り捨てられていたのです。個人的にはちょっとびっくりでした。
236デフォルトの名無しさん:2007/03/28(水) 17:27:24
4096*4096に対応しているカードは知らないな
普通に考えてそんなにいらないしな
237デフォルトの名無しさん:2007/03/28(水) 17:33:56
自己解決できました。
報告させていただきます。

D3DXCreateTextureFromFileInMemoryEx

Filter引数に
D3DX_FILTER_NONE を指定していたからでした。
D3DX_FILTER_LINEAR を指定することで想定どおりとなりました。

ただ、限界を超えていないときにも(2の累乗以外の画像を読み込むと)、確保したサイズに強制的にあわせるようです。
つまり、無駄に「一旦引き伸ばしてテクスチャとして持ち、その後縮小して表示」することになるのでアンチエイリアシングが行なわれてしまうようです。
ドット絵のようなものは、素直に2の累乗にしたり、小さめの画像D3DX_FILTER_NONE読み込みしたほうが良いと思われます。
238デフォルトの名無しさん:2007/03/28(水) 19:09:16
基本やね
239デフォルトの名無しさん:2007/03/28(水) 20:19:23
>>237
それはD3DXのヘルパ関数の挙動だろ、D3Dやボードの挙動じゃない。
また2のn乗の制限や最大解像度は、全てCAPSから得られるので
そっちを根拠とすべき。
240デフォルトの名無しさん:2007/04/03(火) 21:12:27
質問。
D3DXCreateTextureFromFileExでD3DX_FILTER_NONEを指定して画像を読み込みました。
その後
m_pD3DDEV->SetSamplerState(0,D3DSAMP_MIPFILTER,D3DTEXF_LINEAR);
を設定した上で画像を矩形ポリゴンに貼り付けて表示したところ、なんだか不自然な挙動をします。

等倍の時はいいのですが、縮小されるように矩形ポリゴンの大きさを小さくしていくと、
テクスチャが黒ずんだり、さらに小さくするとテクスチャが透けたり、
D3DXCreateTextureFromFileExでD3DX_FILTER_LINEARを指定してやると、綺麗に縮小表示されます。

テクスチャの読み込みと、SetSamplerStateでの設定は、両方D3DX_FILTER_LINEARにしてやらないといけないのでしょうか?
両方D3DX_FILTER_NONEにしても想定通り縮小表示されたのですが、アンチエイリアシングがかからないためかなり荒かったです。 
241デフォルトの名無しさん:2007/04/03(火) 23:21:49
>>240
どうでもいいが、SetSamplerStateで使うのはD3DX_FILTER_LINEARじゃなくてD3DTEXF_LINEARな
242デフォルトの名無しさん:2007/04/03(火) 23:34:34
>>240
D3DXCreateTextureFromFileEx のフィルタってFilterとMipFilterの2つあって、
Filter は 画像->テクスチャでサイズが違う時とかに掛けるフィルタだから
同サイズならNONEでもいけるかもしれないけど、
MipFilter は NONEだとまともなミップマップにならないわね。
243デフォルトの名無しさん:2007/04/04(水) 04:00:30
App.pDirect3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, App.hWindow, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dparamet,&App.pDevice );
App.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のバージョンを下げるなら、どのバージョンが適してるでしょうか
244243:2007/04/04(水) 04:05:09
CreateDeviceの後ろから2つ目の引数が違ってますが、同じにしても同様でした
245デフォルトの名無しさん:2007/04/04(水) 11:22:43
>>243
関係ないと思うけど
×"MS Pゴシック"
○"MS Pゴシック"ね
246デフォルトの名無しさん:2007/04/08(日) 22:32:30
スプライトの反転表示ってどうやるんですか?
247デフォルトの名無しさん:2007/04/08(日) 23:18:40
反転といっても、
△→▽
□→■
色々あるんだがな。
しかもスプライトという用語自体がいったい何を指すのか不明だし。
248デフォルトの名無しさん:2007/04/08(日) 23:28:08
ヨ→E
みたいな反転。

249デフォルトの名無しさん:2007/04/08(日) 23:50:55
反転はメインヒロインが非処女と判明したときの演出に使います
250デフォルトの名無しさん:2007/04/08(日) 23:58:05
>>248
UVの開始と終了の値を逆にする
251デフォルトの名無しさん:2007/04/09(月) 00:00:46
ヨ→Eだけだと
ヨ→m→Eなのか
ヨ→ | →Eなのかわからん
252デフォルトの名無しさん:2007/04/09(月) 00:30:18
>>251
それを知って何か意味があるの?
253デフォルトの名無しさん:2007/04/09(月) 00:38:15
話の流れくらい嫁
254デフォルトの名無しさん:2007/04/09(月) 04:09:03
>>251
180度回転は反転(=invert=裏返し)とは言わないだろ
255デフォルトの名無しさん:2007/04/09(月) 07:53:04
>>254
質問者が180度回転のつもりで反転という言葉を使う可能性は十分にあると思うぞ。
256デフォルトの名無しさん:2007/04/10(火) 01:47:16
軸で回転語れよ
257デフォルトの名無しさん:2007/04/10(火) 01:54:16
ヨ→m→Eもヨ→ | →Eも180度回転だろ
2次元脳はすっこんでろ
258デフォルトの名無しさん:2007/04/10(火) 02:01:08
>>257
スレも読めんのか低脳
259デフォルトの名無しさん:2007/04/10(火) 02:48:56
スレとレスの区別ついてる?
260デフォルトの名無しさん:2007/04/10(火) 05:48:38
流れぶった切って悪いが質問。

3Dのレンダリングの際には
ワールド変換→ビュー変換→プロジェクション変換
がこの順番で行われるって書いてある本があるんだけど、
これは別にSetTransform()でセットする順番を
このとおりにしなきゃダメだって言ってるわけじゃないよね?
261デフォルトの名無しさん:2007/04/10(火) 06:44:14
そうだよ。
262デフォルトの名無しさん:2007/04/10(火) 11:33:34
>>260
変換が適用される順番だから、SetTransformの順番は関係ない。
行列の積はABとBAが等しくないので、計算する順番はとても重要。

実際の計算では3つの変換を順番にするのではなく、1つの行列に
まとめて1回の計算で済ますことが可能。
この、変換を合成できるという性質が、座標変換に行列が使われる理由。
行列で表現できる変換なら、どんなに複雑でも1つの行列に合成できる。
263デフォルトの名無しさん:2007/04/15(日) 18:04:47
Direct3Dで誘導ミサイルを作りたいのですが、うまくいきません。
今やっている方法は
・目標点の位置ベクトルから、ミサイルの位置ベクトルを引いて、
ミサイルから目標点への方向ベクトルを作る。
・(0,0,1)のベクトルを作り、方向ベクトルとの外積をVec1とする。
・(0,0,1)と方向ベクトルの内積と、アークコサインから、
二つのベクトルのなす角θを求める。
・Vec1を回転軸として、ミサイルをθだけ回転させる。
 この方法だと、絶対座標で-Zの方向へ進むとき、変になる。
その辺の解決方法を教えてください。
264デフォルトの名無しさん:2007/04/15(日) 19:10:19
その前にどういう仕様にしたいかだが・・・
265デフォルトの名無しさん:2007/04/15(日) 19:14:35
ちなみにホーミングミサイルがやりたいなら
右か左かを外積で求めて進行方向のベクトルを一定角度だけ回転させるだけだよ
266デフォルトの名無しさん:2007/04/15(日) 19:18:40
いわゆる板野サーカスで、いきなり目標位置に向かうのではなく、
適度にいい加減にあちこち乱れ飛んで見せてから100%命中させたいのですが
267263:2007/04/15(日) 19:26:08
欲しい動作
・ミサイル自体を目標点の方向へ向ける。
今ある情報
・目標点の座標
・ミサイルの座標
・ミサイルの状態行列
です。
>>265
「右か左か」というのはなんですか?
268263:2007/04/15(日) 19:28:37
具体的に進む方向ベクトルはありません。
つねに、ローカル座標のZ方向に進むという仕様にしています。
なので、目標点へミサイル自身が向けばいい、というわけです。
269デフォルトの名無しさん:2007/04/15(日) 19:41:03
目標位置をミサイルのローカル空間に変換してから、そっちに向ければ?
270263:2007/04/15(日) 19:48:41
申し遅れました。完全な3Dでやってます。
スターフォックス64のオールレンジモードの状態です。
絶対座標の(0,0,0)から、+X、−X,+Y,+Z,-Z方向に軸を伸ばしています。
-Y方向には伸ばしていません。
271263:2007/04/15(日) 19:50:12
>>269さんの仰る方法はどうすればよろしいですか?
ベクトルをワールド空間→ローカル空間への変換方法ですよね。
272デフォルトの名無しさん:2007/04/15(日) 20:07:21
それだったらオイラー?のAIの本でも読んだら?結構載ってる本あるんじゃね?gameprogramminggemsとか
273デフォルトの名無しさん:2007/04/15(日) 20:43:58
レスを読まずにレスをするけど
例えば、目的の角度にする為に30度回転しなきゃならないとするだろォー
そこをあえて5度ぐらいにするんだよォーそうすりゃ徐々に目的地に向かうだろォー
んでそういう場合はククォータニョンを使うんだよォォーわかったかカスが
274デフォルトの名無しさん:2007/04/15(日) 20:54:07
>>267
右か左かってのは自機の進行方向に対して
敵が自機からみて右にいるか左にいるかってこと

それとお前のいってることおかしくね?
常にローカルのZ方向なんて仕様にはどうしたってならんでしょ?
別のゲームを実際に画面でそうみえる通りに作ってないか
どう作ってるのかしらんが内部ではちゃんと3Dの世界は構築できてるのか?
275デフォルトの名無しさん:2007/04/16(月) 00:22:43
>>267
現在の姿勢(A)から、目的の姿勢(B)への変換は M = invA・B だけど
ミサイルの上向きベクトル(ひねり)を"成り行き"で決めるんだとしたら、
Bは直接求められないから、AからBへの相対的な回転を求める必要があるわね。
回転は円弧 v1,v2 から求めるとして
v1 は、 現在の姿勢(A)の前向きベクトル、ニュートラルが(0,0,1)だとしたら
D3DXVec3TransformNormal(&v1, &D3DXVECTOR3(0,0,1), &A); で
v2 は、 (目標点)-(ミサイル点)ね
あとは、外積と内積で軸と回転角を求めて(ry ね。
角度を徐々に変化するなら回転量にリミッタをつけるわけね。
276デフォルトの名無しさん:2007/04/16(月) 01:16:07
内積いる?
角度なんてもっときゃいいじゃん
左右を判断するのに外積
進行方向を決定するのに現在の角度+回転したい角度
で内積どこに使うの?
277デフォルトの名無しさん:2007/04/16(月) 01:28:22
"残りの角度"ね。1フレームの角度変化量がそれより大きい場合は
クランプしないといけないわね。
278デフォルトの名無しさん:2007/04/16(月) 01:33:26
意味わからん
何、残りって?
内積って光の計算とボールの反射角ぐらいしか使った覚えない
279デフォルトの名無しさん:2007/04/16(月) 01:35:59
ああ、書いた瞬間わかった
いらんて
目でわからんほど小さい角度やんけ
280デフォルトの名無しさん:2007/04/16(月) 01:47:20
要は必要な回転角度が3で、角速度が5の場合に、+5>-5>+5>-5..って感じで
ブルブル震えるのを、許容するかどうかの問題ね。
281263:2007/04/16(月) 02:02:57
>>275さんの方法をやってみました。
相当綺麗に誘導することができました。
ありがとうございます。
私の場合は、ミサイルの方向ベクトルと目標点への方向ベクトルの内積で
出た角度に制限(1フレームで30度以内)を付けました。
これならばミサイルがぶるぶる震えたりはしません。
ですが、この方法でも、目標点への方向ベクトルのz要素が負
(例えば、ミサイル絶対座標が(10,10,10)で
目標点の絶対座標が(5,1,5)の時のように方向ベクトルが(-5,1,-5)のとき)
などでは、ミサイルがあらん方向へと飛んでいきます。同高度の時でも、
50単位ぐらい離れていたら、誘導されるのですが、それ以上離れると、
いきなり完全な逆方向へ飛んでいきます。これはなぜなのでしょうか。
282デフォルトの名無しさん:2007/04/16(月) 03:02:12
>>281
多分計算間違いか(ベクトルの正規化し忘れとか)、外積の計算失敗とかだと思うけど。
(ちなみに(-5,1,-5)は(-5,-9,-5)の間違い?)
v1とv2が、ほぼ同じ向きの場合とか、正反対の場合、(|dot|>1.0-ε)
外積がうまく求まらなかったりするから、場合分けが要るわね。
(正反対の場合はY軸180度回転で決め打ちとか)
283デフォルトの名無しさん:2007/04/16(月) 07:16:32
内積いらんでも綺麗にいくと思うけどなぁ
内積は使うと色々面倒なんだぜ
場合分けあって
まあ、ポイントは外積の左右判断だけだと思うけどね
284デフォルトの名無しさん:2007/04/16(月) 07:23:43
外積の計算なんてミスるの?
0>X1Y2-X2Y1
のどこにミスる要素が・・・
285デフォルトの名無しさん:2007/04/16(月) 08:41:34
>>284の脳は二次元
286デフォルトの名無しさん:2007/04/16(月) 20:01:02
ちょっと役に立つネタの流れになると、こういうのが出てくるな…
287263:2007/04/17(火) 00:44:59
完成しました。
なぜ変な方向へ行ってしまうかというのは、外積から求めた回転軸に問題がありました。
ほぼ同じ向きになったベクトルの外積はゼロベクトルに限りなく近くなります。
なので、軸ベクトルの長さが1以下の時には回転をしない、
という風にしたら何の問題もなく動きました。

みなさん、本当にありがとうございました。
288デフォルトの名無しさん:2007/04/17(火) 05:52:46
>>282場合分けってどんなヤツ?
289デフォルトの名無しさん:2007/04/17(火) 07:04:27
>>287
なにとんちんかんなこといってるの
外積で出したベクトルなんて使わないよ
290デフォルトの名無しさん:2007/04/17(火) 07:25:15
外積と内積を利用して軸と回転角を求めるって話なのに、
>外積で出したベクトルなんて使わないよ
ってどういうことよ?
まさか、外積がそのまま軸になるとか思っちゃってるわけ?
291デフォルトの名無しさん:2007/04/17(火) 08:38:04
はぁ?
アプローチ悪すぎ
アフォ過ぎ
292デフォルトの名無しさん:2007/04/17(火) 08:58:29
もうわかったから消えてくれ
293デフォルトの名無しさん:2007/04/17(火) 14:13:54
アプローチが悪いといいつつ
良いアプローチを提示できない時点で終わってる
294デフォルトの名無しさん:2007/04/17(火) 19:31:38
は?
さんざん言ってんのにお前が馬鹿だから略
295デフォルトの名無しさん:2007/04/17(火) 20:12:06
進行方向と上ベクトルで外積
傾けたい上ベクトルを指定
これとさっきだしたベクトルで外積
これらを行列に突っ込んで姿勢行列完成
どっから見てもレーザーに見える板ポリなんかもこんな感じ
296デフォルトの名無しさん:2007/04/17(火) 20:37:28
その方法だと外積もう一回いるな
進行方向のがでてない
297デフォルトの名無しさん:2007/04/18(水) 00:55:13
3Dシューティングゲームのソースコードを公開してくださっているWebサイトなど
ご存知でしたら教えてください。よろしくお願いします。
298デフォルトの名無しさん:2007/04/18(水) 04:25:38
299デフォルトの名無しさん:2007/04/19(木) 17:43:58
>>298
ありがとうございます。参考にさせて頂きます。
300デフォルトの名無しさん:2007/04/20(金) 01:54:38
すいません、DirectMusic でわからない所があります。

PlaySegmentEx でWavデータを再生しているのですが、ループ再生の挙動が
おかしいのです。SetLoopPoints(0,0) のSetRepeats(DMUS_SEG_REPEAT_INFINITE)で
指定しているですが、2回目のループから、何故か10秒ほど間があきます。
(1回目のループは問題なしです)
状況的には、
(1)250個ほどのwavファイルを読み込んでセグメントを作っている。
(2)うまくループし続けるセグメントもあれば、2回目から間の開くセグメントもある。
(3)空きメモリは2G程度ある。

こんな状況です…。色々試してみましたが、どうしても間が…。
よろしくお願いします。
301デフォルトの名無しさん:2007/04/20(金) 08:59:57
質問です。FujitsuのLifeBookを購入したのですが、
DirectX9の3Dのサンプルを起動すると...very hardの様な警告が表示され
処理が大変遅くなります。
最新のノートだと聞いたのですが、一方最近のVAIOのノートで起動すると
一目瞭然で段違いにスムースに動きます。
グラボの性能が違うのでしょうか?
教えてください。お願いします。
302301: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
物理アドレス拡張

という感じです。すみません。
303デフォルトの名無しさん:2007/04/20(金) 10:30:05
オンボードGPUで3Dやるのはやめて下さい
304デフォルトの名無しさん:2007/04/20(金) 10:35:57
小出しすんなの意味で言うなら、エラーメッセージも省略すんな、と。

ハードウェアに無い機能を使ったサンプルの場合、Direct3Dがリファレンスラスタイライザという
すべてをソフトウェアで処理するモードに切り替わるから超遅くなんのよ。

VGAの性能不足とゆーより機能不足が原因です。
305301:2007/04/20(金) 17:47:28
>>303-304
ありがとうございます。
オンボードGPUって何ですか。つなげて言われると分かりません。

確かにラスタライザとかエラー表記がありました。すみません。
参考書はI/O BOOKSのDirectX9 DirectX Graphics
という本なんですが、
その機能を使わなければどうしようもないですよね?
分解でもしないと、どうしようもないんですか?
306デフォルトの名無しさん:2007/04/20(金) 18:07:58
デバイスのcapsを取得して、そのサンプルで使用している機能があるかどうかは確認したのか?
最低限トレースしてどこの分岐でメッセージを出力しているくらいはやっているんだろうな?
307301:2007/04/20(金) 18:42:32
>>306
ttp://www.uploda.org/uporg781097.txt
> if( NULL == pOldDeviceSettings &&
> pNewDeviceSettings->DeviceType == D3DDEVTYPE_REF &&
> !GetDXUTState().GetOverrideForceREF() )
> {
> DXUTDisplayErrorMessage( DXUTERR_SWITCHEDTOREF );
> }
おそらくこの辺りだと思いますが、解読できませんでした。すみません。
デバイスキャプスで探る方法も分からない屑ですが。
308デフォルトの名無しさん:2007/04/20(金) 18:58:55
いったい何をしたいのだろう?
サンプルを並の速度で動かしたいだけなのか?
DirectXを勉強したいのなら、初期化から始めれば自然と理解できるように
なると思うのだが。
309デフォルトの名無しさん:2007/04/20(金) 19:49:03
>>307
そのGPUにはそういう機能がない
だから遅くなる
分解だの改造だのやってもダメ
諦めて
310デフォルトの名無しさん:2007/04/20(金) 20:00:03
ノートで動くように作るなら最近のサンプルはきついね。
DirectX8のサンプルを見て、その範囲でやる方がいいな。
その辺のネトゲとかはそんなレベルだし。
311301:2007/04/20(金) 20:51:20
分かりました。参考書を見直します。
お騒がせしてすみませんでした。
ありがとうございます。
312デフォルトの名無しさん:2007/04/21(土) 02:02:04
D3DXIntersectで使うメッシュ情報を読み込みたいのですが、アニメーション用にスキンドメッシュを読んでしまっているので、
どうやってIntersect用のメッシュを読み込めば良いかわかりません。

アニメーション用ではなかったとき、D3DXLoadMeshFromX()を使ってメッシュ情報を扱えたのですが、
今はD3DXLoadMeshHierarchyFromXを使っていて、判定用のメッシュが扱えません。

どなたかご存知の方、おられましたら、宜しくお願いします。
313デフォルトの名無しさん:2007/04/21(土) 17:55:36
お聞きしたい事があるのですが、DirectXの書籍に
「DirectX逆引き大全500の極意」という本があると思うのですが、
この本はどうなのでしょうか?
サイトにある目次を見た所、自分のやりたい事があったのですが、
プログラム&解説は詳しく載っているのでしょうか?
板違いならすいません。
よろしく御願いします。
314デフォルトの名無しさん:2007/04/21(土) 18:15:30
俺はエスパーではないので誰か頼む
315デフォルトの名無しさん:2007/04/21(土) 18:40:10
こんなの本をもってるヤツでも答えられない
316デフォルトの名無しさん:2007/04/21(土) 19:49:24
.Net DX2007Feb
DirectInputを使いたいのですがコンパイルが通りません。
[dinput.h]はインクルードし、[dxguid.lib][dinput8.lib]はリンクしています。
書籍や説明をしているサイトの通り打っても[DirectInput8Create]が使えないと言われます。
何か別の関数に置き換わったのでしょうか?
317デフォルトの名無しさん:2007/04/21(土) 20:03:21
俺はエスパーではないので誰か頼む
318デフォルトの名無しさん:2007/04/21(土) 20:23:28
じゃあ、エスパー魔美好きの俺が答えてやろう。

「コンパイルが通らない」だけで分かるかよ!
319デフォルトの名無しさん:2007/04/21(土) 20:27:24
コンパイルは通らないはず
なんだっけ?ライブラリか何かのファイルが9.0cからなくなっているんだよな
そこら辺詳しい人いないかね
320デフォルトの名無しさん:2007/04/21(土) 20:48:42
>>316
今までのSDKを適当に入れたら通る。
この解決方法でいいのか知らんが。
321デフォルトの名無しさん:2007/04/21(土) 20:52:15
#define DIRECTINPUT_VERSION 0x0800
322デフォルトの名無しさん:2007/04/21(土) 21:05:26
#pragma comment(lib, "dinput8.lib")

を、DirectInput8Createを使ってるcppファイルの先頭付近に
追加してみろ。変わらずなら他のcppに次々追加していく。
stdax.cppだけじゃ駄目だ。
多分これでリンクが通るはずだ。理由はしらね。
323デフォルトの名無しさん:2007/04/21(土) 22:50:12
>316
エラーメッセージ自体を貼り付けてみよう。
324デフォルトの名無しさん:2007/04/21(土) 23:08:55
>>322は的外れ
325デフォルトの名無しさん:2007/04/22(日) 00:18:36
>>313
局所サンプルで書かれてるので素人にはまったくオススメできません
DirextXのサンプルからいじってなんか作たぐらいの’まとめる’スキルが要ると思われる
326316:2007/04/22(日) 08:16:22
返信ありがとうございました。
2005Febを入れるかマクロを追記させるかのどちらかで解決するのを確認いたしました。
新しいSDKでDirectInputを使う場合、後者のほうがいいのでしょうか。
327デフォルトの名無しさん: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を宣言している場所に移動は出来ます。
何が原因でのエラーなのでしょうか。
328デフォルトの名無しさん:2007/04/23(月) 22:05:49
329デフォルトの名無しさん:2007/04/26(木) 23:39:44
質問させてください。
現在、矢印キーでキャラクターをx,z軸方向へ移動させれるとこまでできておりまして、
今度はこのキャラクターに、Xファイルから読込んだ起伏のある地形の上を歩かせたいの
ですが、どのようにプログラムすれば実現できるのか分らなく苦戦しております。

実現方法や参考になるサイトなどをご存知の方がいましたらご教授ください。
よろしくお願いします。
330デフォルトの名無しさん:2007/04/27(金) 00:25:57
>>329
たくさん方法があるけど代表的で汎用性があるのを2つ
どっちがいいかでなくて、用途に応じて使いわけると開発が楽になる

1つ目は足元に見えない三角形(足場用当り判定ポリゴン)をデザイナさんにおいておいてもらって
1つ1つの三角形を片っ端から判定する(もちろん全部判定すると処理時間が半端でないのでオクツリーとか検索して幸せになる)

2つ目は2Dのマップ的な判定方法
とりあえず正方形のタイルが敷き詰められた床を想像する
真上からみると碁盤の目みたいになる
ここまでは2Dのマップチップと同じだ

横線と縦線が直行してる点を頂点として、その頂点の1つ1つに高さ情報をもたせる
とりあえずこれで山が表現できる
判定は2Dと同じようにどの四角形にキャラが乗っているか?を求めて高さの計算は
四角形の対角線で三角形2つに分ける上と下の2つの三角形に別れる
どの格子にいるかはわかっているので対角線の直線の方程式を使って上の三角形にいるか
下の三角形にいるか判断する
そしたら、平面の方程式(わからなかったらググレw)を使って高さを求める
331デフォルトの名無しさん:2007/04/27(金) 10:36:31
>>330さん
ご教授ありがとうございます。僕の頭ではこの問題は壁ですね…
どう解決したかを報告できるのはもうちょっと先になりそうです。
せっかく教えて頂いたのに申し訳ありません orz
332デフォルトの名無しさん:2007/04/27(金) 10:42:41
こんなに噛み砕いて説明してるのに分らないんなら何見たって無駄。
333デフォルトの名無しさん:2007/04/27(金) 11:03:34
リアル中学生かも知れないから
高校の教科書読んでみろとか
もうちょっと具体的な指示を
出してあげてもいいかも知れない
334デフォルトの名無しさん:2007/04/27(金) 11:30:10
中学生がこんな時間帯に2chに居る訳ないでしょ。
ニートか大学生だろ。
335デフォルトの名無しさん:2007/04/27(金) 11:34:29
そう言うお前は…( ´,_ゝ`)
336デフォルトの名無しさん:2007/04/27(金) 20:23:31
DXライブラリを使用してゲームを作ってみようと思っているのですが、
このライブラリって実際どのぐらい普及しているんでしょうか
337デフォルトの名無しさん:2007/04/27(金) 20:57:31
1%以下とだけ言っておく
338デフォルトの名無しさん:2007/04/27(金) 21:08:26
>>337
どうも。思ってたより少ないです
339デフォルトの名無しさん:2007/04/27(金) 22:12:13
>>338
アホかw
340デフォルトの名無しさん:2007/04/28(土) 00:38:11
ライブラリの普及率なんてどうでもいいことだと思うが。
341デフォルトの名無しさん:2007/04/28(土) 00:56:06
孤独を癒してはいけないんですか
342デフォルトの名無しさん:2007/04/28(土) 01:06:49
ある程度自分が使って馴染んできたライブラリが実は利用者ごく僅かな
劣化ライブラリでしたーってことになったら困る
343デフォルトの名無しさん:2007/04/28(土) 01:20:49
でも、ネットでRPGツクール未満のゲームとか、
ダメプログラマがゲー専の卒業制作で使うとか
マイコンBASICマガジンの投稿作品に勝てないようなゲームしかないじゃない。
344デフォルトの名無しさん:2007/04/28(土) 01:39:15
>>343は何に対してレスしてるのか理解できない
345デフォルトの名無しさん:2007/04/28(土) 02:11:52
私は●●のライブラリで作りましたって言って
キラーアプリを作ってしまえばもうウハウハです
346デフォルトの名無しさん:2007/04/28(土) 10:56:48
>>343
STARGAZERは実装としてはよくやったとおもう。
(デザインは既存ゲームのエッセンスをぱくりまくっただけだが、プログラム的にはそれは問題ではない)
BGMがらみで別ライブラリ使ってるから、ソースもいじってるのかもしれないが。
ライブラリを生かすも殺すも実力しだいか
347デフォルトの名無しさん:2007/04/28(土) 12:50:20
330カワイソス
348デフォルトの名無しさん:2007/04/28(土) 12:55:51
>>342
意味分からん。どの道、ライブラリなんて言っても
元々DirectXのラッパー程度なんだしそれのどこに劣化で問題がある?
むしろ、重要なのは権利回りで実用時に問題が無いか?とか
開発やサポートが止まってて予期せぬ中断を強いられないか?じゃないか?

349デフォルトの名無しさん:2007/04/28(土) 14:12:13
>>342それで困るってことはないだろ。
350デフォルトの名無しさん:2007/04/28(土) 22:17:41
俺らは額を泥に埋めてまでも
ライブラリの名声を借りなければ世の中を渡っていけない。
キャリア組の連中は現場のことなんて分かりやしないんだ!
351デフォルトの名無しさん:2007/04/29(日) 07:45:51
人数だけ見たら海外ものが多いに決まってるがwwwwwwコミュニティーが活発とか将来性、ライセンスじゃね?
352デフォルトの名無しさん:2007/04/30(月) 00:29:22
例えばBackBufferCountの値を大きくするとフレームごとの処理の重さを平坦化して滑らかに動かす事に活用できるのでしょうか?
操作が遅延するのでゲームには使えないがデモに使えるのではないかと目論んでいます。
353デフォルトの名無しさん:2007/04/30(月) 01:19:22
ファイルパッキングしたものから
画像ファイルからテクスチャを作るときどうしていますでしょうか?

パッキングされたものから画像を保存
それを読み込みしかないのでしょうか?
354デフォルトの名無しさん:2007/04/30(月) 01:28:02
D3DXCreateTextureFromFileInMemory
355デフォルトの名無しさん:2007/04/30(月) 01:59:25
>>352
自分のアプリで計測して比べてみ。一箇所の違いだから簡単だろ。
なんか結果でたら報告してくれよ
356デフォルトの名無しさん:2007/04/30(月) 05:25:20
>>352
そんなあらかじめ計算できるもんなら最初からデータにしとけよw
折角ゴイスーなデモやるなら操作できないと意味ない希ガス
見せるだけならムービーでいいじゃん
なんか3DMarkなんとか思い出したw
いま、全く聞かないけどどうなったんだろ?w
357デフォルトの名無しさん:2007/04/30(月) 16:31:10
ライブラリ使ってとりあえず完成させて、一通りの処理の流れを掴んでから
ライブラリなしで作り始めるってのはありかな?
358デフォルトの名無しさん:2007/04/30(月) 17:06:00
>>357
そんなことできるもんか
下地をとっかえるなんてことは理論上簡単そうに見えても
実際には根が張るから不可能だ。
作り直したほうが速い典型だな
359デフォルトの名無しさん:2007/04/30(月) 17:57:23
>>356
3DMark2007出るよ
360デフォルトの名無しさん:2007/04/30(月) 17:58:50
>>357
最初からライブラリを自分なりのラッパークラスでつつんで開発すれば
あとで実装を書き換えるだけになるからなんとかなるかも

最初からライブラリ使うな?それはごもっともw
361デフォルトの名無しさん:2007/04/30(月) 18:49:06
>>359
3DMark2000,2001,03はタダだったから実行してみたな
驚いたのは2000ぐらいで後はフーンって感じだったw
こんときはセンスもよかったしね
3DMark05,06,07なんて俺のRadeon9600proで動かないだろうなw
っていうかまだタダでDownloadできるんだろうか?w
362デフォルトの名無しさん:2007/04/30(月) 18:53:36
3DMark05は動くっぽいな
でも06はむしろCPUがデュアルコアでメモリがたくさんないと駄目ってか?
いまってそういう時代なわけ?
完全に過去の人になったな俺w
363デフォルトの名無しさん:2007/04/30(月) 19:11:20
今はもうグラボもデュアルじゃないと
364デフォルトの名無しさん:2007/04/30(月) 19:18:17
3DMark05のデモみたけどセンスワリィなぁ
この銃撃戦バキュバキュって奴どんなに派手に作ったってよくみえねぇって
03のときも似たようなことやってなかったか?
技術的にいいところあっても真似してやろうと思わんよ

06はなんかドラゴン出てきてよさげっぽいからちょっと期待してみたりw
365デフォルトの名無しさん:2007/04/30(月) 23:49:47
3DMark06見て見た
3DMark05と同じデモで終わり・・・ケチー!
終了ー!w
バッカじゃねぇのw
グラボももうネタねぇんだろw
366デフォルトの名無しさん:2007/05/01(火) 00:06:43
>>358,>>360
ok、気合入れてライブラリなしで作ってみるよ
まあまずはC++の勉強からだが…
367デフォルトの名無しさん:2007/05/01(火) 09:35:27
C++どころかstdioとかも作らないとライブラリを使用してることになるんじゃね?
368デフォルトの名無しさん:2007/05/01(火) 09:44:06
標準ライブラリは使っておk
369デフォルトの名無しさん:2007/05/01(火) 12:30:56
標準ライブラリが無い環境のほうが特殊だ品
370デフォルトの名無しさん:2007/05/01(火) 13:59:57
>>369
WindowsCEとかSDKによってはなかった希ガス(標準関数の方だったかな?)
後、組み込みとかだと標準ライブラリはほとんど使えなくて
標準関数とかも使えるもんと使えないもんとある環境があった希ガス

まあ、ゲームとは縁の無い話だがw
371デフォルトの名無しさん:2007/05/01(火) 14:16:25
だからそういう環境が特殊ということでしょ。
372デフォルトの名無しさん:2007/05/03(木) 01:04:57
DirectX9.0のDLは無料なんですか?
373デフォルトの名無しさん:2007/05/03(木) 01:11:40
>>372
はい、そうです。
374デフォルトの名無しさん:2007/05/03(木) 01:17:02
>>373
ありがとうございます!
早速DLします。
375デフォルトの名無しさん:2007/05/03(木) 01:33:44
後払いだからそのうちMSから請求が来るぞ。
376デフォルトの名無しさん:2007/05/03(木) 02:50:29
わかったから寝ろ
377デフォルトの名無しさん:2007/05/03(木) 21:28:29
タダじゃない、きちんと金は払っているだろ。
だからこそ開発できるのに、根本的なところを理解していないと、すぐに無料とか安易な答えが返ってくる。

困ったものだ。
378デフォルトの名無しさん:2007/05/04(金) 02:08:05
アカデミック版ってお得すぎないか?
何か致命的なとこがありそうで怖い
379デフォルトの名無しさん:2007/05/04(金) 03:37:30
>>377
わかったから消えろ
380デフォルトの名無しさん:2007/05/04(金) 09:02:29
>>378
安いのにはそれなりの理由があるんだよ。
381デフォルトの名無しさん:2007/05/04(金) 11:11:33
>>378
大丈夫。
つか、基本的にアカデミック版を買う奴らの方が、
長い目で見れば金を落としてくれるから、安くしてあるだけのこと。

(極端な話、プログラミングなんて始めるのにも学習時間が必要だし、
 時間があまって、それなりに気力のある人間に多少安く売っておいても、
 その後の20年30年で十分Payできるだけの投資価値があるって事。)
382デフォルトの名無しさん:2007/05/04(金) 12:59:02
趣味でやってる俺には将来全くpayの見込みはないな
ゲイツごめんね^^
383デフォルトの名無しさん:2007/05/04(金) 15:27:27
>>381
逆だよ。本当はアカデミック版価格でも十分は利益はだせるんだが、
絞れるヤツからは絞れるだけ絞りとってるだけ。これビジネスの常識。
384デフォルトの名無しさん:2007/05/04(金) 15:56:35
質問!!


ところで、C/C++で何作ってるんですか??
385デフォルトの名無しさん:2007/05/04(金) 16:07:59
コンパイルされたバイナリに決まってるだろ。
386デフォルトの名無しさん:2007/05/04(金) 16:23:08
それどんなバイナリ?
387デフォルトの名無しさん:2007/05/04(金) 16:27:01
それを教えるのはやばいナリ
388デフォルトの名無しさん:2007/05/04(金) 17:20:03
>>387
すごい
なんかうまく決まった感じだ
389デフォルトの名無しさん:2007/05/04(金) 17:25:26
ここにきてもC/C++でアプリ作ってるやつなんかいないよ
みんな教科書の知識だけでしゃべってるんだから!
390デフォルトの名無しさん:2007/05/04(金) 17:38:03
そもそも教科書なんて存在しない。
391デフォルトの名無しさん:2007/05/04(金) 17:51:36
そうだな教科書はSE試験のテキストくらいだな
教科書よりも書籍類の知識ってことで
392デフォルトの名無しさん:2007/05/04(金) 18:33:18
最近はWEB上の情報だけで何とでもなるから、書籍なんて全然買ってないな。
393デフォルトの名無しさん:2007/05/04(金) 18:45:34
>最近はWEB上の情報だけで何とでもなるから、書籍なんて全然買ってないな。
てか、一時期のシェーダバブルが終わってから勉強してないだろ?
394デフォルトの名無しさん:2007/05/04(金) 19:46:10
Xファイルから頂点座標、x,y,z成分をそれぞれ抽出する方法を教えてください。
よろしくお願いします。
395デフォルトの名無しさん:2007/05/04(金) 19:49:27
普通にメッシュの中にそのまんまのデータが入ってるだろ。
教えるも何も見たまんまだ。
396デフォルトの名無しさん:2007/05/04(金) 20:43:16
>>395
そうではなくて頂点座標とか一部のみ抽出する方法を知りたいと言ってるんですが。
データが入ってるのは知ってますし、Xファイルのロードぐらいできますよ。
397デフォルトの名無しさん:2007/05/04(金) 20:52:15
データの配置も見たまんまなんだから、とりたいところを好きなように取り出せばいいだろ。
398デフォルトの名無しさん:2007/05/04(金) 21:06:52
>>395
すみません。それが分っていない奴でして…。
D3DXLoadMeshFromX()関数を使用してXファイルを読込む際に、第8引数に渡すLPD3DXMESH型の変数から
頂点座標を抽出できそうかな?と勝手に当てをつけているのですが…
例えばx成分だけを取り出すにはどうすれば良いのでしょう?
399デフォルトの名無しさん:2007/05/04(金) 21:14:17
IDirectXFileから読み出した方が、ヘルプに書かれているフォーマット通りなのであっさり出来る。
400デフォルトの名無しさん:2007/05/04(金) 21:48:09
すみません…第8引数に渡すのはID3DXMesh型でした orz
D3DXLoadMeshFromX関数によって呼び出した場合は成分抽出は難しいということでしょうか?
IDirectXFile、調べてきます。
401デフォルトの名無しさん:2007/05/04(金) 22:11:01
>>399
>LPD3DXMESH型の変数から頂点座標を抽出できそうかな?
ここまで書いているのに、あくまでパーサー作らせようというのはどうよ?

>>400
君の予想通り、ID3DXMeshへの操作で可能。
ID3DXBaseMesh::LockVertexBufferで頂点配列へのポインタが得られる。
頂点要素のフォーマットはID3DXBaseMesh::GetDeclarationで得られる。
まあこれだけでは情報が足りず、ロックが失敗するなどかもしれんが
そこは頑張ってください。
402デフォルトの名無しさん:2007/05/04(金) 22:33:46
>>401
具体的な情報とご指示ありがとうございます!
頑張ります。( ゚∀゚)ゞ
403デフォルトの名無しさん:2007/05/04(金) 22:39:40
>>401
IDirectXFileがパーサーなのにパーサーを作らせようというのは意味不明。
404デフォルトの名無しさん:2007/05/05(土) 11:38:00
Direct3D 10のReference見てるんだけど、アニメーション関係の機能とか殆どないけど、従来のDirect3D 9のやつを併用しろってこと?
405デフォルトの名無しさん:2007/05/05(土) 12:18:49
そもそもDirect3D自体にはアニメーション機能など無い。
406デフォルトの名無しさん:2007/05/05(土) 17:19:06
DirectXでも、windowsの機能でも良いので、使用可能なVRAMの容量を取得する方法は有りますか?
DirectXで、テクスチャに使える容量をゲットできる関数は見つける事が出来ました。
御願いします。
407デフォルトの名無しさん:2007/05/05(土) 17:42:45
>>405
いや、D3DXの話。Direct3D10でもDirect3D 9時代のD3DXが使えるのかな、とちょっと心配だったもので
408デフォルトの名無しさん:2007/05/06(日) 21:59:11
VRAMを食い尽くすまで1MBずつ確保してみるとか
409デフォルトの名無しさん:2007/05/06(日) 22:41:12
C++のソースモジュールのサンプルをまとめたページとかないですかね?
例えば、
「cout」をクリックするとサンプルソースのページへリンクしてる様な。
↓(使い方の例)
#include<iostream.h>
using namespace std;
int main()
{
cout<<"hello"<<endl;
}
って感じで。
410デフォルトの名無しさん:2007/05/06(日) 22:50:39
なんでここで聞くんだ?
411409:2007/05/06(日) 23:20:22
どこで聞きゃいいんだ。初心者だからワカンネえの。
412デフォルトの名無しさん:2007/05/06(日) 23:33:18
>#include<iostream.h>
>using namespace std;

こういう間違った使い方の例をリンクしているページを探しているとは、
わけの分からん奴だな。
413デフォルトの名無しさん:2007/05/06(日) 23:44:50
3D関連のサンプルソースを公開してくれている海外サイトで、お勧めの所とかないでしょうか?
414デフォルトの名無しさん:2007/05/06(日) 23:46:50
STLが格好良くて使ってみたい年頃
君らもあっただろう
415デフォルトの名無しさん:2007/05/06(日) 23:48:04
>>413
マイクロソフトのDirectX SDKのサンプルコードは世界中のDirectX開発者が参考にしてるよ
416デフォルトの名無しさん:2007/05/07(月) 00:18:01
>>412
>using namespace std;
俺、これっていつもおまじないだと思って書いてるけど実はどうなの?w
417デフォルトの名無しさん:2007/05/07(月) 00:19:13
まず名前空間について理解しろよ
418デフォルトの名無しさん:2007/05/07(月) 00:21:11
やはりSDKサンプルコードが一番参考になるんですね。
ありがとうございます。
419デフォルトの名無しさん:2007/05/07(月) 00:34:07
>>417
いや、津皮ネェ死
420デフォルトの名無しさん:2007/05/07(月) 00:43:00
いや、趣味がライブラリの作成である場合、カッコイイライブラリにするためには
名前空間は必要だよ。
421デフォルトの名無しさん:2007/05/07(月) 01:04:58
>>420
なんだよ、それ? 趣味がライブラリの作成? アホか?



・・・って、よくよく考えたら俺のことじゃねぇか。
422デフォルトの名無しさん:2007/05/07(月) 01:12:40
>>416
iostream.hとiostreamの違いについてレポートを提出せよ。
そうすれば412の言っている意味が分かる。
423デフォルトの名無しさん:2007/05/07(月) 12:22:29
みなさんFXファイルって使ってる?
市販のゲームとか、普通にFXファイルをロードするやり方しているのかな。
テキストファイルだし、遅いような気がするんだけど。開発時だけFXファイルで、
リリース時は別のファイルフォーマットに纏めていたりとかしないのかな。

FXファイルのロードとパースのスピードって実質どれくらい?
424デフォルトの名無しさん:2007/05/07(月) 12:23:54
コンパイル済みにバイナリに直せるだろ。
いったい何を言っているんだ?
425デフォルトの名無しさん:2007/05/07(月) 14:55:08
>>424
それが質問に対する答えのつもりならTHE YUTORIか。
> Q. FXファイルのロードとパースのスピードって実質どれくらい?
> A. コンパイル済みにバイナリに直せるだろ。
こんなのあるかよ。


誰か試した人いる?
426デフォルトの名無しさん:2007/05/07(月) 15:01:44
>>425
YUTORIじゃなくてノーギャラの間違いだと思う。

まあ自分のところではFXファイルの数よりもテクスチャ枚数の方が桁で多いので、
先にテクスチャロードの方をチューンして満足しちゃうことの方が多いなぁ。
なのでFXファイルのロードとか気にしたことも無いよ。
427デフォルトの名無しさん:2007/05/07(月) 15:18:48
>>425
俺は424じゃないけど、テキストファイルだから遅いんじゃないかと気にしてる人に対して、
fxc.exeによるエフェクトのバイナリ化を勧めるのは不適切な回答ではないと思うよ。
それに>>423は全部質問的な口調だから最後の一文だけが質問ってわけじゃないだろ?

コンパイル済みでもD3DXの関数でテキストと同じようにロードできるし、速いし、隠蔽できるし。
特別トリッキーなことをしたいとかじゃない限り事前にコンパイルしない理由はないと思う。
428デフォルトの名無しさん:2007/05/07(月) 15:19:52
FXはカスタムコンパイルに仕込んでおいて、事前にヘッダ化。
C++のコードをコンパイルする段階で組み込まれるようにしている。
429デフォルトの名無しさん:2007/05/07(月) 15:22:26
>>428
俺もそうしてる。
430デフォルトの名無しさん:2007/05/07(月) 15:46:32
質問スレでこちら誘導されたので、書き込ませていただきます。

DirectXでプログラムを組もうと思い、SDKをインストールしようとしたのですが
どのバージョンを入れるのが一般的には良いのでしょうか?

今公式で落とせるのは9.0のようなのですが
XPに標準で入っている8.1のSDKで組むほうが良さそうな気がしてきて
どうしようか悩んでいます。

というのも、DX9だと、同じ9.0cでもdllが足りなくて起動できなくなるというような話も
耳にしたことがあり、DX8.1のほうがいいのかなと思っております。

そこで、経験者の方で、経験上こっちのほうが良いという意見があったら
簡単な理由もつけて教えていただけけないでしょうか?

よろしくおねがい致します。
431デフォルトの名無しさん:2007/05/07(月) 16:18:49
DirectXを使って2D描画を行う場合について解説サイトをいろいろ回ったところ
1. ポリゴンを使って、それを3D空間の正面に張って2Dに見せかける方法
2. スプライトですべて描画を行う方法
の2種類に分かれているのがわかりました。

この場合、どちらがどのようなメリットがあるのでしょうか。
両方とも同じだと考えて良いのでしょうか?


↑の方法について、素人考えで思う点がいくつかありまして

1の場合
・仮に2D平面のままX,Y軸回転を使いたくなったとき等に便利?
  (例えば、カードをひっくり返すときの回転など)
・カメラの位置などをよほど厳密に合わせないと、タクスチャがにじんだりする?
  (3Dと違って2Dの場合は1ドットのズレでも目立つような気がします)

2の場合
・800×600の背景画像などをスプライトにする例はサンプルでも見たことがない
  (あまり大きい画像をスプライトにすると問題があるかもと思ってしまう)
・画像の描画座標が元々2D平面のため、座標ズレ、にじみ等が起こりにくい?
・ポイントスプライトやX軸orY軸回転など、様々なエフェクトが使いにくそう
  (派手なエフェクトなどは無理そう?)

というような点が考え付くのですが、これらは間違った認識でしょうか?
432デフォルトの名無しさん:2007/05/07(月) 16:49:11
>>430
Direct3D8は間に合わせで作った出来の悪い粗悪品だから
仕様上の問題点も多いので、素直に9を使った方がいいよ。

DLLが足りない問題等は、ランタイムのウェブインストーラへの
リンクを書いておけばいいかと。
433デフォルトの名無しさん:2007/05/07(月) 16:58:52
>>432
あと、ユーザーは取説読まないので、起動時にDLLチェックして
無ければウェブインストーラのページに飛ばしてあげるとなお良いかな。
434デフォルトの名無しさん:2007/05/07(月) 17:47:05
>>430
お前はSP2が入っていない、MSですらサポートを打ち切った環境をターゲットにするつもりなのか?
435デフォルトの名無しさん:2007/05/07(月) 17:48:00
>>431
DirectXにはスプライト機能など存在しない。
436デフォルトの名無しさん:2007/05/07(月) 18:35:48
>>435
マジですか…
ID3DXSpriteと言うのを検索でいくつか
見つけたのであると思ってたのですが
これは違うのですか?
437デフォルトの名無しさん:2007/05/07(月) 18:37:34
D3DXライブラリの機能な。
438デフォルトの名無しさん:2007/05/07(月) 18:46:29
えーと…つまり

スプライトはmicrosoftが作ったライブラリの機能であり
単にポリゴンを使った2D描画を簡単に扱えるだけで
中でやってることは全く同じである

むしろその分やれることが少なく、自由度は低い

であってますでしょうか?
だいたい431の内容の後半は当たっていると考えてよいですか?
439デフォルトの名無しさん:2007/05/07(月) 19:37:00
>>427
>>428
カスタムコンパイルって、VisualStudioのカスタムビルドのことね?
なるほど、その方がいいなぁ。
というかfxc.exeなんてのがあるって知りませんでした。
OpenGLから移ってきたばかりなもんで・・・。
440デフォルトの名無しさん:2007/05/07(月) 20:43:44
>>432-433
あれから調べていたら、9.0cで作ったプログラムを9.0cが入ってるマシンで
起動した場合でも、d3dx_**.dllが足りないというエラーが出ると聞いて
なんか紛らわしいなぁと思っていて、さらに深みにハマってたところです。
ただ、品質が悪いということなら、素直に9.0cにしておこうと思います。
回答ありがとうございます。

>>434
最近のゲームでも、8.1以上というゲームが多いため、
やはり8くらいからできるようにしたほうがいいのかな…と思っていました。
単に、昔から開発していたものだから8.1以上なだけかもしれませんね。
441デフォルトの名無しさん:2007/05/07(月) 22:57:47
>>439
俺もカスタムビルドにしてるよ。
>>428のヘッダ化というのがちょっと意味がわからないが。
エフェクトは便利だが、柔軟性がなく冗長なコードを書かされるのが
不満と言えば不満。
例えばテクニックの中でフロー制御出来て
ダイナミックにパスを組み立てて実行出来たら、もっと便利。
442441:2007/05/07(月) 23:00:13
ああ、ヘッダ化ってのわかった。
なるほど、そっちの方が便利そうだなぁ。
443デフォルトの名無しさん:2007/05/07(月) 23:27:10
欠点を挙げると、D3DXを静的にリンクするときに、
コンパイル済みのデータを使っているにもかかわらず、
どでかいシェーダコンパイラが一緒にexeに含まれること。
それほど複雑とは言えないシェーダの構文を変換するだけで500KB以上食うのはいくら何でもでかすぎ。
444デフォルトの名無しさん:2007/05/07(月) 23:49:18
>>443
それマジ?
俺のexe、半分以上がD3DXだったのか・・
ってd3dx9_33.dllてのあるし、実際のところどうだろうね?
何かわかる方法あるかな?
445デフォルトの名無しさん:2007/05/07(月) 23:52:01
DLLを呼び出している場合は関係ない。
446デフォルトの名無しさん:2007/05/07(月) 23:53:55
SDKの2004シリーズで、D3DXでシェーダを読み出すコードを入れるか入れないかで、
面白いように実行ファイルのサイズが変わる。
447デフォルトの名無しさん:2007/05/08(火) 00:00:04
>>431
トランスフォーム済み頂点(TL頂点)使えばXYは画面のそれぞれの軸、Zが奥行きで指定できる。
SetFVFのヘルプ当たりを探っていたら〜RHWってのがあると思うから調べてね。
448デフォルトの名無しさん:2007/05/08(火) 01:11:49
>>447
ええと…トランスフォーム済み頂点を使えば
SpriteでもX軸回転やY軸回転ができるということでしょうか?
ちなみに、先ほどD3DXMatrixRotationZを用いてスプライトの回転ができたので
単純にD3DXMatrixRotationYを使ったところ、まともに回転しませんでした。
これからSetFVFについて調べて回転をしてみたいと思います。
449デフォルトの名無しさん:2007/05/08(火) 06:49:17
>>448
頂点座標を直接指定してDrawPrimitiveUPとかで描画。
回転なら行列をかけてもいいけど、sinやcosを使って計算しても簡単に出来る。
正方形なら画像の中心で横に(Z軸)回転する場合、v[0].x=sin( D3DXToRadian( 45 + Angle ) );とか。
450デフォルトの名無しさん:2007/05/08(火) 22:23:35
>>449
一通り勉強して理解しました。
スプライトでやろうが、rhwでやろうが、
はなっから2次元前提なので、Z軸回転しかできないってことですね。

では、スプライトはrhwでの描画を行うライブラリという概念でよいのでしょうか。

スプライトとrhwでの描画はまったく同じものであり、
3次元空間に描画を行わない限り過剰なエフェクトはかけられない
という認識で正しいですか?
451デフォルトの名無しさん:2007/05/08(火) 22:27:55
とりあえず余計なことを考える前にSDKのチュートリアルを終わらせろ。
四の五のいうのはそれからでいい。
452デフォルトの名無しさん:2007/05/08(火) 22:32:57
なんでD3DXSpriteに手を出した初心者は珍奇な勘違い野郎になるの?
453デフォルトの名無しさん:2007/05/08(火) 22:34:30
>>450
>スプライトでやろうが、rhwでやろうが、
>では、スプライトはrhwでの描画を行うライブラリという概念でよいのでしょうか。
>スプライトとrhwでの描画はまったく同じものであり、

rhw、rhwって、おまえRHW(Reciprocal Homogeneous W)の意味わかって言ってるのか?
自前でTL頂点に変換するときに3次元空間上で回転させるのも自由だろ。
454デフォルトの名無しさん:2007/05/09(水) 00:55:15
>>451
SDKのチュートリアルは、一応一通り読みました。
(日本語版なので、2004年版と少し古いですが)

>>453
もちろんワールドからビューポート変換まで、全て自前でやるならば可能だと思います。
ですが、3D空間上にポリゴンをおき、それを完全に2Dスクリーン上に
1ドットの狂いもなく配置するとなると、非常に難しそうなイメージがあり
単にスプライトのように張っただけでもテクスチャがぼやけたりしそうだなと…

本格的に3Dをやるのではなく、あくまで2Dの補助として使いたい場合に
XYZRHWを用いて、なんとかごまかすなどの方法がないかと思ったのです。
伝わりにくかったかもしれませんが、rhwというのは
「D3DFVF_XYZRHW(スクリーン上の頂点座標)を用いて処理を行う場合」
という意味で使ったつもりです。

>>452
3Dの概念をうまく理解できないオールドタイプで申し訳ありません。
455デフォルトの名無しさん:2007/05/09(水) 07:52:38
>>454
XYZRHWはZ値(奥行き)がどうであれスクリーン座標の位置は変わらないから、UV値を間違えない限りぼやけることはない。
1ドットの線も綺麗に描画されるし。

>本格的に3Dをやるのではなく、あくまで2Dの補助として使いたい場合に
>XYZRHWを用いて、なんとかごまかすなどの方法がないかと思ったのです。
誤魔化すどころかこっちが主流じゃね?

ちなみに机の上に紙を置いた状態でZ軸回転は頭の中で理解出来ているよね。
これをノートのページをめくる様な見た目がX軸やY軸回転。
現実世界は3D、机の真上からノートを見たら2Dに見えるだけで(ry
456デフォルトの名無しさん:2007/05/09(水) 08:18:24
>>454
読んだだけでは理解できないんだから、
怠惰で手抜きせずにきちんと自分でコードを入力して、動かすところまでやれ。
457デフォルトの名無しさん:2007/05/09(水) 10:37:18
DirectXの昔のSDKってもう手に入れることは出来ませんか?DirectX6用のリファレンスやサンプルソースをが欲しいのですが。
Microsoftのダウンロードセンターにももう無いみたいだし、ぐぐって見てもruntimeはあったんですがSDKはさすがに見つけられずで、あとは古い本に付属してるのを探すくらいしかないのかなあと思ってるんですが。
458デフォルトの名無しさん:2007/05/09(水) 10:42:32
そんな中途半端なものが必要な理由は?
459デフォルトの名無しさん:2007/05/09(水) 11:10:40
DirectX6で作られたすでにあるアプリに外からDirectPlayでつなげようとしていて、新しいDirectPlayだと上手く繋がらないので、バージョン互換の問題なんかなあと思ってて、DirectX6のSDK探してました。
460デフォルトの名無しさん:2007/05/09(水) 12:48:31
アルファが全部真っ黒なスプライトを描画すると
通常通りだと何も描画されないはずなんですが、

全部描画されるんですけど仕様ですか?
素材をいじる以外で回避方法はありますか?
461デフォルトの名無しさん:2007/05/09(水) 13:26:26
全然情報が足りない。
説明するのが面倒なら他人を頼るな。
462460:2007/05/09(水) 15:34:17
サンプルつくりました。ソース一式あげました
bmpは、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だと思います。

他にも足りない情報があったら言ってください。
よろしくおねがいします。
463460:2007/05/09(水) 15:38:33
描画にDrawPrimitiveUpを使っていますが
D3DXSpriteでも、同様の現象が出ます。
464デフォルトの名無しさん:2007/05/09(水) 18:36:34
ビットマップの中身をバイナリエディタで確認してみろ。
465460:2007/05/09(水) 18:45:48
すいません。右側のalfaFFのbmpの方が間違えてました。
修正しました。
http://www.uploda.org/uporg803484.zip.html
pass: test

やはり、左右ともベタ表示されます。
466デフォルトの名無しさん:2007/05/09(水) 18:56:07
32bitBMPの上位8bitは必ずしもアルファ値ではない。
467460:2007/05/09(水) 19:01:17
このソースでは、32bitBMPを読んでいますが
textureをLockして、全部のアルファを00にしても同様の現象が起こるのです。
468460:2007/05/09(水) 19:07:10
一つでも01だと消えます。(01の部分だけうっすらと表示してる予感)
469デフォルトの名無しさん:2007/05/09(水) 19:19:01
BMP ファイルや DIB にはアルファ値込みのフォーマットが存在しない。
D3DXCreateTextureFromFile は 32bpp の BMP を処理する際に、
ヒューリスティックな処理をおこなってα値の有無を決定している。
んでオールゼロだとただの(α無しの)BMPと判定される。
PNGを用いること。

とかそれらしいことを書こうと思ったのに
>textureをLockして、全部のアルファを00にしても同様の現象が起こるのです。
かw
470デフォルトの名無しさん:2007/05/09(水) 21:27:44
>>469
フォーマットにD3DFMT_X8R8G8B8が選択されてる悪寒
471デフォルトの名無しさん:2007/05/09(水) 22:06:34
>>470
469じゃないけどちょっとソース弄って試してみた。
GetLevelDesc で調べたら、案の定 test1.bmp だけ X8R8G8B8 になってるね。
D3DXGetImageInfoFromFile でも同様にフォーマットが X8R8G8B8 だと判断される。
で、試しに D3DXCreateTextureFromFileEx で強制的に A8R8G8B8 にしてみたら、
ファイルのアルファ値が無視されて全部FFになっちゃった(まあ当然だけど)。
もちろん、さらにロックして全部00に書き換えればちゃんと透明になってくれた。
472460:2007/05/10(木) 00:15:33
すいません
>textureをLockして、全部のアルファを00にしても同様の現象が起こるのです。
と言いましたが
作成後のLockじゃなくCreate〜FromMemoryに入れる数値をいじってたみたいでした。
すいません

現象の理由は解決しました。(Alphaが00の時、マスク無し形式とみなされる)
ありがとうございました。

473デフォルトの名無しさん:2007/05/10(木) 21:09:26
なぜか最近、xファイルを見ようとすると、
Loading effect Resource #103
というエラーが出て、見ることが出来なくなりました。

きっかけとして思い当たるのが、DirectXsdkを入れた事ぐらいなのですが、
解決方法の分かる方はいませんでしょうか?
474デフォルトの名無しさん:2007/05/10(木) 21:25:41
それって何が吐き出すエラーなのか言いなさいよ
475デフォルトの名無しさん:2007/05/10(木) 23:09:17
>>474
DirectX Viewerです。

Xファイルを上記の物で開くと、「問題が発生したため、DirectX Viewerを終了します」という
Windowsエラーメッセージ(?)を吐き出してきて、ViewerのログにLoading~というメッセージが表示されています。
476デフォルトの名無しさん:2007/05/10(木) 23:13:14
>>475
DirectX Viewerが内部で使うシェーダコンパイラが、Dec 2006 から
D3DX10版がデフォルトになって、そのせいでぐだぐだになってるわけね。
・他のビューアを使う
・Oct 2006 以前のSDKをインストール
・DxViewerのソースを修正してビルド
のどれかね。
477デフォルトの名無しさん:2007/05/10(木) 23:14:16
うちのSDK April 2007もそういう結果になる。
普段Xファイルを使わないのでいままで気づかなかったけど。
478デフォルトの名無しさん:2007/05/10(木) 23:42:45
なるほど、ソース修正は結構手間が掛かりそうだし、
他のビューア探してみましたがどうやら開けないっぽいorz

となると、ひとまずOct2006以前のSDK使用しか選択示は無いようで。
お早い回答、有難うございました。
479デフォルトの名無しさん:2007/05/10(木) 23:57:30
>>476
Dec 2006以降のD3DXではps_1_xのサポートを打ち切ったっというのが直接的な原因みたいだね。
DirectX Viewerのデフォルトエフェクトのピクセルシェーダは complie ps_1_1 になってるから
ID3DXEffectCompiler::CompileEffect によるコンパイルで失敗する。
480603:2007/05/12(土) 19:14:10
DirectX9.0cをダインロードしてインストールして
ちゃんと「完了」とでたんですが再起動してもインストール自体されてないっぽいんです
誰か教えてください、あとXPです
481デフォルトの名無しさん:2007/05/12(土) 19:25:37
ファイルを指定して実行からdxdiag
482デフォルトの名無しさん:2007/05/12(土) 19:30:11
そもそもDirectX9のインタフェイスの中で何が取得できずに、
インストールできていないと判断したんだ?
483デフォルトの名無しさん:2007/05/12(土) 20:20:56
レスありがとうございます
ネットワークのとこにエラーがありました
デスクトップにアイコンがなかったのと
いつもなら新しくインストールしたらそう表示されるんですが
されなかったから勝手に判断したんですが
診断ツールのDirectXバージョンのところにDirectx9.0c
てあったからインストールされてたってことなんですかね?
ネットワークのエラーメッセージはdirectplay8○○Service Provider
が何かおかしいとのことです
484デフォルトの名無しさん:2007/05/12(土) 20:23:07
何かおかしいとかそんなどうでもいい情報をのたまう暇があったら、
具体的に何のAPIを使ってエラーコードは何だったのかを書け。
485デフォルトの名無しさん:2007/05/12(土) 21:32:29
>具体的に何のAPIを使って
d 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
486デフォルトの名無しさん:2007/05/12(土) 21:46:33
短気は損気
487デフォルトの名無しさん:2007/05/12(土) 21:47:32
それはインタフェイスの名前。
要求しているのは具体的なAPIとそれを使った場合の戻り値。
頭が悪いにも程があるぞ。
488デフォルトの名無しさん:2007/05/12(土) 21:52:06
よく分からんけどコンパイル時に出るならどの関数が原因なのか消去法で探していけば解決する。
APIが特定出来た上で解決出来ないのならもう少し詳細を。
489483:2007/05/12(土) 22:25:31
>>484
すいませんAPIってなんのことかわかりません
どうやって確認するのか教えてください
エラーコードですがこれのこといってるのかわかりませんが
Directplay8 TCP/IP serviceprovider エラー
Directplay8 IPX serviceprovider エラー
Directplay8 modem serviceprovider エラー
Directplay8 serial serviceprovider エラー
エラーのついてる所を抜き出しました、違うとこいってたらすいません・・
あと485は俺じゃないです
490デフォルトの名無しさん:2007/05/12(土) 22:34:24
こいつプログラマじゃねぇんじゃねぇの?w
491デフォルトの名無しさん:2007/05/12(土) 22:35:40
ここはプログラムを作る人間が書き込むべき板なんだが、
何故APIがわからないとか頓珍漢な発言が出てくるんだ?
492デフォルトの名無しさん:2007/05/12(土) 23:12:43
>>489
もし誰かが作ったアプリケーション(ゲームとか)を実行するときに出るなら、使っているPCが古すぎて対応していない可能性が一番高い。
493デフォルトの名無しさん:2007/05/13(日) 00:16:30
>>480
そもそもいきなり603って、こいつはどこから迷い込んだんだ?
494483:2007/05/13(日) 00:35:46
えと、実はネトゲをやりたいんですが
起動できなくてDirectxをインストールしたら動くようになるんじゃないかと
思ったんですがそれがうまくいかなくて気軽に書き込んだんですが
プログラマの方の板なんですね・・・だいぶスレ違いでした、すいません
あとそのネトゲはだいぶ昔のやつなんでPCは対応できるはずだと思います
495デフォルトの名無しさん:2007/05/13(日) 00:39:14
>>494
9.0cが対応していない
496デフォルトの名無しさん:2007/05/13(日) 00:43:48
だからここはプログラムを組む人間が利用する板なんだよ。
なんで板違いなのが分からないんだ?
ネットゲームなんて穴を掘って埋めるような作業を好んでやろうとするような奴だから、
脳味噌が腐っているんだろうけどな。
497 ◆Z4QrFDzwrY :2007/05/13(日) 00:44:36
ここで低脳質問を嗅ぎ付けた糞コテの登場
>この板はプログラムを作る人のための板です。
テンプレ読めよなー
498デフォルトの名無しさん:2007/05/13(日) 01:29:03
DirectX Sample BrowserにあるDirect3D10のサンプルをビルドすると、
どのサンプルでも以下のエラーがでます。

D3D10.hより

構文エラー:識別子'__out'
構文エラー:識別子'__in'
構文エラー:')'

コードは一切弄っていません。皆さんの環境でも同様のエラーはでますでしょうか?
解決方法を教えてください。よろしくお願いします。
499デフォルトの名無しさん:2007/05/13(日) 04:15:41
>>498
それHeader Annotationsのマクロなので、
Platform SDKとかWindows SDKの新しいの入れたらコンパイルできるようになると思う。
500デフォルトの名無しさん:2007/05/14(月) 05:18:26
DirectXは激しく初心者です。

D3D9を使ってサーフェイスのアルファブレンドをしようとしています。

まず最初に、次のようなことを試してみました。

1. OffscreenPlainのXRGBサーフェイスを作りCPUで描画。
2. OffscreenPlainのARGBサーフェイスをを作りCPUで描画。
3. ARGBサーフェイスをStretchRectでXRGBサーフェイスに転送。

てっきりこれでARGBサーフェイスのアルファ値で設定したようにXRGBサーフェイスにアルファブレンドしてくれるのかと思ったのですが駄目みたいです。
ただ単にあるサーフェイスを別のサーフェイスにアルファブレンドするには何が一番簡単な方法なんでしょうか?

一般的なドローソフトをD3D9に移植しており、特にテクスチャとかは使用せず、描画は全てCPUで行い、
表示する時にアルファブレンディングや拡大縮小が必要な時だけハードウェアを使いたいと考えています。
501デフォルトの名無しさん:2007/05/14(月) 07:10:04
>>500
2D機能だけ使うなら拡大縮小はやってくれるかもしれんけどαブレンドはハード使えないことになる希ガス
描画はすべてCPUで行うって言ってるのに拡大縮小αブレンドだけハードっていうのがどういう状況かよくわからない

描画するのに拡大縮小とかαブレンドをする物体はなんかの状況に限られるってこと?
そんときだけテクスチャ使ってハードウェアの3D機能を使って描画するなら拡大縮小もαブレンドもできる。
ただ、それはD3D9サーフェイスじゃ出来ない上に3Dデバイスを初期化する必要がある。

GDI+使うのが一番いい気がするけどなぁ・・・
でも、やりたいことはそうじゃない感じ?

すまん、俺では何がやりたいのかよくわからない
502デフォルトの名無しさん:2007/05/14(月) 08:22:22
>>500
テクスチャから取得したサーフェイスにイメージを転送してからレンダリング。
503デフォルトの名無しさん:2007/05/14(月) 10:03:19
>>501
業務上の話なんで何がやりたいか詳しいことを書くのは勘弁してください。

現状だと、まずはD3D9デバイスを作り、そこからサーフェイスを作成して従来のコードを使い
CPUでサーフェイスに描画を行ってから、表示段階に拡大縮小とαブレンドをD3D9ハードを使いたいって感じです。

例えるとCPUでスプライトを書き、グラフィックチップで拡大縮小とαブレンドを行わせながら表示させていたようなソフトを
D3D9に移植し始めた第一段階みたいな感じと思っていただけるとイメージしやすいかもしれません。

GDI+だとハードを一切使ってくれないので1920x1080とかの解像度だと話になりませんでした。
504デフォルトの名無しさん:2007/05/14(月) 10:08:44
>>503
やはりStretchRectだと転送するだけで、転送時にα値を参照してαブレンディングをしてくれないという仕様なんでしょうか?

また、よく分からないのですが、SetRenderStateみたいなのってStretchRectには無関係でテクスチャだけなんでしょうか?

どうもどの関数がどの設定を使用しているとかさっぱり分からなくて。

用はあるサーフェイスに別のサーフェイスをαブレンディングしたいだけなんです。
テクスチャを使用しないとそういうことは無理なんでしょうか?
確かテクスチャサーフェイスってOffscreenPlainサーフェイスと違って色々解像度とか制限があった気がして、、、
ソフトの移植なんでそういった制限は現状だと回避が難しくて。

505デフォルトの名無しさん:2007/05/14(月) 10:29:05
気がするとかあいまいな事をグダグダ言う前にとっととやれ。
506デフォルトの名無しさん:2007/05/14(月) 10:34:26
>>505
とりあえずテクスチャ関係は一旦置いておきたいと思います。

StretchRectなんですが、α値の取り扱いってどう定義されているかご存知ありませんか?
507デフォルトの名無しさん:2007/05/14(月) 11:06:44
>>506
自己レスです。英語で検索してみたらほんの僅かにStretchRectに関して書いているところがありました。
どうやらStretchRectはただ単に元のα値を先の対応するピクセルにコピーするだけみたいですね。
拡大縮小つきのα値を含めたコピーでしかなく、ブレンディング機能はないといった感じに書かれていました。
これって正しいのでしょうか?
508デフォルトの名無しさん:2007/05/14(月) 11:40:30
StretchRectの明確な仕様文書は見たことないけど、ピクセルシェーダを通さない処理に
ブレンディングは適用されないと思う。

ドローソフトってのがベクタ系ならともかくラスタ系だと、Direct3Dですぴーどあっぷ♪
てのは難しいと思うよ。そゆのにDirect3Dは向いてないもん。道具選びから間違ってる感じ。
やりたいことがよくわからないから、動的テクスチャを次善の策としてテキトーに提案してみる。
509デフォルトの名無しさん:2007/05/14(月) 12:36:39
>>507
だから他に方法がないんだよ。
手を抜こうとか怠惰な考えは捨てて、とっとと正攻法でやれ。
510デフォルトの名無しさん:2007/05/14(月) 12:57:04
>>508
3Dの世界には疎いのですが、StretchRectはBegin/EndScene外で使用するようになっていることから
StretchRect自身は3Dエンジンとは別の、ドライバレベルだとBitBltの類にマップされていると思うのですが、
αブレンディングそのものはレンダリングステージでしか定義していないために、
StretchRectではαブレンディングが使用できないということなのかもしれませんね。
簡単に使用できるように設計できそうなのにちょっともったいないですね。

>>509
いや、正攻法どころか3Dに関してはさっぱりワケワカメでして。。。
他に方法がないという言い方からすると、やはりαブレンディングを行うためにはレンダリングステージを通る必要ありで、
そうするとテクスチャが必要になり、かつ、座標定義のためにバーテックスを作成する必要があるとか、、、
うわ、かなり面倒なんですかね?

αブレンディングをしたいかどうかだけで一気に難しくなりそうなんですね、D3D9って。。。
上位レイヤーの描画デバイスがD3D9を使用するように設計されているので、
下位レベルの2DエンジンをD3D9に移植しようとしてStretchRectだけで行けるかと思ったらαブレンディングのところで困ってしまった。
511デフォルトの名無しさん:2007/05/14(月) 13:10:15
3D というか、DirectDraw のころから、2D の αブレンディングは
HWサポートされないというのがDirectX の常識だったと思うけど・・・
512デフォルトの名無しさん:2007/05/14(月) 13:11:20
それしか方法がないんだから、面倒とかグダグダ言ってないでとっととやれよ。
怠け者にも程があるぞ。
513デフォルトの名無しさん:2007/05/14(月) 14:33:53
>>499
遅レス申し訳ないです。情報ありがとうございました。
514デフォルトの名無しさん:2007/05/14(月) 15:04:18
>>511
DirectDrawも経験が無いんで知りませんでした。てか、一番最初に書いたとおりDirectXその物が初めてなもんで。

>>512
やっぱそれ以外実装方法が無いんですね?
とっととやる時間があれば良いのですが、本当にSDK読んでる暇とか無いんで、とりあえず没にしました。
当面は全部CPUでやることにしました。
515デフォルトの名無しさん:2007/05/14(月) 16:48:52
解像度変更などした際にデバイスの復元をしてるんですが……
IDirect3DDevice9::Reset
で、0x8876086c とエラーが戻ってくるのです。 テクスチャー読み込んでペタペタ貼ってるだけなんですが。
どのあたりを調べれば原因がわかるでしょうか?
516デフォルトの名無しさん:2007/05/14(月) 17:21:08
>>515
まずはそのエラーコードが何を意味するのか調べようとするのが普通の人
517デフォルトの名無しさん:2007/05/14(月) 18:34:11
>>516
HRESULT: 0x8876086c (2289436780)
Name: D3DERR_INVALIDCALL
Description: Invalid call
Severity code: Failed
Facility Code: FACILITY_D3D (2166)
Error Code: 0x086c (2156)

ここまでは調べたものの、この先、どう調べていいか悩んでいたりします
518デフォルトの名無しさん:2007/05/14(月) 19:41:33
>D3DERR_INVALIDCALL
>メソッドの呼び出しが無効です。たとえば、メソッドのパラメータが有効なポインタではありません。
519デフォルトの名無しさん:2007/05/14(月) 20:18:32
>>515
Direct3Dの場合、エラーコードとだけ睨めっこしてもほとんど解決しないよ。
SDKの「DirectX Control Panel」でD3D RuntimeをDebugにして
VSとかのデバッグウィンドウを注視しなはれ。
520デフォルトの名無しさん:2007/05/14(月) 23:33:20
GamDevPukiWikiの推薦図書から飛んだ先のHPでウィルス見つかったんだが(´・ω・`)
521デフォルトの名無しさん:2007/05/14(月) 23:58:01
>>520
サイト管理人に連絡しなされ
522デフォルトの名無しさん:2007/05/15(火) 16:23:14
>>518-519
レスありがとです。頑張ってみます。
523デフォルトの名無しさん:2007/05/15(火) 20:58:20
探してもないんですがD3D10では
D3D8の頃にあったD3DXCreateTextureFromFileEx
のようにカラーキーを設定して抜き色にする便利な関数はないんでしょうか?
524デフォルトの名無しさん:2007/05/15(火) 22:15:17
カラーキーなんてもうずっと前に廃止されたと思ってたらまだあるの?
525523:2007/05/15(火) 23:06:49
>>524
D3Dでは実装されてませんでしたが
D3DXの方で実装されていてテクスチャをロードする際に指定できました。
アルファ付のフォーマットでロードしようとすると自動でアルファ値を0にするだけでしたが。
パレットにも対応していたので個人的に好きだったんですが・・・

ないのであれば似たようなの作ります。
526デフォルトの名無しさん:2007/05/16(水) 00:07:27
>>525
普通にα掛けたほうが楽じゃね?
527デフォルトの名無しさん:2007/05/16(水) 00:13:21
PNGで最初からα値を含んだフォーマットを使えばいいだろ。
528523:2007/05/16(水) 01:00:50
>>526
>>527
PNGの存在をすっかり忘れてました。
使うツールも対応しているみたいなのでそれでいこうと思います。
お騒がせしました。
529デフォルトの名無しさん:2007/05/16(水) 01:21:05
なんだこいつは・・・
530デフォルトの名無しさん:2007/05/16(水) 01:32:44
>>523 == >>528
俺はお前の存在を忘れることにするよ
531515:2007/05/16(水) 12:18:09
マルチスレッドで制御していた為にエラーがでている事がわかりましたので、流れを整理したら
修正できました。 助言くれた方、ありがとうございました。
532デフォルトの名無しさん:2007/05/17(木) 03:25:16
DirectPlay8で、初期化を行っていざ
 hr = 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を読んだあとに例外で飛びます。
533デフォルトの名無しさん: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ばかりなので、通信でコケているらしいことはわかるのですが
具体的に何が悪かったのがさっぱりです。
どなたか、わかる方がいらっしゃいましたらご指導よろしくお願いいたします。

細かいパラメータが必要だということならば、全ソースをまとめて書き込みます。
534デフォルトの名無しさん:2007/05/17(木) 04:08:10
すいませんDXの開発関係ではないのですが初心者の質問です教えてください。

1.MSのHPにDX9CとDX End-User Runtimes の2つのバージョンがあるのですが
 何が違うのですか?

2.DX10は何処からダウンロードするのですか?MSのホームページ見ましたが
 見あたらないので。
535デフォルトの名無しさん:2007/05/17(木) 07:48:59
>>534
1. SDKかランタイムかの違いでは?
2. Vistaに最初から入ってる
536デフォルトの名無しさん:2007/05/17(木) 08:21:45
direcxを使ってCPU負荷を下げるときって線画の必要ないときはsleep(0)を呼ぶんですか?ほかにも方法ありますか?
537デフォルトの名無しさん:2007/05/17(木) 09:45:46
いろいろツッコミてええええええ

アイドル時にDirectXを使って自前で描画する場合に
CPU 負荷を下げる時には Sleep(0); を呼ぶのが普通。
538デフォルトの名無しさん:2007/05/17(木) 14:42:53
>>536
基本的にあまり描画しなくていいんだけど何かあった場合には即描画したい
というような場合は、適当にタイムアウトを指定したWaitForSingleObject とかで待つ。
別スレッドで SetEvent すればタイムアウトを待たずに即帰ってくるから。
539デフォルトの名無しさん:2007/05/19(土) 15:09:13
CreateWindow("EDIT", 〜
で、テキストボックスを作ったはいいのですが
DirectXを使っていると塗りつぶしなどの描画で上書きされてしまい、
まともに表示することができません。

textboxが存在する部分だけをα値ゼロで塗りつぶしたり、
pDevice->Clearでクリアするときにその部分だけを塗りつぶさないように
してもダメでした。

何か解決方法はありますでしょうか?
それとも、DIRECTXを使っている場合にはこういったBOXは使えないのでしょうか
540デフォルトの名無しさん:2007/05/19(土) 15:58:38
>textboxが存在する部分だけをα値ゼロで塗りつぶしたり、
>pDevice->Clearでクリアするときにその部分だけを塗りつぶさないように
サーフェイスに対する操作をしても、そのサーフェイスをスクリーンに描いたら消えるのは当たり前だろ。

Presentするときに、該当部分を回避して転送すれば塗りつぶされない。
541デフォルトの名無しさん:2007/05/19(土) 19:18:15
3Dエンジンって言うのを作りたいんですけど、
普通作るときはダイレクトXやオープンGLを使うのか、何も使わないで
作るのか、教えてください
542デフォルトの名無しさん:2007/05/19(土) 19:21:09
好みで。
543デフォルトの名無しさん:2007/05/19(土) 19:23:00
利点と欠点ってなんですか?
544デフォルトの名無しさん:2007/05/19(土) 19:26:31
何も使わないで作ったものは勉強以上の代物にはならないと思うぞ。
GPU を直接自分で操作するというのならまた話は別だが・・・。
545デフォルトの名無しさん:2007/05/19(土) 19:28:44
なるほど、勉強になりました。
ダイレクトXかオープンGLにしようと結論付けられました
有難うございました
546デフォルトの名無しさん:2007/05/19(土) 20:00:08
ネタだろ。マジレスが続くのも仕込だろ、な?
こんなのありえんよ。
547デフォルトの名無しさん:2007/05/19(土) 20:17:23
どうでもいい
548デフォルトの名無しさん:2007/05/19(土) 20:17:57
>>546
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
549デフォルトの名無しさん:2007/05/19(土) 21:57:11
>>540
回答ありがとうございました。
範囲を絞る方向で色々やってみたのですが、どうにも綺麗にできなかったので
色々調べてみた結果、DXUTguiというものがあることを知りました。

DXUTの中でこの部分だけほしかったので、これだけ抜き出したところ
うまくいかず、次々とインクルードしていたら、収集がつかなくなってしまいました…

このライブラリは、もともとEmptyProjectを元にして作るために用意されたもので
あとから、この部分だけ付け加えるということはできないのでしょうか?
550デフォルトの名無しさん:2007/05/19(土) 22:04:24
Xファイルを読み込んで表示させているのですが、そいつを人だとして、
「手に武器を持たせたい(ゲーム中に持ち替えたい)」のですが、
【手】の座標の取得の方法がわかりません。

頂点バッファにアクセスして、目的の頂点が得られるまで全頂点数で試さなきゃならないのでしょうか?
3000ポリゴンのモデルなので、気が遠くなりそうです・・・ orz
551デフォルトの名無しさん:2007/05/19(土) 22:18:37
>>550
ノード名とか取得できねーの?
各関節ごと名前あんだろ?
つか、Xファイルのフォーマットみてみろよ
552デフォルトの名無しさん:2007/05/19(土) 22:18:51
>>550
モデリングの段階で手の部分に接合用のダミーフレームを入れておけ。
553デフォルトの名無しさん:2007/05/19(土) 22:25:54
>>549
手に負えないのなら諦めろ。
554デフォルトの名無しさん:2007/05/19(土) 22:31:55
レイストームみたいな曲がるレーザーってどういう風に
プログラムすればいいのですか?
555デフォルトの名無しさん:2007/05/19(土) 22:33:26
曲げたい方向にポリゴンを生成していくか、テクスチャにパターンを生成するか。
556550:2007/05/20(日) 00:09:55
>>551,>>552
回答ありがとうございました。
Xファイルのフォーマットを見直し、Meshを分ければ取得が容易になるということに気づいたので、
手の位置に1枚の極小のポリゴンを設置し、それを取得することでできました!
これで先に進めます。ありがとうございましとぅあ!
557デフォルトの名無しさん:2007/05/20(日) 00:54:41
ポリゴンじゃなくて空フレームで十分だが?
558デフォルトの名無しさん:2007/05/20(日) 01:07:44
>>557
俺は手首ごととっかえてるから空フレームじゃやりずらいな
559デフォルトの名無しさん:2007/05/20(日) 01:12:56
その場合、そもそも手首を腕のフレームの配下に配置する必用があるだろう。
560デフォルトの名無しさん:2007/05/20(日) 03:56:32
>>553
理解はしたのですが、DXUTを丸ごと使わないといけないようなので
既にDirectXの簡易的な枠組みを作ってしまった身としては
また1から作り直すのは厳しいです…

ですけど、これを使わないとIMEを用いたEditBoxなんか
そう簡単には使えませんよね…とりあえずもう少しがんばって見ます。
回答ありがとうございました。
561560:2007/05/20(日) 04:07:36
しかし、こんな便利なコントロールがあるなら
単体でも使わせてくれればいいのに、と思ってしまいますね…

全てコールバックで処理しろっていわれると
フレームレート固定のゲームでは非常に厄介なわけで…
562デフォルトの名無しさん:2007/05/20(日) 06:38:06
3次元での、3階のテンソルの回転の公式を教えてください。
563デフォルトの名無しさん:2007/05/20(日) 10:01:06
>>562
何に使うんですか?
564デフォルトの名無しさん:2007/05/20(日) 10:19:56
和傘3弾重ねの上で鞠を転がす物理演算です。
565デフォルトの名無しさん:2007/05/20(日) 10:20:20
>>563
お前に説明する必要とかあると思うか?
公式知らないなら口閉じてろ


誰か知ってる人いますか教えてください。
566デフォルトの名無しさん:2007/05/20(日) 10:28:25
>>565
知っているがお前の態度が気に入らない
567デフォルトの名無しさん:2007/05/20(日) 10:38:56
どうせ解らないだから黙ってろ
568デフォルトの名無しさん:2007/05/20(日) 10:52:58
>>567
そんだけキーワードがわかってりゃ日本語でも英語でもキーワードで検索して少しは調べてきたんでしょうね?w
569デフォルトの名無しさん:2007/05/20(日) 13:55:49
みんなNVIDIAのSDK 10入れた?
おれはなんかサンプルがビルドできない。DirectX SDKもApril 2007入れてVisual Studioでパスも設定したのだが、

error C2660: 'D3DX10CreateEffectFromMemory' : 関数に 12 個の引数を指定できません。
error C2660: 'D3DX10CreateTextureFromResourceW' : 関数に 6 個の引数を指定できません。
.......

とか言われて怒られる。早くも仕様が変わったのか??
570デフォルトの名無しさん:2007/05/20(日) 14:03:44
すまん、自己解決。
Febuary 2007でないとだめだったみたい。
あと、警告をエラーとして扱う、というのもオフにする必要がある。
571デフォルトの名無しさん:2007/05/20(日) 14:54:55
Febuary
について教えてください
572デフォルトの名無しさん:2007/05/20(日) 15:07:45
Matrixの同士の演算が、まったく理解できません。

あるオブジェクトの先端に別のオブジェクトをくっつけて表示、というのをやりたいのですが、
現状取得しているのは、親オブジェクトのくっつける先の場所のローカルMatrixと、親オブジェクトのワールドMatrixのみ、というものです。

ここから、[取得したローカルMatrixをワールドMatrixに変換する]という作業が必要なのはわかるのですが、その手順がわかりません。
どなたかご教授お願いします!
573572:2007/05/20(日) 15:25:44
すみません、自己解決しました。
ローカルMatrix * ワールドMatrix で、できました・・・。
試してから書くべきでした。お騒がせしました。
574562:2007/05/20(日) 15:26:06
すみません、2階のテンソルの3次元空間内での回転でした。
2次元内での回転はできたのですが、3次元での回転が分かりません。
575デフォルトの名無しさん:2007/05/20(日) 15:57:52
それなら2次元の回転を3回行えばよくね?
576デフォルトの名無しさん:2007/05/20(日) 16:02:37
現在、D3DXSpriteを使って描画を行っているのですが
仮に640×480の背景画像を用意する際には
テクスチャのサイズは縦横とも2の累乗でないといけないので
そのテクスチャサイズは1024×512となりますよね。

これって、画像を多数使う際には無駄以外の何者でもない気がするのですけども
どうにもならないんでしょうか?
D3DXCreateTextureFromFileの代わりにD3DXLoadSurfaceFromFileを使って
サーフェスとして画像を取れば無駄にならないし、
2Dゲームなら全く問題ないような気がするんですけども
DirectX系入門サイトでどこも扱ってないところを見ると
あまり良い方法では無いのでしょうか…?
もし問題点があれば、教えてくださればありがたいです。
577デフォルトの名無しさん:2007/05/20(日) 16:09:59
>>575
行列はかけ算の順序によって違うからダメ
578デフォルトの名無しさん:2007/05/20(日) 16:13:10
すみません、階のテンソルって具体的に何のことを表しているんですか?
物理詳しくないので済みません
579デフォルトの名無しさん:2007/05/20(日) 16:15:22
スカラー:0回のテンソル
ベクトル:1回のテンソル
単にテンソルというと、2回のテンソルを指す場合が多い。これは行列をつかう。
580デフォルトの名無しさん:2007/05/20(日) 16:17:17
ありがとうございます
3階のテンソルはなにになりますか?
581デフォルトの名無しさん:2007/05/20(日) 16:24:57
>>576
グダグダ余計なことを考える方がよっぽど無駄。
どうでも良いことを考える暇があったらとっととコードを書け。
582デフォルトの名無しさん:2007/05/20(日) 16:39:56
>>576
無駄といっても、VRAMのサイズだろ?
このリソースは元々ゲームぐらいにしか使われないし
気にしないで使っていいんじゃないの。
また、サーフェイスって透過処理付のBLT出来たっけ?
それが出来ん限りテクスチャの代わりには使えんな。
583デフォルトの名無しさん:2007/05/20(日) 16:40:49
>>581
一応実装しては見たんですが、何も問題が無いので怖いんですよ。
背景の1枚絵として表示する分には何も問題がないというのなら
どう見てもSurfaceのほうがメモリ的に有利じゃないですか。
なのに、どこのサイトでもほとんど取り上げられてないようなので…
584デフォルトの名無しさん:2007/05/20(日) 16:45:54
>>582
そうですね。メモリ的にです。
ただ、640×480の画像を仮に20枚用意すると24Mじゃないですか。
これを1024×512で取ってしまうと41Mになるわけで、
無駄に必要スペックをあげるのもどうなのかなぁと疑問になったんです。

個人的には、回転や透過の必要なキャラチップなどはTexture、
回転などを一切せずに1枚絵として、せいぜい横に流すくらいの画像は
全てSurfaceで取ると(管理は面倒ですが)メモリの無駄はなくなると思いまして。

ただ、Surfaceなんて過去の遺物のように語られてるようなので
もしかしたら、例えばSurfaceとTextureをごっちゃで使うと速度が遅くなるとか
あくまで例ですけど、表に出ないような問題があるかもと心配になってしまったんです
585デフォルトの名無しさん:2007/05/20(日) 16:53:41
>>584
多分言葉が通じてないよ。

IDirect3DTexture9ってのは、MIPMAP用にIDirect3DSurface9を複数枚束ねたもの。
実際IDirect3DTexture9::GetSurfaceLevelで各Surfaceを取得できる。

そこにきておまいさんが一人で“Surface VS Texture”と盛り上がっていて、
みんなポカーンという状況。
586デフォルトの名無しさん:2007/05/20(日) 16:57:18
基本が出来ていない奴に限って、無駄とか何とか余計なことを考えるんだよな。
587デフォルトの名無しさん:2007/05/20(日) 17:08:05
Surfaceっていうのは、DirectDraw時代にあったような別物だと思ってました…

要するに

所詮2D描画しかしないのだったらMIPMAPも何も関係ないし
TextureでもSurfaceでもどうにでもなる。
ただし、初心者だったらもっと無駄な部分なんか腐るほどあるんだから
そんなことは気にしないで全部Textureでやっちまえ。

って感じですかね。
588デフォルトの名無しさん:2007/05/20(日) 17:13:36
つーか、なんで1枚のテクスチャに背景だけを置こうとするんだ。
冷蔵庫の中に卵を入れたら他のものは入らないのか。
589デフォルトの名無しさん:2007/05/20(日) 17:16:02
入らないだろwwwww
590デフォルトの名無しさん:2007/05/20(日) 17:17:06
>>588
背景をおいたら、余った部分に他のパーツを詰めれば
管理は面倒でも無駄がなくなるってことですね。
なんか頭がガチガチになってたせいか、全く考え付かなかった…
591デフォルトの名無しさん:2007/05/20(日) 17:20:16
なんか2Dやる人は全データをVRAMに乗せておかないと気がすまない感じなんだよね。
普通の2Dアクションやシューティングなら、1フレームに参照される2Dデータはせいぜい数Mバイトだろうから
キャッシュすればいいのに。
592デフォルトの名無しさん:2007/05/20(日) 17:41:24
何でもかんでも近くに引き出しに押し込もうとか考える暇があったら、
季節物の服を押し入れの中にしまって手近な収納スペースを増やせ。

馬鹿みたいに詰め込もうとするのは、整理出来ない人間の典型例。
いる物といらない物を分けて考えることが出来ない。
593デフォルトの名無しさん:2007/05/20(日) 17:55:18
引き出しが広いのに使うものだけしか入れないから
無駄に広くても、入れすぎて満杯に近くても、
引き出しに入りきらなくならないかぎり、どちらでも同じなんだよな
594デフォルトの名無しさん:2007/05/20(日) 18:19:59
>>593のような考えは整理が出来ない人間の発想。
ぎゅうぎゅう詰めになった収納へ出し入れするのと、
適度に空間の空いた収納へ出し入れするのは効率が全然違う。
595デフォルトの名無しさん:2007/05/20(日) 18:33:22
>>594
おまえA型だろ
596デフォルトの名無しさん:2007/05/20(日) 18:46:22
血液型とかどうでもいいところに話を持っていくのは、無駄以外の何ものでもない。
597デフォルトの名無しさん:2007/05/20(日) 19:12:25
>>595は血液型なんて一言も言ってない
598デフォルトの名無しさん:2007/05/20(日) 19:14:59
>>596
白熱して、流血事件にまで発展したときのために献血できる奴を確認しておくと吉
599デフォルトの名無しさん:2007/05/20(日) 20:03:42
スキンメッシュのボーンの形を動的に変化させたいのですが、やり方が分かりません。

例えば、肘のボーンの始点位置がずれていた場合にユーザーがアプリ上で修正できる
ようにしたいのです。
しかしながら、フレームのマトリクスやXFILEのボーンのマトリクスの値を変更
するとメッシュの形状まで崩れてしまいます。

分かりやすく言えばメッシュの形を変えずにボーンの形だけを変えたいのですが
どうすればよいのでしょうか・・・。
600デフォルトの名無しさん:2007/05/20(日) 20:13:38
>>599
インバースキネマティクスで頑張らないと・・・
601599:2007/05/20(日) 20:26:34
>>600
ぬぉぉお!拙者の力不足ゆえIKをどうすればいいか分かりません。
もうちょっとヒントを・・・!

上でも書きましたがXFILE上のボーンのマトリクスの値を手書きで書き換えても
メッシュが崩れてしまうことから、XFILEから読み込んだデータそのままでは
メッシュの形を変えずにボーンの形を変えるのは難しいのかも・・・。
(メッシュデータが各ボーンマトリクスの値と結びついて保存されてるため、
 ボーン形状のみを変更する術が見つからない)
602599:2007/05/20(日) 20:28:47
>>600
ぬぉぉお!拙者の力不足ゆえIKをどうすればいいか分かりません。
もうちょっとヒントを・・・!

上でも書きましたがXFILE上のボーンのマトリクスの値を手書きで書き換えても
メッシュが崩れてしまうことから、XFILEから読み込んだデータそのままでは
メッシュの形を変えずにボーンの形を変えるのは難しいのかも・・・。
(メッシュデータが各ボーンマトリクスの値と結びついて保存されてるため、
 ボーン形状のみを変更する術が見つからない)
603デフォルトの名無しさん:2007/05/20(日) 20:31:04
test
604デフォルトの名無しさん:2007/05/20(日) 20:35:15
>>601
いや、書いてから気がついたけどなんか違うことやってる気がする>>600は忘れてくれw
605デフォルトの名無しさん:2007/05/20(日) 20:47:11
>>599
モデリングソフト側で直せよ。
606デフォルトの名無しさん:2007/05/20(日) 20:56:14
ボーンの長さや数まで変えるならウェイトまで変わりそうだな
ついでにアニメーションデータも全部
607デフォルトの名無しさん:2007/05/20(日) 20:59:08
>>600
ぬぉぉお!拙者の力不足ゆえIKをどうすればいいか分かりません。
もうちょっとヒントを・・・!

上でも書きましたがXFILE上のボーンのマトリクスの値を手書きで書き換えても
メッシュが崩れてしまうことから、XFILEから読み込んだデータそのままでは
メッシュの形を変えずにボーンの形を変えるのは難しいのかも・・・。
(メッシュデータが各ボーンマトリクスの値と結びついて保存されてるため、
 ボーン形状のみを変更する術が見つからない)
608デフォルトの名無しさん:2007/05/20(日) 21:00:57
>>600
ぬぉぉお!
(メッシュデータが各ボーンマトリクスの値と結びついて保存されてるため、
 ボーン形状のみを変更する術が見つからない)
609デフォルトの名無しさん:2007/05/20(日) 21:01:02
まともにモデリングをしたことがあれば、ウエイトを焼き付けた後に、
ボーンの位置を変更するのがどれだけ大変な作業か分かりそうなものだが。
3Dプログラムをやるなら、最低限30日体験版でもいいからMAXあたりをいじっておけ。
610デフォルトの名無しさん:2007/05/20(日) 21:45:40
611デフォルトの名無しさん:2007/05/21(月) 09:39:26
なんか2D vs 3Dで盛り上がっているみたいだけど。
ようは2Dしか必要ない人がDX使おうとすると3Dに最適化され過ぎていて使いづらいと思うんだと思う。
612デフォルトの名無しさん:2007/05/21(月) 10:29:21
2D vs 3Dなんて誰もやってないし、無いものが盛り上がるはずもない。
自分の言いたいことを無理矢理発言するために、自分勝手にありもしない状況設定をするな。
613デフォルトの名無しさん:2007/05/21(月) 10:55:27
ぽまいら喧嘩すんなおっ!
俺たちみんなダイレクトエックサーだお!
614599:2007/05/21(月) 11:15:52
スレッド表示を500-600までの表示で設定してたので既に書き込んだのに気付かず
激しく連投になってしまいましたスレ汚し申し訳ございません。

>>ボーンの位置を変更するのがどれだけ大変な作業か分かりそうなものだが。
そのようです、どうやら考えていたほど簡単にはいかないようです。

とりあえず、ボーン変形後のメッシュをロックして無理やりボーン変形前の
メッシュの形状に戻すやり方を試してみようと思います。

最終的には3Dモデラー的な物を作りたいのでボーンのウェイト値も操作したいのですが
ボーンのウェイト値を操作する関数等ってありますでしょうか?

SetBoneInfluence辺りがそうなのかと思って弄くっていますが、試しに4番目の引数の
weightsの値を全部0にして設定してもメッシュのアニメーションは変わらず・・。
615デフォルトの名無しさん:2007/05/21(月) 11:29:19
モデラーを作ろうとするのなら、それ以前にまともなモデリングソフトの使い方を覚える方が先。
関数がどうこう言っている時点で問題外だが。
616599:2007/05/21(月) 11:44:00
>>615
ぬぁぁあ!一応3Dモデラーとしてお仕事してました!
使用ソフトはメタセコ、LightWave、MotionBuilder、MAXって感じです。

3Dプログラム開発の経験はあるのですが、ボーンウェイトや頂点を直接いじる処理は
なかなかサンプルや資料が見つからんのですよ・・・。
617デフォルトの名無しさん:2007/05/21(月) 13:05:44
まずはD3DX等に頼らず、モデルデータを読み出して表示するところから。
618デフォルトの名無しさん:2007/05/21(月) 14:06:55
富豪的プログラミング
619599:2007/05/21(月) 14:24:45
>>D3DX等に頼らず、モデルデータを読み出し
それがベストですよね・・・。
とはいえ時間的労力的にもD3DXの機能を使うのが現実的な選択肢なので出来うる限り
D3DXを利用したいのです。

ボーンの位置だけを変える処理は一度ボーンを操作してから、ボーンの移動量
から変形前のメッシュを逆算する事で実現出来ました。

こうなってくるとボーンウェイトの値を操作する処理も実装したいのですが
ネットに資料等が無く、具体的な術が見つかりません。
どなたかボーンウェイトの値を操作する関数や方法等をアドバイスして頂けないで
しょうか?
620デフォルトの名無しさん:2007/05/21(月) 14:39:00
今年って平成何年?
621デフォルトの名無しさん:2007/05/21(月) 15:02:45
ぬぉぉお!
18年!
ぬぁぁあ!
622デフォルトの名無しさん:2007/05/21(月) 16:54:56
D3DXに頼っている限りモデラーを作るのは無理。
623デフォルトの名無しさん:2007/05/21(月) 18:34:56
D3DXCreateModeler
624デフォルトの名無しさん:2007/05/21(月) 20:50:30
D3DXとかぶっちゃけ蛇足な感が
625デフォルトの名無しさん:2007/05/21(月) 20:57:53
しかしなんで釘も打てない奴が家を建てようとかのたまわっちゃうんだろうね。
626デフォルトの名無しさん:2007/05/21(月) 21:10:27
家を設計するのは建築家の仕事といいたいのだろう
627デフォルトの名無しさん:2007/05/21(月) 21:12:57
ライブラリ使わないでDirectX使うってありえないですか?
628デフォルトの名無しさん:2007/05/21(月) 21:43:18
DirectX自体がライブラリの固まりだが、いったい何を言ってるんだ?
629デフォルトの名無しさん:2007/05/21(月) 21:50:46
いえ、DirectXのラッパーのライブラリとか・・・
DXライブラリみたいな奴のことです
630デフォルトの名無しさん:2007/05/21(月) 21:53:55
>>627
別にありえなくは無いと思うけど、暇で暇で困ってるとかいうのでなければ
行列演算とかはライブラリ使った方がいいんじゃない?
631デフォルトの名無しさん:2007/05/21(月) 22:04:02
>>630
やっぱり普通はライブラリ使いますか
企業のゲーム開発とかもやはりライブラリとか使ってるんでしょうか?
632デフォルトの名無しさん:2007/05/21(月) 22:20:09
自分がやりたいようにやれよ。
グチグチグチグチ、いちいち周りを気にするな。
633デフォルトの名無しさん:2007/05/22(火) 00:33:51
本当に開発する時に必要なのは取捨選択できる能力。
ライブラリを使うタイミングとちまちま最適化するタイミングをうまく使い分ける必要がある。
そういったことを考えられずにここでライブラリを使う使わないって吠えているやつは素人か実際の会社では駄目男。
634627:2007/05/22(火) 08:55:55
なるほど
ソース公開など制限があるライブラリが多いので企業ではどうしてるのか気になったもので
>>632-633
レスありがとうございました
635デフォルトの名無しさん:2007/05/22(火) 09:50:36
会社の入社でデモ要求があったらライブラリ不可とかあるからね
636デフォルトの名無しさん:2007/05/22(火) 12:24:25
質問です。
directx9をダウンロードしたのですが、ランタイムコンポーネントのDLしている
途中で、「ファイルをダウンロードできませんでした。後でもう一度実行するか、ネットワーク接続を確認してください。」
と表示され、DLできません。なにか対処法はないでしょうか?

ちなみに一回DirectXのファイルを消してやりましたが、同じ結果に成りました。
637デフォルトの名無しさん:2007/05/22(火) 12:43:24
回線をまともにする。
638デフォルトの名無しさん:2007/05/22(火) 14:07:11
>>636
iriaとか使ってみては?
639デフォルトの名無しさん:2007/05/22(火) 15:14:15
Win32もDirectXもラッパもライブラリ。
ライブラリ不可と言う処は水準を明確に示さないと片落ちなんだけどな。
640デフォルトの名無しさん:2007/05/22(火) 21:32:13
ごたくはいい。手軽にゲームっぽいものが作れるもので就職活動しても
プログラミング技術評価不能=不採用。
ま、よほどゲームが面白いとかCGデータが良ければそっちの方面で評価するかもなってこと。
641デフォルトの名無しさん:2007/05/22(火) 23:57:07
>>640
しろーとっぽい感じだねあんた
642デフォルトの名無しさん:2007/05/23(水) 00:24:32
俺はWinG使ったプログラムで受かったぞ
643デフォルトの名無しさん:2007/05/23(水) 11:05:48
どれを使うかなんてのはたいした話じゃない。
問題はそのライブラリをどのように使うかのセンス。
644デフォルトの名無しさん:2007/05/23(水) 11:54:31
お前らはどうしてそんなに受身なんだよ
自分で自分の作った作品を評価しようという姿勢が全く無いな
あきれるよ
645デフォルトの名無しさん:2007/05/23(水) 11:57:19
どう作ろうが、評価しようがしなかろうが、そんなの各自勝手にすべきこと。
他人が口を挟むようなことじゃない。
646デフォルトの名無しさん:2007/05/23(水) 18:30:18
>自分で自分の作った作品を評価しようという姿勢が全く無いな
他人が見て初めて気付く部分や妥協の許容の違いが分からないと進歩しない件。
俺は褒めることはせず、気になった点のみ伝える。
酷かも知れんが、評価をするような作品のプログラムの記述方法に正解なんて無いから、
変だったり明らかな間違いじゃない限り意見しにくい。
647デフォルトの名無しさん:2007/05/23(水) 18:37:16
上から目線の厨を引き寄せましたよ。
しかも自分で自分の作品を評価する話から、
誰も聞いていないことを突然勝手に語り出す。
648デフォルトの名無しさん:2007/05/23(水) 18:58:53
多分647は646の言いたいことが伝わってないなw
649デフォルトの名無しさん:2007/05/23(水) 19:10:09
多分>>648>>1-647の言いたいことが伝わってないなw
650デフォルトの名無しさん:2007/05/23(水) 21:24:20
ボーンウェイトの値をLightWaveのシーンやVertexPaintの様に、
特定のボーンウェイトを含む頂点を赤く色をつけて表示したいのです。

ボーンウェイトの配列は取得できたので、この配列をシェーダに持って
行って頂点のDiffuseの値にでもブチ込んで色をつけようと考えました。

しかしながら、今何番目の頂点を処理しているかシェーダ上で取得する
術が見当たらないので四苦八苦してます。
なにかいい方法等は無いでしょうか?

VS_OUTPUT Vertex_Shade(VS_INPUT i, uniform int NumBones){//シェーダ関数
//============省略========−
Output.Diffuse = Bone_Weight[現在の頂点];
return Output;
}

上記のプログラムみたいな事をやりたいのですが「現在の頂点」を取得する
方法が分からなくて悩んでいます。
法線の値やUVの値と一緒にボーンウェイトもシェーダに渡す術があると一番
楽なのですが…
651デフォルトの名無しさん:2007/05/23(水) 22:15:19
>>640
>プログラミング技術評価不能=不採用
ライブラリ使っちゃうとこれが測定不能になるからやめてほしいよね

例えば、誰かのライブラリ使って、入門書でSTGの基本だけ丸パクリして、
敵の動きだけ、自分で組んできました。
でも、就職作品の注釈には描画ライブラリのみ人のを使いました。
って書くでしょ?
これだともう残念だけど、評価のしようがない。
ゲーム部分だけピックアップしてみても正直ドングリの背比べで工夫した部分とかもうわからん
やっぱね、描画エンジンってどこまでわかってるかの基準になるから俺は自分で作ってほしいな。
っていうか全部(Win32APIやDirectXはみんな共通のライブラリだからわかる)作ってきてほしいな。

描画エンジンたって、3Dモデルを表示するだけならDirectXのチュートリアルやれば1日でできるじゃん。
音鳴らすんだって、ストリーミングまでやってもDirectX実践プログラミングとかページめくりながらやればできるじゃん。

多分、作業量だけで言えば1週間いらずにできちゃうでしょ?
あとはゲーム作りながら動作確認して・・・って感じ?

別に無理やりゲームを作ってこなくてもいいんだぜ。
描画ライブラリに力いれて作ってきちゃったら、デモみたいなもん作ってもいいし。

どーも、他の人のライブラリ使っちゃうとどこまで使ってあるか疑わしい
入門書も最近、ゲームの作り方まで載ってるのあるし、どこまで自分で考えたのか評価しづらい。
652デフォルトの名無しさん:2007/05/23(水) 22:19:14
・SDKのスキンメッシュのサンプル読め。
・それでもだめなら、ツール用で固定形状・単体表示でいいんだからCPUで処理して実用十分だろ。

653デフォルトの名無しさん:2007/05/23(水) 23:17:14
>>650
Direct3D標準だと、頂点当たり
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;
}
654653:2007/05/23(水) 23:22:32
なんだか>>650
俺が思ったことと違うことをやろうとしているみたいだな。
何をやろうとしているのかよくわからんが。
>>653は華麗にスルーしてね
655デフォルトの名無しさん:2007/05/24(木) 00:09:26
>>650
頂点フォーマットにUVでもXYZでも追加して
インデックス(か、計算に必要なもんを)をブチ子んどきなさいよ
656デフォルトの名無しさん:2007/05/24(木) 07:46:55
>>655
その方法が自分にとっては一番手っ取り早いようです。早速実装してみます。
アドバイスありがとうござます。

>>654
実は653の内容が勉強不足でよく分かってなかったりするのでこの期に勉強
させて頂きます。レスありがとうございます。
657デフォルトの名無しさん:2007/05/24(木) 09:12:58
D3DXの関数がインテルセンスに出てこないんですが、なぜですか?
658デフォルトの名無しさん:2007/05/24(木) 09:17:47
AMDを使ってると出ません
659デフォルトの名無しさん:2007/05/24(木) 09:27:42
ああ、そういうことかw
660デフォルトの名無しさん:2007/05/25(金) 00:41:34
クロスシミュレーションを行うために、ある特定の頂点に隣接している頂点の
インデックスを知りたいのです。
頂点が隣接しているか否かというのはどのように調べればよいのでしょうか?

GetIndexBufferあたりの関数がそれっぽい感じがしているので調べている
最中なのですが、全然見当違いの可能性もありそうなので、どなたか良い
手段がありましたらご教授お願いします・・・。
661デフォルトの名無しさん:2007/05/25(金) 02:39:35
>>660
Indexを全部チェックして同じ頂点を共有している辺を探す。
662デフォルトの名無しさん:2007/05/25(金) 04:21:23
>657
プロジェクトにD3DXのヘッダファイルを追加するといいよ
663デフォルトの名無しさん:2007/05/25(金) 07:21:11
>>661
やはりその方法でやるんですね。
ありがとうございます!
664デフォルトの名無しさん:2007/05/25(金) 07:41:14
>>663
はじめっから隣接してる頂点の情報を頂点フォーマット拡張してつっこんどきゃいいじゃん
665デフォルトの名無しさん:2007/05/25(金) 08:05:29
>>664
おお、それはどのようにやるのですか?

頂点フォーマットというのはFVFの事でしょうか?
頂点に隣接している他の頂点の数は頂点ごとに変わってくるので(3〜∞かな)
普通にやったら難しそうな気がします。
666デフォルトの名無しさん:2007/05/25(金) 08:34:30
http://download.nvidia.com/developer/presentations/2005/I3D/I3D_05_GPUCloth.pdf
Cloth Simulation on GPU

つか、そのレベルにない人はシェーダよりまずCPUで計算できるようになれよ。
667デフォルトの名無しさん:2007/05/25(金) 08:56:51
660はシェーダでやるなんて一言も言ってないがw
むしろCPUでやる話でしょ。
668660:2007/05/25(金) 09:12:04
ぬぉぉお!確かにCPUでやろうと考えていましたが、GPUに処理を
投げる事ができるのなら投げたいと思ってたので感激です。
まだ軽くしか読んでないのですが、テクスチャを介してやる事で
シェーダでのクロスシミュ処理結果を保存してるのかな。

早速がむばってみます、アドバイスありがとうございます!
669デフォルトの名無しさん:2007/05/26(土) 01:02:12
>>665
>頂点に隣接している他の頂点の数は頂点ごとに変わってくるので(3〜∞かな)
本気で理解できない
クロスシミュレータってそんなことになるっけ?
格子状のメッシュになると想像してるんだけど、間違ってる?
無限ってどういう状況を言ってるの?
670デフォルトの名無しさん:2007/05/26(土) 01:26:51
クロスシミュ実装できました。早速GPUで処理出来るように追加実装してみます。
浮動小数点テクスチャが必要なのですが、浮動小数点テクスチャって使えない
環境の人とかどのくらいいるのか・・・

>>669
基本的には格子上のメッシュで行うのが理想であり、その場合は隣接する頂点は
最大で8個に抑えられるべきなのでおっしゃる事は間違っていません。

とはいえ、マント程度ならともかく複雑な形状のメッシュを揺らしたいとなると
メッシュを格子状の形に維持して作るのは困難です。
その場合一つの頂点に隣接する頂点の数は8を超える可能性があります。

簡単に言えば格子状以外の形をとる状況の際に頂点の数は2〜∞となると
671デフォルトの名無しさん:2007/05/26(土) 01:35:12
それが∞になるクロスの画像をうp希望

想像できん
672デフォルトの名無しさん:2007/05/26(土) 01:40:46
ホームページとか持ってないので画像は簡便。
開いた傘を真上から見た形のメッシュを想像して欲しい。

傘の骨を増やせば増やす程、中心の頂点に隣接する頂点は骨の数だけ
増えていく。
673デフォルトの名無しさん:2007/05/26(土) 01:42:50
じゃあその傘には∞個の骨があるということか?
674デフォルトの名無しさん:2007/05/26(土) 01:49:31
てか、ボーンだけ揺らして上手く逃げろよな
無駄なことしてる予感
勝手にオーバークオリティ想定して無駄に苦労してんじゃねぇの?
675デフォルトの名無しさん:2007/05/26(土) 01:59:06
>>673
そうそう、そういう状況を見越して作っておくの。現実に∞の傘が存在するかはともかく。

>>674
実は、ボーンだけ揺らしてっていうのは既にやっている!!
それで思った事は意外と処理量が多い。
綺麗に揺らそうと思ったらボーン本数増やさないといけないし、ボーンを
入れるのも結構な手間。
(ボーンマトリクスの演算や位置の計算だけではなく回転の計算等も入るので
 大分ややこしい&重い)

両方作った実感としては頂点演算のクロスシミュの方が簡単だし汎用性あるよ。
処理の重さも頂点の数を抑えればいいし、GPUに丸投げできるんならそれほどでもないのでは。
あと、頂点ごとのクロスシミュの法がマントのビラビラが綺麗だよ。

「マリリンモンローの下から風が吹いてスカートがビラビラ」ってのが実現できる。
676デフォルトの名無しさん:2007/05/26(土) 14:53:20
超初心者です。
サンプルを改造したいんだけど、
ProjectName
って変更出来ないの?
677デフォルトの名無しさん:2007/05/26(土) 14:55:52
あ、出来たわ
ごめっ。
678デフォルトの名無しさん:2007/05/26(土) 15:01:21
>>676
できません。
679デフォルトの名無しさん:2007/05/26(土) 15:08:37
プッ
ダサ
680デフォルトの名無しさん:2007/05/26(土) 15:41:01
>>675
>簡単に言えば格子状以外の形をとる状況の際に頂点の数は2〜∞となると
ごちゃごちゃうるせー
実際、想定してる範囲のことやったときの最大数を出せよ
それに制限をかけるかどうかの問題なんだろ
例えば本当は20個ほしいけどさっぴいて8個で動かすことになったと(つまり残りの12個は連動しない)
それで期待してる結果の90%ぐらいまでもっていけたらそれでいいじゃねぇか
681デフォルトの名無しさん:2007/05/26(土) 16:01:44
ボーンウェイトの値を変えたいのですが、どうやっても値が更新されません。

GetBoneInfluenceとSetBoneInfluenceがそれらしい関数だと思い、実際
GetBoneInfluenceでボーンウェイトの配列を取得できたのですが、
SetBoneInfluenceで新たにボーンの値をセットしてもモーションが全く変わりません。
(GetBoneInfluenceで値を見てみると確かに値は更新されているにも関わらず)

何か他に操作を加えないとウェイト値はモーションに反映されないのでしょうか?

>>680
ですよねー。
682デフォルトの名無しさん:2007/05/26(土) 16:04:28
>>680
最初の二つを少し使ってみましたが、なかなか興味深いものがあります。
サーチかけてみて、期待してる結果に対するS/N比が悪くて困ったような経験あったら、
試してみるといいかもしれません。
683デフォルトの名無しさん:2007/05/26(土) 20:38:57
引き続きボーンウェイトの値を操作しているのですが、苦戦しています。

SetBoneInfluenceでボーンウェイトの値を操作すると、2つ以上の
ボーンが影響する頂点の動作の変更を確認できました。
試しにSetBoneInfluenceで全ての頂点のボーンウェイトを0に設定してみると
今まで複数のボーンの影響を受けて動作していた頂点が単一のボーンの影響
しか受けなくなりました。

てっきり全てのボーンのボーンウェイトが0の場合は頂点はどのボーン
からも影響を受けなくなり、アニメーションしなくなるものだと考えて
いましたが、全然違う結果になってしまい訳がワカメ。

腕のボーンウェイトを0にした状態でも腕のメッシュは腕の動きに
合わせて動作しているのですが、何故なんでしょうか・・・。
684デフォルトの名無しさん:2007/05/26(土) 21:01:07
>>683
DXのヘルプにジオメトリブレンディングってページが
あるからそこをみろよ。
ウエイトの算出について書いてある。
685デフォルトの名無しさん:2007/05/26(土) 21:01:11
自己レスさせて頂きます。

SetBoneInfluence等の変数によって頂点がどのボーンの影響も受けない
ように変更された場合、何かしらのボーンの影響(恐らく最初に設定して
あったボーン?)を受けた物として処理されるようです。
(つまりどのボーンからも影響を受けない頂点というのは作れない?)

試しに適当なボーンの影響を受けるように値を設定してみたら思惑通りの
動きをしてくれました。ご迷惑おかけしました。
686デフォルトの名無しさん:2007/05/27(日) 14:46:53
SaveMeshHierarchyToFile関数を使ってのスキンメッシュXFILEの保存が上手く行きません。
MeshViewerを利用したXFILEの書き出しの場合は成功するのですが、自分の
アプリで同じモデルを書き出すと読み込めないXFILEとなってしまいます。

立方体のスキンメッシュモデルを書き出して、書き出したXFILEのデータの
中身を見てみると、VertexDuplicationIndicesの値がMeshViewerによって
書き出されたものと違うのを発見しました。

自分のアプリで書き出したXFILEではVertexDuplicationIndicesのインデックスの
値が12まであるのに対しMeshViewerので書き出したのは8までしかありません。
(立法体を書き出しているのでインデックスが8まである方が正常なのでしょう)

つまり頂点データのインデックス化が自分のアプリでは上手く行っていないの
だと思いますが、どうすればいいのでしょうか?
687デフォルトの名無しさん:2007/05/27(日) 19:12:58
質問します
LightScatteringを実装しようと思い
FVF_XYZWで格子状のものを作り太陽の部分を実装して
何度かテクスチャ同士を掛け合わせたりしたところ
ttp://up.spawn.jp/file/up22942.jpg
このように線状のものがでてしまいました。
これの原因は何なのでしょうか?
わかる人お願いします
688デフォルトの名無しさん:2007/05/27(日) 19:47:15
   , ' ´ ` ` 、
   ;       `、
   :  、::;'  ::;  :;
   :、     `  ;
    :    `'  :'  
    `:  ,、、, ;'
     `:  `` :
       :   ;'
       `、  :
689デフォルトの名無しさん:2007/05/27(日) 21:28:52
今時のSDKってポリゴン1枚描画するサンプルってないよね?
どこのサイトが初心者に分かりやすいサンプル置いてありますか?
690デフォルトの名無しさん:2007/05/27(日) 21:36:04
日本語でおk
691デフォルトの名無しさん:2007/05/27(日) 21:54:23
じゃあ古いSDKをダウンロードすればいいじゃない
http://www.microsoft.com/japan/download.htm
692デフォルトの名無しさん:2007/05/27(日) 21:56:26
686に関してですが、自己レスです。
ConvertAdjacencyToPointReps関数を使い、メッシュの隣接情報を
操作したら正常に書き出すことが出来ました。

>>687
白い線も気になるけど、上と左に見える赤いラインが気になる。
ブルームやHDRIみたいな処理をやってるだとしたら、もしかすると
ピクセルシェーダでのピクセル操作に何かマズい部分があるのかも。
一度ピクセルシェーダを外して描画して確認してみるといいのでは。

>>688
((((;゜Д゜)))
693デフォルトの名無しさん:2007/05/27(日) 23:19:23
>>692
まさしくそんな感じです。
ブルームの類に近いですね。
全面に張っているはずなのに・・・なぜか端に描画されてないという
694デフォルトの名無しさん:2007/05/27(日) 23:27:45
mqoファイルをロードしてDirectX上で表示したいのですが、mqoファイルの
ロードに関してどこかに良いサンプルソースなどはないでしょうか?
695デフォルトの名無しさん:2007/05/27(日) 23:43:18
>>694
なんだそのメリットなさそうなもん
なんで作る?
696デフォルトの名無しさん:2007/05/27(日) 23:54:18
>>694
どういう事情か知らないけど、メタセコで直接mqo読みこんで、Xで吐き出すんじゃだめなの?

サンプルなら、FF11っていうゲームの3Dモデルを見れる(個人製作の)ビューワが何個かあって、
その中にmqoファイルをロード・セーブする機能付きの物がある。 (恐らくDirectX使用)

ソースがサンプルとして役に立つか分からんが、興味があるならぐぐればすぐ見つかる

(無論ソース見るだけならゲーム本体は不要)
697デフォルトの名無しさん:2007/05/28(月) 00:23:09
>>695
メリットなさそうなもんフェチなんじゃね
698デフォルトの名無しさん:2007/05/28(月) 00:41:41
>>696
メタセコのファイルを読み込んで、ボーンウェイトやボーン編集できる
ビュアー(というよりはLightWaveのシーン)的な物を作りたいんだ。
FF11ビュアーは前に使ったことがあるが、メタセコのインポート用の
ソースが公開されてるとは知らなかった、早速探してみます。
アドバイス感謝!
699デフォルトの名無しさん:2007/05/28(月) 00:45:28
>>693
@ブルームエフェクト用のサーフェイスでも、Zバッファやステンシルよバッファを
クリアしてやらないとゴミが残ったりする。
Aビデオカードの不具合、ドライバをアップデートすると直ったりする。
Bピクセルシェーダの記述ミス
700デフォルトの名無しさん:2007/05/28(月) 01:13:05
ソースコードの公開停止してた\(^o^)/
701デフォルトの名無しさん:2007/05/28(月) 02:39:33
>ステンシルよバッファ

かわいいバッファだな
702デフォルトの名無しさん:2007/05/28(月) 03:10:24
>>700
まだ公開してるよ/(^o^)\
703デフォルトの名無しさん:2007/05/28(月) 07:12:40
RPGの文字ウィンドウを作っている物なんですが
とても困っています。
文字列を画面に描画した後に
最後の文字の右にクリック待ち画像を表示したいと
思っているのですが、最終行の文字幅の取得ができません。
DrawTextで描画した文字列の最終行の幅を
取得するにはどうすればいいんでしょうか?
文字の折り返しはDT_WORDBREAKを指定して
フォントはD3DXFontを使っています。
704デフォルトの名無しさん:2007/05/28(月) 08:04:46
最終行の文字を切り出す処理は自前で作れ
GetTextExtentPoint32
705デフォルトの名無しさん:2007/05/28(月) 08:55:22
>まだ公開してるよ/(^o^)\
なんとか辿り着く事が出来ました、本当にありがとうございます。
706デフォルトの名無しさん:2007/05/28(月) 19:57:58
>>699
返答ありがとうございます。
変な縦線に関しては3番でした。

ですが上と左の隙間に関してはピクセルシェーダーでなくとも
画面全体に1枚絵を貼り付けるとおきるためまだまだ考えなければならないようです

しばらくして解決できなかったらまたここで質問します
707デフォルトの名無しさん:2007/05/28(月) 20:04:24
メタセコイア上でボーンを入れるときにボーンの影響範囲をアンカーと
呼ばれるオブジェクトに頂点が含まれているか否かでボーンの影響範囲を
決めていますよね。

あるオブジェクト内に頂点が含まれているか、というのはどうやって
調べたらよいのでしょうか?
708デフォルトの名無しさん:2007/05/28(月) 22:14:37
>>706
テクスチャのリニア補完によるぼかしが原因かもな。
試しにテクスチャアドレッシングモードやテクスチャフィルタリングを
変更してみてると改善される可能性があるかも。

一応俺の考えでは画面外の部分は画面に貼り付けてある一枚絵のアルファの
値が0になっていて、リニア補完の関係で上と左のピクセルが半透明の状態に、
そしてアルファテストによって上と左の半透明のピクセルが「抜き」の状態に
なってるのではないか?

試しにちょっと大きめに一枚絵を貼り付けるか、アルファテストの値を
いじってみてはどうだ?

一枚絵が2ピクセル程右下にずれて貼られている可能性の方が大きそうだが。
709デフォルトの名無しさん:2007/05/28(月) 22:56:20
>>704
ググったりしてもなかなか良い関数がでてこないので
そうなんじゃないかと思っていたのですが
やはり自前ですか。
GetTextExtentPoint32を参考に
自前で最終行の幅をだす関数を作ろうと思います。
ありがとうございました。
710デフォルトの名無しさん:2007/05/28(月) 23:08:37
>>705
新造人間に似た名前の奴だよね。探したけどどうにもダメ。ヒントください
711705:2007/05/28(月) 23:23:26
>>710
人造人間の名前と「ソースコード」で検索。
今なら上から二つ目に出てくる。
712デフォルトの名無しさん:2007/05/28(月) 23:51:45
>>708
返答ありがとうございます
ですが、自己解決しました
原因はテクセルアライメントだったようです。
全面テクスチャは(-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
713デフォルトの名無しさん:2007/05/29(火) 05:58:04
>>710
>>700>>705もおおよそどのツールおことを言ってるかは分かるんだが
人造人間って何だ。

あと例のビューワのソース見てみた。
確かに、mqoの読み込んでDirectXで表示しているぽいんだが・・・
なんというべきか、これは参考にはならないような・・・
714デフォルトの名無しさん:2007/05/29(火) 06:16:23
ごめ新造人間は分かった無視してくれ
715デフォルトの名無しさん:2007/05/29(火) 07:01:35
ttp://www.metaseq.net/metaseq/format.html
これ見ても作れないならもう諦めたほうがいいと思うんだが・・・
あなた某MMO作者にもスルーされてたでしょ・・・
716デフォルトの名無しさん:2007/05/29(火) 17:57:44
あなたが誰を指しているのかはっきりさせてくれ
717デフォルトの名無しさん:2007/05/29(火) 18:02:21
丁度時期が被ったから同一人物っぽいがそいつは俺じゃNEEEEEEE!!
つってもこの板の時点で同じソース探している人間二人位いるし
需要のありそうなソースだから、聞けばサンプルくらい見つかると
思ったんだ。

実際ボーンやアンカーまでメタセコイアでセットアップしたデータを
読み込むのは結構膨大な作業量。まぁ、ちびちびと実装している最中だが。
718デフォルトの名無しさん:2007/05/29(火) 19:11:24
俺が誰を指しているのかはっきりさせてくれ
719デフォルトの名無しさん:2007/05/30(水) 01:21:34
メタセコってボーンまで設定できるの?
つーことはアニメーションまでできんの?
720デフォルトの名無しさん:2007/05/30(水) 01:25:51
あいかわらず六角大王とロックでボーンの組み合わせしかねぇのか?w
721デフォルトの名無しさん:2007/05/30(水) 01:49:09
六角大王、懐かしいな。バソケ一回目ぐらいの時が初リリースだっけか?
722デフォルトの名無しさん:2007/05/30(水) 05:07:49
>>719
別のアプリでモーション付け出来たと覚えてる
そのためのボーンだから、普通の3DCGなんかのボーンと違う
723デフォルトの名無しさん:2007/05/30(水) 19:29:42
DirectX 9.0c をデスクトップに保存したんですけどそれからどうすればいいのでしょう?

どうみても初心者です。回答おねがいします
724デフォルトの名無しさん:2007/05/30(水) 19:36:00
度々質問すみません。
メタセコイアからメッシュデータやボーンウェイト等のデータを読み込む
トコまではいったんですが、D3DXFRAME等のいわゆるフレームの階層構造
というのはどのように作成すればよいのでしょうか?

今まではD3DXLoadMeshHierarchyFromX関数によってルートのフレームを
作成していましたが、内部で何やってるかイマイチ良く分からないです。
(ブラックボックス的にフレームの階層構造が生成されてる)

いっそ、一度XFILE形式でデータを保存してD3DXLoadMeshHierarchyFromXで
再度読み込む手も考えてますが、どう見ても二度手間になるので出来れば
別の手段をとりたいです。

質問が分かりにくくてすみません。
要約するとメッシュ情報やボーンの親子関係情報やマトリクスを与えると
D3DXLoadMeshHierarchyFromX関数のようにルートのフレームへのポインタを
返してくれるような便利な手段や関数があるかどうか知りたいのです。

フレーム作成処理が難しいようならば、諦めてXFILEを経由した読み込み
手段を取ろうと考えています。
725デフォルトの名無しさん:2007/05/30(水) 19:38:48
>>723
長文で邪魔してスマンな
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1982205
これじゃないか?
726デフォルトの名無しさん:2007/05/30(水) 19:51:14
>>725
解決しました
727デフォルトの名無しさん:2007/05/30(水) 20:07:08
ありがとう、ぐらい言ってやれよw
728デフォルトの名無しさん:2007/05/30(水) 20:58:35
甘やかすな
729デフォルトの名無しさん:2007/05/31(木) 09:45:16
ちょwwwwwwおまwwwwwwwww。
ボーン仕込んだメタセコイアデータ読み込みのサンプルソース見つけたww

つーか今までメタセコデータの中身見て自力でやれって言ってた奴
絶対に悪意を持ってミスリード誘ってただろwww。
膨大な時間無駄にしたわ、ふざけんなww。

おかしいと思ったんだよ。MQOの読み込みにボーンまで対応しているアプリは
結構見かけるのにいざ自分も同じように実装しようとすると異様に難しいし。
730デフォルトの名無しさん:2007/05/31(木) 12:52:11
ミスリードというかミスディレクション
731デフォルトの名無しさん:2007/05/31(木) 14:36:41
いやそんな難しいもんじゃなかろう
732デフォルトの名無しさん:2007/05/31(木) 15:23:03
ミストバーン
733デフォルトの名無しさん:2007/05/31(木) 15:29:13
>>いやそんな難しいもんじゃなかろう
俺も昔MQOからの読み込みを試したことがあるが、ボーンデータやウェイト
データも読み込むとなると大変だろう。

ボーンウェイトは一度MQO読み込んでから頂点がアンカーに包まれているか
どうか自力で判定して取得する必要があるし、メタセコでボーン入れたから
といっても、せいぜい位置情報しかもってこれないからボーン階層や浮動
ボーンの作成は自アプリ上で行う必要があるだろうし。
734デフォルトの名無しさん:2007/05/31(木) 21:21:23
>>711
すまん、出てこないんだけどもう遅い?
735デフォルトの名無しさん:2007/05/31(木) 21:51:59
>>733
慣れじゃないかな。
ロゴライターとか小さいころからプログラミングをオモチャ代わりにしてたから時間はかかったけどサクサク出来た。
いきなり目標に突っ走るか、まずツール類を作るか、ライブラリなどの基礎固めから始めるか・・・何から始めるかだけでもやることの印象変わるし。
736デフォルトの名無しさん:2007/05/31(木) 22:29:05
>>734
FFXI モデルビューア

とかで検索してみ。
今現在、目的のページはトップにくる。
ソースはちょっと分かりにくい所に隠されているが、すぐに見つかる。

つーかこのソースはまじで期待しないほうがいいぞ
737デフォルトの名無しさん:2007/06/01(金) 12:10:57
D3DXMATRIXの成分を、拡大成分、回転成分、平行移動成分に分けたいのですが
これはどうやったらいいのでしょうか?
738デフォルトの名無しさん:2007/06/01(金) 13:31:45
>>737
行列の(_11, _12, _13)が変換後のX軸の基底ベクトル、
(_21, _22, _23), (_31, _32, _33)がY軸とZ軸の基底ベクトル。

これらを正規化すれば回転成分が求まる。
逆に、各ベクトルの長さが、それぞれの軸にそった拡大成分。

(_41, _42, _43)が平行移動成分。

ただし、_14, _24, _34が全て0で、_44が1の行列に限る。
739デフォルトの名無しさん:2007/06/01(金) 18:37:42
俺、DirextXを始めたばかりのころその記述が分けわかんなかったw
D3DXMATRIX mat; だとすると
mat._32 がZ軸のYベクトル、あとは>>738
740デフォルトの名無しさん:2007/06/01(金) 19:38:35
>>738
大変勉強になりました、ありがとうございます。
741デフォルトの名無しさん:2007/06/01(金) 20:27:08
>>736
サンクス
漸く見つけられた
742デフォルトの名無しさん:2007/06/01(金) 20:52:23
>>736
検索すると結構いろんなビューアが出てくるな
エフェクトまで再現できるビューアとかもあって中々面白そうなんだが、
ソース公開されてないのね、、、orz
743デフォルトの名無しさん:2007/06/01(金) 21:57:17
泥棒だから仕方がない
744デフォルトの名無しさん:2007/06/01(金) 23:15:22
実際FF11とかMQOとかのビューアも結構な数があるから、後進の開発者の
ためにソース公開して欲しいよなぁ・・・。

3Dって開発が異常に難しいじゃん。実際大概の奴らがXファイルの
読み込みでつまづくべ?
それに加えてビュアー開発やら最近のシェーダ技術の研究までやって
たら時間がいくらあっても足りないよ・・・。
745デフォルトの名無しさん:2007/06/01(金) 23:43:52
>3Dって開発が異常に難しいじゃん

これはかなり人に依ると思うが。
あと「Xファイルの読み込み」の難しさと「3D」の難しさは直接関係しないと思う。
746デフォルトの名無しさん:2007/06/02(土) 00:26:49
反論してしまうようだが、俺は総じて3Dの方が2Dより難しいと思うぜ。
やはり数値が三次元的になったのもあって、単純に計算量は2Dより増えるし。
むしろ3Dで作る方が2Dで作るより簡単なアプリやゲームってどんなのがあるのよ。
747デフォルトの名無しさん:2007/06/02(土) 00:42:41
だれも2Dと3Dの比較の話なんかしてないんだが。
748デフォルトの名無しさん:2007/06/02(土) 12:55:14
3Dは難しい分野に属しているという事を表現してるんだろうに。
749デフォルトの名無しさん:2007/06/02(土) 13:33:04
2Dでも手を抜かず回転行列を使っていれば3Dに入っても大して変わらんけどな。
DX自体GLと比べてもワールド行列の設定とか楽だし。
750デフォルトの名無しさん:2007/06/02(土) 21:51:37
3Dテレビでも出現しないかぎり3Dを表現することは不可能だろうね
751デフォルトの名無しさん:2007/06/02(土) 23:42:33
フロントミッションのようなロボゲーを作っています。
ゲーム性を上げるため視野(Far)を5000にしているのですが、
500程度離れてしまうとロボの手に持った武器が常にロボの手前に表示されてしまいます。
Nearは0.1、ロボの描画をすべで終えた後に武器の描画を行っています。
カメラのNear-Far間が広いため起こっている現象だとは思うのですが、
視野を狭めると遠方の地形や敵等が見えないのでプレイヤーにも空間が狭いと感じさせてしまいます。
何かいい解決方法はありませんでしょうか。

752デフォルトの名無しさん:2007/06/02(土) 23:49:14
Near=0.1
Far=5000

かよ。凄まじいな
ここまで凄まじいのは初めてみた

射影後のZの精度はNearの値に結構左右されるから、
Nearを出来るだけ大きくしてみると良いかもしれない
753デフォルトの名無しさん:2007/06/03(日) 00:24:37
Far値を上げると地面が削れたり、自機の後ろやや上の視点(TPS?)にすると自機そのものが消えてしまいます。
1=1mでやっており、Near10(m)-Far5000(m)辺りが限度です。
フライトゲームになると数十キロ先が見えつつ、非常に手前の機体同士や弾の前後関係がちゃんと計算されていますがどうなっているのやら・・
754デフォルトの名無しさん:2007/06/03(日) 03:17:25
Zバッファの精度が16bitになってねぇ?
ちょっと設定部分みてみろ
755デフォルトの名無しさん:2007/06/03(日) 04:24:40
>>753
そういう場合はZバッファよりもWバッファの方がいい。
756デフォルトの名無しさん:2007/06/03(日) 08:05:46
1 Far-Nearを 5000〜1くらいで描画
2 1のZバッファだけクリアし、Farを近くして武器を描画
757デフォルトの名無しさん:2007/06/03(日) 09:33:56
>>754
ラデ9200ですが、AutoDepthStencilFormatをD3DFMT_D32にすると
D3DDEVTYPE_HALでデバイスが作成できないのでD3DFMT_D16にしています。
自分の環境がヘボいのかも知れませんが。
758デフォルトの名無しさん:2007/06/03(日) 10:22:35
>>757
D32よりもD24X8, D24S8の方が一般的だから、そっちも試そう。
CheckDepthStencilMatchで確認するのが一番だが、成功するまで
AutoDepthStencilFormatを変えながらCreateDeviceしてみるのも有り。
759デフォルトの名無しさん:2007/06/03(日) 10:37:27
>>758
>D32よりもD24X8, D24S8の方が一般的だから、そっちも試そう。
2つとも実行には問題ありませんでした。視野の設定を変えているので元に戻してみます。
ところでこの2つはゲフォやラデのどの辺りから対応しているのでしょうか。
対応していなければ書いてある通り値を変えてデバイスの生成をすればいいですがちょっと気になったもので。
760デフォルトの名無しさん:2007/06/03(日) 11:11:11
D24X8を設定し、NearFar間を初期状態で正常に描画できました。
レスをしてくださった方、本当にありがとうございました。
761デフォルトの名無しさん:2007/06/03(日) 11:38:36
>>756
ちょっと興味もったw
762デフォルトの名無しさん:2007/06/03(日) 18:16:44
>>759
D24が使えたからってNear:Far=1:50000の比率はあまりお勧めできないよ。
763デフォルトの名無しさん:2007/06/03(日) 18:54:11
普通はどのぐらいがいいの?
764デフォルトの名無しさん:2007/06/03(日) 20:44:17
射影変換後のz座標(=zバッファに入る値を0〜1に正規化したもの)は
  z' = (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くらいの分解能になる。
上の式でいろいろ試してみるといいよ。
765デフォルトの名無しさん:2007/06/04(月) 01:15:18
質問させてください。

現在3Dの戦闘機を使ったゲームを作ってるんですが
戦闘機のコクピットからの視点が上手くいきません。

カメラの上方向ベクトルが上手いこと作成できてないみたいなんです。

UpVec(0, 1, 0);

これを、機体のXYZ軸の回転量でまわした

RotationMatrix

で変換をしてやり

D3DXMatrixLookAtLH(&CameraMatrix, (D3DXVECTOR3 *)&From, (D3DXVECTOR3 *)&At, (D3DXVECTOR3 *)&Up);

でカメラ行列を作っているのですが……。
766デフォルトの名無しさん:2007/06/04(月) 18:28:33
自機のコクピットからじゃない視点では自機は正常に表示できているんだよね。
自機のMatrixのY軸のベクトルをUpVecにそのまま入れればいいのに。
というか、カメラの姿勢=自機の姿勢だから何の計算もいらんがな。
767デフォルトの名無しさん:2007/06/05(火) 00:03:13
>>766
そのままUpVecにいれたら成功しました。
お騒がせしてすいません。
768デフォルトの名無しさん: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()の第一引数のスプライトって制限があるのでしょうか?
769デフォルトの名無しさん:2007/06/05(火) 15:15:20
this->_sprite2->Begin(SpriteFlags::AlphaBlend | SpriteFlags::SortTexture);

スプライトのBeginで引数がSpriteFlags::Noneになっていた所を直したら、動きました。お騒がせしました。
770デフォルトの名無しさん:2007/06/05(火) 23:33:21
MC++もありなん?
771デフォルトの名無しさん:2007/06/06(水) 11:15:29
DirectXの質問とはちょっと趣旨が外れるかもしれませんが、
(ビデオカードの)GPU負荷を調べる方法ってありますでしょうか?
シェーダ開発用にGPUの負荷が%で分かるようにしたいのですが・・・。
772デフォルトの名無しさん:2007/06/06(水) 11:44:46
>>771
NVPerfHUDとか。

とはいえ長いパイプラインかつ高並列な最近のGPUについて、
%で表現されるような負荷を定義するのって難しいよ。
ボトルネックの箇所が違えば、20%+40%が60%にならないし。

そもそも普段無条件に信用しているCPU使用率だって、
実際の計算方法を知ってみれば結構ザルだって事がわかる。
773デフォルトの名無しさん:2007/06/06(水) 12:27:24
すんげえ高次元の状態を
たった一次元の数値に落とし込んでるわけだからな
774デフォルトの名無しさん:2007/06/06(水) 13:40:36
>>771
Vistaだったらパフォーマンスビューアーにコマンドバッファーの占有率みたいなのがあったと思うよ。
手持ちがXPなんで確認できませぬが。
775デフォルトの名無しさん:2007/06/06(水) 13:49:07
>>774
その辺はRTM直前にいろいろバグが見つかったからまだ手を出さないほうが吉。
Vista SP1でETW (Event Tracing for Windows)と連携して細かいタイミング情報が取れるようになる。
776デフォルトの名無しさん:2007/06/06(水) 14:46:53
>>775
RTM版でも一応使えるよ。
777デフォルトの名無しさん:2007/06/06(水) 15:19:43
>>776
パフォーマンスカウンタのVideo Schedulerカテゴリにある"% GPU Busy"のことであってる?
うちは数字は表示されるけど化け化けで少なくとも%にはみえない。
778デフォルトの名無しさん:2007/06/06(水) 15:22:03
>>776
ってもしかしてETW使ったDirect3D 10のプロファイリングって
Vista無印でもう実装されてたってこと? だったらスマソ。
779デフォルトの名無しさん:2007/06/06(水) 18:49:59
>>772
早速NVPerfHUD試してみました。
思った以上に様々な情報が取得できそうです。
有用なアドバイスありがとうございました。

>>773
自分もXPなので試せませんが、Vistaに乗り換えた際には試して見ます。
アドバイスありがとうございます。
780デフォルトの名無しさん:2007/06/07(木) 00:16:00
引き続き教えていただいたNVPerfHUD弄くってますが、これ凄いですね。
シェーダの動作やオブジェクト毎の描画のチェックやシェーダに突っ込む
テクスチャの確認等…便利です。

NVPerfHUDの2.0β版だとプログラムを書き換えなくても動作させる事が可能
らしいので、市販のゲーム等のシェーダプログラミングを参考に出来ると
考えたのですが、今はβ版って手に入らないのでしょうか?
781デフォルトの名無しさん:2007/06/07(木) 01:33:49
>>777
Video SchedulerってのがGPUの使用率をCPU側から監視したデータだからそれが一番近いよ。

>>778
D3D10は知らないけど、Video SchedulerのカウンタってETWを使ってるはず。
782デフォルトの名無しさん:2007/06/07(木) 17:15:36
透視変換後の画像の表示位置を調整するために
ビューポートの中心を変えたいのですが、
DirectXでやるにはどうしたらいいでしょうか。
783デフォルトの名無しさん:2007/06/07(木) 17:44:09
D3DXの射影行列生成関数を使うのなら、

D3DXMatrixOrthoOffCenter*H
D3DXMatrixPerspectiveOffCenter*H

とかのOffCenter(中心が離れている)系関数を使うと一発。
詳細はヘルプで
784デフォルトの名無しさん:2007/06/07(木) 22:28:29
>>783
サンクス。D3DXは使ってないけど、数式が書いてあって助かった。
785デフォルトの名無しさん: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() );
786デフォルトの名無しさん:2007/06/09(土) 15:52:03
FAILED ( m_pAnimController->(~引数略~, lpAnimCtrl

引数を略すのは構わんがメソッド名まで略す奴は始めてみたよ
俺はエスパーじゃないので他当たってくれ
787デフォルトの名無しさん:2007/06/09(土) 16:26:34
トゥーンレンダリングについて

ティーポットなどの単純なもので解説したサイトはあるのですが、
Xファイル1つに複数のパーツがあったり、1枚のテクスチャに複数の絵(目や服など)がある場合に応用が出来ず困っています。
服1つにしても縞模様にしたい場合、1次元テクスチャにできないですよね。
毎フレーム頂点1つ1つ触るのも頂点数が多いと効率が悪く感じます。


何か参考になるようなサイトや書籍はないでしょうか。
788デフォルトの名無しさん:2007/06/09(土) 16:41:44
応用できないのは頭が悪いのだから、なにかをパクっても解決できない。

海外のフリーのゲームでソースとデータを公開しているものを探して見るといいが、おそらく>>787は満足できないだろう。
応用例は複雑なプログラムになるのは予想できるよな? コピペすれば動くようなものではない。
データの作り方もひとつと決まっているわけでもない。個別のデータの製作者のクセや使用ツールにも依存してくる。

789デフォルトの名無しさん:2007/06/09(土) 16:56:03
>>787
ああ、トゥーんっていうから輪郭抽出とかのことかと思ったけど、
一次元テクスチャうんぬんとか書いてるとこみると、陰影周りのことだったのね

モデルそのものにテクスチャがあるのなら、
テクスチャステージ0にモデルのテクスチャ
テクスチャステージ1に陰影用の一次元テクスチャ、
とかすればいたって簡単にできるよ
790デフォルトの名無しさん:2007/06/09(土) 16:57:13
>>786
LPD3DXANIMATIONCONTROLLER m_pAnimController

FAILED ( m_pAnimController->CloneAnimationController(~引数略~, lpAnimCtrl )

でした、すいません
791デフォルトの名無しさん:2007/06/09(土) 23:18:20
RokDeBone2についてのスレはありますか?
質問したくても答えれそうな人がいるのってこのスレぐらいしかいそうになさそうですので
ここで問題なければ質問したいのですがダメですか
792デフォルトの名無しさん:2007/06/09(土) 23:49:52
ここは全然違う。
メタセコのスレなら、詳しい人もいるかもね。
793デフォルトの名無しさん:2007/06/10(日) 02:00:03
ジオメトリインスタンシングってどうですか?
なんだか情報あさればあさるほど微妙な気がしてくるんですけど…。
・シェーダーでの頂点レジスタが少なすぎる
・なんだか頂点レジスタたくさん使うと遅くなるようなことが
 nVidia のスライドにあったかも
・radeon でちゃんとうごくの?
・結局頂点バッファにたくさんの重複モデルをしこんでおいて
 定数レジスタにマトリクスを送るのと大差ないんじゃない?
などが、疑問点です。

ストリームに違う頂点バッファをいくつも仕込めて、
違うモデルを一回の描画で行えるとかのほうが重宝するのになぁ。
794デフォルトの名無しさん:2007/06/10(日) 11:46:53
DirectXで2Dの矩形を描画したいんですが、どのような方法がありますか?
795デフォルトの名無しさん:2007/06/10(日) 12:19:02
SDKのチュートリアルを見て勉強する。
796デフォルトの名無しさん:2007/06/10(日) 12:34:59
それは方法とは言いません。
797デフォルトの名無しさん:2007/06/10(日) 13:00:42
それが方法じゃなかったらいったいなんだというんだ?
798デフォルトの名無しさん:2007/06/10(日) 13:05:19
漠然とした質問には相応の漠然とした答えになって当然
799デフォルトの名無しさん:2007/06/10(日) 13:05:39
卵料理はどんなのがありますか?→料理本を買って勉強してください

至って普通の回答だけどな。
方法を書くにしても多すぎるしコードを書くなんて手間だから回答者もやりたくないだろ。
ググったりSDK見てもらったほうが質問者にとっても分かりやすいんじゃないかな。
800デフォルトの名無しさん:2007/06/10(日) 13:09:27
794です、解決しました

もうひとつ質問なんですが、

スマートポインタというのは
CComPtr<IDirect3DDevice9> m_pd3dDevice;
という風にしておくだけで勝手にreleaceしたりdeleteしてくれるものなのですか?
もしそうなら凄く便利ですよね
801デフォルトの名無しさん:2007/06/10(日) 13:12:28
SDKに矩形なんてあったか?
802デフォルトの名無しさん:2007/06/10(日) 13:16:08
テクスチャ表示の前で嫌でもやることになる。
803デフォルトの名無しさん:2007/06/10(日) 13:16:58
そうですね、もしそうなら凄く便利ですよね
804デフォルトの名無しさん:2007/06/10(日) 13:28:37
CComPtrはカウントの増減のタイミングや、
他の関連リソースの状況を考えて適切に利用しないとならない。
勝手にリソース管理をやってくれる物だと思って>>800みたいな考えで馬鹿が使うと簡単に破綻する。
805デフォルトの名無しさん:2007/06/10(日) 13:32:12
>>804
いや、別に破綻しないが。
806デフォルトの名無しさん:2007/06/10(日) 13:34:52
まあ強引に破綻させようと思えば破綻させることも出来なくは無いが

普通に使ってる限りにおいて気をつけるべきは循環参照くらいでないかね
807デフォルトの名無しさん:2007/06/10(日) 14:04:24
初心者がCComPtrを使う理由は、なんかカッコイイ気分になれるからだ
808デフォルトの名無しさん:2007/06/10(日) 14:11:50
もちろん初心者はグローバル変数として持っている
809デフォルトの名無しさん:2007/06/10(日) 14:12:12
旅をする理由は、帰る家があるからだ。
810デフォルトの名無しさん: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 は本当に向いているのか?という疑問を持っています。

よろしくお願いします。


811デフォルトの名無しさん:2007/06/10(日) 15:38:18
Presentは転送を行うとは限りません。
デバイスを作るときに渡したパラメータにより内部の挙動は変化します
812デフォルトの名無しさん:2007/06/10(日) 15:54:48
>>810
何と比べて?ってのが非常に気になるが・・・

問題は回転と速度ぐらいだよ
そんな面倒なことしないならGDI+で十分。回転もできる。
ただ、任意のアルファ効かせながら、カラーキー的なアルファも同時に使うとか微妙なことがやりにくい。
それと色々(この色々も微妙なんだが)やってしまうと遅いので画面の描画物も数えられるぐらいに留めておいたほうがいい
ただ、開発してるとわかるんだけど色々ごちゃごちゃ考えなきゃならないなら
いっそDirect3Dの最低限の機能だけで組んでしまったほうが色々と楽

なので今はDirect3Dが向いてるかどうかじゃなくて
Direct3D以外の選択肢がほとんどないってとこ
813810:2007/06/10(日) 16:04:13
うーん、Direct3D を使うのはほぼ決定済みなのですが、どこまでをそれで行うかというのを迷っています。
>>810 の (1)〜(3) まで考えたのですが…。

>>810 で言う2D処理は、最終的な画面への転送こそ BitBlt ですが、他の部分で GDI は使いません。(全て自作ルーチンで行っています)
814デフォルトの名無しさん:2007/06/10(日) 16:19:31
>>813
とりあえず>>812の2行目を解決してくれ。
車を選ぶのだって最高速度を重視するのか、燃費を重視するのか、オプションを重視するのか、見た目を重視するのかなど色々ある。
お前は何を比較して選びたいんだ。
815810:2007/06/10(日) 16:34:18
>>814
そうですね、すみません。やはり速度重視で行きたいです。
816810:2007/06/10(日) 16:46:47
返答になってませんでした。

基本は速度重視で行きたいです。
画像の回転は、頻繁には行いませんが、必要です。
また、描画する物体もそこそこ必要です。微妙なこともやりたいです。

現状、2Dのみですが、そこそこいろいろできるものがあります。
ただ、これに3D処理を追加したい、3D処理ならやはり Direct3D を使った方が高速と考えました。
3D処理を追加することで、現状の機能を犠牲にはしたくないので、
贅沢ですが、「現状のいろいろな機能を実現できることが必要で、その中で可能な限り速度を追求したい」といった感じです。
いろいろな機能というのは、おっしゃられたとおりの、回転や半透明、カラーキーなど、いろいろです。
817デフォルトの名無しさん:2007/06/10(日) 17:07:07
DirectXでの2D描画であればトランスフォーム済み頂点(画面の左上が(0,0)の2次元+奥行きとか)で十分じゃね?
テクスチャ読み込みの段階でカラーキーは設定できるし、半透明だってD3DXCOLORでRGBとアルファ値が設定できる。
回転もRotationZでもかければいいのかな。
初めからDirectXで組んでいれば何の問題も妥協もなさそうだが。
818デフォルトの名無しさん:2007/06/10(日) 18:46:50
>回転もRotationZでもかければいいのかな。
お前頭悪いだろ。
819810:2007/06/10(日) 19:09:00
もともと、DirectX は使ってません。
うーん、他の方はどんな感じに設計してるんでしょう…。
820デフォルトの名無しさん:2007/06/10(日) 19:22:06
>>818
基本的な処理だと思った俺は馬鹿なのか(´・ω・`)
821デフォルトの名無しさん:2007/06/10(日) 19:39:21
>>819
スプライト描画するのも1つだよ。
個人的には>>817が書いているTL頂点が好きなのでやってる。
考え方は3Dと同じだし、頂点1つ1つに色やテクスチャが設定できるから様々な表現が出来る。
もちろん回転や半透明描画、自分で設定しているわけだから四角形じゃなくても台形やそれ以上の多角形も描画できる。

まぁ、今回の場合は全部簡単なものを作って、1秒間に同一のものを何枚描画できるか試したほうが良さそう。
試せないような状態であれば直感で1つを突き進め、理解して余裕が出だしたら他の手段を試して比較するとか。


>>820
>>818は天才だからZ軸回転なんか使わずXY軸回転だけで表現するんだよ。
822デフォルトの名無しさん:2007/06/10(日) 19:55:38
今はそうでもないけどスプライト描画は昔糞重かったからまだそのイメージを引きつっている俺ガイル
823810:2007/06/10(日) 20:03:53
スプライトにしてもトランスフォーム済み頂点にしても、
みなさんの話を聞いてると、(1) の方法が前提のようですね。
とりあえず (1) でやってみます。自作2D処理ルーチンはほぼ完全に捨て去ることになりそうです。
ありがとうございました。
824デフォルトの名無しさん:2007/06/10(日) 20:19:07
D3DHALで高速処理が可能になるけど
D3Dやれば後は何も考えなくても良いわけではないよな
画面構成や演出には気を使う
825デフォルトの名無しさん:2007/06/10(日) 20:48:13
で、実は>>810の主な処理用途が1画素処理だったりしたら笑うw
Direct3D全く役に立たんぜw
826デフォルトの名無しさん:2007/06/10(日) 20:51:17
出したダイアログ全部に3Dデバイス作成とかなるとちょっと疲れるよね
見積もりと大分違うことになると思う
前にそういう仕事があった
出す画面全部にDirect3D使って描画する必要があるの
アフォかと思った
827デフォルトの名無しさん:2007/06/10(日) 21:08:44
プロセスが同じならデバイスは一つで十分。
アフォなのはお前。
828デフォルトの名無しさん:2007/06/10(日) 21:28:02
ここはアフォがアフォを煽りそしてその姿をアフォが見てアフォみたいに笑うスレ
829デフォルトの名無しさん:2007/06/10(日) 21:50:08
>>826
SwapChainも知らずに随分偉そうだな
830デフォルトの名無しさん:2007/06/11(月) 07:19:55
>>827
マジでw
でも重要なのはそこじゃなくて色んな部分に3D画面はっつけるのが結構面倒だったって話なんだ
831デフォルトの名無しさん:2007/06/11(月) 08:15:58
非常に重要な部分なんだが、アフォの考えはさっぱり理解できない。
832デフォルトの名無しさん:2007/06/11(月) 12:21:45
Vistaでフルスクリーンにした場合、XPで同じスペック・フルスクリーンで実行するのと同じ能力を期待してもいいのでしょうか。
Vistaは無駄な機能が多いと聞きますし、DX10+Vistaで飛躍的に能力が上がるとも考えられませんしやはり遅くなるのですかね。
833デフォルトの名無しさん:2007/06/11(月) 15:39:47
「Vistaは無駄な機能が多いと聞きますし、DX10+Vistaで飛躍的に能力が上がるとも考えられませんし」
は、「やはり遅くなる」の理由になってないだろ!!ほんと頭悪いな
834デフォルトの名無しさん:2007/06/11(月) 15:43:36
別に間違ってなくね?
835デフォルトの名無しさん:2007/06/11(月) 15:53:18
飛躍的に上がらない>上がる>同じ>遅くなる だろ馬鹿
836デフォルトの名無しさん:2007/06/11(月) 15:54:34
>>832
Vistaじゃないから試せないけどベンチの結果が悪いとは聞くね。
XP用のをVista用に変えたベンチだから悪くなったのか、そもそもVista自体に問題があるのか分からんが。
837デフォルトの名無しさん:2007/06/11(月) 16:09:06
>>835
Vistaの無駄はDX10+Vistaで飛躍的に能力が上がらない限りXPと同等以上にはならんぞw
ちょっとやそっとの処理能力改善なのであれば遅くなる。
DirexrXに限ったことじゃないがアプリケーションが重くなるとの理由で避けている人も多い。
XP以上の性能にすることも出来るが現状では現実的じゃないね。
物ゲームだと今のハイエンドクラスをプレイヤー全員に望むことになりそうだし。
838デフォルトの名無しさん:2007/06/11(月) 18:01:45
今のところビスタなんて個人で買ってる人は相当な物好きかビギナーぐらいじゃない?
839デフォルトの名無しさん:2007/06/11(月) 18:40:27
んー、そろそろVista使ってる人も増えてきたよ。
840デフォルトの名無しさん:2007/06/11(月) 18:41:03
MSの犬は黙ってろ
841デフォルトの名無しさん:2007/06/11(月) 18:45:49
シェアどのくらいか数字出てないのかね?
842デフォルトの名無しさん:2007/06/11(月) 18:56:48
どうやって集計をとるつもりなんだ?
馬鹿はそういうことを疑問に思わないんだな。
843デフォルトの名無しさん:2007/06/11(月) 18:57:16
MSの犬て
DXスレでなんてことを
844デフォルトの名無しさん:2007/06/11(月) 19:04:42
>>842
別に俺らが集計しているわけじゃないし、気になるんなら相応の会社に聞いてくれ
845デフォルトの名無しさん:2007/06/11(月) 19:09:42
ttp://www.computerworld.jp/mkt/plf/63949.html
4月で3パーセントだね。
XPがかなり普及している中で3%は順調と言っていいのかな。
846デフォルトの名無しさん:2007/06/11(月) 19:10:39
つーことはあれか、そろそろ本腰を入れてDX10を迎え撃たないといけないわけか
847デフォルトの名無しさん:2007/06/11(月) 19:30:02
>>845
そうゆう、宣伝目的のプロパガンダを信用しない方が良いよw
3パーセントにして一番得するのはだれで、利権を保有しているのがだれかを
よく考えてみれば、いうまでもない。
848デフォルトの名無しさん:2007/06/11(月) 19:48:01
>>847
どういう計算で「3%はプロバガンダだ」と判断した?

一般的な家庭用PCの買い替えサイクルは10年に満たないわけだから、
現時点で 3% ってのはかなり控えめな数字だと思うけど。
849デフォルトの名無しさん:2007/06/11(月) 20:06:08
>>848
そのけいさんでは10年後にはwindowsXPは消滅するなwwwwwwww
頭を使いたまえ厨房くんwwww
850デフォルトの名無しさん:2007/06/11(月) 20:25:04
別にMSが生産を止めても市場には95ですらまだ新品が売ってたりするし消滅はしないだろ。
でも実際買い替えのときに今更95にする人は稀だし、95搭載のメーカーPC販売なんか0で消滅と言えるんじゃないかな。
自作せず買い換えるということであれば、既に大半がVista搭載になっているので
1年後にはXPの月間販売シェアが0%(0じゃなくて約0)になっても不思議じゃない。
でもこれは販売シェアじゃなくてネットに繋がっているPCのOSの集計だからね。
繋がっていないPCにはXPが多いと思うけど、俺たちゃそんな輩を相手に作っているわけじゃないから関係ないけどね。
まさか業務内容の不明点をここで書くやつはいないと思うが。
851デフォルトの名無しさん:2007/06/11(月) 20:33:14
>>850
あまり相手しない方がいいよ。
時間の無駄だから。
852デフォルトの名無しさん:2007/06/11(月) 20:45:27
ネットに繋がってるPCのOSが解ったらセキュリティーの問題になるって・・・・・
だから調べようがないから、自分の利益になる数字にすると考えるのが妥当だろうね
853デフォルトの名無しさん:2007/06/11(月) 21:09:57
普通はいくつかの提携サイトから情報をもらって調査するもんだと思うが。
IE や Firefox をそのまま使ってるんなら、OS ごとに UA が違うから OS は解る。

調査対象となったサイトが非公開なので、どの程度あてになる数字なのかは
全くわからないけど。
ホームページ持ってる人なら自分のページで調べてみるのもいいかもね。
854デフォルトの名無しさん:2007/06/11(月) 21:42:14
Vista普及率(%)=((年)-2006)^3 *3
855デフォルトの名無しさん:2007/06/13(水) 13:44:42
オブジェクトがスクリーン上の(x,y)のどの位置に表示されてるかを調べる方法ありますかね?
856デフォルトの名無しさん:2007/06/13(水) 14:51:21
表示したのが自分なら、どこに表示したかは自分が知っているんじゃないのか?
857デフォルトの名無しさん:2007/06/13(水) 15:23:33
3Dのオブジェクトってことだろ
858デフォルトの名無しさん:2007/06/13(水) 17:25:45
3Dだろうが2Dだろうが自分が指定した場所にしか表示されない。
859デフォルトの名無しさん:2007/06/13(水) 17:38:16
自分が指定してない場所に表示されるから調べたいっつってんだろカス
860デフォルトの名無しさん:2007/06/13(水) 17:40:46
例えば3Dで立方体を表示した場合でも、カメラの位置によって
スクリーン上の表示位置は変わりますよね?それを簡単に調べられないかということなんですが
861デフォルトの名無しさん:2007/06/13(水) 18:05:00
D3DXVec3Project(&Screen3,&Pos3,&ViewPort,&matProj,&matView,&matWorld);
昔のやつからそのまま引っ張ってきたやつのコピペだから、あとは変数名でなんとか理解してくれ。
Screen3.x、Screen3.yにスクリーン上のXY座標。
Screen3.zがマイナスだとカメラの後ろにいるんだっけか。
matWorldが
D3DXMatrixIdentity(&matWorld);
しか処理してねぇけどこれでよかったっけwwwww
862デフォルトの名無しさん:2007/06/13(水) 18:19:33
>>860
カメラの位置は自分で指定しているんだからその通りに表示されているだろ。
自分で表示しているのに何で調べられないんだ?
863デフォルトの名無しさん:2007/06/13(水) 18:24:59
質問
 1+2=3
 足す数を変えると答えが変わりますよね?それを簡単に調べられないかということなんですが

答え
 普通に計算しろ
864デフォルトの名無しさん:2007/06/13(水) 18:52:49
>>860
要するに、3D空間のある座標(x,y,z)にある物体が、
ウィンドウのどの位置(x,y)にあるかのウィンドウ座標を調べたいってことでしょ?
単に座標変換後の座標を調べればよくない?
865デフォルトの名無しさん:2007/06/13(水) 19:07:07
座標とカメラの向きなんかで計算できそうだというのは解るんですが、
具体的にどのようにすればいいのでしょうか・・・
使う式や関数を教えていただけないですか?

>>864
座標変換後の座標??
866デフォルトの名無しさん:2007/06/13(水) 19:19:22
>>865
書いてあるじゃん、スレ読めよ
867デフォルトの名無しさん:2007/06/13(水) 19:28:57
あー、盛り上がってるところすみません。
DirectX9でビルドしていたソースをDirectX10でビルドするには場合によって大半の修正をしなければなりませんが、
10のビルドでは修正しなければならないアプリケーションを9で実行可能ファイルにした場合はVistaでも動くのでしょうか。
(= VistaでDirectXのアプリケーションを実行するには必ず10でビルドされている必要があるのかどうか)
868デフォルトの名無しさん:2007/06/13(水) 20:45:35
>>867
Vista では DirectX 9 を使ったアプリは動かないから、DirectX を用いた
ゲームやアプリは今のとこカプコムの Lost Planet 以外一切動かないよ。


・・・とか思う?
869デフォルトの名無しさん:2007/06/13(水) 21:42:20
実行できるかどうかと聞かれればYESだけど、正常に動くのは数えるほどしかないね。
3Dゲーは特に突然止まったり落ちたりする。
これがDX10でビルドするとエラーを吐く部分なのかもね。
870デフォルトの名無しさん:2007/06/13(水) 21:59:24
カプコム
871デフォルトの名無しさん:2007/06/13(水) 21:59:31
>>869
そこまで酷いってのは、ドライバの問題じゃない?

漏れは洋ゲーのデモとかベンチとか試してるんだけど、
今のとこ 100% 動いてるなぁ。7,8本しか試してないが。
自作のアプリでもこれといって問題ないし。
872デフォルトの名無しさん:2007/06/13(水) 22:05:33
IME周りは泣かせるな
DirectSound3Dも
873デフォルトの名無しさん:2007/06/13(水) 22:05:43
どうせメモリ関連いい加減なソフトが落ちてるだけだろ?
874デフォルトの名無しさん:2007/06/13(水) 22:14:11
>>865
BBXってサイトいって
検索キーワードに「ワールド座標からスクリーン座標」っていれて検索してみ?
875874:2007/06/13(水) 22:18:33
>>865
ただ、ここで出てきたプログラムを何も考えずに実装して「はいおしまい」じゃ進歩がない
結局、お前、何か作ることばっかりあせってるみたいだけど
正直、なにも得られず終わると思う。
何作ってるか知らないけど基本の座標変換もわからず前へ進もうってのが
結果としてすげーまわり道してると思う
多分、ローカル→ワールドの変換も知らないだろうし、スクリーン→ワールドもやっぱりわからないだろう
なにかやるたびにすぐつまずいておもしろくないと思う
876デフォルトの名無しさん:2007/06/13(水) 22:19:31
ああ、ローカルA→ローカルB、ローカルB→ローカルAとかもな
877デフォルトの名無しさん:2007/06/14(木) 18:07:56
ユーザがランタイムをダウンロード出来るようにダウンロードが出来るページにリンクを張りたいのですが
MSが推奨するリンク先や提供しているバナーなどあるのでしょうか
878デフォルトの名無しさん:2007/06/14(木) 18:14:00
879デフォルトの名無しさん:2007/06/14(木) 18:32:12
>>878
ありがとうございます。
でもバナーのほうは違いますよね、これ
880デフォルトの名無しさん:2007/06/14(木) 18:53:46
881デフォルトの名無しさん:2007/06/14(木) 19:00:09
>>877
バナーあったんであげる pass:directx

DirectX Download (320 x 63)
ttp://www.uploda.org/uporg854822.gif.html
882デフォルトの名無しさん:2007/06/14(木) 21:11:23
激しく写生した
883デフォルトの名無しさん:2007/06/14(木) 21:25:16
誤爆??
884デフォルトの名無しさん:2007/06/14(木) 21:40:34
>>880-881
横からだが保存した
サンクス
885デフォルトの名無しさん:2007/06/14(木) 21:45:19
>>880のって何語?
886デフォルトの名無しさん:2007/06/16(土) 12:11:57
質問させてください、
D3DPOOL_SYSTEMMEMで作ったオフスクリーンサーフェス(以下A)から、
D3DPOOL_DEFAULTで作ったテクスチャのサーフェス(以下B)に
UpdateSurface()で転送を行い、直後にBのテクスチャをSetTexture()して
普通に4角形ポリゴンで表示しているのですが、
正しく表示されません。毎フレーム更新しているはずなのですが、
動いている様子もありませんでした。

D3DXCreateTextureFromFile()で読んだテクスチャをSetTexture()すると正しく表示されるし、
D3DXSaveSurfaceToFile()やD3DXSaveTextureToFile()でBのサーフェスやテクスチャを
BMPに保存してみると、毎フレーム更新した内容が正しく反映されています。

SetTexture()で貼り付けるとおかしくなる原因が見当つかないので、
アドバイスいただけないでしょうか。宜しくお願いします
887デフォルトの名無しさん:2007/06/16(土) 14:22:05
PS4.0を使いたいために画像処理系のソフトをDX9からDX10に移植しようと考えているのですが、
Offscreen Surfaceとかってどうやって移植すればいいのでしょう?DX10にはそれらしい物が一切ないんです。
DX9でやっていることは、CreateOffscreenPlainSurfaceで1920x1080のサーフェイスを確保し、
Pixel Shaderでαブレンディングやミキシング、その他編集を行ってから、StretchRectでバックバッファーに転送しPresentを行っています。
DX10は初めてなんですが、なんというか全然違うものになっているような感じです。
888デフォルトの名無しさん:2007/06/16(土) 15:28:13
背景をマップチップの要領で作成しました。
正しく表示されたのですが、D3DXMatrixScalingを使って拡大したところ枠線がでてきてしまいました。
背景は最大で640*480ドットほどなのでそのサイズのバッファを用意してもいいのかなと思っています。
そこで、
・拡大しても枠線が出ないようにする方法
・背景用のバッファの作成方法
を教えてください。
環境はDirectX9+VisualStudio2005です。よろしくお願いします。
889デフォルトの名無しさん:2007/06/16(土) 17:00:48
>>888
前者:グラボによる
後者:テクスチャと同じ
890デフォルトの名無しさん:2007/06/16(土) 17:02:12
>>888
そこまでわかってて聞きにくる必要があるわけねー
てめー調べるのが面倒臭いから誰かにやらせるつもりできただろ
この糞やろー
手間を惜しむならゲームなんて作るのやめろ馬鹿
891デフォルトの名無しさん:2007/06/16(土) 17:17:18
勇気を振り絞って質問したいのですが・・・・
ネトゲプレイのためにDirectX9,0cを一応インストールした(つもり)なのですが、
本当にインストールできたのかどうかすら分かりません。OTL
なんかいい確認方法かなんかありません?


馬鹿にされるのは承知の上で。
892デフォルトの名無しさん:2007/06/16(土) 17:22:23
>>891
コントロールパネル→プログラムの追加と削除
の一覧にあるはず
9.0cならDecember 2004
ってでるかも、たしか
893デフォルトの名無しさん:2007/06/16(土) 17:32:07
>>891
なぜそのネタでム板のDirectXスレなんだ?ってのはおいといて
「ファイル名を指定して実行」でdxdiagでもやればよろし
894デフォルトの名無しさん:2007/06/16(土) 17:32:28
>>892

ひとまず返答ありがとうございます。


で、確認してみたところありませんでした(ノ∀`)

DirectXのダウンロードページで続行クリック

正規のWindows(?)をダウンロード

DirectXRuntimeってのを実行

DirectXセットアップウィザードが出たので、使用承諾契約に同意して完了

という手順まで踏んだのですが、ここからどうすればダウンロードできるのかがまったく分かりません・・・
すみませんが、誰か手順を詳しく教えてくれないでしょうか?


勿論馬鹿にされるのは承知の上で
895デフォルトの名無しさん:2007/06/16(土) 18:03:11
>>894
ここプログラミング板だからランタイムは板違い
896デフォルトの名無しさん:2007/06/16(土) 19:10:11
>>894
馬鹿にするのは遠慮しとくが、
ここはC/C++を使ったDirectXプログラミングについて扱うスレだ。
なんでスレ違い、もっと言うと板違い。
他所で質問した方が的確な答えが返ってくるよ。
897888:2007/06/16(土) 19:42:21
>>889
テクスチャ作ってそこに書き込めばいいのですね。
テクスチャに書き込む方法調べてみます。
ありがとうございます。

>>890
>>1にのっとり、質問する資格があると判断して質問しました。
それにしても暑い日が続きますね。
898デフォルトの名無しさん:2007/06/16(土) 20:10:45
>>897
自分のが正しくスレを使ってるんだぞってアピールだろうけど
正直、てめーみたいな糞は何を作ろうとしても駄目だと思う
899デフォルトの名無しさん:2007/06/16(土) 20:19:55
マップチップの話は消えてしまったん?
だったらはじめからチップなんて使うなよw雑魚w
同じがもんがダブるんだったらpngで敷き詰めておいても圧縮がかかるから
サイズは増えなかったりするw
900デフォルトの名無しさん:2007/06/16(土) 20:20:04
>>898
お前、キモいから失せろよ。
スレタイも読めないのか?
901デフォルトの名無しさん:2007/06/16(土) 20:49:34
>>900
そんなに褒めなくていいぜw
902デフォルトの名無しさん:2007/06/16(土) 21:10:30
自演はやめましょうとは書いていませんが自演はやめましょう。
903デフォルトの名無しさん:2007/06/16(土) 21:16:46
>>902
どのレスとどのレスを自演だと思っているの?
904デフォルトの名無しさん:2007/06/16(土) 21:34:44
905886:2007/06/17(日) 02:39:44
自己解決しました。
CreateTexture()の引数のLevelsに0を指定していた為
自動的にミップマップが作られてて、レベル0にしか書き込んでなかった為
いつもレベル1以上のサイズで描画していたからでしたヽ( ´・ω・)ノ
Levelsに1を指定したらうまく表示できました。
906デフォルトの名無しさん:2007/06/17(日) 05:34:13
>>887
DX9でのCreateOffscreenPlainSurface→(Pixel Shader)→StretchRect→Presentを
DX10で同等の処理を行うためには一般的にどのような方法があるかヒント頂けませんか?
SDKを見た感じだと余りにもShaderや3Dモデルに傾斜しすぎている見たいでDDrawやDX9までの知識と全然違うみたいです。
907デフォルトの名無しさん:2007/06/17(日) 06:58:32
画像処理ツールとかならDirectXのターゲットとしては肩身狭くて当然じゃないの?
908デフォルトの名無しさん:2007/06/17(日) 14:23:24
directXの映像以外の機能も
ビデオカードやGPUを使って計算したりしてるんですか?
909デフォルトの名無しさん:2007/06/17(日) 14:25:53
なんでそう思うの?
910デフォルトの名無しさん:2007/06/17(日) 14:44:37
質問を質問で返すな!!!!
911デフォルトの名無しさん:2007/06/17(日) 14:45:36
なんで質問を質問で返してはいけないの?
912デフォルトの名無しさん:2007/06/17(日) 16:23:54
質問を返すのは、相手がどれほど愚かな質問をしたかを思い知らせしめるためだ。
だから学校の教師は自分がそうされると激怒するのだ。
913デフォルトの名無しさん:2007/06/17(日) 18:23:41
>>908
んで
計算してたからなんだっていうの?
してなかったからなんだっていうの?
なんなの?
914デフォルトの名無しさん:2007/06/17(日) 18:40:21
もういい、もう止めろよ、もう>>908は死んだよ
915デフォルトの名無しさん:2007/06/17(日) 18:44:15

何が「もう」だ。三回も言いやがって。
副詞のリフレインは頭が悪く見えるぜ。

916デフォルトの名無しさん:2007/06/17(日) 22:16:32
917デフォルトの名無しさん:2007/06/17(日) 22:23:55
サウンド:サウンドチップで支援
ショウ:GPUで支援
インプット:デバイス内のチップで処理後に入力
プレイ:蟹さんががんばってます

入門書の最初のほうに書いてあるかも
あとパーツのマニュアルとか・・・

GPU使うかどうかはDirectXがグラフィックのために自動的に使う以外は
プログラマの裁量次第
ミドルウェアでGPU使うこともあるけど無料のやつでは見たことないなぁ
918デフォルトの名無しさん:2007/06/17(日) 22:30:26
DirectX10よりDirectX9が使いやすいならそっちでいいじゃん。
PS4.0を使うことが最大の目的なら、その目的のために自分が先駆者になれ。
919デフォルトの名無しさん:2007/06/18(月) 04:02:30
>>918
ってことは、DX10にはOffscreen Plain Surface見たいな物はなく、たとえただ単にサーフェイスに
書き込みを行いたいだけでもテクスチャーとして扱うしかないという事ですか?
初心者質問スレなのに先駆者になれとか全然スレのタイトルと違う感じが、、、
どなたかDXグルの人でDX10でOffscreen Plain Surfaceを扱う術をご存知の方いらっしゃいませんか?
920デフォルトの名無しさん:2007/06/18(月) 06:57:46
サーフェイスって何をするためのもんだっけ?
ただのバッファのことちゃうの?
921デフォルトの名無しさん:2007/06/18(月) 07:02:51
共通語でお願いします。
922デフォルトの名無しさん:2007/06/18(月) 07:18:39
>>921
は?
923デフォルトの名無しさん:2007/06/18(月) 07:29:50
関西弁ではなく共通語でお願いします。
924デフォルトの名無しさん:2007/06/18(月) 07:35:45
>>920
DX9のOffscreen Plain Surfaceって知らんのか?
知らないのにこのスレで何しとるん?
925デフォルトの名無しさん:2007/06/18(月) 07:45:48
何しとるん、て・・・
知らないから、聞いているんじゃないの?
926デフォルトの名無しさん:2007/06/18(月) 08:13:15
>>924
その用途がよくわからん
アレって何に使えるんだっけ?
テクスチャはまあテクスチャとして使えるけど
サーフェイスってなんにもつかえねーじゃん
メモリデバイスコンテキストっていうか、画像のRGBを詰め込んだバッファ以上の働きすんの?あれ

つまり何がいいたいかというといらねーからなくなったんじゃねーの?
って感じ
927デフォルトの名無しさん:2007/06/18(月) 08:15:55
テクスチャとサーフェイスを別のものだと思っている時点で、
まともにプログラムを組んだことがないのが丸わかり。
そんな疑問を持つ前に手を動かせよ、どうせ頭が悪いんだから考えたって無駄。
928デフォルトの名無しさん:2007/06/18(月) 08:22:15
テクスチャは一つ以上のサーフェスを持ってる
だからこそ、テクスチャを貼るとポリゴンに画像が表示される

D3Dで画像を保持するリソースはサーフェスだけ。
間違ってもテクスチャそのものではない。
929デフォルトの名無しさん:2007/06/18(月) 08:27:27
単体でサーフェイスをもつことになんの意味が
930デフォルトの名無しさん:2007/06/18(月) 08:29:38
質問?感想?
931デフォルトの名無しさん:2007/06/18(月) 08:35:44
回答者に対して何の礼儀も感じられない質問者。
しかもせっかくもらった回答文を真面目に読んでいないことが見え見え

サーフェスとは何かテクスチャとはどういう関係か、なんて
初心者向けの入門やらヘルプやら幾らでも資料あるのに。

以下スルーでお願いしますね〜
932デフォルトの名無しさん:2007/06/18(月) 09:03:52
すいません
インデックスバッファーの学習をしているのですが、
インデックスバッファーには16ビット用と32ビット用があるみたいなのですが、
例えば16ビット用だったら、65536個の頂点まで使えるということでしょうか?
それとも、65536個のインデックスを使えるということなのでしょうか?

まだあまり複雑な処理はやらない(できない)ので問題にならないようなきもしますが、
気になったので。
933デフォルトの名無しさん:2007/06/18(月) 11:04:17
>例えば16ビット用だったら、65536個の頂点まで使えるということでしょうか?
>それとも、65536個のインデックスを使えるということなのでしょうか?

インデックスバッファの要素が16bitという意味なので正解は前者。
インデックスバッファの要素数自体には制限は無いよ。
934デフォルトの名無しさん:2007/06/18(月) 14:19:25
で、結局はDX9のオフスクリーンサーフェイスと同等なことをDX10でやるにはっていう質問に対して全く回答がないようだが。
残念ながら俺もDX10はこれからって所なんで直ぐには回答できないが、同じく興味はある。

ぱっとSDKを見た感じだと残念ながらオフスクリーンサーフェイスのようなものはもはやDX10にはなさそう。
多分だけど2Dテクスチャーってのを使うことで同じようなことが同じようなことが出来そうだけど、
output managerとかraster stageとか、ミップマップ、テクスチャー、その他もろもろ、
DX9までは一切考える必要のなかったことまで一応理解して設定しないといけないみたい。
面倒だけどしょうがないかな?

もっと他に良い方法があったら教えて欲しい。
935デフォルトの名無しさん:2007/06/18(月) 15:00:23
>>906
未だに質問の内容がよくわからんのだけど
CreateOffscreenPlainSurfaceで作ったサーフェイスって何に使ってるの?
Pixel Shaderの入力なの? 出力なの?

>>919 を見る限り出力っぽいけど、
レンダーターゲットサーフェイス作るなら普通CreateRenderTarget使うよね。
それともレンダーターゲットは別にあってGetRenderTargetDataで取り込んでるの?

ちなみに自分の場合、DX9の時代からいつもレンダーターゲットテクスチャとして作っていた。
んで、後で3Dオブジェクトに貼ったりPixel Shaderに再投入したりするための仕組みを
一通りつくっちゃったので、「たとえただ単にサーフェイスに書き込みを行いたいだけでも」
と言われてもあんまり切実さが伝わってこない。
てかStretchRect使うのは邪道だと思ってるし。
936デフォルトの名無しさん:2007/06/18(月) 15:30:02
>>935
恐らくだが、画像処理ソフトかその類なんだろう。

例えば、1024x768の画像をオフスクリーンサーフェイスに読み込み、
それに対してPixel Shaderで処理を行い、
StretchRectでウィンドウの大きさに設定されているバックバッファーに転送して、
そのままPresentで表示しているだけなんじゃね?

ビデオとかドロー系の2Dソフトだとそういう処理を良く見かけるけどな。
そういったソフトだと3Dとかテクスチャーの概念は一切出てこないから。

StretchRectって2D系だと良く使うよ。
一番典型的なのはアスペクト比を変更する場合とかかな?
720x480の動画を16:9でワイドスクリーンに1920x1080に表示するとか。

このスレは3D系の人が多いと思うけどスレタイの通りDirectXだから2Dも考えないとな。
937デフォルトの名無しさん:2007/06/18(月) 15:40:22
>>936
>それに対してPixel Shaderで処理を行い、

割と長いことDirectX使ってるけど
CreateOffscreenPlainSurfaceで作ったサーフェイスを
Pixel Shaderの入力に使う方法って無いと思ってた。
実はできるの?

一瞬D3DXFillTextureTXのことかと思ったけど
これも対象はテクスチャだしなぁ。
938デフォルトの名無しさん:2007/06/18(月) 16:54:58
>>937
あ、確かに駄目かも。
って事は、オフスクリーンサーフェイスをCPUで処理するためかな?
939デフォルトの名無しさん:2007/06/18(月) 19:25:12
>>937-938
>>887>>906によるとDX9でOffscreenPlainSurfaceに対してPixelShaderを使ってるような口ぶりなんだよな。
940デフォルトの名無しさん:2007/06/18(月) 22:05:59
これ↓テンプレに入れようぜ

質問者は実現したいことを書け

「DirectX10でOffscreenPlainSurfaceを使いたい」

ってのは実現したいことじゃなくてあくまで方法止まり
これにとらわれているより直接的な方法を聞いてしまったほうが早い
(例:ムービーを再生したい、ピクセルシェーダで描画したい等)

どうしてもこの方法でいかなきゃいけないときは
過去の資産をなるべく使いたいので〜とか
そういう理由をちゃんと書いてくれ。無駄に荒れるだけ。
いくら質問掲示板だって入力したら出力がでるわけじゃないんだ
ディスプレイ越しでわかりにくいですが相手は人間だよ
社会人として恥ずかしくない行動を心がけよう
941デフォルトの名無しさん:2007/06/18(月) 22:10:12
>>940
長すぎる。却下。

つかこのスレを見ているのは社会人だけじゃないぞ
勝手に限定すんな
942デフォルトの名無しさん:2007/06/18(月) 22:12:53
ディスプレイ越しでわかりにくいですが相手は人間だよ
霊長類として恥ずかしくない行動を心がけよう
943デフォルトの名無しさん:2007/06/18(月) 22:13:41
このスレを見ているのは霊長類だけじゃないぞ
勝手に限定すんな
944デフォルトの名無しさん:2007/06/18(月) 22:14:33
>>941
いや、手短にいうとこれ↓だけ

「質問者は実現したいことを書け」
945デフォルトの名無しさん:2007/06/18(月) 22:23:39
>>943
このスレは社会人はともかく、霊長類ですらない何かも読んでいるのか・・・
あなおそろしや
946デフォルトの名無しさん:2007/06/18(月) 23:06:52
DirectXを使って2Dのプログラミングをしているのですが、
ラスタオペレーションを使った描画(描画する画像のRGB値反転など)はどうやったらいいですか
ピクセル単位でRGB値をいじるにはどうしたらいいですか
947デフォルトの名無しさん:2007/06/18(月) 23:27:57
ラスタオペレーションはピクセルフォーマットに依存する処理だから不可能。
ステートを工夫すればアルファブレンディングで似たようなことは可能。

ピクセルを直にいじるには描画先のサーフェスをロックして書き込み。
だがそういう用途をメインに使うことを考慮して設計されているわけではないので効率は悪いし
環境や条件によっては不可能な場合もある
948デフォルトの名無しさん:2007/06/19(火) 00:40:27
ずーっと↑から見てみると分かるけど、やっぱ2Dの需要多いよな。
繰り返し出てくるけど、まともに初心者向きに答えている人いないね。

>>940
自分自身で勝手に仮定立てて勘違いしているのお前かもな。
スレタイ嫁。初心者質問だぜ?
>「DirectX10でOffscreenPlainSurfaceを使いたい」
立派に実現したいことと思うけど?

>>946
CPUとGPUのどちら側から弄りたいのか?それで話がかなり変わるから。
949デフォルトの名無しさん:2007/06/19(火) 00:42:30
>>948
じゃあ、お前が教えてやれよw
何もしないで偉そうにしゃべってんじゃねー
改善案出しただけだろ

初心者が誰も使ってないようなサーフェイス使おうと頑張ってるところで俺は止めてやるがな
950デフォルトの名無しさん:2007/06/19(火) 02:08:07
>>949
お前が出て行くべきだと思うけどな。
少なくとも>948は>946の話を聞いてるし。
951デフォルトの名無しさん:2007/06/19(火) 02:29:10
このスレでいう共通語というのはC++かね?
952デフォルトの名無しさん:2007/06/19(火) 03:09:09
>>951
安価打てよ
それだと誤爆と思われるぞw
953デフォルトの名無しさん:2007/06/19(火) 07:36:23
>>950
は?>>947で結論出てるだろ
954デフォルトの名無しさん:2007/06/19(火) 07:37:52
俺は>>946でも>>947でも>>948でも>>949でもないぞ
955デフォルトの名無しさん:2007/06/19(火) 07:42:43
俺は>>955だ。文句あるか
956デフォルトの名無しさん:2007/06/19(火) 07:46:26
>>954
お前は誰の質問にも答えてないからお前が一番出てけばいいと思うよ
人のレスばかりすくいとって自分のしたい流れにもってきたいのがミエミエ
957デフォルトの名無しさん:2007/06/19(火) 07:53:26
話を元に戻すと

「DirectX10でOffscreenPlainSurfaceを使いたい」

こういう↑意味の無い(と思われる)質問ってどうよ?
すげー無駄だと思わねー?
まず、なにがしたくてこんなことしてるのかからはっきりしてくれないと
上のレス群みればわかるように無駄に荒れる

もし、なにか別の目的のためにたまたまそいつがみつけた方法がこれであったのなら
別の手段を考えたほうがいいと思う。初心者スレでもあるわけだし
判断のミスも考慮したい
958デフォルトの名無しさん:2007/06/19(火) 14:12:57
>>957
てか、荒れている原因は別だろ?
回答がさくっと出てこない→なんでそんなことする必要あるんだ?→質問者が悪い。っていうパターンに見える。

>>919
質問内容はDX9にあるOffscreenPlainSurfaceと同等の処理をDX10でも行う方法を知りたい。
行間を読むと、DX9で行っている2DのコードをDX10に移植したい。じゃないか?

もしそうだとすると、2Dテクスチャーを使えばいいよ。
つまり、DX10からはDX9のOffscreenPlainSurfaceに該当するものはなくなっちゃいました。
DX9だとパイプラインを全く考えずに2D用のバッファーを扱えましたが、
DX10だと一応テクスチャーを意識して設計する必要がある。
ま、Winプログラム組む時に初期化やら呪文やらあるのと同じようにちょっとしたコードが必要になる。
レンダーターゲットビューとかアウトプットマネージャーに設定とか、ビューポート等の呪文が必要。

面倒だけど汎用性と効率のために設計されてからしょうがないと思って諦めてくれ。
959デフォルトの名無しさん:2007/06/20(水) 01:01:08
>>なんでそんなことする必要あるんだ?
俺はこんな回答を返す奴が良くないと思う。
わからんなら黙っとけと、俺みたいによ。

ちなみにオフスクリーンサーフェイスは使うよ。
デバイスのCAPSに影響されず、必ず作成が成功するのは魅力だ。
当然PixelShaderのdestには使えないが、質問者は端折っただけだろう。
んで、DX10はCAPが無くなったと聞く。
なら、オフスクリーンサーフェイスが無くなってもしかるべきかもな。
960デフォルトの名無しさん:2007/06/20(水) 01:29:49
>>959
それじゃ進歩がねーじゃん
このスレだって質問者のためだけにあるわけじゃねーし

これこれこういう風に考えて、これを使うという結論に至りました
ってちゃんと言えれば、「おおなるほど、でもね〜orじゃあ〜」って繋がるわけだし

質問者も回答者も黙ってるのは一番よくないと思う。
ちょっとでも知ってたり、もしかして〜みたいなことやろうとしてる?っていうところから
会話ってはじまるんだと思う
質問者に完璧な質問を望んでいないのと同様、回答者にも完璧な回答を求められても困る
だいたい全部ピンポイントで返せるわけがない
そこらへんは人が人に頼む以上ある程度の受け答えは覚悟しないと・・・
そういうのが我慢ならないなら、全部自分でなんとかすりゃいーじゃん。人になんかたよんないで。

質問者、回答者双方ともなんも答えない状況ってのは俺は回避したいと思う
一応初心者スレなわけだし、一般的なやり方ってのを知りたい奴が質問にくるんだと思う
初心者だから、いま自分が詰まってるところを局所的に質問してしまうんだけど
本当はこういうやり方が一般的で君のやり方はちょっと一般的でないとかそういう場面のが多いと思う

そこで「なんでそんなことしてんの?」って聞いてくれる状況は俺はありがたいと思うが、どうだろうか?
961デフォルトの名無しさん:2007/06/20(水) 01:53:02
>>960
そんな細かいことはフェイスツーフェイスの時だけにしてくれ。
スレでいちいち細かいこと書かれたら読むほうもウザイ。
それよかピンポイントが2hらいしいと思う。
お前みたいなやつはここには合わないからリアルでリアル人間に煙たがれてくれ。

>>958
>>959
その回答で質問者も納得だろうね。別に返事をもらわなくても分かるだろうし。
962デフォルトの名無しさん:2007/06/20(水) 07:11:48
>>961
それはお前のニュアンスだけじゃん
963デフォルトの名無しさん:2007/06/20(水) 07:36:04
>>961
掲示板と実際に顔合わせて話すのとで何の違いがあってそんなこと言ってるの?
面倒だろうがどうだろうが通じるわけないじゃない
964デフォルトの名無しさん:2007/06/20(水) 07:51:20
今回分からないから質問者罵倒の方に持っていった人間は、どうしようもなく
駄目だと思うけどなぁ。
965デフォルトの名無しさん:2007/06/20(水) 09:04:02
>>959
>当然PixelShaderのdestには使えないが、質問者は端折っただけだろう。

いや、だからsrcに使うのも無理じゃね? という話を上に書いたとおりなんだが。
質問者はあたかもDX9ではできていたかのように書いているけど
仕様を良く読めばそれはもともとDX9でもできないことのはずで、
微妙に釣りっぽい気がしてきたのでしばらくスルーしてた。
966デフォルトの名無しさん:2007/06/20(水) 10:42:17
ここって初心者スレなのに初心者お断りって空気あるよなぁ。
ここほどではないが、くだすれもたまにそうなるし。
初心者はわからないから、おかしい質問だってするのに、初心者丸出しの質問に
大しては、まず罵倒するか自分の意見を押しつけるだけで的確なアドバイスを
する空気すらないもんな。

この分だと、しっかり入門・初心者・素人と細かく分けないと、本当に始めたばかりの
初心者とか、3Dの知識が乏しい人間とかはまず問題解決できないよな。
大抵こう言うと、金もらっているわけじゃないのだから、そこまで親切にする必要はないとか
言うのいるが、なら黙ってろと思うし。


今回のOffscreenPlainSurfaceに関しては、随分時間が掛かって質問自体が少しおかしい
と言うことが説明されているが、初心者にはそんなこと言われなければわからない。

今回に限らず、仕様や関係まで把握してプログラム組めるようになればそれは初心者卒業レベルだと
思うぞ。

> 仕様を良く読めばそれはもともとDX9でもできないことのはずで
今回のこのグダグダぶりはそれだけが原因じゃないだろうけどね。
一番最初にそれを指摘すれば良いだけだったんだし。
967デフォルトの名無しさん:2007/06/20(水) 10:52:37
>この分だと、しっかり入門・初心者・素人と細かく分けないと、本当に始めたばかりの
>初心者とか、3Dの知識が乏しい人間とかはまず問題解決できないよな。

問題解決の場所は何も2chだけじゃないんだが。
968デフォルトの名無しさん:2007/06/20(水) 10:58:17
>>1
>4.余計な雑談は不要ですよ
969デフォルトの名無しさん:2007/06/20(水) 11:34:08
まだ説教合戦やってたの。

まぁそろそろスレも途切れるしことだし、
質問するタイミングがつかめない他の初心者さんはもう少し待っててね☆
970デフォルトの名無しさん:2007/06/20(水) 12:17:28
いつになるんでしょうか…
971デフォルトの名無しさん:2007/06/20(水) 14:00:22
もうどうでもいいと思うけど、俺はDX9でたまにOffscreenPlainSurface使うよ。

CreateRenderTarget()で作成したターゲットサーフェス(≠テクスチャ)に対して
描画したデータを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
972デフォルトの名無しさん:2007/06/20(水) 14:24:25
スクラッチプールとはまた別のものなんだっけ?
973デフォルトの名無しさん:2007/06/20(水) 14:40:36
オフスクリーンサーフェスでもプールは選べるよ。
俺は>>971の用法ではヘルプの指示どおりD3DPOOL_SYSTEMMEMで作ってる。
一方、>>887のようにStretchRectでオフスクリーン→デバイスの方向に転送する
場合にはD3DPOOL_DEFAULTで作っておかないと駄目らしい。ややこしいな・・・。
D3DPOOL_SCRATCHはDX8との互換性のために残してるだけじゃないかね。

>>887の「Pixel Shaderでαブレンディングやミキシング、その他編集を行ってから」は
いまだに気になるところ。
974デフォルトの名無しさん:2007/06/20(水) 14:59:45
>>973
単純にバックバッファを VRAM に持ちたくないってことなんじゃないだろうか。
975デフォルトの名無しさん:2007/06/20(水) 15:11:51
>>974
Pixel Shader云々のくだりはCPUで同等の処理をやってるってことか?
976デフォルトの名無しさん:2007/06/20(水) 17:14:11
多分、CPUとPixel Shader両方を使っていて、>887が問題になっているのはDX9にあった
OffscreenPlainSurfaceがDX10で見つからないんだけどって言うことだけでしょ?
Pixel Shaderの部分はDX9だろうがDX10だろうがテクスチャー経由にする必要があるから
別に>887はそこに関しては話を端折ったんだろ?

OffscreenPlainSurfaceに関しては>958が的確に回答しているからもうよいのでは?
977デフォルトの名無しさん:2007/06/20(水) 20:34:55
今すぐ更新を。DirectX Runtimeの2007年6月版が公開に
http://www.4gamer.net/news.php?url=/news/history/2007.06/20070620113933detail.html
978デフォルトの名無しさん:2007/06/20(水) 21:15:40
ここの人間がランタイムだけ更新してどうするんだよ
979デフォルトの名無しさん:2007/06/20(水) 21:30:01
>>978
まあ実はSDKも出てるんだけどな。
980デフォルトの名無しさん:2007/06/20(水) 21:53:12
んなことわかってる
981デフォルトの名無しさん:2007/06/20(水) 23:01:31
// 何もしないマトリックス
D3DXMatrixIdentity(&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

982デフォルトの名無しさん:2007/06/20(水) 23:02:19
// 頂点変換
D3DXVec3TransformCoord(&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
983デフォルトの名無しさん:2007/06/20(水) 23:03:50
言い方が悪かったです
つまり回転しても常に注視点のほうへ動いてもらいたいんです
984デフォルトの名無しさん:2007/06/20(水) 23:22:51
中身を理解していないのが丸わかりなので、
まずはD3DXに頼らずビューを動かすところから始めましょう。
985デフォルトの名無しさん:2007/06/20(水) 23:26:32
>>984
わからないやつは書き込まないでください
お前の意見は聞いてません

さぁ、誰かわかる人教えてください
986デフォルトの名無しさん:2007/06/20(水) 23:44:13
いつもの流れでこのスレも終焉を迎えるのか。
987デフォルトの名無しさん:2007/06/20(水) 23:47:08
これはひどいwwww
988デフォルトの名無しさん:2007/06/20(水) 23:50:46
【C++】 DirectX初心者質問スレ Part12 【C】
ttp://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/
989デフォルトの名無しさん:2007/06/21(木) 00:04:51
990デフォルトの名無しさん:2007/06/21(木) 00:19:31
>>989
(・ω・`)乙
これはポニーテールで勘違いがうんたらかんたら
991デフォルトの名無しさん:2007/06/21(木) 00:20:35
まあ2Chにいるようなやつらはみな低レベルなプログラマなのはわかってるけどさ・。・・
992デフォルトの名無しさん:2007/06/21(木) 00:25:11
スレも最後だからいいたいこと言っちゃうけど
>>981←この明らかになんもわかってねぇ奴どうすんの?
ここできても1週間もすりゃ飽きてやめてそー
993デフォルトの名無しさん:2007/06/21(木) 00:49:10
>>981
ヒント:画角とはなにかを調べよう
994デフォルトの名無しさん:2007/06/21(木) 01:01:44
>>993
できた
ありがとよブタw
995デフォルトの名無しさん:2007/06/21(木) 01:05:18
>>994
お前ができるわけないだろw
996981:2007/06/21(木) 02:17:34
自己解決しました
997デフォルトの名無しさん
低レベルども^^