トップページgamedev
1001コメント310KB

鬱だ氏のう DirectX (Part 6)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものでス02/10/07 01:00ID:???
DirectXについてマターリと技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。

■旧スレ(プログラム板)
http://piza.2ch.net/tech/kako/966/966655286.html  (Part 1)
http://pc.2ch.net/test/read.cgi/tech/997101556/   (Part 2)
http://game.2ch.net/test/read.cgi/gamedev/1005119775/ (Part 3)
http://game.2ch.net/test/read.cgi/gamedev/1016276254/ (Part 4)

コピペスマソ
0631名前は開発中のものです。02/11/15 21:58ID:???
>>630
スプライトでならいくらでも。
0632名前は開発中のものです。02/11/16 03:49ID:???

             人ヾ
           / ゚o\
          (´Д`O )
           (⊃o⊂゚)              
             U U
    ______∧_______
    クソスレはちゃんと削除依頼しないと
    ageられちゃうんですよ…
0633名前は開発中のものです。02/11/16 06:17ID:???
>>630
パーティクルでならいくつか。
0634名前は開発中のものです。02/11/16 08:03ID:???
>>630
サーフェスロックしてごにょごにょ
063552302/11/16 11:40ID:???
サンプルもD3DCREATE_MIXED_VERTEXPROCESSING指定してデバイス作って
文字表示してる奴はDrawText削って実行すると同じようにロックしてしまうんで、
バグだと思うんですよう。
一応環境書いておきます。
Athlon1G、Win2000sp3、geForce3、DirectX8.1b
同じ症状起きる人いないですか?
0636名前は開発中のものです。02/11/16 12:26ID:???



             人ヾ
           / ゚o\
          (´Д`O )
           (⊃o⊂゚)              
             U U
    ______∧_______
    クソスレはちゃんと削除依頼しないと
    ageられちゃうんですよ…
0637名前は開発中のものです。02/11/16 13:31ID:uUfXAzbl
D3DXFontで文字が表示されません・・・。
一応、HRESULTをチェックしても成功はしているみたいですが・・・。
LCPWSTRでなに?おしえて〜!
0638名前は開発中のものです。02/11/16 13:35ID:???
LPCWSTR?
いわゆる16bit unicode文字列だよ
0639名前は開発中のものです。02/11/16 13:41ID:uUfXAzbl
DrawTextWの第一引数でそれをしてするんだが、
const型の文字列じゃないといけないの?
char *strなんかで送られてきた文字列を表示させたいけど、できない・・・
0640名前は開発中のものです。02/11/16 13:46ID:uUfXAzbl
わかんないから、CreateSurfaceFromTextでテキストつかうよ・・・
0641名前は開発中のものです。02/11/16 14:06ID:???
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_mfcnotes_tn059.asp
0642名前は開発中のものです。02/11/16 16:17ID:???




             人ヾ
           / ゚o\
          (´Д`O )
           (⊃o⊂゚)              
             U U
    ______∧_______
    クソスレはちゃんと削除依頼しないと
    ageられちゃうんですよ…
0643名前は開発中のものです。02/11/16 16:42ID:???
   ↑
お前、寒いんだけど・・・
0644名前は開発中のものです。02/11/16 17:46ID:???
DirectDrawSurfaceで、プライマリサーフェスを
SYSTEMMEMORYに作るのはまずいのでしょうか。
サーフェス全部SYSTEMMEMORYにしてみたら
低スペック(Pen200)でも快適な動作になったので、
この方法を採用してみたいのですが、
どの文献見てもプライマリはビデオメモリに
と書いてあるので・・・
0645あぼーんNGNG
あぼーん
0646あぼーんNGNG
あぼーん
0647名前は開発中のものです。02/11/16 20:51ID:8J2K3wmZ
EQとかフル画面専用のゲームを
どうにかしてウインドウモードで動かせませんか?
0648名前は開発中のものです。02/11/16 21:52ID:???
>>647

void main(void)
{
  while(1)
    SendMessage(GetForegroundWindow(),WM_CLOSE,0L);
}
0649名前は開発中のものです。02/11/16 21:59ID:???
>>637
>LCPWSTR
LPCWSTRだろ。
マルチバイト文字列へのポインタ。

LP ポインタ
C const
W ワイド文字
STR 文字列
0650名前は開発中のものです。02/11/16 23:04ID:???
>>523
 SkinedMeshで実験してみた。家の環境Cele1.3,GF2MX400,Win2KSp2、Dx8.1で、
CreateDeviceのパラメータのpModeInfo->dwBehaviorは128(多分MIXED)、
DrawTextはコメントアウトしているけど、他のウィンドウで隠しても問題は
おきてない。
 あと、他人に試して欲しいなら、もうちょっと具体的に書いたほうがいいぞ。
俺も自分の方法が君の条件を満たしているか、イマイチ自信ないし。そもそも
やり方を探るのが面倒だ。
065165002/11/16 23:13ID:???
ちなみに、ランタイムはリテール版。
0652DirectX9!!02/11/16 23:14ID:???
DirectX9!!
http://www.microsoft.com/downloads/release.asp?ReleaseID=45160&area=search&ordinal=1
0653名前は開発中のものです。02/11/16 23:15ID:???
>>648
WM_CLOSEかよ!!
0654名前は開発中のものです。02/11/17 00:35ID:PWlU8B0V
まことに申し訳なく思う次第です。
ただいま、D3DXFontで文字を表示させることに成功したのですが、
一つだけ疑問に思う個所が御座います。
実はD3DXFont::DrawTextで日本語を表示させた時、画面の左隅や上端のほう
で表示させると、文字の表示がおかしくなってしまいます。
まことに遺憾では御座いますが、何事ぞご伝授のほうよろしくおながいいたします・・・。
065552302/11/17 00:46ID:???
>>650
わざわざ試してもらってすいません。
2MXは問題が起きないということは3との相性が悪いのかな?
ご指摘の通りもう少し具体的に書きます。

サンプルのTutorialsでも同じ症状が起きるんで、
簡単にいじれるTutorialsのTut04_Lightsあたりで説明します。
CreateDeviceのD3DCREATE_SOFTWARE_VERTEXPROCESSINGを
D3DCREATE_MIXED_VERTEXPROCESSINGにして、
ビルド→実行→ウインドウを完全に隠れる状態にする。
これでカーソルが飛び飛び状態になります。
CreateWindowのウインドウサイズを大きくするとさらにはっきりします。
ランタイムはデバック、リテール問いません。

とこんな感じなんですがどんなもんでしょう?
0656名前は開発中のものです。02/11/17 03:27ID:???
>>654
君は慇懃無礼という言葉を知っているか?
0657あぼーんNGNG
あぼーん
0658あぼーんNGNG
あぼーん
0659あぼーんNGNG
あぼーん
0660あぼーんNGNG
あぼーん
0661あぼーんNGNG
あぼーん
0662あぼーんNGNG
あぼーん
0663あぼーんNGNG
あぼーん
0664名前は開発中のものです。02/11/17 18:14ID:???
このAA上げ嵐はどうやら1人の手によるものらしい。
ヒマなんだなぁ〜(w
0665名前は開発中のものです。02/11/17 19:27ID:z7dk3Kxz
頂点バッファの描画登録を別スレッドにて実行させようと考えてますが、
その度にスレッドを作るのはあぼーんですよね。
0666名前は開発中のものです。02/11/17 22:55ID:mLU4AxUE
ゲームってオブジェクト指向で作るんですか?
0667名前は開発中のものです。02/11/17 22:58ID:z7dk3Kxz
きちんと管理できればどうでもいい。
0668名前は開発中のものです。02/11/17 23:17ID:???
>>666
RPGだったらプライヤやアイテムや敵キャラのクラスとか作ると便利だよん
プレイヤーが攻撃力100の武器を装備して攻撃力が二倍になる補助魔法がかかってて
装備しているアクセサリで命中率が上がって敵の属性効果の影響でダメージが半減する
なんていう一連の動作を管理してくれるクラスは何かと便利です
つまり、武器の装備はプロパティをいじるだけ
敵に攻撃するときはメソッドを呼ぶだけ、
敵に攻撃されたときはイベントを呼ぶようににするってこと
ソースコードの見通しが非常によくなる上に、
新機能の追加も簡単になるね
たとえば、敵からダメージを受けたときに自動的に反撃する技を追加しようとしたとする
そのときは敵からダメージを受けたときに呼ばれるイベントに処理を追加するだけだしね
もしクラスでなくて素の関数書いたとしたらどんどんスパゲッティが出来上がっていくし、
新しく記述した影響で予期せぬバグが発生するかもしれない
クラスならバグが発生する確率は低いよね
でも、なれないときは単なる構造体のほうが便利かもね

まあ、この場合はRPGだけど、ほかのジャンルでも同じようなことがいえるよ
0669名前は開発中のものです。02/11/17 23:49ID:???
>>668
>もしクラスでなくて素の関数書いたとしたらどんどんスパゲッティが出来上がっていくし、
構造体と関数の組み合わせでスパゲッティを作る奴はクラスを使っても同じ
そういう奴はクラス同士の連携部分で結局スパゲッティになる
それからイベント処理ならクラスではなくスクリプト的なデータを持たせるだけでクラスは関係ない
イベントを追加するごとにわざわざプログラム側を直すつもりなのか?
その方が見通しが悪くなって余計なバグを生む
0670名前は開発中のものです。02/11/17 23:51ID:???
> そういう奴はクラス同士の連携部分で結局スパゲッティになる

ツリー構造を作るのは得意なんだが、
関連の表現については不得意な人が多いよね。
0671名前は開発中のものです。02/11/18 01:23ID:???
駄目な企画に当たるとそういう構造も台無しで
力の浪費になるけどな


0672名前は開発中のものです。02/11/18 01:38ID:???
>>670
苦手です・・・
結局モジュール間で互いの詳細に依存してたりすると鬱。
というか、依存してよいものとしてはならないものの区別をつけるのが苦手。
0673名前は開発中のものです。02/11/18 03:06ID:???
>>665
メリットなさそうだけど…
へたな作りだと登録が終わる前に描画されて、中途半端な描画しかできないとか
キー入力と描画のタイミングが思いっきりずれて変な操作性になったりとかしない?
0674名前は開発中のものです。02/11/18 10:13ID:???
>>669
俺は668じゃないけど
>構造体と関数の組み合わせでスパゲッティを作る奴はクラスを使っても同じ
 構造体と関数の組み合わせできちんと管理できる人は、それでいいと思う。ただ、
クラスのほうが若干楽になる可能性が高いのは確か。
 まあ、何が合うかは人次第なので、余裕があれば自分に会う方法を試すのが
一番でしょう。余裕が無けりゃ、今までの方法でいくのが確実かな。

>それからイベント処理ならクラスではなくスクリプト的なデータを持たせるだけで
>クラスは関係ない
 668の言うイベントは、オブジェクトのイベントでゲームのイベントじゃないよ。
0675名前は開発中のものです。02/11/18 10:44ID:Xph0uw4U
>673

そうでもしないとパフォーマンスが稼げないんだよね。
GeForce2MXなんだけど256x256のテクスチャ張ったスプライトを
50ぐらい描画するとフレームレートおちる。
でかいモデルになると描画終了まで同期取ってるとさらに遅くなる。
コールバックがとれればいいんだけど、DXはスレッド分けるの前提にしてるみたいだし。
0676名前は開発中のものです。02/11/18 10:49ID:???
っていうか、なんでDirectX使うのこんなに難しいんだ?
0677名前は開発中のものです。02/11/18 11:36ID:v9eMDMzi
ポインタ使わないでゲームできますか?
0678名前は開発中のものです。02/11/18 11:57ID:???
>677
逝ってよし
0679名前は開発中のものです。02/11/18 12:08ID:???
>>676
自力でエンジン作るよりは1G倍簡単だよ。
動くだけの3Dエンジン作るのならそう難しくないが、
アクセル使うとなると話は別。てゆうか1人では無理。
0680名前は開発中のものです。02/11/18 12:31ID:???
>>675
 フレームレート落ちるって、どのくらい?そしてそれは、垂直同期を
取っているのか取っていないのか、とか判断のための情報が少なすぎ。
 それに描画終了まで同期を取るって、使っているDirectXのバージョンは
いくつ?少なくともDirectX8でDrawPrimitive使うなら描画終了まで待つ、
何て事はしないはずなんだけど。
0681名前は開発中のものです。02/11/18 13:26ID:bSTW048q
http://homepage2.nifty.com/natupaji/DxLib/index.html

を使ってるんですが、これに欠点はないですか?
またこれよりいいDIRECTXのライブラリを知ってるなら教えてください。
0682名前は開発中のものです。02/11/18 13:27ID:???
>>523
 >>655に書いてある通り、Tut04_LightをMIXEDにして試してみた。
特に問題なし。ウィンドウの上にエクスプローラーや、タスクマネージャー
を乗っけてみたけど、問題なく動いているよ。上に乗ったウィンドウを
どかせばちゃんとでてくるし。DirectXのプログラムを動かしているから
CPU使用率は100%だけど。
 環境は
CPU Pen3 550MHz
VGA GeForce3(無印)
OS Win2KSP2
DirectX8.1(SDKのヤツそのまま)デバッグランタイム

 変な常駐物とか、使ってないか?後8.1bをアンインストールして
8.1に戻すとか、ドライバを変更するとか、環境周りもいろいろ
試してみたら?
068368202/11/18 13:35ID:???
CPU使用率が100%なのは、DirectXだからじゃなく、メッセージ無ければ
とにかく描画してるからだったね。すまそ。
0684名前は開発中のものです。02/11/18 14:24ID:SvLB2JUF
>680

当方DX8.1
垂直同期はとってません。
Windowモードなので、1/60fpsになるように自前で調節してます。

>少なくともDirectX8でDrawPrimitive使うなら描画終了まで待つ、
何て事はしないはずなんだけど

そうなんですか?SDKのドキュメントにはそんなこと書いてなかったので、
そう思い込んでいたのですが。
068568002/11/18 15:23ID:???
>>684
 ちょっと計算してみたんだが、256×256×50×60=196608000ピクセルの
描画をしていることになるんだよね。これに加えて画面やZバッファのクリア
なんかもあるんで、GeForce2MXの最大フィルレート350MPixelにかなり近い
処理になってるんじゃないか?
 少なくとも、頂点バッファの登録(DrawIndexedPrimitive、TriangleListを
つかうとして)は大した時間が掛かっているとは思えないんで、可能ならフィルレートが
高いGeForce3なんかで試してみることをオススメするよ。
0686名前は開発中のものです。02/11/18 15:26ID:???
DirectGraphicsとあわせてウィンドウモードで
動画を再生しようとしているのですが、うまくいきません。

デバックしてみたところ
IVideoWindowのput_OwnerのところでE_NOINTERFACEを返していました。
put_Ownerには::CreateWindowExの返してくる値を
使っているのですがDirectGraphicsとの関係で上手くいかない
などあるのでしょうか。
068768502/11/18 15:27ID:???
 連続書き込みスマソ。逆に、もっと小さいサイズのものをたくさん(1000くらい?)
描画してみれば、どっちが限界にきているのか分かるんじゃないの?
0688名前は開発中のものです。02/11/18 15:34ID:Xph0uw4U
>685
ありがと。試してみる。
D3Dってスプライト表示させるのを考えると貧弱なんだな。
0689名前は開発中のものです。02/11/18 16:14ID:XZ6tSCzR
大野ボンバーエ 大野ボンバーエ 大野ボンバーエ
0690名前は開発中のものです。02/11/18 16:17ID:???
>>684
>Windowモードなので、1/60fpsになるように自前で調節してます。
秒間0.0166・・回しか表示しないのか・・・
一分に一回しか表示しないとは凄い調整の仕方だ
0691名前は開発中のものです。02/11/18 16:57ID:???
かなり難しいげーむだな。
0692名前は開発中のものです。02/11/18 17:33ID:Xph0uw4U
自分で書いてワラタ。
ミスです。
0693名前は開発中のものです。02/11/18 21:42ID:???
>>688
単に GeForce2 MX が貧弱すぎるだけだよ。
069468502/11/18 22:06ID:???
>>693
 それは確かだが、恐らく内臓グラフィックの次にユーザーが多いからな>GeForce2MX
これで重たいゲームを作るのは、勇気が要るかも。
0695名前は開発中のものです。02/11/18 23:25ID:???
そもそも256*256なんてスプライトを50枚も表示する?
0696名前は開発中のものです。02/11/19 00:45ID:???
どこかに無駄があってそれで遅くなってると思うが、、、
0697名前は開発中のものです。02/11/19 00:46ID:rNDIE8GL
なんかDX9いれると、動作がキビキビなんて話がでてるがホンマかいな
winの描画にDX使うのは次期Windowsからだろ?
0698名前は開発中のものです02/11/19 02:48ID:???
背景を描画する時って皆さんどうしてますか?
横360度、縦90度(真上から水平まで)視点を変更できるゲームをつくって
おりまして、最初は円筒形の内側にテクスチャを張りフィールドが
進むのと同時にその円筒も移動、かつ回転することで景色がどんどん
ながれていくような感じにしていたのですがなんか不自然なのです。
0699名前は開発中のものです。02/11/19 02:50ID:???
skyboxとかで検索しろよ
0700名前は開発中のものです。02/11/19 03:06ID:2iAjk+S7
ひらたくいうとビルボードの位置座標バージョン。
0701名前は開発中のものです。02/11/19 08:27ID:???
>>695
最初のほうに表示したスプライトのほどんどは
上書きされて見えない罠
0702名前は開発中のものです。02/11/19 09:17ID:rNDIE8GL
ソート&クリップしる ってことか
0703名前は開発中のものです。02/11/19 10:13ID:rNDIE8GL
GF5キタ━━━━(゚∀゚)━━━━!!!!!!
2スロット占領キタ━━━━(゚∀゚)━━━━!!!!!!
0704名前は開発中のものです。02/11/19 10:46ID:???
× GF5
○ GFFX
0705アフォプロ02/11/19 10:48ID:???
>>698
基本的には好きな方法でやればよし。天球等もあります。
自然に見えない場合、シーンデザインの問題である事もある。
処理方式はあくまでも道具にすぎないので。

>>695
そうね、
256x256のTextureだと、GF3だろうがなんだろうが、10枚くらいで60フレームは限界きちゃうと思うがどうか。。
基本は、最終描画エリアに近いサイズのソース、なるべくキャッシュにヒット、連続配列するようにして、
どうしても密度高めたいときはMipMap等の平行使用が良いかと思われ。

>>オブジェクト指向
ウチは(っつうか、どこもそうだと思うけど)、
DirectXを完全にラッピング化してポリゴンエンジン作ってます。
そして描画するときはポリゴンエンジンだけを呼び出す。
こーしとくと、1〜2年毎にVersionUpするDirectXでも安心。

あと、VCだと、コード補完してくれるのが何気に便利。
私の場合はLinux用だろうがWindows用だろうがVC使ってまふ。
KDevelopもコード補完してくれるんだけどね、、VCに慣れてしまった。

0706名前は開発中のものです。02/11/19 10:51ID:zUDHMGtw
ポリゴンを二つ以上描写するときは
drawprimitiveを二回以上使うということですか?
0707名前は開発中のものです。02/11/19 11:17ID:???
>>706
お前は一万ポリゴン描くのに一万回使うのか?
そんな馬鹿なことを聞いている暇があったら首吊って瞑想しろ
0708アフォプロ02/11/19 11:26ID:???
>>706

普通は質感とモデル単位。

0709名前は開発中のものです。02/11/19 11:35ID:???
>>707
なにか嫌なことでもあったのか?
0710名前は開発中のものです。02/11/19 13:00ID:Hqxr0J9c

>>706
マテリアルごとにまとめて描画するといいです。
1フレーム中、DrawPrimitiveは多くても100回くらいがいいそうです。
0711bloom02/11/19 13:01ID:tNxWidGo

http://www.agemasukudasai.com/bloom/
0712名前は開発中のものです。02/11/19 14:20ID:???
回数を気にするのではなくレンダーステートの変更を出来るだけ少なくするように
種類に応じてソートする等の対策を講じた方が良い
季節の変わり目に時々頂点バッファを無理矢理一つにまとめようとする馬鹿が出没するが
百害あって一理無し
0713名前は開発中のものです。02/11/19 14:21ID:???
>>712
なにか嫌なことでもあったのか?
0714名前は開発中のものです。02/11/19 14:24ID:???
>>713
実は真性包茎で素人童貞なのです
0715名前は開発中のものです。02/11/19 14:28ID:lfPOAqq2
shadeからxファイルに変換するにはどうすれば良いのでしょうか?
0716名前は開発中のものです。02/11/19 15:25ID:???
>>715
そういう用途でのSHADEでのモデリングはあまりお薦めしない。
0717名前は開発中のものです。02/11/19 15:30ID:???
シェードはデータの構造が独特だからポリゴン数が増えやすくゲームには向かない
いったんデータをMAXとかに突っ込んで最適化をかければいいんだけど、
だったら最初からMAXを使うという落ち
0718まっつん02/11/19 16:16ID:???
>>715
テクスチャも出力できるプラグ印をどっかのそういう筋の人がフリーソフトで出してたから探してごらん。
0719名前は開発中のものです。02/11/19 17:22ID:???
萌え
0720名前は開発中のものです。02/11/20 00:49ID:tNCQ9Lo8
シェードのスピリット買ったけどUVデータ吐き出さなかったよ。
トゥルースペースがいいらしい。
サンマンぐらいのでアニメーションができて。
六万だすとスキニングができるかも?
0721名前は開発中のものです。02/11/20 03:23ID:???
>>720

tSでXファイルはいてみますた
ttp://click2k.net/up/data/1130.lzh

D3DSampleのSkinned Meshでみれる
0722名前は開発中のものです。02/11/20 08:27ID:7DiAVuBN
Xファイルそのままはおすすめしないぞ。
COBよんだほうがいいよ
0723名前は開発中のものです。02/11/20 08:33ID:OQyPiVnq
COBってなんですか?
0724名前は開発中のものです。02/11/20 08:44ID:JqQGsa68
cob trueSpaceのフォーマt
0725bloom02/11/20 08:56ID:jL1YO+9H

http://www.agemasukudasai.com/bloom/
0726名前は開発中のものです。02/11/21 01:00ID:30XpHx5c
E m a c s で 補 完 し る !
0727名前は開発中のものです。02/11/21 01:05ID:30XpHx5c
>>681
2D せんにょうってなんだよ!
O G R E つ か え え !

尿意マンマン。
0728名前は開発中のものです。02/11/21 02:42ID:uI1ub6QO
MADE WITH NO LIMITS IN MIND.

JOIN US FOR A LIVE ONLINE EVENT
AS WE DEMONSTRATE THE POWER OF THE INDUSTRY
STANDARD DIRECTX9
HIGH LEVEL SHADING LANGUAGE. (HLSL)

WHEN : DECEMBER 11TH@11:00AM PST
WHERE : http://www.gamasutra.com/atideveloper ATI.COM
0729あぼーんNGNG
あぼーん
0730名前は開発中のものです。02/11/21 04:19ID:2K0AlEnT
http://www.flipcode.com/cgi-bin/msg.cgi?showThread=11-19-2002&forum=iotd&id=-1
日本のサイトとは珍しい
■ このスレッドは過去ログ倉庫に格納されています