【C++】 DirectX初心者質問スレ Part17 【C】at TECH
【C++】 DirectX初心者質問スレ Part17 【C】 - 暇つぶし2ch112:デフォルトの名無しさん
08/04/21 05:19:46
質問です。
ビルボードを使って描画しようとしているのですが、
テクスチャを指定するためにLockメソッドでロックし、
頂点座標を指定しようとしたところ、Lockメソッドの実行時に
「 0x00413a9d でハンドルされていない例外が発生しました :
 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。 。」
と表示されてしまいます。何が問題になっているのかさっぱり分からないのですが
分かる方はいらっしゃいますでしょうか。


113:デフォルトの名無しさん
08/04/21 05:20:10
書いてから日本語がおかしいことに気づきました・・・すみません。

114:デフォルトの名無しさん
08/04/21 05:23:29
”場所” 0x00000000を読み込み、っつーのは
NULL(0)になっているポインタからその指す内容を得ようとしたっつーことだ。
そのテクスチャのポインタか何かがNULLになってるんじゃね?


115:デフォルトの名無しさん
08/04/21 05:35:44
>>114
成る程ありがとうございます。
テクスチャの位置調整用の関数から、テクスチャ位置情報を受け取っているので、
恐らくその位置調整用関数が上手くいってないのだと思います。
こんな時間なので即レスが来るとは思いませんでした。
ありがとうございます。

116:デフォルトの名無しさん
08/04/21 06:57:37
質問したくせにレスが来るとは、だと?ふざけてんのかてめえ

117:デフォルトの名無しさん
08/04/21 07:25:10
>>49とか>>51とか>>54とか>>99よりはマシだよw
多分悪意は無いさ。

118:デフォルトの名無しさん
08/04/21 07:58:49
普通だろw
こんな時間にもかかわらず答えてくれた好意にとても感謝している、って意味にしかみえねーよw

119:デフォルトの名無しさん
08/04/21 15:37:14
>>116の人気に嫉妬(^Q^)

120:デフォルトの名無しさん
08/04/21 16:38:56
>>117
54は俺なんだが、そんなにひどいレスだったか54は…?
「D3DXVec2Rotateに相当するD3DXの関数はありますか?」って聞けば誤解なかったんだろうという反省はしてるけど

121:デフォルトの名無しさん
08/04/21 18:46:19
>>120
>お気遣いどうもw
「w」って笑顔じゃなくて笑い、2chでは嘲笑うという意味のほうが強いかな。
>>117-118が使い所として良い。
極度な訳だけど「お気遣いどうもw 」→「そんなの分かってるわボケwww心配しなくても思ってるほどバカじゃねぇよwwww」
答えてくれた人に対して何言ってるのとか思うけどね。
皆が使ってるから意味も知らずに使っている(悪気がない)ということより、意図的に使っているとしか考えられない。
あと文法的にもマナーの面からもお礼の言葉は最初に書くのが基本なので、印象が余計に悪く('A`)

でもマナーが成ってないのにルールは守り、ラフで使いやすいのが2chのいいところだよな。

122:デフォルトの名無しさん
08/04/21 20:59:47
wの意味なんてどっかで定義されたわけじゃないし、使う人見る人で違うだろww
俺には54はそこまで嘲笑には見えんぞ

123:デフォルトの名無しさん
08/04/21 21:22:53
「俺には」と言うのが不味いんだよな
携帯電話で使い始めたような若い人にとって何とも無いことでも
比較的年齢が高めなこの板ではあまりいい印象がない

少なくともこの板では嘲笑うレスに対して使われるのがほとんどで
質問者もそうだけど回答者も滅多に使わない
文章が乱暴だけど他の板に比べれば紳士的な感じかな

124:デフォルトの名無しさん
08/04/21 21:35:33
そうかすまん。板の空気を読もうという話ね


まぁ、俺の見る限りこの板には本当の紳士は1割にも満たないわけだが・・・

125:デフォルトの名無しさん
08/04/21 21:48:14
53=55=117です。
議論するつもりではなかったんだけど、自分的にはちょっと
カチンときたので例に挙げましたw(ちなみに99は解決したかどうか書いてくれなかったから。
後から、54も99も例に挙げたのはマズかったかなと思いましたが。)
相手の機嫌を一切損ねずに質問・回答するのは不可能に近いとは
自分も思うところだけど、
自分は2chに限らずとも、他人の親切に対して笑いながら「お気遣いどうもw」
みたいな反応が出来る人間はどうかと思うので。
(付け加えるなら、D3DXVec2Rotate()と同機能の関数があるかどうかを、
D3DXVec2Rotateという名前の関数が無いとわかっているのに
ここで訊こうとするのはレアケースどころかナンセンスだとすら思う。個人的には。
>まぁ、俺の見る限りこの板には本当の紳士は1割にも満たないわけだが・・・
別にあまり攻撃したくはないのだが、紳士にしか回答をもらいたくないのであれば
ここで訊くべきかどうかくらいの判断は自分で下すべきだ。

126:デフォルトの名無しさん
08/04/21 21:51:20
別に俺は紳士からじゃ無くてもオーケーよ~
まぁ、どこにでもいろんな人がいるということだね。どっちの考え方もよく分かるよ
受け入れられるかどうかはその人しだいだけどな

127:125
08/04/21 21:58:16
自分自身、懐疑的に見すぎていたきらいがあるので悪かったなと思ってまつ。
お騒がせしました。

128:デフォルトの名無しさん
08/04/21 22:44:22
おまえらどんだけピュアなんだよ
2chじゃなくてちゃんとした所で聞いたほうがいいぞ

129:デフォルトの名無しさん
08/04/21 22:50:40
態度が悪ければ同等の態度で返されるってだけだろ?
自業自得

130:デフォルトの名無しさん
08/04/21 23:35:33
>>112
ちょっと周辺のコード晒してみぃ

っつかなんでこうやってできない奴に限って
動いてるソースのコピーからはじめないのか・・・

131:デフォルトの名無しさん
08/04/21 23:36:54
あ、更新忘れてたw
>>130は解決してたら無視してくれ

132:112
08/04/22 01:17:52
未だに悪戦苦闘中でしたので、コード晒してみます。

HRESULT SetFVFTexturePosition(
LPDIRECT3DVERTEXBUFFER9 aFVFBuffer , DWORD aType , DWORD aChar )
{

theCUSTOMVERTEX* tmpVertex; //頂点バッファをロック
theTexPositionRECT aTexRECT; //テクスチャの座標を受け取ります

SetCellTextureRECT(aChar , &aTexRECT);

//頂点バッファをロック
if(FAILED(aFVFBuffer->Lock( 0 , 0 , (void**)&tmpVertex , 0 ))){return(E_FAIL);}

//頂点は4つ、頂点座標、頂点職、テクスチャ座標を設定する
//D3DPT_TRIANGLESTRIPで描画するので頂点の番号と座標の対応に注意すること
tmpVertex[0].tu = aTexRECT.u0 ; tmpVertex[0].tv = aTexRECT.v0 ;
tmpVertex[1].tu = aTexRECT.u1 ; tmpVertex[0].tv = aTexRECT.v0 ;
tmpVertex[2].tu = aTexRECT.u0 ; tmpVertex[0].tv = aTexRECT.v1 ;
tmpVertex[3].tu = aTexRECT.u1 ; tmpVertex[0].tv = aTexRECT.v1 ;

//書き込みが完了。頂点バッファのロック解除
aFVFBuffer->Unlock();

return(S_OK);
}


133:デフォルトの名無しさん
08/04/22 01:18:48
//セル用のテクスチャー
VOID SetCellTextureRECT(DWORD aChar , theTexPositionRECT *aRECT ){

const float kCellSize = 1.0 / 8.0f ;

//0xffの場合はビルボード全体にテクスチャを描画
if(aChar == 0xff){aRECT->u0 = 0.0f; aRECT->u1 = 1.0f; aRECT->v0 = 0.0f; aRECT->v1 = 1.0;}
else{
//あふれを防止
aChar &= 0x07;

aRECT->u0 = 0.0f ; aRECT->u1 = 1.0f;
aRECT->v0 = kCellSize * aChar ;
aRECT->v1 = aRECT->v0 + kCellSize ;
if(aRECT->v1 > 1.0f){aRECT->v1 = 1.0f;}
}
}

134:デフォルトの名無しさん
08/04/22 05:52:48
ほんとにLockメソッドで落ちてるのか疑問だけど
とりあえずtmpVertex[0].tvが全部0指定してるのは直した?
(uは0~3なのにvは0だけになってる

135:デフォルトの名無しさん
08/04/22 08:51:09
Lock()実行時に落ちてるならaFVFBufferがNULLであるとしか考えられないな

136:デフォルトの名無しさん
08/04/22 15:20:52
HLSLでのデバッグ環境ってありますか?

137:99
08/04/22 19:03:25
プロバ全体がアク禁くらって書き込めませんでした。

結局、パラメータが渡ってません。
複数シェーダを書いて、まとめて(20個ぐらい)ロードしているんですが
SetFloatArray使ってないシェーダは、
ちゃんと幅、高さが渡ってるのに
SetFloatArray使ってるのは失敗するです><

>>102
GetParameterByNameは、ちゃんと実態がいます。
ハンドルなしで、直接指定もやってみました。
hrも成功しているはず(S_OK比較しています)です。



138:99
08/04/22 21:19:38
シェーダー側に
if( param == 490 ){ // 渡した数値比較
///
}
と書いたら、///の部分がちゃんと動きました。
数値は、渡っているみたいです。
しかし、直にparam=490と書いた時と同じパラメータ渡した時との動きが違うのです。
そういうのって何かありますか?
もうわけわからんちん

139:デフォルトの名無しさん
08/04/22 21:20:46
定数の数はいくつある?
もしかするとそのWIDTHとHEIGHTをfloat4(のxとy)にしたら直るかも?

140:デフォルトの名無しさん
08/04/22 21:21:16
単純にシェーダの部分がバグってるんだろう
『たまたま』動いただけじゃね?

141:デフォルトの名無しさん
08/04/22 21:23:38
ん、渡せてないわけではないのか。
定数多すぎてどれか溢れてるくらいしか思いつかん

142:デフォルトの名無しさん
08/04/22 21:30:43
てか
GetParameterByNameはあくまで
シェーダーの定数レジスタから値をひろってくるだけだぞ?
グローバル変数に値をいれたいなら
hr = m_pEffect->SetFloat( "MAP_WIDTH", 490.0f );
hr = m_pEffect->SetFloat( "MAP_HEIGHT", 472.0f );
だろ


143:デフォルトの名無しさん
08/04/22 21:33:59
こんな質問で即レスしてくれたお。
このスレの人はいい人がおおいですね><。
ありがとうございます。

ピクセルシェーダーはこんなかんじです
// MAP_WIDTH = 490.0f;
// MAP_HEIGHT = 472.0f;

Color = ( tex2D( SrcSamp, In.Tex )
+ tex2D( SrcSamp, In.Tex + float2( -1.0f / MAP_WIDTH, 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +1.0f / MAP_WIDTH, 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( -3.0f / MAP_WIDTH, 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +3.0f / MAP_WIDTH, 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( -5.0f / MAP_WIDTH, 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +5.0f / MAP_WIDTH, 0 ) )
)/7.0f;
パラメータは、ちゃんと同じ値が渡ってるのに
・シェーダーに直書き(上のコメントを外す)
・プログラムからパラメータ渡し
とでぼかし具合が違うのです。
直書きすると定数として扱われてコンパイルするのかな?
書き方これでいいんでしょうか?

144:デフォルトの名無しさん
08/04/22 21:36:25
いや合ってるよ、GetParameterByNameが返すのは
値じゃなくてそのパラメータのハンドル。
もちろん、毎回GetParameterByNameしてハンドル取るくらいなら
直接名前で指定した方が簡単だろうけども。

145:デフォルトの名無しさん
08/04/22 21:42:08
シェーダーの計算に括弧入れたら、挙動が変わったお><。
こんな感じ
+ tex2D( SrcSamp, In.Tex + float2( -(1.0f / MAP_WIDTH), 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +(1.0f / MAP_WIDTH), 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( -(3.0f / MAP_WIDTH), 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +(3.0f / MAP_WIDTH), 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( -(5.0f / MAP_WIDTH), 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +(5.0f / MAP_WIDTH), 0 ) )
スレ汚し、ほんますんません。

146:デフォルトの名無しさん
08/04/23 01:04:40
D3DXDisassembleEffectで逆アセしてみれば?


147:デフォルトの名無しさん
08/04/23 15:10:05
アセンブラから逃げ出すためにHLSL使うことにしたのに
結局アセンブラやらないとだめなのか><。

148:99
08/04/23 15:38:59
逆アセしてみました。
かなり最適化して感動しました。
読んでなかったあとレジスタの仕組みとかもわかって逆アセしてよかったです。

でも、なんか怪しいので
D3DXCreateEffectで
D3DXSHADER_SKIPOPTIMIZATION //最適化しない
を渡してやってみたところ、うまく行きました><。

ああああああああああ


149:デフォルトの名無しさん
08/04/23 15:51:20
ちなみにSDKは、(April 2007)です

150:99
08/04/23 16:43:54
(March 2008)入れてみた
最適化しても、普通にうごいたお。

最新版、グローバル変数に数値入れられなくなってていい感じだお。

>>103,104,108,109,110,111,139,140,141,142,144,146
ありがとうございました

ぼくの7日間シェーダ戦争
~完~

151:デフォルトの名無しさん
08/04/23 21:53:31
おめ

152:デフォルトの名無しさん
08/04/23 22:42:19
FPSを計測してみたら、どんなにがんばっても
秒間60プレームしか描画できてないということがわかった
そんなにたくさんのモデルを描画してるわけじゃないのになと思いながら
モデルの描画量とか画面のサイズとかを減らしていったのに
それでも秒間65フレームくらいしかでない
いくらなんでもプリミティブ1つ描画するのに
秒間60回しか更新できないなんてありえないと思うんだが、
ひょっとしてDirectXってFPSを固定する機能があったりとか
それがデフォルトで有効になってるとかそういうことはありますか?

153:デフォルトの名無しさん
08/04/23 22:49:15
param.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
param.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;


154:デフォルトの名無しさん
08/04/23 23:13:37
>>153
ウインドウモードで作ってるので
下の行を追加するだけでOKですか?

凄まじい勢いで描画されるようになりました
ありがとうございました

155:デフォルトの名無しさん
08/04/24 00:13:24
DirectMusicがコンポーネントが削除されましたが、どれを変わりに使えばいいんですかね?



156:デフォルトの名無しさん
08/04/24 13:09:54
>>155さん
私の場合はDirectMusicをLIB化して使ってますね。
それに加えてwavやmidiやmp3の場合はMCIでも同じことはできます。

本当はMCIで読み込んでDirectSoundに渡すのがいいらしいのですが、
そっちは難しいぽかったのでDirectMusicを主に使っています。
例えば以下のプログラムの音楽再生はDirectX9の11月版で作っていますが
ですが音楽再生はDirectMusicを使っています。
URLリンク(gamdev.org)

LIB化の仕方についてはこのページがとても分かりやすかったのでどうぞ
(私もここのやり方でやってます
URLリンク(www.geocities.jp)

157:デフォルトの名無しさん
08/04/24 19:28:05
>>156
ご丁寧にありがとうございます!。
とりあえずそのサイトを見てみたいとおもいます。

158:デフォルトの名無しさん
08/04/24 20:19:21
ゲームでmp3を使う時って、何使って再生したほうがいいの?
ある程度売れたらパテントとかってあるんだよね?

159:155
08/04/24 20:58:12
>>156
関係ないですが、DXライブラリ3Dってここまでできるんですね。


160:デフォルトの名無しさん
08/04/24 21:01:59
プレイヤーが所有しているMP3を再生したいのであれば使用料を支払えばいい
BGMやSEとしてゲーム本体に組み込むのであればmp3なんか使わない

161:デフォルトの名無しさん
08/04/24 21:50:52
orbis(だっけ?)使うの?そのコードクレ

162:デフォルトの名無しさん
08/04/24 22:20:36
トランスフォーム済み頂点とDrawPrimitiveUPを使って計器を描画しています。
2枚以上の計器を重ね、テクスチャに抜き色を設定したりアルファ値を下げたりした状態にしてZ値や描画順を変えると
手前の計器の抜けている部分から奥の計器が見えるべきところが透明のままで背景が見えます。
描画するときはZ値を触らずに(全て固定値)、自分で描画順を変えないといけないのでしょうか。

163:デフォルトの名無しさん
08/04/24 22:34:24
directXってMP3再生できないの?

164:デフォルトの名無しさん
08/04/24 23:05:18
DirectShowを使えばできる
DirectSoundでやるなら、WAVEにデコードする必要がある

165:デフォルトの名無しさん
08/04/24 23:15:23
mciデコードが特許的にダメとか、DirectShowもグレーゾーンとか聞くけど
ここにいる人は何使ってるの?

166:デフォルトの名無しさん
08/04/24 23:29:04
oggでいいんじゃね?

167:デフォルトの名無しさん
08/04/24 23:30:07
DirectSound以外をつかわないとだめなのか~
DirectAudioPlayってのなかったっけ?

168:デフォルトの名無しさん
08/04/25 00:00:18
DirectAudioの事?
DirectMusicとDirectSoundが統合された時の名称だけども・・・

169:デフォルトの名無しさん
08/04/25 00:33:07
日本ならogg
アメリカならwmaとかが主流なんじゃないかと

170:デフォルトの名無しさん
08/04/25 00:53:05
再生に必要な物ってDirectShowFilterとか言うやつ?
なんか調べんのめんどいな・・・そもそもどうやってoggファイルつくんだよ・・・

171:デフォルトの名無しさん
08/04/25 01:14:44
>>170
wavをoggに変換するソフトがどっかにあった希ガス
それかlibになかったっけ?

172:デフォルトの名無しさん
08/04/25 01:16:28
>>170
URLリンク(www.geocities.jp)

検索一発目でヒィーーーーーーーーーット!
お前、検索すらしないで書き込んだなw

173:デフォルトの名無しさん
08/04/25 01:16:52
URLリンク(www.vorbis.com)
URLリンク(www.xiph.org)
ほい、公式

174:デフォルトの名無しさん
08/04/25 01:16:54
3回目はチンコ落とされるぞ

175:デフォルトの名無しさん
08/04/25 01:18:05
>>173
脳みそで英→萌→和変換するのがストレス

176:デフォルトの名無しさん
08/04/25 01:18:22
俺OGGとFLACを常用してるけど、これらに対応してる
歩き男って無いんだよな。ややマイナーなのが難点だ。

177:112
08/04/25 03:34:31
先日はいろいろと誤解を招くような言い回しをしてしまったようで、
すみませんでした。
皆様のおかげでなんとか描画できるようになったのですが、
何故かテクスチャの色が表示されずに、真っ黒な像が描画されてしまいます。
問題はどこにあると思いますでしょうか・・・ご教授願います。
レンダリングステートは以下のようにしています。
theDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE ); // αブレンディング有効
theDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE ); // αテストを有効に
theDevice->SetRenderState( D3DRS_ALPHAREF, 0x00 ); // αチャネルの値が0x00なら
theDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_NOTEQUAL ); // 書き込みをしない
theDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );// Zバッファへの書き込み停止
theDevice->SetRenderState( D3DRS_AMBIENT, 0xFFFFFFFF );// 環境光
theDevice->SetRenderState( D3DRS_SRCBLEND,D3DBLEND_SRCALPHA ); // ソース側の色の比率
theDevice->SetRenderState( D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA ); // 書き込み側の色の比率
theDevice->LightEnable( 0, FALSE ); // ライトを無効に
theDevice->SetTextureStageState( 0 , D3DTSS_ALPHAARG1, D3DTA_TEXTURE ); // αチャネルの色を使用theDevice->SetTextureStageState( 0 , D3DTSS_ALPHAOP,D3DTOP_SELECTARG1 ); // テクスチャの色を使用


178:デフォルトの名無しさん
08/04/25 05:57:32
ご教授ではなくご教示だドアホ

179:デフォルトの名無しさん
08/04/25 07:51:31
>>177
D3DTSS_COLOROP, D3DTSS_COLORARG1 あたりの設定が
見当たらないね 設定しておいたほうがいいと思うんだけど

180:デフォルトの名無しさん
08/04/25 09:46:35
>>

181:デフォルトの名無しさん
08/04/25 09:52:20
早速の回答ありがとうございます。
D3DTSS_COLOROPは乗算
D3DTSS_COLORARG1はテクスチャ色使用にしてあります。

182:デフォルトの名無しさん
08/04/25 10:05:29
今のレスをかきおわってから、あれ?と思い
D3DTSS_COLOPOPの値をD3DTOP_SELECTARGに変更したら出来ました
自分でも変なミスをしたと思いました。
回答してくださった方には、お手数をおかけしてすみませんでした

183:デフォルトの名無しさん
08/04/25 14:00:30
>>172-173
㌧クス
今手元のwav変換して聞いてみたけどイイネ!
プログラム的にはダイレクトショウフィルター入れてればDirectShowで直接再生できるって感じ?
そうだとユーザーの手間が増えちゃうからやっぱりソース組み込むのかなぁ・・・

184:デフォルトの名無しさん
08/04/25 20:53:24
東方wavだしwavでいいじゃん

185:デフォルトの名無しさん
08/04/25 21:25:09
東方は尊敬するが基準にはできないな。

186:デフォルトの名無しさん
08/04/25 21:32:43
>>183
そう
WindowsMediaPlayerみたいなのいれれば大抵のコーデック入るから
理論的にはなんでも再生可能

187:デフォルトの名無しさん
08/04/25 21:37:15
>>186
今はインストールさせるのとさせないのどっちが主流っぽいの?
たいした手間ではないんだけど、ゲームも大したもんじゃないから気が引けるぜ

188:デフォルトの名無しさん
08/04/25 22:13:23
OGGなら、デコードLIBをリンクしてしまえばいいのさ。
まあそれするとGPLが適用されると思うけど。
ToHeart2が引っかかってたような。
ん?あれOGGだったっけか?


189:デフォルトの名無しさん
08/04/25 23:16:17
OGGはフリーでMP3じゃなかったか?

190:デフォルトの名無しさん
08/04/25 23:23:22
>>187
XPでもデフォでメディアプレイヤー入ってるから、
そんなマイナーでなければ既に入ってる
心配なら、配布時にメディアプレイヤーを含めればいい

>>188
あれは、oggじゃなてくムービーのコーデック

まあそういう事情があるから、ライセンスはきっちりしといたほうが後で泣きをみない


191:デフォルトの名無しさん
08/04/25 23:29:25
>>190
あぁ、まぁぐだぐだ書いたけど、
俺もお勧めはogg
ホムペを参考にしつつliboggとlibvorbisを使って組んだほうがいいぞい

192:デフォルトの名無しさん
08/04/26 00:49:58
PS2のかまいたちの夜でも採用された>ogg
普通、ライセンス考えるゲームはogg

193:デフォルトの名無しさん
08/04/26 01:14:38
今dshow.hが無かったのでなんかインストールして取ってきたら、
今度はstrsafe.hが無いと。
MSDN見たら新しいバージョンのPlatform SDKに入ってるとかあるんだけど
どこから取れますか?それともインクルードパスがおかしいのかな
普通どこに入ってる物なんだ?普段そこまで踏み込まないから全然分からん\(^o^)/

194:デフォルトの名無しさん
08/04/26 01:20:55
directShowは、
DirectXに行ったり
Media何とかに行ったり
PlatformSDKに行ったりと大変ね。

195:デフォルトの名無しさん
08/04/26 01:29:04
そんだけ動画ってものがユーザにとって身近になったって事だね

196:デフォルトの名無しさん
08/04/26 09:37:50
ライセンス考えたら同人でゲーム作って売るとき

音楽系はogg 動画画像系はなにがおすすめ?

197:デフォルトの名無しさん
08/04/26 09:43:08
wma wmvは大丈夫じゃね?

198:デフォルトの名無しさん
08/04/26 09:54:05
エロゲ業界は50%くらいがmpeg1
wmvは結構マイナーなのよん
ちなみにScroolDaysはwmv
ま、再生の負荷で考えるならmpeg1が安易
サイズは不利だけどね

199:デフォルトの名無しさん
08/04/26 10:03:19
>>196 こういうこと言う奴に限ってクソゲーしか作れないんだから
ライセンス考えなくても大丈夫。クソゲーは相手にされないから。

200:デフォルトの名無しさん
08/04/26 11:00:32
作れる、作れないとライセンスは関係がないぞ。誰にでも平等だ

201:デフォルトの名無しさん
08/04/26 12:38:33
なにが、誰にでも平等だ 、だよ。エロゲで抜いてるくせに
粋がるな馬鹿

202:デフォルトの名無しさん
08/04/26 13:05:40
以後ヌルーで。

203:デフォルトの名無しさん
08/04/26 13:53:48
Oggのライブラリみたいの落としたんだけどlibフォルダに.libが無くて代わりに
VisualStudioでコンパイルするためのバッチファイルが入ってたんだけど、
BCCでやるにはどうすりゃいいんだ?

204:デフォルトの名無しさん
08/04/26 14:18:22
バッチファイルの、RC、とか、CL とかのコンパイラ名をBCCのに書き換えればいいんじゃね?
あるいはBCC用のバッチφるが別のダディレクトリにあるとか。

205:デフォルトの名無しさん
08/04/26 14:19:00
VS2008stdに乗り換える

206:203
08/04/26 15:32:43
お前ら、俺に優しいなwエロゲの知識が生きて満足したか?w

207:デフォルトの名無しさん
08/04/26 15:46:25
>>206偽乙
VS2008Express入れてみたけど適当にコンパイルしてたら
変なファイル大量に作られるし、挙句の果てにdll吐きやがった(´;ω;`)
これだから高レベルなソフトはいやなんだ・・・

これってどうすればいいの?つうかVSでコンパイルできたとしてそのlibって
BCCじゃ使えないんだっけ?

208:デフォルトの名無しさん
08/04/26 15:53:53
彼女とセクロスもするが
エロゲでオナニーもする。
別もんだ。


209:デフォルトの名無しさん
08/04/26 15:56:35
ここにもアンチエロゲのキチガイがいるのか。
大日本帝国の主力産業たる萌えを否定するのは売国奴だ。
中共や南朝鮮の間諜だ。殺せっ殺せっ殺せっっっ

210:203
08/04/26 15:57:50
>>207 いい加減スレ違いに気付け。ここはお前の日記帳じゃねぇんだ。
そういう下らないことは自分で対処しろ。

211:デフォルトの名無しさん
08/04/26 16:10:00
だめかな?役に立つ人もいると思ったが、
まあ、いいや。後は何とかしますノシ

212:デフォルトの名無しさん
08/04/26 18:44:49
>>211
キチガイはシカトしとけ

213:デフォルトの名無しさん
08/04/26 19:14:05
質問です。
SDKのスキンメッシュのサンプルをクラス化して
自分の環境に持ってきたところ、テクスチャの一部がチリチリするようになりました。
SetRenderStateはサンプルと同じに設定しています。
何か原因に見当つく人がいたら、ご教示ください。
よろしくお願いします。

URLリンク(f11.aaa.livedoor.jp)


214:デフォルトの名無しさん
08/04/26 19:32:18
>SDKのスキンメッシュのサンプルをクラス化
原因はここに違いない

215:デフォルトの名無しさん
08/04/26 19:43:16
個人で作る販売目的じゃない適当ゲーなんて
ライセンスのことなんて考えなくても大丈夫だろ?
そう思ってた時期が俺にもありました

216:デフォルトの名無しさん
08/04/26 19:46:13
公開しなきゃ、それこそほぼ無法地帯だけどな

217:デフォルトの名無しさん
08/04/26 20:11:06
せめてGPLかどうかだけでも見ておいたほうがいいぞ

218:デフォルトの名無しさん
08/04/26 22:38:03
>>207
libは結構面倒だ
デバッグ版lib
リリース版lib
ちょっとでもコンパイル設定がかわるともう受け付けない
(みんななぜか気にしてない?うーんあわせる自信あるのかな?)
好んで使うアフォがいるがなんでか?ってのは俺も知らない

219:デフォルトの名無しさん
08/04/26 22:58:14
Xファイルなどのメッシュに対してではなくて
ポリゴンに対してバウンディングボックスを作ることってできますか?


220:デフォルトの名無しさん
08/04/26 23:12:54
>>218
横槍だがlibを毎回プロジェクトフォルダに入れないとパス通しても認識されないんだが
どうすりゃいいんだ?

221:デフォルトの名無しさん
08/04/26 23:26:54
通したのがinclude pathだったってオチ?

222:デフォルトの名無しさん
08/04/26 23:56:09
完全にライブラリのリンクです。

223:デフォルトの名無しさん
08/04/26 23:58:09
きっとそこには”無い”んだよ…

224:デフォルトの名無しさん
08/04/27 01:24:04
D3DFMT_D16_LOCKABLEって
16bitの何が入っているんですか?
これがわからないと読み出せないんですが

225:デフォルトの名無しさん
08/04/27 01:55:19
今日のこのスレなんか空気がおかしくね

226:デフォルトの名無しさん
08/04/27 03:20:49
oggだのライセンスだの言ってるあたりからおかしいと思われ

227:デフォルトの名無しさん
08/04/27 03:22:15
まぁGWモードに入ったってことでしょうJK

228:デフォルトの名無しさん
08/04/27 05:13:46
ごーるでんうぃーく

229:デフォルトの名無しさん
08/04/27 13:53:57
ゴールデンウィークなんてこの5年間一回もないぞ。
働いたら負けって意味がよく分かったよ

230:デフォルトの名無しさん
08/04/27 13:54:25
質問なんだが、Xファイルのテクスチャにdds使うえばα値で透過されたりするんですかの

231:デフォルトの名無しさん
08/04/27 14:04:01
ddsじゃなくても透過できるでよ

232:230
08/04/27 14:53:06
詳しくお願いしまふ

233:デフォルトの名無しさん
08/04/27 15:07:52
Xファイルを作るときにD3DXCreateTextureFromFileEx関数を使って透過色を指定しておくだけでふ

234:デフォルトの名無しさん
08/04/27 15:26:02
Exとかあるなんてしらなだった
調べてない自分が悪いorz
とんくす!!

235:デフォルトの名無しさん
08/04/27 21:44:04
HLSLですが、以下のcase1とcase2で表示される結果が違います。
case2の方にノイズがのります。
以下の二つは何か違いがあるんでしょうか?
(HLSLは最適化なしでも同じ、設定は列優先)

// float4_t vPosition0
// float4x4_t mWorld
// float4x4_t mViewProj

// case 1
const float4_t vPosition1 = mul( vPosition0, mWorld);
o_vPosition = mul( vPosition1, mViewProj);

// case 2
const float4x4_t mWorldViewProj = mul( mWorld, mViewProj);
o_vPosition = mul( vPosition0, mWorldViewProj);



236:デフォルトの名無しさん
08/04/28 23:15:14
画面から1ピクセルの色情報を取得するGetPixelをDirectX
でやるにはどうすれば良いでしょうか?Lock Unlockで
サーフェイスから1ピクセル抜き出すのは勿体無いですから。


237:デフォルトの名無しさん
08/04/28 23:27:18
>>236
何がどう勿体無いのか知らんが、それが一番素直なやり方
サーフェースのフォーマットを調べたいとかいう違う動機があるなら別だが

238:デフォルトの名無しさん
08/04/28 23:32:01
>>237 読み込みだけなのでLock Unlock重いから使わない方法
あればいいなと思って質問しました。Lock Unlock使わなくても
大丈夫というレスを期待したのです。レスありがとうございます。
今日は寝ます。

239:デフォルトの名無しさん
08/04/28 23:38:06
>>238
誤解してるみたいだが、GetPixelも実装はLock/Unlockしてるの
それプラス余計なオーバーヘッドがかかるから、自前でやったほうが数倍速い
ちなみに、システムメモリ上のサーフェースは、その手のLock/Unlockによるオーバーヘッドは皆無
まあ、VRAM上のことを言ってるんだろうけど、VRAM上ではイメージがリニアに配置されてる保障はないので
その手のオーバーヘッドは、どういうやり方をするにせよ、回避は不能


240:デフォルトの名無しさん
08/04/29 00:00:00
ピクセルシェーダーからフィードバックすればできるんじゃね?

241:デフォルトの名無しさん
08/04/29 00:38:00
>>239
GetPixelってフォーマットやら範囲やらチェックしてる予感
あの遅さはそういう遅さだ
俺の直感がそうだと言っている

でもフォーマット気にしないでコピーする方法ってどうやんだっけ?
BitBltでいいんだっけ?

242:デフォルトの名無しさん
08/04/29 21:55:54
ライティングについて質問です。

D3DLIGHT9 light;
memset(&light,0,sizeof(light));
light.Type = D3DLIGHT_DIRECTIONAL;
light.Diffuse.r = 0.9f; light.Diffuse.g = 0.9f; light.Diffuse.b = 0.9f;
light.Specular.r = 0.2f; light.Specular.g = 0.2f; light.Specular.b = 0.2f;
light.Ambient.r = 0.5f; light.Ambient.g = 0.5f; light.Ambient.b = 0.5f;
light.Direction = D3DXVECTOR3(0.0f, -0.5f, -0.2f);
device->SetLight(0,&light);
device->LightEnable(0,TRUE);
//*
device->SetRenderState(D3DRS_LIGHTING,TRUE); //ライティング有効
/*/
device->SetRenderState(D3DRS_LIGHTING,FALSE); //ライティング無効
//*/

上記のように設定すると何も表示されなくなってしまいます。ライトを無効にすれば表示されるので
メッシュの基本的的なところは間違ってないみたいなのですが、何が間違ってるのでしょうか?


243:デフォルトの名無しさん
08/04/29 22:13:12
自己解決。マテリアル設定忘れらしいです。だからマテリアルだけ要素数が返されるんですね・・・

244:デフォルトの名無しさん
08/04/30 00:23:12
これからDirectXの勉強始めようと思うのですが、DirectX9の書籍は買わないほうが良いのでしょうか?
DirectX10からいろいろ変わったと聞いたもので。
あと、お勧めの書籍があったら教えてほしいです。

245:デフォルトの名無しさん
08/04/30 00:30:02
vista持ってないとdirectx10ができません

246:デフォルトの名無しさん
08/04/30 00:35:41
DirectXなんて勉強目的なら8以降だったらなんでもいいのよ
要するに、概念が大事

247:デフォルトの名無しさん
08/04/30 03:07:46
DX10のほうがデバッグしやすいと思うぞ

248:デフォルトの名無しさん
08/04/30 03:09:53
>>244
むしろ情報がクソほど出揃ってる9以前のほうがいい
10なんかOS縛りあるわ情報少ないわでいいことまったくなし
8あたりで縛ってつくればDirectX8はXP以降なら間違いなく入ってるし
配布もラクだしとにかくいいことだらけだ
そんな初級質問をするおまいはこれからもたくさん質問するだろうから
それに答えられる使用者が多い9以前を使うべき

249:デフォルトの名無しさん
08/04/30 07:57:25
今ならDX9だよな。
もうDX8はない。
かといってDX10は実行環境が限られる上に
仕様もまだ安定していない。

250:デフォルトの名無しさん
08/04/30 12:19:13
ありがとうございます。9の本買ってきます。

251:デフォルトの名無しさん
08/04/30 16:58:33
9できれば
10もすんなりいけるんじゃね。

252:デフォルトの名無しさん
08/04/30 18:36:23
シェーダーの使い方知らんとなんもできんよ

253:デフォルトの名無しさん
08/04/30 19:54:00
俺も10に移行してえ
でもVistaはイヤッ!!


254:デフォルトの名無しさん
08/04/30 20:32:14
俺はやりたいことが全部9で出来ちゃったから10を触る気が起きない

255:デフォルトの名無しさん
08/04/30 22:07:00
そもそも10で何ができるようになったのか知らない

256:デフォルトの名無しさん
08/04/30 22:09:33
Vista専用なんて論外だ

257:デフォルトの名無しさん
08/04/30 23:02:11
DirectX10はVistaと共に黒歴史になる

258:デフォルトの名無しさん
08/04/30 23:09:33
10は別に黒歴史にはならないだろ

259:デフォルトの名無しさん
08/04/30 23:50:06
8は初心者にはヘルプ手に入れたり、サンプル動かしたりするところで
敷居が高いからやめておいたほうがいいと思う
ある程度たどり方を知ってないと見つからないし、わからないと思う

260:デフォルトの名無しさん
08/04/30 23:58:24
すみません。
ピクセルシェーダが使えない環境で
クライアント座標のある部分を描写しないようにクリッピングしたいのですが、
どのようにすればいいでしょうか。

C++でdirectx9を使ってます。

261:デフォルトの名無しさん
08/05/01 01:56:50
カメラ2つでvfcでキャプチャをしたいのですが、capDriverConnect(hWnd0,0);capDriverConnect(hWnd1,1);で
キャプチャ使用とすると、カメラを選択するメニューが登場しcapDriverConnect(hWnd0,0);側だけ選んだ1つだけ
表示されてしまいます。
解決の方法はご存じないですか?

262:デフォルトの名無しさん
08/05/01 06:27:11
今日も今日とて、眠らぬまま朝を迎えた・・・・・・・。


263:デフォルトの名無しさん
08/05/01 07:54:59
>>262
バラモス撃破乙

264:デフォルトの名無しさん
08/05/01 16:41:47
>>260
ステンシルバッファ でぐぐるよろし

265:デフォルトの名無しさん
08/05/01 21:01:47
>>264
さんくすです。

266:デフォルトの名無しさん
08/05/02 11:57:01
すみません。
任意の軸を中心に拡大縮小が出来る関数ってありませんか?
回転はみつけたんですが、拡大縮小は見つからなくて・・・。

267:デフォルトの名無しさん
08/05/02 12:37:52
>>266
あるっちゃあるが、ちゃんと行列勉強したほうがいいと思うぞ
細かい調整きくようになるし

268:デフォルトの名無しさん
08/05/02 17:20:58
任意の軸への移動行列×拡大縮小行列でいいんじゃねーの?

269:デフォルトの名無しさん
08/05/02 18:45:06
D3DXMatrixTransformation2D

つーか、何を回転させようとしているのだろうか

270:デフォルトの名無しさん
08/05/02 18:50:51
質問というかアンケート
ここのスレのお兄さんたちはD3DX関数群は肯定派?否定派?
速度でないし、細かい微調整がきかないから、そんなもん使うなって感じ?
それとも、車輪の再発明してもしょうがない、あるんだから使えばいいじゃないって感じ?
なんとなく気になったんで

271:デフォルトの名無しさん
08/05/02 19:08:19
俺はD3D、OpenGL、その他とコードを共有してるんでしかたなく自前で作ってる
でも基本的にあるなら使えばいいじゃない派

272:デフォルトの名無しさん
08/05/02 19:15:43
頭にD3DXをつけずに名前をもっと短くしてくれたら
もっと評価してやらないこともない

273:デフォルトの名無しさん
08/05/02 19:21:54
そんな事より配布の問題をどうにかしてくれ

274:デフォルトの名無しさん
08/05/02 19:23:33
我慢しろよ(`_ゝ´)

275:デフォルトの名無しさん
08/05/02 19:25:02
>>273
わかる
DLLバージョン多すぎ

276:デフォルトの名無しさん
08/05/02 19:28:58
だから2004octを使えとあれほど・・・

277:デフォルトの名無しさん
08/05/02 21:30:26
僕ハンゲームというゲームしたいんですけど
それにはこのdirectxが必要なんですが、その
安全性が非常に心配です。
調べてみると、「DirectXの脆弱性」などとよく書いてあります。

ダウンロードするとしたら、最新の10.1がいいのでしょうか?
それと、当たったらどんな症状が出るのでしょうか?


278:デフォルトの名無しさん
08/05/02 21:32:14
ここはプログラミングの板なのでよそで聞いてください

279:デフォルトの名無しさん
08/05/02 21:35:20
おまえはなにを言ってるんだ



……と思ったが、マジレスするなら、今までWindows使ってて、脆弱性のせいでなんか不都合が起こったことあるか?
そもそも、ココに書き込みしてる時点で脆弱性を突かれて君のパソコンまずいことになってるよ。
他の人(もちろん俺も)は、事前に対策してるけど。君は丸腰なんじゃないか?

280:デフォルトの名無しさん
08/05/02 21:35:39
なんかリアリティがあってワロタ
本当に何もわからんやつは、確かにプログラム→DirectX初心者でこういうところに質問するのかw

281:デフォルトの名無しさん
08/05/02 21:43:17
ハンゲ自体が君の人生にとって有害だよ

282:デフォルトの名無しさん
08/05/02 21:43:34
10.1 はまだ Vista でしか使えなかった気が。
というか、Vista だと標準装備じゃなかったっけ?
入ってないってことは XP なんだろうけど、
それなら 9.0c を入れるといいよ。

283:デフォルトの名無しさん
08/05/02 21:54:49
DirectXの穴はwindows updateで修正されてるし。

284:デフォルトの名無しさん
08/05/03 05:51:55
>>270
D3DX関数群の集まりって昔中身見れたんだけど
なんか難しそうなアセンブラで書いてあって速そう(?)だったよw

285:デフォルトの名無しさん
08/05/03 10:12:11
最近発覚したtga読み込みの脆弱性は
比較的最近のd3dxにしないと駄目だけどね。

286:デフォルトの名無しさん
08/05/04 00:25:15
質問です。

(わかりやすくするために、カメラの座標は0,0,0とします。)
カメラを、とある地点Aと、とある地点Bの中間の方向を向かせるために、以下の方法をやっています。

中間というのは、3次元ベクトルAとBの平均(A + B) / 2 ということではなく、
角度的な中間です。
(説明のために2Dベクトルで例えます)現在のカメラの方向からAが+20度の方向。Bが+80度の方向にあるのならば、カメラは+50度の方向を向かせたいのです。

URLリンク(w3e.kanazawa-it.ac.jp)
この法則を利用し、Aまでの距離とBまでの距離を利用。
lenA = D3DXVec3Length(pVecA);
lenB = D3DXVec3Length(pVecB);
D3DXVec3Lerp(pOut, pVecA, pVecB, lenA / (lenA + lenB));
としてpOutの方向を向かせれば、丁度中間の方向を向けそうです。
まず、ここまであっているでしょうか?

あっていると仮定して、次のステップ、(例えば)AとBの角度的に3:7の方向を向きたいという場合はどうすればいいでしょうか?

287:デフォルトの名無しさん
08/05/04 01:01:25
角度で応用きかすなら極座標を使った方がいいような気がする

288:デフォルトの名無しさん
08/05/04 12:34:56
図の角度**のところをそれぞれθ、φとおいて、二通りの求め方で面積S1、S2求めて比較

289:デフォルトの名無しさん
08/05/04 15:42:44
質問よろしいでしょうか
D3DXLoadMeshHierarchyFromXを使っているのですが、Debugビルドの場合のみ
14MBほどの大きさのXファイルの読み込み時に

ハンドルされていない例外 は test.exe にあります: 0xC0000005: Access Violation。

と出てしまいます。
10回に1回くらい出ないこともあるのですが・・・
__sbh_free_block の中でエラーになっているようで、これはメモリー空間が破壊されている時に出るとのこと
なのでプログラムを最小構成にしてやってみましたが、それでもダメでした。

Releaseビルドでは問題は出ません。
また、アニメーションの数を減らして7MBくらいにするとDebugビルドでも問題は出ませんでした。
Xファイルはテキスト版でも、バイナリ版でも同様の結果でした。

何か心当たりある方はいらっしゃいますでしょうか?
環境はVC6.0+DirectX 9.0 SDK Update - (October 2004) です。

290:デフォルトの名無しさん
08/05/04 18:24:27
自己解決しました。
デバッグモード時、d3dx9.libではなくd3dx9d.libをリンクすることでうまくいきました。

291:デフォルトの名無しさん
08/05/04 19:04:18
質問です。
DirectXアプリケーションで、日本語入力(IME)をサポートしようと思っています。

やりたいことは、IMEの変換ウィンドウと候補一覧ウィンドウを表示するということだけなのですが、
DirectXのサンプル(CustomUI)では、独自のコントロールの実装や継承を自前で行うことで実現していました。

CDXUTControl
  ↑
CDXUTEditBox
  ↑
CDXUTIMEEditBox

特にCustomUIのような独自のコントロールを作成したいわけではないのですが、
あきらめてCustomUIと同じような実装を自前でしなければならないのでしょうか。
それとも変換ウィンドウと候補一覧ウィンドウを表示したいだけであれば、もっと楽な方法があるのでしょうか。


292:デフォルトの名無しさん
08/05/05 02:20:18
D3DFILL_WIREFRAME のワイヤーフレームの描画の太さを、太くする方法ってありませんか?

Zバッファへの書き込みをOFFにした状態で2ドット以上の幅でワイヤーフレームを描き、その後通常どおり描画。
とやることで、背景との輪郭線を綺麗に描けるのを期待しているのですが。

293:デフォルトの名無しさん
08/05/05 10:48:52
どんな画面だそれ

294:デフォルトの名無しさん
08/05/05 11:38:21
いい加減固定機能パイプライン使うの止めようぜ

295:デフォルトの名無しさん
08/05/05 11:57:59
>>293
理屈上は背景とキャラと間に線が入る感じになるかと。
ワイヤー時はZバッファへ書き込みしないようにしているので、ワイヤーフレームの後にキャラクタの描画で輪郭線以外は塗りつぶされますから。

>>294
プログラマブルシェーダで同等のことできますか?
モデルのポリゴン裏返して黒くし、法線方向に膨らませる…。っていうやつも悪くはなかったのですが、何分重くて。


スキンメッシュなので、自前でID3DXLineで引くわけにもいかないんですよ。
いかないですよね…?
変形後の頂点位置、わからないですし。



296:デフォルトの名無しさん
08/05/05 16:24:37
>>295
それが速く描画できる理由になるところが俺にはわからん

297:デフォルトの名無しさん
08/05/05 21:15:04
ワイヤーフレームモードでやりゃわかるが、ピクセルシェーダが呼び出される回数が圧倒的に少ないぞ
だが俺はあの線を太くする方法は知らんな
あれば結構魅力的な輪郭線描画法かもしれん

298:デフォルトの名無しさん
08/05/05 21:21:27
質問
連邦VSジオンみたいなゲームでも作ろうかと3Dを本格的に始めたのですが、スペックで相談です。

あのゲームは2VS2なのでキャラが4体でてきます。
1キャラ6000三角ポリゴンくらいで作って4体を画面内に表示したところ、FPS60が維持できませんでした。

私のPCのグラボが、GF6600GTとかなり古めだというのはあるのですが、こんなもんなのでしょうか?

299:デフォルトの名無しさん
08/05/05 21:35:59
実際にやってみてそうなったのなら、幻覚を見るような病気がない限りその通り。

300:デフォルトの名無しさん
08/05/05 22:02:35
えーと、私のプログラムが甘いとは思うので
「それ低すぎだろw何かミスってね?」
でなければいいなと思ったのです。

こんなものですか。1キャラ2000ポリくらいにしないと、マップとかにパワーまわせませんね

301:デフォルトの名無しさん
08/05/05 22:06:45
1キャラ△6000て割きすぎ

302:デフォルトの名無しさん
08/05/05 22:38:29
あちゃー、割きすぎでしたか。
今まで3Dツール上でレンダリングするだけだったので、その癖ですね。
ゲーム用はやはりもっと抑えないとということですか。
ありがとうございました。

303:デフォルトの名無しさん
08/05/05 22:48:30
デバッグをpするとobjbase.h': No such file or directoryと出てデバッグできません
どうすればデバッグできるようになるのでしょうか?

304:デフォルトの名無しさん
08/05/05 22:49:16
>>303は誤字



デバッグをするとobjbase.h': No such file or directoryと出てデバッグできません
どうすればデバッグできるようになるのでしょうか?

305:デフォルトの名無しさん
08/05/05 23:06:05
objbase.h': No such file or directoryだけだとわかりませんね
エラーメッセージ貼ります


c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Stage4.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Stage3.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Stage2.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Stage1.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Ranking.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Option.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
MyGameLib.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Main.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory


306:デフォルトの名無しさん
08/05/05 23:16:53
デバッグ?コンパイルじゃなくて?

307:デフォルトの名無しさん
08/05/05 23:17:31
そのパスに、d3d9.hは実際にあるの?ないの?

パスはあるけど、ヘッダファイルだけないの?
それともパス自体ないの?

308:デフォルトの名無しさん
08/05/05 23:40:39
>>306
デバッグボタンでコンパイルしてるというのでしょうか・・・?

>>307
あるとかないとか言われてもわかりません
インストールしてオプションでパス設定してデバッグしただけですから・・・
Microsoft DirectX SDK (August 2007)ファルダの中にはDeveloper Runtime Documentation Include Lib Samples Utilitiesフォルダがあります

309:デフォルトの名無しさん
08/05/05 23:43:16
Windowsのパスもわからんのに、プログラム組むのは無茶だぜ…

c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h
というファイルは、Windows上にファイルとしてきちんと存在してるの?
パス間違えてるんだと思うぜ?

半角スペースのあるなし
括弧の半角全角とか、きちんとやってみ。

310:デフォルトの名無しさん
08/05/05 23:44:42
真性のゆとりだな

311:デフォルトの名無しさん
08/05/05 23:52:45
3Dでキャラの髪の毛が動きに合わせて(自動計算で)フワってなるやつって、
動きの計算は自前でやるにしても、どうやってモデルから構造出して、計算してんのかなぁ
やったことある人いる?

312:デフォルトの名無しさん
08/05/05 23:55:59
普通に自前でぼーん入れてノードを布シミュの応用で動かしてるだけじゃねーの大抵は

313:デフォルトの名無しさん
08/05/06 00:02:41
d3d9のC/C++ヘッダーってファイルあります

314:デフォルトの名無しさん
08/05/06 00:03:19
>>313>>309へレス

315:デフォルトの名無しさん
08/05/06 00:46:22
objbase.h がないんだとさ。
PC内全検索して、objbase.hがあるか確認

あるなら、そこへもパス通せ。
ないならSDKの再インストール

316:デフォルトの名無しさん
08/05/06 00:58:58
クロスシミュレーションの動きを、Xファイルにアニメーションとして取り込むことってできませんよね?
再生するだけで十分なのですが、Direct3Dでクロスシミュを簡易的に再生するのに適した方法はどんなのがありますでしょうか?

317:デフォルトの名無しさん
08/05/06 01:12:24
>>315
C:\Program Files\Microsoft Platform SDK\Includeにあるみたいなんですがこれでいいんでしょうか?

318:デフォルトの名無しさん
08/05/06 07:46:19
>>316
Xファイルを吐き出す側の3Dソフトに
クロスシミュのプラグインとか入れて、そのモーションで吐き出すが一番簡単


それとも自前でクロスシミュをDXで出来ていて、それをDX上でしたくてどうにか出来ない、
って事とは思えないが…一応…

前提としてD3DX関数でしかXファイル扱えないとかじゃないよね…
クロスシミュで求めた頂点で、モーフアニメーションでもすれば良いじゃん

319:デフォルトの名無しさん
08/05/06 07:54:17
>>286
亀レスで申し訳ないが…

カメラ位置からA地点を結ぶベクトルA、カメラ位置からB地点を結ぶベクトルB

それぞれのベクトルA, Bを単位化して、その単位化したベクトルをAA, BBとする

AAとBBを結ぶベクトルCCを作って、そのCCの長さを任意に割合で分ける点DDを作る

カメラ位置とそのDDを結ぶベクトルが君の求めるカメラ注視点ベクトルだと思うが…

320:デフォルトの名無しさん
08/05/06 08:25:59
質問させてください。
dxsdk_aug2007をインストール中に「This pre-release version of XAudio2 has expired please upgrade to tha latest version」と出るのですが、
そのままokをクリックしてインストールを終わらせていいのでしょうか?

321:デフォルトの名無しさん
08/05/06 09:29:44
>>320
MSお得意のベータ版の時限装置が発動でもしてんじゃね?
xaudio2使うんじゃなければ問題無いと思うよ。

322:デフォルトの名無しさん
08/05/06 09:37:46
MyGameLib.obj : error LNK2019: 未解決の外部シンボル __imp__TranslateMessage@4 が関数 "void __cdecl playMovie(char const *)" (?playMovie@@YAXPBD@Z) で参照されました。
MyGameLib.obj : error LNK2019: 未解決の外部シンボル __imp__GetClientRect@8 が関数 "void __cdecl playMovie(char const *)" (?playMovie@@YAXPBD@Z) で参照されました。
D:\プログラミング参考サンプル\アクションゲームプログラミング\マスカットボーイ\ソースファイル\MuscatBoy\Debug\MuscatBoy.exe : fatal error LNK1120: 外部参照 21 が未解決です。
ビルドログは "file://d:\プログラミング参考サンプル\アクションゲームプログラミング\マスカットボーイ\ソースファイル\MuscatBoy\Debug\BuildLog.htm" に保存されました。






文字数制限にひっかかるので多少省きましたすみません
このエラーの解決策を教えてくださいお願いします

323:デフォルトの名無しさん
08/05/06 10:02:45
関数宣言はあるのに実態が無いんだろ

324:デフォルトの名無しさん
08/05/06 10:55:18
>>319
亀レスでも大変ありがたいです。
ただ、AAとBBを結ぶCCは直線なので、任意の割合で分けても「角度的に割合で分けた」ことにはならないと思います。
本当に角度的なものなら、DDはAAとBBを結ぶ「曲線」の上になければならないと思います。

325:デフォルトの名無しさん
08/05/06 11:05:33
>>324
その通り
それよりなぜ極座標を使わないかを教えてくれ


326:デフォルトの名無しさん
08/05/06 11:26:10
>>318
Xファイルから布部分を取り出して、自前でクロスシミュしてリアルタイムに描画ってのはできます。
これだと
・リアルタイムゆえ、色々な変化に柔軟に対応可能
・リアルタイムに計算するコストが必要
ですよね。

今回はキャラがきまったアニメーションしかしません。リアルタイムに計算しない方針です。

D3DXのXファイル再生サポートをD3DXAnimationControlerしか知らないのですが、
これが制御するのはボーンの動きだけですよね?
古典的クロスシミュの1つとして、布に大量にボーンを仕込んで…という方法がありますが、(D3DXを使った)Xファイル再生ではその方法しかないのかな?という疑問です。

327:デフォルトの名無しさん
08/05/06 11:35:51
>>325
極座標を使うということは、一旦座標をatanなどを使って角度に直した方がいいということでしょうか?
AとBと0,0,0を含む平面を考え、その平面上でのAの角度(0度とすると計算しやすいか)と、Bの角度を求める。
という方法でしょうか?

また、今勉強中なのですがクォータニオンというものを使えば、望んでいることが簡単にできるのかとも思っているのですがどうでしょうか?

328:デフォルトの名無しさん
08/05/06 11:48:14
>>327
角度で応用きかすなら角度に直した方が可読性が高いかと思って
思いついてたのはargとpolar

ごめんクォータニオンはよくわからない

329:デフォルトの名無しさん
08/05/06 11:51:03
>>322
Platform SDKをインストールしていなければインストール。
URLリンク(www.microsoft.com)

インストールしている場合、binとincludeとlibの優先順を確認。
URLリンク(forums.microsoft.com)


330:デフォルトの名無しさん
08/05/06 14:59:47
>>321
そうですか。
クリックしてみます。
ありがとうございました。

331:デフォルトの名無しさん
08/05/06 15:54:51
>>324
AAとBBは単位化してるから、CCは二等辺三角形の底辺と同じなんだけど…
プロセスが必要で、結果が求まるだけじゃ駄目なのかね

332:デフォルトの名無しさん
08/05/06 16:04:46
>>331
>>319だと角の2等分でしかうまくいかない

333:デフォルトの名無しさん
08/05/06 16:10:04
>>328の訂正
そういや3次元だからargとpolarは使えないわw
>>327の通りです。
座標系変換の関数がなければ作ってみてもいいだろうし

334:デフォルトの名無しさん
08/05/06 16:38:58
>>329
レスありがとうございます
URLリンク(forums.microsoft.com)
このサイト通りにやったら>>322のエラー文は消えましたが新たにこのエラー文が出てきました
解決策を教えてくださいお願いします




LINK : fatal error LNK1104: ファイル 'd3d9.lib' を開くことができません。

335:デフォルトの名無しさん
08/05/06 17:16:41
>>334
libの設定の先頭に↓は記述してる?
c:\program files\microsoft directx sdk (august 2007)\lib


336:デフォルトの名無しさん
08/05/06 17:19:26
>>326
その条件なら
事前計算して、その結果をXファイルにフィードバックで良いかと

今あるか分らないが、サンプルにイルカのモデルがアニメーションするのがあって
(確か海底みたいな場所で…)
それが1Xファイルで、頂点モーフしてるフォーマットだったと思う
つまり、Xファイルは頂点モーフ出来るはずだよ

フォーマット調べて、任意のキーフレーム時の頂点情報を書き込めば
補間は確かスプラインとかリニアで種類がないけど、頂点モーフ出来るんじゃないかな

…メッシュの部分的なモーフをサポートしてるかは微妙
駄目なら駄目で、クロスシミュ適応部分だけ別ファイルにして、本体に自前で子供付けするとか

337:デフォルトの名無しさん
08/05/06 17:22:28
>>335
レスありがとうございます
c:\program files\microsoft directx sdk (august 2007)\lib
これは一番上にあります
その下にPlatform SDKがあります
インクルードのdirectxも一番上にあります
その下にPlatform SDKがあります

338:デフォルトの名無しさん
08/05/06 17:36:54
>>332
理解した、サンクス

>>327
ベクトル演算と3次元回転と内積でいけるような気がする

思いつきだけど
ベクトルA(どちらか)を、加算でも減算でもいいからXY成分を0にするベクトルAAを求め
AをZ成分のみにする( A(0,0,*)みたく )
そのベクトルAAをベクトルBにも適応( つまりベクトルAをZ軸とする座標へ変換 )
( 以降、その座標系の話で )

ベクトルBとXZ平面がなす角度を求め( ベクトルBからY成分をカットして作ったベクトルBBと内積で求める )
その角度でベクトルBをZ軸回転させ、ベクトルAとBをXZ平面にもっていく

ここで、XZ平面上でのベクトルAとBのなす角を求め、その角度を使って任意の比率角度を決めて
その角度で、ベクトルBを今度はY軸回転させたベクトルCを作る

最後にベクトルCを、ベクトルBBを作った逆の回転、座標変換した逆の計算をしてもどに戻せば…
スマートじゃないけど、こんな感じは?



339:デフォルトの名無しさん
08/05/06 17:44:40
ムービーをWindowsXP/Vistaを対象に再生したいのですが
安定して使える関数が分からずに困っています。
現在ではどういった関数が使われているのでしょうか?

340:デフォルトの名無しさん
08/05/06 17:45:55
>>338
スマートじゃなさすぎないか?w
それなら327の方法のままでいい気がするが
俺もやったことはないからツッコミだけですまんが、3Dシューティングのミサイルとかって毎フレーム相手の座標に向けて1度ずつ向きを変えるとか普通にやってそうだよな・・・
意外と方法確立されてないのか?

341:デフォルトの名無しさん
08/05/06 17:50:53
>>340
自分でもスマートじゃないと思うが…

しかし、実際に327を行なう手順を記述しただけだと思うんだが
(オイラー法のみでクォータニオンを使わないで)

342:デフォルトの名無しさん
08/05/06 18:09:32
>>336
それっておそらく
URLリンク(www.microsoft.com)
ですよね。確かに最初見たときかなり衝撃的でした。
でもこれは3つのXファイルのメッシュデータを、自前でモーフしてるっぽいです。

あと、DirectX9のサンプルの中にイルカのXファイルはあるのに、使用しているサンプルが見つからないのはなぜでしょうね・・・

343:デフォルトの名無しさん
08/05/06 18:41:43
>>337
最後の「\x86」が足りなかったか。
c:\program files\microsoft directx sdk (august 2007)\lib\x86

このフォルダと、フォルダの中にd3d9.lib等一式が存在することを確認。


344:デフォルトの名無しさん
08/05/06 18:57:07
>>343
レスありがとうございます
c:\program files\microsoft directx sdk (august 2007)\lib\x86
この設定にしたら>>334のエラー文はなくなりましたがまた>>322のエラー文が出てきました
解決策を教えてくださいお願いします

345:デフォルトの名無しさん
08/05/06 19:09:29
>>344
#include <windows.h>呼んでないとか・・・w

346:デフォルトの名無しさん
08/05/06 19:16:56
>>345
レスありがとうございます
もう少し詳しくお願いします
それだけだとちょっと分かりません
すみません

347:デフォルトの名無しさん
08/05/06 21:04:11
>>346
その部分はもはやDirectXとは関係無いエラーだ
おそらく環境のインストールに失敗している
あとは汎用の初心者質問スレへ行った方がいい
これ以上だとスレ違いということで叩かれるよ

348:デフォルトの名無しさん
08/05/06 22:15:53
すみません、DirectX上で動くゲームを作成してるんですが、
あるモーションのキーフレーム数を調べたいんです。
(無駄にキーフレームの多すぎるモーションはリダクションをしたいんです)

LPD3DXANIMATIONSETのGetNumAnimationsがそれ用の関数だと思ったんですが
どうもボーン配列の数を返しているみたいで・・・。
どうすればキーフレーム数を調べる事が出来るんでしょうか?

349:デフォルトの名無しさん
08/05/06 22:40:12
すみません、Visual C++ 6.0でDirectXのXファイル読み込みをプログラムしたのですが
上手くいきません。ビルドには成功したのですが、実行してもすぐに終了してしまいます。
SDKはDirectX 9.0 Update summer 2003を使っています。
デバッグ内容も下記に記載します。分かる人、教えて下さい、宜しくお願いします。


350:デフォルトの名無しさん
08/05/06 22:42:52
'ntdll.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\kernel32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\user32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\gdi32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\d3d9.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\d3d8thk.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\msvcrt.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\advapi32.dll' をロードしました、合致するシンボル情報は見つかりませんでした

351:デフォルトの名無しさん
08/05/06 22:44:37
'C:\WINDOWS\system32\rpcrt4.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\secur32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\version.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\winmm.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\dinput8.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\imm32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\lpk.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\usp10.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\uxtheme.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\MSCTF.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\Downloaded Program Files\CnsMin.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\shlwapi.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\imagehlp.dll' をロードしました、合致するシンボル情報は見つかりませんでした。

352:デフォルトの名無しさん
08/05/06 22:45:10
単純にループ書いてなくて一回素通りして終了するプログラムになってるとかじゃないよね?

353:デフォルトの名無しさん
08/05/06 22:45:13
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\MSCTFIME.IME' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ole32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ATOK17W.IME' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\shell32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ATOK17DE.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ATOK17AE.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\comctl32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\hid.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\setupapi.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\wintrust.dll' をロードしました、合致するシンボル情報は見つかりませんでした。

354:デフォルトの名無しさん
08/05/06 22:45:54
'C:\WINDOWS\system32\crypt32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\msasn1.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ntmarta.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\wldap32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\samlib.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\d3dxof.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
スレッド 0xF2C 終了、終了コード 0 (0x0)。
プログラム 'H:\CLUB SEE\3Dチェス\my3dlib\Debug\my3dlib.exe' はコード 0 (0x0) で終了しました。


355:デフォルトの名無しさん
08/05/06 22:46:03
ググレカス

356:デフォルトの名無しさん
08/05/06 22:49:20
もはや荒らし
VisualStudio使ってるなら、ブレークポイントで止めて一行ずつ実行してけカス

357:デフォルトの名無しさん
08/05/06 23:13:01
mviewでXファイルを開いた時、アニメーションのリストがメニューの
Animation > Animations の下に最大50個現れると思うのですが、
Xファイルを開いただけだと何故か現れません。

Add Animationで追加オープンすると、最初に開いたXファイルのアニメーションと、追加で開いたXファイルのアニメーションが両方現れるのですが…
AddAnimationせずに、最初に開いたXファイルのアニメーションを表示する方法はありませんか?

358:デフォルトの名無しさん
08/05/06 23:25:14
>>347
レスありがとうございます
インストール時にエラー文はでなかったんですけどねぇ・・・

359:デフォルトの名無しさん
08/05/06 23:28:45
パスも通せない馬鹿は死んでいいよ

360:デフォルトの名無しさん
08/05/07 00:37:22
>352
ループには問題なさそうですね。

>356の言う通りにしたら解決したわ、もっともブレークポイントなど使わずに
一行ずつ実行していったがな。ヒントありがとよカス。


361:デフォルトの名無しさん
08/05/07 02:13:27
>>359
お前が死ねキモデブ

362:デフォルトの名無しさん
08/05/07 03:13:11
みなさーん
池沼には優しくしてあげましょう
社会のゴミですが同じ人間です

363:デフォルトの名無しさん
08/05/07 04:22:37
URLリンク(www.imgup.org)
コンパイル中↑こういうのが出た後に下みたいに「シンボルが読み込まれていません。」が大量に出るんですけどどうしたら出なくなりますか?

'MuscatBoy.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\user32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\gdi32.dll' を読み込みました。シンボルが読み込まれていません。

364:デフォルトの名無しさん
08/05/07 05:07:45
363は自己解決しました

365:デフォルトの名無しさん
08/05/07 06:06:15
>>364
どうやったら解決したの?
原因は?
もう一回>>1を読んでね。


366:デフォルトの名無しさん
08/05/07 14:52:25
>>365
自己解決の場合は誰に礼を言うの?w

367:デフォルトの名無しさん
08/05/07 14:54:12
>>360
ヒントもらえたんだから感謝せぇよアホ
合致するシンボル情報は見つかりませんでしたってのは、
「デバッグ用にDLLを読み込んだが、特に必要な情報は無かった」
とかの意味だ。(厳密には違うかもしれんが)

それはデバッグ実行すると当たり前に出る内容であって、
そんな大量の、何の問題もない(かつDirectX無関係)の内容を貼り付けたら
荒らしとか言われても仕方無い。

368:デフォルトの名無しさん
08/05/07 15:49:17
質問です
Xファイルを使ったモデルにマルチテクスチャを行ないたいのです
例えば地面に見た目用のテクスチャーと、バンプ用のテクスチャーを適用したいと思っています。

ただ、Xファイル系のサンプルを見る限りテクスチャーを2つ使うことは想定外のように見えました。
カスタムテンプレートという仕組み上、自前でそういうXファイルは作れそうですが、3DモデラーがそういうXファイルを吐いてくればれば(あまり)意味がありません。

マルチテクスチャなXファイルというのは一般的ではないのでしょうか?
LWを使ってXファイルを吐いているのですが、もし良い方法があれば教えていただけると幸いです

369:デフォルトの名無しさん
08/05/07 16:24:58
ピクセルシェーダーで合成すればいいんじゃじゃね?

370:デフォルトの名無しさん
08/05/07 19:17:02
今頃DirectX10のサンプルみたら、三角形ポリ描画するだけでシェーダー必要とかXファイルがサポートされてないとかアホか。
DirectX使うのは思いついたゲームをちゃちゃっと作りたいからなのに、生産性下げてどうする・・・



371:デフォルトの名無しさん
08/05/07 20:28:33
質問です
頂点ブレンディングはDirectXの機能で実装するのと
頂点シェーダで実装するのとでは、どちらが一般的ですか?

372:デフォルトの名無しさん
08/05/07 21:52:57
>>371
調査統計をとるようなマーケティング能力や、
規格を立ち上げる権限をもった人間がいるわけでもないのに、
そんな不確定な情報を誰とも知らない人間に聞くその意図を明確にせよ。

ロボットのように命令が無ければパンツもはけないというのなら、
一般的かどうかを聞くより、最初からあらゆる事を指示してと言えばいい。

373:デフォルトの名無しさん
08/05/07 22:50:41
>>372 答えてやれよ。あんたは業界人なのけ?

374:デフォルトの名無しさん
08/05/07 23:05:41
まずは一般的という基準を明確にすることから始めないといかんだろ。

375:デフォルトの名無しさん
08/05/07 23:08:23
聞き方が不味かったのかな?
ここの人たちはどっちでやってますか?と言う聞き方ならまだ良かったとか?

376:デフォルトの名無しさん
08/05/07 23:10:29
人それぞれ

377:デフォルトの名無しさん
08/05/07 23:11:53
ターゲットマシンによるべ
あくまで古いマシンでも動かしたいなら頂点シェーダ使うのはきびしいんじゃね?

378:デフォルトの名無しさん
08/05/07 23:12:24
おまえら意地悪ですね
俺はこうしてるってだけでもいいんじゃないの

379:デフォルトの名無しさん
08/05/07 23:18:02
そもそもシェーダを利用するのはDirectXの機能とは言えないのか?
シェーダを利用するしないに限らず、ハードが対応していなければ、
DirectX側がエミュレーションするし、していなければハードが処理するだけで、
データを渡すのはDirectXが処理していると言える。

380:デフォルトの名無しさん
08/05/07 23:20:17
行間から固定機能パイプラインorシェーダと読めたんだが違うのかな?

381:デフォルトの名無しさん
08/05/07 23:20:18
つまりDirectXではなくOpenGLからシェーダを利用するかどうかという話なのだろう。

382:デフォルトの名無しさん
08/05/07 23:34:58
どちらが一般的かと言われれば固定機能パイプラインだろう
なぜならそれしかなかったから
だが、いずれ消え行く技術をいまさらやってもだし
シェーダーでやっといたほうが後々まで使えるんでね?

383:291
08/05/08 00:04:46
仕方が無いのでDXUTの解析から始めようと思います。
(解析して光明が見えてくればいいのですが・・・)


384:デフォルトの名無しさん
08/05/08 00:51:33
馬鹿はシェーダーを使えない。それだけ。

385:デフォルトの名無しさん
08/05/08 01:43:58
頂点ブレンドってスキンメッシュとかのことよね?
だとしたら、一般的とかいうより色んな制約で変わってくるんじゃね?
・自前形式ではなくXファイルを使うなら、D3DXのスキンメッシュサンプルと
 同じ方法が使える
・でもそのやり方だと行列パレット使うので関節のSLERPが出来ない(LERPになる)
 そこらへんにこだわると、必然的に自前コードで広げることになる
・でも固定機能パイプラインの行列パレットは、最近のビデオカードではほとんど
 ハードウェアサポートされてない(ソフトウェア頂点処理に頼ることになる?)
・頂点シェーダで計算する場合、シェーダ3.0までは定数レジスタが256しかないので
 1ボーンあたり3レジスタ(SLERPなら2で足りるが)だとすると80ボーンしか使えない
俺がやった限りこういう事情が絡んで来たから、色々調べつつ
自分のやりたいことと照らし合わせてたら必然的にやり方は決まるよ。

386:デフォルトの名無しさん
08/05/08 09:04:59
DirectX9使ってるんですけど
ID3DXEffect::SetTexture とか ID3DXEffect::SetFloat って
コスト高いんですかね?
ループの内側で使っちゃダメかな?

387:デフォルトの名無しさん
08/05/08 10:13:12
>>371
頂点シェーダでやるのが良いと思うよ
まず、ソフトウェアエミュで頂点シェーダを行なってもそれほど重くないのが1つ。
ブレンド可能数が頂点シェーダのほうが融通利くのが1つ。
他の頂点シェーダエフェクトと一緒に利用できるのが1つ。

固定パイプラインでハードウェア処理の頂点ブレンドやるとバグるグラボが少なからずある
(ドライバアップデートすればなおるんだけど、ユーザーは必ずしも…ね)
だから私は頂点シェーダ+ソフトウェアエミュ派


388:デフォルトの名無しさん
08/05/08 10:22:30
>>385
横槍で質問

・頂点シェーダで計算する場合、シェーダ3.0までは定数レジスタが256しかないので
 1ボーンあたり3レジスタ(SLERPなら2で足りるが)だとすると80ボーンしか使えない

これって、1頂点へ影響するボーンが最大80って意味?
それともモデル全体を通して80ボーンが限界って意味?

389:デフォルトの名無しさん
08/05/08 12:41:17
必要に応じて分離すりゃいいだけ

390:デフォルトの名無しさん
08/05/08 13:11:36
DrawPrimitive1回に対して80ボーンが限界って事。
D3DXMesh関係だと其処を考慮してDrawPrimitiveを何回かに分けて256本までのボーンに対応できるようになってるだろ。

391:385
08/05/08 17:00:17
うん、説明不足だったけど1回の描画では、ってこと。
>>390みたいにすれば確かに制限は無くなる。
自分はやってないからわからんけど、
事前に頂点のリンクと面の接続を考慮してメッシュを分割しておけばいいかと。

392:デフォルトの名無しさん
08/05/08 17:18:49
ミス、>>389みたいにすれば。
D3DXMeshが自動で何かやってくれるのは知らない

393:デフォルトの名無しさん
08/05/08 17:25:41
うわ、最近D3D始めたばっかりなんだけど、スキンメッシュってそんなに定数レジスタ使ってるなんて気づいてなかったw
D3Dのサンプル様様だなぁ…
ちゃんと26ボーン毎に分割して、正常に表示できるように調整されてるっぽ
(サンプルのSkinnedMesh)

394:デフォルトの名無しさん
08/05/08 19:56:39
アプリが終了すると
Direct3D9: (ERROR) : [0] : Address 04F1E4CB
Direct3D9: (ERROR) : [1] : Address 04F1E59B
Direct3D9: (ERROR) : [2] : Address 04F1E440
Direct3D9: (ERROR) : [3] : Address 0501CCA5
Direct3D9: (ERROR) : [4] : Address 05023345
Direct3D9: (ERROR) : [5] : Address 05002898
Direct3D9: (ERROR) : [6] : Address 05016E13
Direct3D9: (ERROR) : [7] : Address 00486437
Direct3D9: (ERROR) : [8] : Address 00474CBE
Direct3D9: (ERROR) : [9] : Address 004770CA
Direct3D9: (ERROR) : [10] : Address 7C23ABCC
Direct3D9: (ERROR) : [11] : Address 7C23B209
Direct3D9: (ERROR) : [12] : Address 7C235CC1
Direct3D9: (ERROR) : [13] : Address 7C22FF89
Direct3D9: (ERROR) : [14] : Address 7C22F067
Direct3D9: (ERROR) : [15] : Address 7C22EFDE
が複数行

みたいなデバッグログ(OutputDebugStringで書けるやつ)でるんだけど
何が悪いんですか?

あと、m_pd3dDevice->GetRenderTargetで取得したやつは、
Releaseすべきですか?

395:デフォルトの名無しさん
08/05/08 20:00:30
ワンスキンしか作れないとかいうウンコモデリングソフトに当たったら最後w
なんでもかんでもすべての頂点に影響与えるとかギャグですか?w>某会社の自作モデリングツール

 捨 て ち ま え よ ! (中小害虫社員(28歳♂))

396:デフォルトの名無しさん
08/05/08 20:01:03
同い年ですね。
わかります。

397:デフォルトの名無しさん
08/05/08 20:14:45
>>395マ板でぶちまけろ

398:デフォルトの名無しさん
08/05/08 20:16:24
371です
ありがとうございます
とりあえず頂点シェーダでやってみます

399:デフォルトの名無しさん
08/05/08 21:18:32
>>395
DrawPrimitiveが減らせるので逆に高速化することが可能な場合も多々。
たとえばロボットみたいなものをパーツ毎にDPするよりは、ウェイト仕込んで
ボーンでドーンと1回のDPで描く方が実は速い。

400:デフォルトの名無しさん
08/05/09 00:29:29
>>395
せめてそのウンコモデリングソフトが何か書いてくれないと

401:デフォルトの名無しさん
08/05/09 04:47:40
>>399
言い訳にしか聞こえないw

402:デフォルトの名無しさん
08/05/09 06:45:56
どう考えてもボーンとかよくわかってない人がとりあえず
頑張ってみました的臭いするやんか?

403:デフォルトの名無しさん
08/05/09 10:28:23
>>401
昨今のグラフィックカードでは常識

404:デフォルトの名無しさん
08/05/09 14:53:11
スキニングの計算をCPUでやることになるから
グラフィックカードあんまり関係なくね?

405:デフォルトの名無しさん
08/05/09 15:13:41
ボーンを使おうが使うまいが階層のマトリックス演算は結局行なう。

そのマトリックスをWorldとして頂点シェーダーで計算するか、
スキン用のマトリックスとして頂点シェーダーで計算するかの違いだろ。

ボーンの場合Offset用の演算が加わるが、
DrawPrimtiveのコールはマトリックスの乗算とは比較にならないくらい重い。

スキンの処理までCPUでやるっつーなら話は別だけどDirectX7でやってるわけじゃないっしょ。

406:デフォルトの名無しさん
08/05/09 15:29:43
スキンの処理までCPUでやるようにしないと、この輪郭線抽出はできませんよね?
URLリンク(www.twin-tail.jp)

407:デフォルトの名無しさん
08/05/09 16:08:51
>>406
DirectX7世代でやるならそうなる。

それ以上ならもっとよい方法が存在する。

408:デフォルトの名無しさん
08/05/09 20:43:33
>>407
よかったら輪郭線抽出について情報いただけませんか

Zバッファの差を見る方法や、マテリアル境界を見る方法、モデルをちょっと太らせて裏返して黒描画する方法など色々調べましたが
406のURL先ほどまで「正確」で「自在な太さ」にできる術が見つかりませんでした

409:デフォルトの名無しさん
08/05/09 21:35:32
トゥーンレンダリング

410:デフォルトの名無しさん
08/05/10 02:49:05
>>406のは
希望をこめて絵を修正してるって書いてあるやん

411:デフォルトの名無しさん
08/05/10 03:21:23
>>408
そこまで知りたいなら金だせよ

412:デフォルトの名無しさん
08/05/10 10:46:29
>>408
自分で答え書いてるじゃん。
深度バッファやマテリアルの境界を輪郭検出のアルゴリズムで線を引けばいい。
その場合1ドットのラインしか引けないわけだが、
1ドットのラインを別のバッファに書いてそのバッファを上下左右にずらして
もう1度書くと太くなるというのはわかるかい?

413:デフォルトの名無しさん
08/05/10 21:09:08
>>412
もちろんその手の「太くする」方法はわかりますが、
深度バッファ法はちょっとひいったアゴのような、深度差が浅い部分に輪郭線が出ません
マテリアル法でも同様です。

モデルをちょっと太らせて裏返す法や、406のURL先のものほど「正確な」ものはなかなかありません。

414:デフォルトの名無しさん
08/05/10 21:42:40
内積が正か負で判断して線引く>>406のをシェーダでかけば同等の正確さじゃないの?

415:デフォルトの名無しさん
08/05/10 21:57:07
○輪郭線アルゴリズム
確かに>>406のものが
最も正確でキレイに作れそうなので、
>>406を主にすべきだな。

○ジオメトリ操作は、なるべくGPUでやりたい。
1パス目:D3DFILL_SOLIDで描画
2パス目:D3DFILL_WIREFRAMEで描画

この2パス目を、先のアルゴリズムで
輪郭線のみ描かれるようにすればいいんじゃないの。

○線の太さは任意に変更したい。
これは、2パス目を>>412の方法で太くすればいいんじゃないの。

416:デフォルトの名無しさん
08/05/10 22:00:03
>2パス目:D3DFILL_WIREFRAMEで描画
>
>この2パス目を、先のアルゴリズムで
>輪郭線のみ描かれるようにすればいいんじゃないの。
書いてから気付いたけど、これはちょっと難しいかなぁ


417:デフォルトの名無しさん
08/05/10 22:03:56
>>414
頂点シェーダで線を引くことはできないと思いますけど…

>>415
その方法ですと、やはりアゴなどに輪郭線を出すことができませんよね。

418:デフォルトの名無しさん
08/05/10 22:05:38
>>406のものと同等の正確さというのはかなり難しいなぁ…
GPUを使ったものは、やはり速さ優先で作られてるし

419:デフォルトの名無しさん
08/05/10 22:07:33
うるせえ!!!

420:デフォルトの名無しさん
08/05/10 23:26:00
「自在な太さ」というのが>>406だと結構難しいはずなので(あと処理がキツイだろこれ)
結局のところ割り増しモデルを裏返し手法に落ちついちゃうんだよなぁ。
精度は落ちるけど、押し出す頂点位置を距離によらず一定になるように頂点シェーダで
調整すればそれなりの見栄えにはなる。

421:デフォルトの名無しさん
08/05/10 23:31:03
>>420
I3DXLine使えば太さは楽勝じゃね?
頂点データをもとに自前で線引いてるんだから

422:デフォルトの名無しさん
08/05/10 23:46:00
>>421
使ったことないので知らんが、あれでは太くなったら普通に線の一部が元モデルにめり込むか、
Z値を考慮せずに描画されるならなおさらこの手法には使えないのでは?

一ドットの線ならZバイアス使わんでも自前で射影行列なり弄れば>>406の「理想」の線は描画できるが、
それ以上の太さになるとポリラインで表現することになり、そうなればどこまで線のZ値を前に押し出せば
元のモデルと重ならずに描画できるかは簡単には見積もれないはずだ。

423:デフォルトの名無しさん
08/05/11 09:25:17
>>422
ああ、ごめん。モデル側にめり込むのはご法度って考えだったのね。
俺は太さ3までだったら、モデルに1ドットめり込むだけだから別にいいやって思ってたもんで

>一ドットの線ならZバイアス使わんでも自前で射影行列なり弄れば>>406の「理想」の線は描画できるが、
よかったらこのあたり、詳しく解説してくれないか


424:デフォルトの名無しさん
08/05/11 17:38:11
法線方向にプッシュして裏返すのって、特許取ってなかったっけ?

425:デフォルトの名無しさん
08/05/11 21:26:54
ちょっとD3DFILL_WIREFRAMEが話題にあがったから試してみたんだが
D3DFILL_WIREFRAMEにしてもD3DFILL_SOLIDと描画時間が一緒だったんだが…
何かの間違いだろうか?
PixelShaderの呼び出し回数が段違いだと思うのに…

426:デフォルトの名無しさん
08/05/11 21:46:10
なら頂点シェーダーかCPUがボトルネックなんだろ。
たいした量描画してるわけじゃないなら大抵CPUがネック。

427:デフォルトの名無しさん
08/05/11 21:51:10
質問です

今、PixelShaderを使う描画を学んでおり、自分のメインPCでは正しく動作しました。
試しにと、PixelShaderに対応していない(1.0にすら対応していない)古いサブマシンに持っていって動かしたところ、正しく動いてしまいました。
ここで疑問なのですが、何故正しく動いてしまったのでしょうか?

どうやら
PixelShader = compile ps_1_1 PS();
と書いた部分が、メインPCだと正しく適用されるが、サブPCだと無視され固定パイプライン(という呼び方でOK?)のPixelShaderにより描画されているっぽいです。

これはHLSLの仕様なのでしょうか?
てっきりHLSLのコンパイルエラーとなり、fxファイルのロードに失敗するかとふんでいたのですが…


428:デフォルトの名無しさん
08/05/11 21:53:26
補足です。

>ここで疑問なのですが、何故正しく動いてしまったのでしょうか?
の時点では、書いていたPixelShaderが固定パイプラインのそれと同等だったため「正しく動いているように見えた」のです。
ためしにPS()内で必ず「黒」を返すようにしたところ
・メインPCでは正しく黒を
・サブPCでは通常通りの描画を
したため「サブPCではPS()が無視され、固定バイプラインのPixelShaderが呼ばれている」と判断したのです。

429:デフォルトの名無しさん
08/05/11 21:55:50
>>426
どうやらボーンによる頂点変換(ソフトウェア処理)がボトルネックだったっぽ
すまん

430:デフォルトの名無しさん
08/05/11 22:36:13
確かに俺の環境も
PS2.0世代のGPUのくせに
PS3.0コンパイルのShaderが
HWで動いているな。
多分これは、PS2.0に対応とか3.0に対応ではなく
2.0、3.0で追加された機能に対応しているという話だろう。
ただアンタの言うPSの代わりに固定機能が動くというのはないな。
勘違いだろ。

431:デフォルトの名無しさん
08/05/11 23:16:43
対応してなくても動作はするけど
対応してないPCじゃコンパイルはできないよね
あとピクセルシェーダーの動作って
コンパイルしたマシン(のGPU?)に依存してる?
家のPCでテストした実行ファイルを仕事場のPCで動かすと
家のPCと同じ動作するけど
コンパイルしなおすと動作が変わったりする

432:デフォルトの名無しさん
08/05/11 23:29:40
>>430
お返事ありがとうございます。

>ただアンタの言うPSの代わりに固定機能が動くというのはないな。
うーん、どういじっても
PixelShader = compile ps_1_1 PS();
の PS()の中身は無視されてしまいます。

float4 f = {1.0f, 1.0f, 1.0f, 1.0f}
return f;

という単純なPS()の中身ですら、メインPCだと正しく真っ白になり、
サブPCだとPixelShader = compile ps_1_1 PS();の宣言がないがごとく振舞います。

エフェクトは
D3DXCreateEffectFromFile
でロードしています。

433:デフォルトの名無しさん
08/05/11 23:34:51
D3DXが気を利かせてくれてるのかねぇ・・?
PS非対応環境なんてもはや持ってないから、アドバイスできん。すまん

434:デフォルトの名無しさん
08/05/12 03:39:42
なんもエラー出てないの?

435:デフォルトの名無しさん
08/05/12 15:10:21
何もエラーでないですね…。
ただ、ReleaseビルドのEXEファイル生実行ですので、次はサブPCのVC6.0上でDebug実行し、D3DXのログ出力を見てみます。
家に帰るのは夜です

正直質問した時は、あっさり
「PSが無い環境では、compile ps_1_1 PS(); って記述は無視されて、固定パイプラインとして実行されるよ」
とかくるかと思っていたのですが…

436:デフォルトの名無しさん
08/05/12 22:44:35
435です。
やはり特にエラーメッセージもなく、単にスルーされているだけっぽい動作です。
どなたか心当たりあるかたいらっしゃいませんかー?

仮説
PixelShader = compile ps_1_1 PS();
などは、動作環境のサポートバージョンが、コンパイル指定したバージョン未満の場合は
(エラーを出さず)変わりに固定パイプラインを呼び出す

437:デフォルトの名無しさん
08/05/12 23:55:38
>>436
はじめにサポートバージョンってわからないっけ?CAPSで
つか、何がしたいんだっけ?

438:デフォルトの名無しさん
08/05/13 00:35:14
>>436
それ固定昨日と頂点定義が一致してないとランタイムで死ぬだろ

439:デフォルトの名無しさん
08/05/13 09:47:00
>>437
やりたいことというより、こういう動作をするものなの?という疑問を解決するのが目的ですね。
CAPSでシェーダのバージョンはとれるので、意図しない動作を起こさないようにバージョンではじくことは可能ですね。

>>438
ちょっといまいちわかりませんが、頂点シェーダでの出力定義が「(固定パイプライン的に)普通」じゃないとランタイムエラーになるということでしょうか?
そもそも頂点シェーダでは「普通」じゃない出力はできないと思っていましたが違うのでしょうか?
(だから計算結果とかを、使ってないテクスチャーUVの中に入れるとかでごまかして渡す)
とりあえず、そんなことをしている場合は描画がしっちゃかめっちゃかになりそうですね。

440:788
08/05/13 17:48:16
directXのAppwizardってVC++6の時代のものですか?
UPdate Summer2003(v9.0b)では,CD3DApplicationという汎用クラスが
あったのに最新バージョンではなくなっています.
その代わり,DXUTというフレームワークがふんだんに使われています.

directXのバージョンによってプログラミングテクニックがころころ変化して
いるように見えるんですけど(1~2年前の参考書が最新バージョンと大きく
食い違っている),いったいどのバージョンを勉強したらお得なんでしょうか?
小生,これからdirectXを勉強しようというものです.

やっぱり,最新バージョンでSDKを使ってシコシコ書くのがベストでしょうか?
MFCのdaialogベースでdirectxを使ってみたいのですが.

あと,DXUTを解説している本やサイト(英語でも可)があったら教えてください.


441:デフォルトの名無しさん
08/05/13 18:29:35
URLリンク(www.kohgakusha.co.jp)
これとかか?

ただし、DXUTの仕様はSDKのバージョンごとに変わってたりするんで
そのまま使えるかどうかはしらね

442:デフォルトの名無しさん
08/05/13 19:48:34
>>441

ありがとうございます。早速、購入してみます。

443:デフォルトの名無しさん
08/05/13 20:05:47
ID3DXLineって便利だけど
遅いの?

444:デフォルトの名無しさん
08/05/13 23:29:46
>>439
例えば、自分が固定パイプラインと同じ機能をシェーダ使って実装するとしてどうなる?って話じゃねぇの

445:デフォルトの名無しさん
08/05/14 23:19:22
シェーダの質問なのですが、
D3DFMT_R16FやD3DFMT_A8のように4要素のないテクスチャで
float4でtex2Dを取得した場合zやwはどんな値になるのでしょうか?
不定なのか、0が入るのか、前の値が保持されたままなのか、など教えていただけると助かります。

446:デフォルトの名無しさん
08/05/15 00:14:53
ドキュメントくらいはちゃんと嫁。
float4(0, 0, 0, 1)に対して渡された要素が上書きされるイメージ。

447:デフォルトの名無しさん
08/05/15 00:28:16
>>446
ありがとうございます。
ドキュメントの探し方が甘かったようです。申し訳ありません。

448:デフォルトの名無しさん
08/05/15 18:07:18
URLリンク(www.geocities.co.jp)
のexeを実行するとちゃんと動くんだけど、ソースをVC++2008で、コンパイルするとうまく動かない。

どうも、lpDIJoyDev->QueryInterface でfalseが返ってるみたいだけど、どこ修正すればよい?



449:デフォルトの名無しさん
08/05/15 19:39:30
>>448
PCに入ってるSDKのバージョンがそのソースの想定したSDKの
バージョンとあってないとコンパイルできないよ

450:デフォルトの名無しさん
08/05/15 20:46:38
ごめん、コンパイルは通るけどオリジナルと挙動が違うってこと。。

451:デフォルトの名無しさん
08/05/15 20:50:07
引数とかも違うだろ?

452:デフォルトの名無しさん
08/05/16 12:45:26
>>450
exeがなかったので違いがわからないけどソースからビルドしたやつも普通に動作してるよ
挙動が違うとは具体的に何が違うの

453:デフォルトの名無しさん
08/05/16 16:21:26
質問です。
Radeon 9600 series AGP 128MB(ドライバは URLリンク(ati.amd.com) )の環境にて、かなりおかしな挙動をしています。(OSはWindows2000)
何か情報ありませんでしょうか。
なお、その他の環境3個所くらいで試してみましたが、特に問題は見られませんでした。

・テクスチャーの表示がおかしい
256x256サイズのテクスチャーを10枚程度読み込んだあたりから、一部のテクスチャーの表示がおかしくなります。
テクスチャはD3DXCreateTextureFromFileで読んでいます。
テクスチャーが張られているモデルは、Xファイルで読み込んだ板ポリや、立方体などの単純なものです。

テクスチャーが張られているところが全体的にRGB(0,255,0)な感じに色になり、ほんのちょっとだけ元のテクスチャーの名残が見られるような、なんともバグった感じになります。
読み込むテクスチャーの数を減らすと、さっきバグって表示されていたものも綺麗に表示されます。
描画はプログラマブルシェーダを使わず、固定機能のものです。

・固定シェーダの挙動がおかしい
pDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_CURRENT);
pDev->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TEXTURE);
pDev->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
pDev->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_CURRENT);
pDev->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_TEXTURE);
pDev->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE);

と設定しているのですが、
pDev->SetTexture(0, NULL);
pDev->SetTexture(1, pTexture1);
としたとき、pTexture1の色が乗算されません。

pDev->SetTexture(0, pTexture0);
pDev->SetTexture(1, pTexture1);
ではきちんと両方の色が反映されるようです。

Radeon 9600は比較的新しいボードですし、むしろ超古いGeForce2MX400とかではまともに表示されます。何か原因が思い当たる方いらっしゃいますでしょうか。

454:デフォルトの名無しさん
08/05/16 16:37:56
伝説巨人RADEON

455:デフォルトの名無しさん
08/05/16 16:52:15
使い方がおかしい

456:デフォルトの名無しさん
08/05/16 17:01:16
>>455
どこか、>>453の中に使い方がおかしいことを示す情報があったでしょうか?
ご教示願えればありがたいです

457:デフォルトの名無しさん
08/05/16 17:14:54
ATIとnVIDIAの違いなんじゃね

458:デフォルトの名無しさん
08/05/16 17:43:47
>>453の追加情報です。

pIDirect3D9->CreateDevice(adapter, D3DDEVTYPE_REF, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, ¶m, &pDevice);
REFモードならバグりようがあるまい。と思って試してみようとしたのですが、
RADEON環境だとこの生成に失敗しました。

…RADEONというものは、思いのほかDirect3Dと相性が悪いのでしょうか?

459:デフォルトの名無しさん
08/05/16 19:18:00
>>453
SetTexture(0, NULL)してるのに、ステージ0でテクスチャ参照したら駄目だろう。

When a texture stage has D3DTSS_COLORARG1 equal to D3DTA_TEXTURE and
the texture pointer for the stage is NULL, this stage and all stages after it are not processed.

ARG1にD3DTA_TEXTUREをしておいて、テクスチャにNULLを設定するとそのステージ
以降が無効になる仕様だが、ARG2については何も書かれていないので未定義かも。

460:デフォルトの名無しさん
08/05/16 19:27:31
>>459
なるほど。ARG2がテクスチャ、かつNULLなときに後のテクスチャを参照してくれていたのは
GeForceが「たまたま」そう定義していたからであったわけですね。
気をつけます。

ちなみにそこに気をつけるよう改良してみましたが、1番目の「・テクスチャーの表示がおかしい」は相変わらずです。


461:デフォルトの名無しさん
08/05/16 20:04:30
>>460
それもなんかおかしいんじゃねぇの?w
基本的にnVidiaのボードは確かに未定義や
おかしな部分を変な風に救っちゃう設定だからRADEONで開発したほうがいいぜ
俺も開発のときにnVidiaのボード使ってて苦労した


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch