[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 01/02 08:13 / Filesize : 170 KB / Number-of Response : 607
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:56:40 ]
※回答する人も、質問する人も必ず読んでください

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

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

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

【C++】 DirectX初心者質問スレ Part14 【C】
pc11.2ch.net/test/read.cgi/tech/1189257706/

83 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 22:59:11 ]
浮気者

84 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:50:11 ]
誠氏ね

85 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 01:34:46 ]
pc11.2ch.net/test/read.cgi/gamedev/1179516297/468-470
がいし感←なぜか変換dけいなf

86 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:40:23 ]
ちょっと聞きたいのだけど、Directxと32Apiを組み合わせてプログラム
を組めますか?
Win32Apiのラジオボタン等の機能と組み合わせて作れれば良いなあ
と思ったもので・・・

87 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:16:49 ]
Win32APIっていうか
GUIにアクセスして
Windowsコントロールを描画することはできるけど
GUIの速度がDirectXと比べ物にならないくらい低速だから
DirectXを使うメリットを殺すことになる

88 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 04:12:49 ]
>>87
有難うございます。
何と言うか漠然としすぎて何とも言え無いです。
出直してきます


89 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:06:58 ]
自分のPCにはSDK9.0が入ってます。
あるサンプルをダウンロード、中を確認したらd3d8.hとd3dx8.hがインクルードされてたので
これをd3d9.h、d3dx9.hに直し、追加の依存ファイルも8から9に直してコンパイル
したら何百ものエラーが出てきました。
色々試したけど原因が全く分からないのでよろしければ誰か教えてください><

90 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:14:32 ]
バリバリ原因が丸わかりだろ。

91 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:16:10 ]
>>89
完全下位互換と言うわけではないからファイルが違うと全くの別物と考えたほうがいい。
同じファイル名でも中身は何度も添削しているから当時のバージョンじゃないと使えない場合もあるし。




92 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:27:34 ]
>>91
そうだったんですか・・・
9.0以前のものは全て使えると思ってました^^:
ご返答ありがとうございました。

93 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:23:52 ]
Xファイルに関して質問です。
ひとつのモデルに対し、複数のアニメーションをさせることはできるのでしょうか?
たとえば、あるキャラクターで、Aを押したらパンチ、Bを押したらキック、という風にしたいのです。
やはり、パンチ用とキック用でXファイルをわけるしかないのでしょうか。

94 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:29:24 ]
>>93
二つのアニメーションを連結して、それぞれのアニメーションでフレームを補正して使う。
例えば、AとBのアニメーションを連結したら、
Aの初めは、0
Bの真ん中は、0.75
っといった感じ。

95 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:41:53 ]
>>93
できる
SDKサンプルのtinyも実は
複数アニメーションを持ったXファイルだ
ただし切り替えに関して詳しく説明されてるところはあまりない
ID3DXAnimationControllerでぐぐればヒントくらいはみつかるかも

96 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 17:29:57 ]
HLSLを使ったサンプルでLPD3DXEFFECTのPassを使おうとしてエラーが出ます。
LPD3DXEFFECTにPassが無いのですが別のものに替わったのでしょうか。


97 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 17:44:24 ]
BeginPass
EndPass

98 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 18:50:11 ]
メジャーバージョン変えずにAPI蛙のやめれって感じですよねほんと

99 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:31:10 ]
どうしても1パス終了ごとに
PassEndを入れさせたい「事情」があって
開始時の互換性をなくすことで
両方セットで変更させようとした。ってオチじゃねぇの?

100 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 06:19:42 ]
地獄への道は善意で敷き詰められている。
職場では変更を極力抑えるのが美徳だけれど、その繰り返しが死の行軍を生み出すのが常である。


101 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:22:44 ]
SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
これらの引数を使いこなしたいんだけど分かりやすく解説している
ページないべ?



102 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:45:27 ]
これはひどい

103 名前:化石発掘 mailto:sage [2007/12/19(水) 02:37:51 ]
>>101
[shred of game]
platz.jp/~moal/game.html

104 名前:デフォルトの名無しさん [2007/12/21(金) 11:00:39 ]
ttp://wisdom.sakura.ne.jp/system/directx/dxg2.html
ここのページ下部にある背景が緑の部分のソースをまるごとコピーして、VisualStudio2005の無料版でコンパイルしました。ところが
「fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?」
というエラーが出てコンパイルできません。エラーで検索してみたところ、ソースの最上段に #include "stdafx.h"
を加えればコンパイルが通るらしいので試してみた所
「fatal error C1083: include ファイルを開けません。'd3d8.h': No such file or directory」
と表示されてコンパイルが通りません。

DirectXSDKはさっき落とした最新版(サンプルみたらDirectX10も使えそう)で、パスはたぶん通ってます。
どうしたらコンパイルができるようになりますか?

105 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 12:58:24 ]
まず、stdafx.h関連はスレ違い。DirectX以前の話なんで、よそで勉強して頂戴。
で、最新のDirectX SDKって何?November2007ならリリースノートに

この DirectX SDK には次のコンポーネントは含まれていません

* Direct3D8 およびそれ以前の全てのバージョン

ってあるから、Direct3D8はサポート外なんじゃないの?
もしインストールしたSDKのIncludeディレクトリにd3d8.hがあるんなら、Includeパスの設定を再確認しれ。
あと、少なくともJune2006にはd3d8.hは入ってるのを確認した。

106 名前:デフォルトの名無しさん [2007/12/21(金) 20:10:39 ]
November2007です、d3d8.hがなくて、代わりにd3d10.hが入ってました。
アンインストールしてJune2006入れてきます。ありがとうございました。

107 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 21:01:44 ]
June2006にもd3dx10.hはあるけどね。
あと、そのページはDirectX8について記されてるんだけど
DX10がやりたいならよそを見たほうが良いよ。
初期化まわりは8→9→10で全然変わったからやり直しになるし。

あと、DX10は動かすにはVistaがいるから。念のために。

108 名前:デフォルトの名無しさん [2007/12/22(土) 22:01:46 ]
すいません
2Dでゲーム作成をしているんですが

LPD3DXSPRITE gSprite;

// シーンの描画設定(2D画像の描画)
RECT SrcRect = { a,b,120,120 }; // テクスチャ内でスプライトに使う範囲
D3DXVECTOR3 Center(0,0,0); // スプライト内の中心の位置

// 出力
gSprite->Draw(Texture, &SrcRect, &Center, NULL,D3DXCOLOR(0, 0, 0,0 ));

正常に絵を呼び出せるのですが
Rectのrightとbottomに1とか100とか何か値を入れるだけで
フレームレートが50も下がります・・・
&SrcRectの部分にNULLを入れてもなぜか50下がります
ですが0を入れると正常に動作します
なぜでしょうか、ご教授ありましたらお願いします




109 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 22:07:23 ]
Direct3DでWM_PAINTで描くのはありですか?

110 名前:デフォルトの名無しさん [2007/12/22(土) 22:07:59 ]
108ですが、読み込み部分です

//画像ファイル情報を取得
hr= D3DXGetImageInfoFromFile(name,&ImageInfo);
Width= ImageInfo.Width;
Height= ImageInfo.Height;

// スプライトに表示するテクスチャの初期化
if ( !key ){
hr = D3DXCreateTextureFromFileEx(
g_pD3DDevice, name, Width,Height,1,0,
D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_DEFAULT,
D3DX_DEFAULT,D3DCOLOR_ARGB(255,0,0,0),NULL,NULL,&Texture);
}

111 名前:108 [2007/12/22(土) 22:11:38 ]
連投すいません
問題点の大元が判明いたしました

D3DXCreateTextureFromFileEx(
g_pD3DDevice, name, Width,Height,1,0,
D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_DEFAULT,
D3DX_DEFAULT,D3DCOLOR_ARGB(255,0,0,0),NULL,NULL,&Texture);
}
widthとheightに大きな値を入れると重くなりました
1とか10だと正常です・・・



112 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 07:34:04 ]
プロファイリングしたら?
D3DXSpriteなんてただでさえDirectXのバージョンに依存するからみんな回避してるのに、
この情報だけで分かるエスパーは居ないと思う。

つPIX for Windows
つDevPartner Profiler

まずは、どこで処理時間が落ちてるか見たほうが早いよ。

113 名前:108 [2007/12/23(日) 09:34:36 ]
>>112
ありがとうございます
その後の調べでどうも大きな絵を大量に呼び出すと落ちる様子
たとえ呼び出し側での大きさの縦横は1*1でも、元の絵が大きいと
どのPCどんな処理でも避けられないらしいので
妥協して少し絵の大きさを改善してみますm(_ _)m
お答えありがとうございました


114 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 11:35:36 ]
てか、元のテクスチャのサイズがでかかったら
パフォーマンスが落ちるのは当たり前じゃ

115 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 11:37:43 ]
あなるほど

116 名前:108 [2007/12/23(日) 11:43:53 ]
>>114
いや、initでの呼び出しで重くなるのはわかるんですが
メインループの中では1*1でも重いんですよ・・・

117 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 12:00:51 ]
表示で小さくしてるってことは
内部的に縮小してるってことだ
LPD3DXSPRITEがどういうアルゴリズムで
拡縮してるかはしらんがバイリニアってことはないだろうし
ぼけたりすることを考えるとなんらかのフィルターをかけているのは想像つく
それを巨大なテクスチャに適用してるんだから重いのは当たり前

118 名前:108 [2007/12/23(日) 12:11:19 ]
私の書き方がわかりにくくてすいません
要は2000*2000の画像をinitで読み込んで
1*1の部分しか表示していないのにそれを10個ほど並べたら重いんです
3個くらいなら正常なんですが・・・・

フィルタ関連で重くなるようなら少し見直して見ますm(_ _)m
ありがとうございました

119 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 12:19:52 ]
だから・・・

>2000*2000の画像をinitで読み込んで

この時点で重い処理がすべて終わってるわけではない
簡単に言うとここではVRAM上に
2000x2000の領域を確保して画像の色情報を格納してるだけ

基本的には毎回描画のたびにこの
2000x2000の領域にアクセスして
そこの情報をバックバッファに転送することになる

元のサイズが大きければ大きいほど
転送のための時間がかかるし
何らかの処理をかければ当然重くなる

基本的には表示するサイズでテクスチャを作るのが普通

120 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 12:23:03 ]
ビデオカードによっては
2048×2048にしたら多少は改善されるかもね

121 名前:108 [2007/12/23(日) 13:17:50 ]
>>119
>>120

そうですか・・・initで読み込んだら以降はもう関係ないものだと勘違いしておりました
スキル不足を痛感いたします
ご教授本当にありがとうございました



122 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 13:22:14 ]
リファレンスでやってるだけでね?

123 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 13:50:19 ]
たかだか2048のテクスチャで最近のビデオカードが遅くなるかね〜?
なんか、致命的な間違いをしていると思われ。

124 名前:108 [2007/12/23(日) 14:28:32 ]
>>123
それを15〜23個くらい呼んでます

125 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 17:00:04 ]
そもそもVRAMが足りなくなってて
システムメモリ上に作られてるとか
あるいは
システムメモリとVRAMが共用になってて
バス速度がボトルネックになってるとか

126 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 17:42:47 ]
実はDX8で開発していますとか言い出すんじゃないだろうな。

127 名前:デフォルトの名無しさん [2007/12/23(日) 17:59:09 ]
DirectXを使ってWindowsのゲームを作りたいのですが、
お勧めの入門書を教えてもらえませんか?

作りたいのはビートマニアのように音とシンクした、
シューティングゲームです。
3Dグラフィックは使いません。

128 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 18:00:57 ]
今のDirectXで3D使わずに絵描くのって無理じゃ

129 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 18:08:07 ]
ぶっちゃけ
DirectX関連で「これ1冊あれば」って本はないんだよなぁ
3〜4冊やってようやく
あ、なんとなく分かってきたかも。となる

どの本もだいたい「サンプルを動かすための」ソースになってるから
なんでそうなってるのかが説明されてないし
応用しようとするととたんに動かなくなったり・・・

数をこなすと何をやってるのかがだんだんわかってくるので
自分でいろいろ応用することができるようになる

130 名前:127 mailto:sage [2007/12/23(日) 19:02:13 ]
何も知らない状態で、何から始めるのがいいか、
アドバイスをもらいたいです。

>>128
3D描画しかできないんでしょうか?
3Dを使って2Dの描画ができるならいいんですが、
あまり効率がよくないならDirectXを使うこと自体考え直します。
メインでやりたいのは音の制御なので、描画はそんなに凝りません。
シューティングゲームなので、図形の衝突判定ができると便利かもしれませんが。

>>129
それじゃあ、とっかかりとして何を参考にするのがいいんでしょうか?
サンプルを見て数をこなして、少しずつ把握していくしかないんでしょうか?

131 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 19:06:45 ]
>>130
ゲーム製作初心者なのか
DirectX初心者なのかにもよる



132 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 19:14:48 ]
>>130
3Dを使って2Dの描画ができるならいいんですが

OK

133 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 19:19:08 ]
>>130
DirectX9でスプライトが一番お手軽だと思われ。

134 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 19:37:25 ]
>>130
シューティングゲーム製作本出てるぞ
それを参考にすれば?

135 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 19:59:17 ]
>>124
なるほど。VRAM足りてないね。
1024*1024のA8R8G8B8テクスチャが大体4MByteね。
2048テクスチャだと4倍の16M。それが15個で240M。23個なら368M。

ちょっと無茶な設計になってると思われ。
不要なテクスチャは必要な時だけ確保するようにした方が良いし、
テクスチャは効率的に隙間無く活用した方が良いよ。

136 名前:127 mailto:sage [2007/12/23(日) 21:10:44 ]
>>131
>>131
ゲーム制作初心者です。プログラミング歴も1年程度です。
ただ、Javaで簡単なシューティングゲームを作ったことはあるので、
シューティングゲームのアルゴリズムに関してはだいたいどうやるか決めています。

分からないのは音の精密な制御で、ゲームの進行と正確にシンクさせる部分です。
その部分をどうやっていいのか、イマイチ当たりがつかない状況です。


137 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 21:19:44 ]
>>136
入門書の枠からは外れてるかな。
再生時間'(再生位置)を取得させれば良いだけの話だけど、
この手のゲーム以外で使うことはほとんど無いため扱わない。
ストリーミングバッファの解説が載っていればそれを応用すれば出来ることに気付くかも知れんが。

138 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:48:37 ]
広大なマップを作りたいんですが、バカ正直にモデルを作って読み込んだら物凄く重たくなってしまいました。
程よいメッシュ数で一定区画毎のモデルを用意して、必要分だけ読み込んで表示するのでしょうか??

139 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:16:12 ]
>>138
東京から大阪へ行くのに新幹線で行くのでしょうか?   という質問をされてどう答えろと。

140 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:31:31 ]
東京の六本木を歩いてるだけのシーンでも、ニューヨークとかパリとか地球全部描いてるわけか?
そんな恐るべき無駄は止めた方がいい

141 名前:138 mailto:sage [2007/12/24(月) 01:09:58 ]
>>139
??
夜行バスでも行ける、ってことですか??
でも、新幹線で行けるならそれに越したことはないですし、>>138の方法でイイってことかな・・・。
>>140
そ、そんなことはしません(汗)

今までゲームをしてきて、当たり前のように見てきた広大なフィールドを実現するのがこんなにも
たいへんなことだなんて・・・
ゲーム開発者の人を改めて尊敬します。

ttp://www.acecombat.jp/ace6/feature/images/ace6_image14.jpg
これとか、すごすぎです(;´д`)



142 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:20:10 ]
地面はまっ平ら
木はビルボードにしか見えないんだが

143 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:32:33 ]
ワラタ

144 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 08:39:45 ]
>>141
アプリケーションに正解なんて無いぜ?
>程よいメッシュ数で一定区画毎のモデルを用意して、必要分だけ読み込んで表示するのでしょうか??
つまり>>139の例で言うと新幹線で行くのも正解だし、バスで行くのも正解、歩いていくのも正解だろ。
自分の案があるならそれを試した上で軽くなる方法が無いか聞かないと。

145 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:02:56 ]
DX9 2007Nov .Net
HLSLについての質問です。
以前PassがBeginPassとEndPassに変わったと言うやりとりがありましたが
上がっているHLSLのサンプルがことごとくエラーを出して正常に実行できません。
サンプルにSDKのバージョンを合わせれば動くでしょうが、そこから最新のバージョンに動かすように修正が出来ませんでした。
現在のバージョンで動くHLSLのシンプルなソースや解説をしているサイトは無いでしょうか。
せめてHLSL部分だけでもあればいいのですが、fxファイルが正常に読み込めエラーが出たりとか・・orz

146 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:12:49 ]
きちんとヘルプが付いてきているだろ。
それで何が問題なんだ?

147 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:53:43 ]
>>145
別にHLSLの部分は何もかわってないぞ
fxファイルが読み込めないのは
どっかに構文エラーがあるからじゃね?

148 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:13:46 ]
>>145
>上がっているHLSLのサンプル

どこのサンプルだよ?

149 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:44:39 ]
>>148
Pass()のままのところもあります(修正してもメモリ周りでエラーが出たり)

t-pot『HLSL』   (画像の下辺りにサンプル)
ttp://tpot.jpn.ph/t-pot/program/72_HLSL/index.html

DirectX9での上位レベルシェーダー言語(HLSL)  (最下にサンプル)
ttp://www001.upp.so-net.ne.jp/y_yutaka/labo/directx/shader_hlsl.html

Shader.jp - Articles-第4回「HLSL スタート」   (上から1/5程の位置にある赤字文の下にサンプル)
ttp://www.shader.jp/xoops/html/modules/xfsection/article.php?articleid=14

その7 HLSLによる極短レンダリング:サンプルプログラム   (画像の下辺りにサンプル)
ttp://marupeke296.com/DXPSSMP_No7_HLSLRendering.html


150 名前:138 mailto:sage [2007/12/24(月) 12:31:45 ]
>>144
分かりました。
ありがとうございました。

151 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 21:55:38 ]
>>149
俺もうごかねぇや。
てか自前のでさえ動かなくなってた。
詳しく調べてないから分からんが仕様が数箇所で変更されてエラーが複雑化しているように思える。
ぶっちゃけ去年辺りのSDK使えばいいんじゃね?



152 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:36:33 ]
VC++2005、windowsSDK、DirectX9 SDK(October 2006)の環境で
2Dの簡単なゲームを作ろうとしている所です

フルスクリーンモードでSetDialogBoxModeを使用している
全ソース付きのサンプルプログラムはどこかにありませんでしょうか?
できればフルスクリーンモードでのメニューバー表示のサンプルがあると助かります。

一応自分でもこれを実現するために
こちらの方のページを参考にしてほぼ丸写し状態でやってはみたのですが、
どうもメニューが表示されません。
ttp://www.geocities.jp/is3000nx/reading/dev/dev.html

ただ、SetDialogBoxModeを呼び出しても呼び出さなくても、
メニュー自体は存在しているようで、マウスで画面の上のあたりを
クリックなどしますと、瞬間的にメニューが現れ、メニューコマンドが実行されますが^^;

こちらに書いていない部分(DX初期化関連、ウィンドーモード、メッセージ処理etc…)
などで何か気をつける点でもあるのでしょうか???

153 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:48:55 ]
あ、VC++2005はExpressEditionです。よろしくお願いします

154 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 23:54:06 ]
板ポリゴンとかにテクスチャを貼ると、テクスチャが何故か右下にずれるのですが、何故なのでしょうか?
どうすれば直りますか?

155 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 00:28:43 ]
>>154
何かを間違っているから。

156 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 05:24:58 ]
どうすれば直りますか?

157 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 05:29:57 ]
間違いを修正する

158 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 05:49:02 ]
どうすれば間違いを

159 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 06:32:38 ]
どうやって貼りましたか?

160 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 08:12:48 ]
誘導
つttp://pc11.2ch.net/test/read.cgi/tech/1187922645/

161 名前:デフォルトの名無しさん [2007/12/25(火) 09:11:08 ]
DirectX9.0bSDK(2004October)付属サンプル2の、虹色の三角形表示プログラムについての質問です。

改造して四角形を表示させたいのですが、うまくいきません。

CUSTOMVERTEX vertices[] = に
{ 50.0f, 50.0f, 0.5f, 1.0f, 0xff0000ff, },
を追加することで頂点を4つにし、

Void Render()内の
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); を
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
にすることで、2つの三角形を連続して描画し、結果的に四角形になるかと思ったのですが
三角形一つしか表示されません。

また、
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); を
g_pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLESTRIP, 0, 0, 4, 0, 2 );
にすることで上記と同じ効果になるのかと思ったのですが、今度は三角形自体消えてしまいます。

どうしたら四角形が表示されますか?



162 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 09:26:56 ]
カリングされてるんじゃないかね?
SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE)

163 名前:161 mailto:sage [2007/12/25(火) 10:00:08 ]
できました!
あと頂点の順番?がおかしかったみたいで |X| ←こんな形になったけど、頂点入れ替えたら四角形になりました!
ありがとうございます!              ̄

164 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 10:35:15 ]
は?
頂点の順序が間違ってたのが原因、って事?

165 名前:161 mailto:sage [2007/12/25(火) 10:52:03 ]
>>164
三角形が一つしか表示されないという問題は
->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
で解決したんですが、今度は頂点の順番がおかしいせいか欠けた四角形になったんです。
/|  と  |\  の三角形の組み合わせで |X| こんな形に
 ̄       ̄                     ̄

166 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 14:42:39 ]
>>161
どうでもいいけどoct2004は9.0cだったと思うが

167 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:46:06 ]
疑問に思ったんだけど、四角形を描画する場合、頂点バッファを作ってDrawPrimitive()で描画するのと、
作らないでDrawPrimitiveUP()で描画するのとどっちが速いですか?
頂点バッファは頂点数が多いほど効果を発揮すると聞いたような気がするのですがどうなのでしょうか?

168 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:57:45 ]
疑問に思ったんだけど、なんで自分で試さないんですか?

169 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:21:12 ]
>>167

DrawPrimitiveUPのほうが早いですよ。
多くの方が様々なOSやビデオカードで検証済みです。










とか言ったらこいつは何も考えずにDrawPrimitiveUP使うんだろな。


170 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 22:21:13 ]
>>169
ありがとうございます。
やはり、頂点バッファは頂点数が多いほど効果を発揮すると言う事でしょうか?

171 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 22:23:17 ]
>>170
そうです。Microsoftが検証済みです。



172 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:31:37 ]
>>152
私も同じ事やろうとしたけど、どうも上手くいかないですね
でもこの人の作ったゲームだと実装されているっぽいし…
本当にSetDialogBoxModeを使ってるのかなぁ

この関数使ってまともにメニューが表示できた人っていますか?
というかフルスクリーンのメニュー表示はみなさんどうやってます?

173 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:40:45 ]
ステートブロックがいまいち良く理解できません。
1.普通のステート変更を最小限に抑えて変更する
2.(CreateStateBlock()で)キャプチャしたステートブロックを毎回適用する
3.カスタムステートシーケンス(BeginStateBlock()〜End...()まで)を適切に使用する
と三つのやり方があると思うんですが、
何も考えずに2.のやり方でも効率的にできるんでしょうか。
それとも多少のやりくりは必要なんでしょうか。
ピュアデバイスだとステート変更は変更するたびに行われるんでしたっけ?
ステートブロックの仕組みとかがわからないのでちょっと迷ってます。

174 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:30:21 ]
効率いいかなんてやってみればわかるだろ。アホか

175 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:47:54 ]
このスレっていったいどんな質問なら答えてくれるの?w

176 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 03:02:27 ]
パラドックス

177 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 04:01:19 ]
初心者ホイホイなのかな

178 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 07:20:42 ]
初心者であろうがなかろうが、自分で試せるものを試さないってのは単なる怠慢だと思うが。

やり方が分からないんであれば、どっちが効率的?などと聞くんじゃなく素直にやり方そのものを質問すべき。

179 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 13:52:41 ]
このスレいらねーなwwwww

180 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 14:13:55 ]
レンダリングステートを変更する事は、結構重いコストとして扱われるので、
Dx6まではコロコロ変化させずに、同じレンダリングステートのメッシュやターゲットを纏めて
レンダリングしたり、ステートの変化が最小になる順番でステート郡をレンダリングしてたりしたんだけど、
ステートブロックを使えば、複数のレンダリングステートの変化を一度にデバイスに適用出きるので、
上記の事をあまり意識しなくて良いレンダリングループが作れるようになったわけ。

でも、別にレンダリングするターゲットやステートの種類によってはステートブロックを使わなくても
そんなに処理が重くならないのも事実で、自分が作成しているプログラムでステートの変更が
重い処理だな、と思ったらステートブロックを試してみれば良いんじゃないの?
GPUとGPUへのバスの帯域、レンダリングするプリミティブの数、ステートの変更量といった要因が
あって、トータルで考える必要があるから、なんでもかんでも管理するのは効率的ともいえないし、
大規模エンジンを作るのに、ステートの管理コストを嫌って管理しないのも効率が逆に悪くなるし。

ケースバイで。効率的ってのは目的が無いと決定しない項目だから。

181 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 14:22:58 ]
>重い処理だな、と思ったらステートブロックを試してみれば良いんじゃないの?

そうなんだが、それを自分で試そうとしない輩が多すぎるな



182 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:19:34 ]
VisualC++2005、DirectX9.0c SDK、Windows SDKの環境です。

キャラクターのアニメーション等をさせる場合、
画面を毎秒60とか30フレームとかで更新、のような処理をしなければならないと思うのですが
その毎回の画面の更新タイミングはどのような手順で取るのでしょうか

183 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:38:29 ]
>>182
自分で試せ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<170KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef