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

DirectX総合スレ (Part2)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。04/09/22 23:30:32ID:anobjZYP
DirectXについては基本このスレで話していこうとものです。
基礎的な質問+高度な質問も簡潔かつ簡単に答えることをモットーにして頂き
このスレの回転を早めて常にアクティブなスレにしたいと思っております。
このスレに質問等を書かれる方はまず最初に自分でしっかりと調べたのちに聞かれることをお願いします。
質問に対する答えも簡潔に出来る限りわかりやすくお願い致します。

テンプレは >>2以降で
0123名前は開発中のものです。04/10/04 17:41:08ID:r/uVIviH
>122
いや初心者質問スレでもあったけどRADEON IGP345Mとか機能不十分のようだから、
「最近の」でも全てがとは言えないと思う
0124名前は開発中のものです。04/10/04 17:44:34ID:0nRK6gjd
>>120

エフェクト系の画像処理なら、何が入っているかわからないGPU依存
のハード機能使うより、自力でほぼ問題ない性能を発揮するCPU用の
コード書いた方が確実だからね。高速なメインメモリにDIB用フレー
ムバッファを取ってそこで演算した方が、処理速度の「最低線(最悪
の環境での処理速度)」を引き上げられる。
0125名前は開発中のものです。04/10/04 17:48:14ID:YRi3PMHC
いやRADEON IGP345Mは十分な部類に入ると思うぞ。
DX7世代の3Dゲームなら問題なく動くだろう。
0126名前は開発中のものです。04/10/04 17:52:16ID:YRi3PMHC
Direct3Dの一般的な透視変換行列を用いた場合
無限遠のZ値を求める計算はどうなるの?
z_far / ( z_far - z_near )であってます?
0127名前は開発中のものです。04/10/04 21:29:21ID:bl0Of2m3
無限遠ってどれくらい遠くのZ値なの?
無限って言うくらいだからどこまでもあるんだろ
0128名前は開発中のものです。04/10/04 21:49:25ID:a4FuiOHF
>>123
http://pc5.2ch.net/test/read.cgi/gamedev/1094627404/13n
 
↑の参照先BBSの内容だが、どういうゲームで「どう快適でない」のか
全く触れていないので、要するに主観情報のみであり評価不能。

RadeonIGP345Mとほぼ同程度の3D性能を持つビデオチップは
MobilityRadeonやRADEON無印とかVE。DirectX7世代。
(IGP345MはUMAなのでその点がどう影響するかは知らない)
 
これでだいたいの性能は想像できるでしょう。
 
俺はMobilityRadeon+Pentium-M(1.1GHz)使ってるので参考までに書くと
3DMark2001は大体1800前後。
Quake3やUnreal Tournament世代のゲームは標準設定で快適に遊べる。
FFはカクカク。おそらく例のyahoo掲示板の感想書いた人はこの手のMMORPGを
プレイしたのではないかと想像する。
0129名前は開発中のものです。04/10/04 21:49:27ID:5WdV+IRE
君が今いる場所で一番遠くにみえる場所はどこ?
そこが無限遠だよ
0130名前は開発中のものです。04/10/04 21:54:20ID:kL12U+pa
>>127
View空間上の視錘台を透視変換行列で変換すると
台形が直方体になるじゃない?
これのZ値の計算式は以下のようになる。
z' = z_view * z_far / ( z_far - z_near ) - z_near * z_far / ( z_far - z_near )
w' = z_view
z_viewproj = z' / w'

このz_viewを∞として、上の式に代入して因数分解すると以下のようになる。
z_viewproj = z_far / ( z_far - z_near )

これで正しいと思ったんだけど、ある資料では以下のようになっていて?みたいな。
うろ覚えではOpenGLとDirect3Dでは透視変換行列が違っていたような・・そのせい?
z_viewproj = ( z_far + z_near ) / ( z_far - z_near )
0131名前は開発中のものです。04/10/04 22:23:53ID:7FGX5rbU
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=0a9b6820-bfbb-4799-9908-d418cdeac197
0132名前は開発中のものです。04/10/05 11:12:25ID:0jVYnly+
DX9のマルチレンダリングターゲット機能って
いま一つ、利用目的がわからないんだけど、
これつかうと、何かのエフェクトが軽く作れるとか
面白い表現ができるとかすんの?
0133名前は開発中のものです。04/10/05 11:29:14ID:C0CUDKhb
>>132
今までのシェーダープログラムは、
float4 shaderMain( vertexIn vertex );

マルチエレメントテクスチャを使うと
struct fragmentOut
{
float4 data0;
float4 data1
float data2;
};

fragmentOut shaderMain( vertexIn vertex );

0134名前は開発中のものです。04/10/07 23:11:19ID:hAPlnSnz
お前ら、ぬるぽは好きガッ?
0135名前は開発中のものです。04/10/08 00:59:53ID:XSYDeohy
>117
これ単に初代DirectDrawのインターフェイスそのままな気がするんだが。

83がこれのことを言っているのなら、そのアルファ機能は机上の空論でしかない。
しこしこアセンブラなりMMXなりで高速化してください。
0136名前は開発中のものです。04/10/08 01:49:53ID:16IKlQpt
>>117
アルファ機能使うのに、アルファサーフェス作るかアルファ込みサーフェス作って転送毎に
アルファ値書き込む必要あるから、自前でつくったほうがいいんでないかと思った。
0137名前は開発中のものです。04/10/09 03:08:46ID:/YCQZy36
>>113
増えてないしDirectX9にDirectDrawなんてものはない。
一度公開されたインターフェースが同じ名前のまま機能が変わることもない。
DirectX9をインストールしていても、GameSDK〜DirectX8は使える。
君が新しいと思っているDirectDrawは太古の物だ。
0138名前は開発中のものです。04/10/09 10:03:14ID:5XbefvOQ
DirectX 9.0 SDK Update - (October 2004)
English
0139名前は開発中のものです。04/10/11 00:21:39ID:yBosNnnp
すいません、ちょっとDirectXの質問ではないのですが、
DirectXに使うテクスチャでアルファ値が入ってる画像を
フォトショップで開いて、直接各ピクセルのアルファ値って見れるのでしょうか?見れる場合、教えてもらえないでしょうか?
すいません。
0140名前は開発中のものです。04/10/11 02:05:24ID:0GOi0Ldx
誤れば何でも通ると思うから
割れ厨になっちゃうんだろうね。
0141名前は開発中のものです。04/10/11 10:13:54ID:aLIRFHaP
>>139
Adobeに電話して聞きなよ
0142名前は開発中のものです。04/10/11 10:30:59ID:e+nbPJpi
ンvidiaのHPから、フォトショップ用プラグ印ダウンロードして入れれ
0143名前は開発中のものです。 04/10/11 16:44:56ID:fodZGKKI
2003Summerを使ってます。
Xfileを読み込み、ライティングを施してみたんですが、
テクスチャを貼っていないオブジェクトにはきちんとライトが反映されてるようなんですが、
テクスチャが貼られたオブジェクトにはライトが適用されなくて困ってます。
考えられる原因としてはどんな事があるでしょうか。
教えてください。お願いします。
014414304/10/11 16:49:16ID:fodZGKKI
ちなみにライトは自前でなにか難しい事をやってるとかではなくて
普通にDXで用意されてる
D3DLIGHT9のポイントライトとかスポットライト等です。
0145名前は開発中のものです。04/10/11 16:55:31ID:J7gvAGdn
>>143
法線は設定してあるか?
0146名前は開発中のものです。04/10/11 17:18:51ID:1ZelzsvN
>>145
>テクスチャを貼っていないオブジェクトにはきちんとライトが反映されてるようなんですが、

って書いてるんだが。
0147名前は開発中のものです。04/10/11 17:24:14ID:1ZelzsvN
>>143
とりあえずこれは確認しろ。

device.TextureState[0].ColorArgument1 = TextureArgument.TextureColor;
device.TextureState[0].ColorArgument2 = TextureArgument.Diffuse;
device.TextureState[0].ColorOperation = TextureOperation.Modulate;
0148名前は開発中のものです。04/10/11 17:25:22ID:dsSryuB7
そもそも固定なのかシェーダなのかすら書いてないし、ステートの設定の情報も無し。
その状態で何を答えろと?
0149名前は開発中のものです。04/10/11 17:25:54ID:J7gvAGdn
>>146
テクスチャを張ってあるオブジェクトと、張ってないオブジェクトは別物だろ?

テクスチャを張ってあるオブジェクトに、法線が設定されているかと聞いているのだが。
015014304/10/11 17:37:38ID:fodZGKKI
すいません。
LightWaveのXfileエクスポーターを使ってるんですが、
その設定の問題だったようです。
「Replace surface color with texture」
のチェックをはずしたら上手くいった模様です。
0151名前は開発中のものです。04/10/11 17:38:06ID:kosdyhsw
チクショー
0152名前は開発中のものです。04/10/11 19:31:18ID:InZx0EkU
うんこがでちまったよ
0153名前は開発中のものです。04/10/11 19:33:47ID:bx7zsKhl
クソー
0154名前は開発中のものです。04/10/11 19:39:30ID:Ad7T3sc5
ちんこがでちまったよ
0155名前は開発中のものです。04/10/11 19:53:42ID:jqTCTr00
今日は、風呂でもぐろう。
0156名前は開発中のものです。04/10/11 21:04:30ID:pWZ8/i0y
LightWaveネタが出たので、ちと質問ですが
モーション付Xファイルは読み込めば、そのまま上手く動作しますか?
他に3dsMax以外でモーション付Xファイルを出力するツールてありますかね?
0157名前は開発中のものです。04/10/11 22:05:42ID:gNEg0f9y
D-StormのLightWave用X-Fileエクスポーターでは
まともにモーション付きX-Fileを出力できないです。

全てのボーンにウェイトマップをきっちり割り当てて
use weight map onlyを指定するといくらかまともに出力されるかも。

漏れは自作のコンバーター使ってます。

X-File出力できるツール(コンバーター)は
有名どころだとPolyTransとか?使ったことないですけど。
0158名前は開発中のものです。04/10/11 23:45:03ID:pWZ8/i0y
結局は自作するかちまちま書いてくしかないのか…(´A`)
0159名前は開発中のものです。04/10/12 03:07:17ID:GAKZ2Qt1
ちんこでもしごいてな
0160名前は開発中のものです。04/10/14 00:01:52ID:2TDHP0D6
お前ら、ぬるぽは好きガッ?
0161名前は開発中のものです。04/10/18 02:01:54ID:g5wSND4n
ぬるぽは好きだガッ、何か?
0162名前は開発中のものです。04/10/20 18:13:21ID:zP6xl/RK
今、DirectXを使ってエフェクトを作っているのですが、空のテクスチャを
用意してそこに色の情報を書き込みたいのですがLockなどを使うと思うのですが
よくわかりません。
空テクスチャに対してはどういったことをすれば色を書き込めるのでしょうか。
分かる方おりましたら教えていただけますか。
0163名前は開発中のものです。04/10/20 18:20:16ID:bd6yug97
いやその通りなんだけど…実際にやってみたら?
t-potとかを参考に。
0164名前は開発中のものです。04/10/20 18:36:36ID:+ZxZVXCe
DirectXを使うならC#とVB.netだと、どっちが良いですかね?
資料が豊富なほうがイイかな、とも思ってるんですが。
0165名前は開発中のものです。04/10/20 18:41:41ID:bd6yug97
どっちもどっちだけど多分C#のほうが資料は多いんじゃないかな。
英語版ヘルプとかでもC#の記述が多いし
0166名前は開発中のものです。04/10/20 19:09:42ID:/mBmRgO3
最近のDirectXってC#のソースはあってもVBのは入ってないっぽい。
Cマガジンも日経ソフトウェアもC#の記事しかやらない。

ネタっぽく書くとこんな感じ。
C#>>>C++>>>(超えられない壁)>>>HSP>LGP>>>VB>>>(あの夏の思い出)>>>Delphi
0167名前は開発中のものです。04/10/20 19:28:36ID://ogvlzz
>166
(あの夏の思い出)はもう少し↑だろ
0168名前は開発中のものです。04/10/20 22:54:32ID:6K7KSXLz
毎回、テクスチャ240*240に色を書き込んでそれをポリゴンにはっつけて
るんですがどうしてもスピードに問題があって10フレーム未満しかでないん
ですが何か改善策ありますでしょうか。
現在は毎回ロック・色書き込み・アンロックを繰り返してテクスチャを
書き換えてそれをポリゴンにはっつけてます。

0169名前は開発中のものです。04/10/20 22:55:09ID:+ZxZVXCe
>>165-166
さんくすです(・∀・)
VBは人気無くなっちったな。
0170名前は開発中のものです。04/10/20 22:57:23ID:bd6yug97
>>168
Usage.Dynamicなテクスチャで作ってる?
あと、毎フレーム240*240のテクスチャに書き込むというのはかなり膨大な作業になりそう。
どうしてもその作業が必要なら仕方ないけど、他の方法で近いことができそうなら、そうしたほうがいい。
0171名前は開発中のものです。04/10/20 23:17:22ID:c1ZkAW2J
>>166
俺のレベルだとC#,C++のサンプルさえあればDelphiで困らないけどね。
0172名前は開発中のものです。04/10/21 00:01:41ID:aFfvccIw
>>167
Del6のリリースが夏だったからかけてるんだYO!

>>171
C++はそうだけどC#は違うだろw
DelphiのヘッダはC++からのコンバートだからC#とは使える機能に若干の違いがあるよ
さらに細かい事をいえば構造体とか移植者が適当に定義してるから一貫性がないし
0173名前は開発中のものです。04/10/21 00:02:57ID:3V+U9H90
Usage.Dynamicというのはポリゴンへ描画するときテクスチャの
座標を変えて違う色を描画する方法のことですか?

FPSの計算をしたのですが何も描画しない状態でも60FPS前後しか
でないのですがサイトなどで公開されているFPSを計るものでは
120とかでてるのですが原因がわかりません。
分かる方おりましたらアドバイスお願いします。
0174名前は開発中のものです。04/10/21 00:29:25ID:QM0/p3ts
240*240は小さくできないの?
64*64とか
あとはもう一つテクスチャを準備して交互に書き込んでいくと、
もしかしたら少しは速度がでるかも
0175名前は開発中のものです。04/10/21 01:07:34ID:wLXaxqfN
>>173
60FPS前後なのは、自分でウエイトをかけるようにして、
デバイスを作っているからだろう。
サンプル丸写しで何も考えずに出来合の物を使うから、
そうやって基本的なことが出来なんだよ。
0176名前は開発中のものです。04/10/21 01:23:16ID:zdJbC46m
ウェイトをはずせw
0177名前は開発中のものです。04/10/21 01:26:05ID:ei1xXI0E
>>173
VRAMってのは普通にメモリを読み書きしようとすると遅い、とにかく遅い
そのVRAMに毎フレームで240*240なんていう広大な領域を更新するのは無理
だがUsage.Dynamicで宣言したテクスチャはVRAMじゃなくてAGPメモリに確保する
こうするとボトルネックとなっていたメモリアクセス速度は回避される

そもそもその毎フレーム書き換えたテクスチャで何をするのか、ちょっと聞いてみたい
0178名前は開発中のものです。04/10/21 02:22:24ID:ei1xXI0E
今173読み返したら見当違いの回答だったらしいなorz
Usage.Dynamicってのはnew Texture()の時に渡す引数のこと
ManagedじゃなくてCOM直叩きとかなら、D3DUSAGE_DYNAMICをCreateTextureに渡す感じ
0179名前は開発中のものです。04/10/21 02:26:05ID:ptio2rD4
320x240のムービーをリアルタイムにテクスチャにレンダリングしたことがあるが、
こま落ちなしで余裕で60fps出たぞ。

流れは、
Pool.SystemMemoryなテクスチャをLock→書き込み→Unlock→
Pool.Defaultなテクスチャに.UpdateTexture。
至極単純。
0180名前は開発中のものです。04/10/21 02:37:23ID:6qwKdW8H
>>173
FPS=60は、画面更新時に同期待ちをする設定になってるから。
C++の場合は、CreateDevice に渡す構造体 D3DPRESENT_PARAMETERS の
メンバ PresentationInterval を D3DPRESENT_INTERVAL_IMMEDIATE にすれば
同期待ちしなくなる。
0181名前は開発中のものです。04/10/21 11:30:56ID:v+ouiPQ0
そもそも、256*256のテクスチャじゃなくていいのか?
0182名前は開発中のものです。04/10/21 19:05:15ID:uHJFd8pj
そもそも、60fps以上の数値って、理論値だろ。
モニタが60Hzなのに400fpsなんてあり得ない。
BeginSceneからEndSceneまでにかかった時間を逆算してるだけ。
0183名前は開発中のものです。04/10/21 19:31:15ID:T7tkLkrE
    >>182

         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   そんな餌で俺が釣られクマー!
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ
                               (´⌒; (´⌒;;;

0184名前は開発中のものです。04/10/21 19:35:48ID:EF2ZVHXz
いや釣りじゃなく本気でそう思い込んでる気がする。
0185名前は開発中のものです。04/10/21 19:41:49ID:a0Jj2CZI
そもそもモニタが60Hz固定じゃないし
それはモニタの描画速度であってDirectXがVGAに転送する頻度とは関係ないし
クマー
0186名前は開発中のものです。04/10/21 19:52:16ID:aFfvccIw
モニタ
ディスプレイアダプタ
(ここから下はプログラマ次第)
描画ループ
内部(ロジック)ループ

これごっちゃにするのはFPS議論の基本だね♪

シューティングゲーム製作技術総合 5機目
http://pc5.2ch.net/test/read.cgi/gamedev/1098034919/
FPS(フレームレート) VSYNC(垂直同期 リフレッシュレート)  ←できればFPS議論はここにまとめたい。
http://bbs.gamdev.org/test/read.cgi/gamedev/1063274576/
0187名前は開発中のものです。04/10/21 20:43:45ID:SI9Ghux0
モニタが60Hz・・・すでに前提から間違ってる
0188名前は開発中のものです。04/10/21 21:06:12ID:wLXaxqfN
>60fps以上
突っ込みどころは色々あるが、
以上という言葉で60FPSを含めてしまっている時点で、
プログラマとしてはその知能に致命的な障害を持っている。
0189名前は開発中のものです。04/10/22 08:34:09ID:PpvljLwQ
サーフェスからテクスチャに書き込みたいのですがそんな命令あります?
0190名前は開発中のものです。04/10/22 08:43:35ID:vNrL/vfG
>>189
無いんじゃね?
サーフェスにはテクスチャを
テクスチャにはサーフェスを取り付けて
そっちに対して、サーフェスにテクスチャを書き込み。
0191名前は開発中のものです。04/10/22 11:53:19ID:mUf2dbjd
テクスチャからサーフェース取得すれば、
ある程度選択幅がでてくるだろうに。

もしくは、Lockして自前で転送。
0192名前は開発中のものです。04/10/22 14:36:20ID:DycM2TWf
> サーフェース
発音注意
0193名前は開発中のものです。04/10/22 16:53:26ID:oY6D88HE
テクスチャのUV座標情報が、ほぼ全ての面(の頂点)に付いている
モデルって珍しく無いと思うのですが、
この場合、IndexBufferはほとんど無意味ですよね?

無意味どころか有害な気がするんですが、実際どうなんでしょうか。
0194名前は開発中のものです。04/10/22 16:58:59ID:MMfa4NeD
一般的なモデリングデータの共通のメッシュで、頂点ごとのUVがバラバラであるケースはほとんど無い。
球面で法線が異なることなら多いけど。
0195名前は開発中のものです。04/10/22 17:10:48ID:b8gueTEV
>193
何が有害かわからないけどある程度複雑なモデルになると、
描画の時に2度以上指定しないといけない頂点がでてくるんだが、
IndexBufferを使っておくとお得な気がしませんか?

例えば↓のような四角形をトライアングルリストで描画するとして
1   2

3   4
IndexBufferを使った場合と使わなかった場合、それぞれどうVertexBufferを確保するか考えてみたら?


0196名前は開発中のものです。04/10/22 17:10:51ID:oY6D88HE
>>194
私が今解析してたモデルデータ達が特殊なのか…。
おかげで安心してIndexBufferを使って行けそうです。レスありがとうございました。
0197名前は開発中のものです。04/10/22 17:12:53ID:oY6D88HE
くっ、ちゃんとリロードしたのになぁ…3秒差か
というわけで、>>195さんもありがとうございましたー
0198名前は開発中のものです。04/10/22 18:18:16ID:B8sP9jTB
共有頂点の問題だろ。質問する方は分ってないから質問するんだけど
答える方が理解出来ないのな…

要はIndexBufferで共有頂点を指したいが、座標は同じでもUVが違う(マテリアルが違う)
そんな時は、そのUVの違う頂点が存在するようにデータを持ってる。
その時に共有頂点がない訳だからindexBufferはいらないだろ?って質問。
Xファイルしか見たことないやつ等なのかな?質問に答えてるのって。

例え共有頂点がなくとも、Indexを指定すれば(0,1,2,3,4,...と順並びでも)
描画が速い場合・も・ある、のでIndexBufferがあっても意味無い事はない。
0199名前は開発中のものです。04/10/22 18:51:47ID:CkzGgn6x
http://www.geocities.co.jp/SiliconValley-Oakland/9582/GamePrg/index.htm
このサイトの炎の表現2っていうのがあるんですけどそれをDirectX9で
表現したいと思い試みているのですがプログラムをよんで解析してるんですが
いまいち掴めません。
アドバイスよろしければお願いします。
0200名前は開発中のものです。04/10/22 19:50:38ID:MKQUsut/
>>199
その技法はあまりDXのバージョンに依存しないと思われる。
0201名前は開発中のものです。04/10/22 20:00:31ID:oY6D88HE
>>198
> 0,1,2,3,4,...と順並びでも

我が意を得たりというか、コンバートするとまさにこの状態なんですよ。それで疑問に思いまして…。
いや良かったです、速い場合があるんですね。その辺もう少し勉強してみます。
回答ありがとうございました!
0202名前は開発中のものです。04/10/23 01:14:18ID:y/5D5f1B
頂点シェーダやらピクセルシェーダやらプログラマブルシェーダやら
何やらかんやらありますがテクスチャ1枚を貼り付けたCUBEを100個
表示させるのならどれが一番速いですかね?
and
それぞれはどういった特徴があるのでしょうか?
0203名前は開発中のものです。04/10/23 01:19:21ID:bO77c3Y/
全く見当違いの質問でどう答えたらよいのやら…w
ホンダのエンジンとブリジストンのタイヤと日本石油のガソリンがありますが
100kmを走るにはどれが一番速いですか?って聞いてるようなもんだぞ
0204名前は開発中のものです。04/10/23 01:33:21ID:IHYlkrYR
>>202
プログラマブルシェーダって要するにシェーダをプログラムで組む奴ですよ。
つまり頂点シェーダとピクセルシェーダを包括するものだと思っとけw
頂点シェーダはモデルの頂点のシェーダ。(なんつーの?点1つ1つにほどこす計算みたいな?)
ピクセルシェーダはモデルのピクセルのシェーダ。(ポリゴンの色塗りに施す仕掛けだな)

つまり頂点シェーダとピクセルシェーダは同時に使える(使う)別々の処理を行うもので比べてもしゃーないのですよ。
0205名前は開発中のものです。04/10/23 02:04:18ID:2vLRGGWt
どれも使わない固定パイプラインが一番速いです。
0206名前は開発中のものです。04/10/23 02:25:04ID:IHYlkrYR
>>205
測ったこと無いけど固定パイプラインって色々やってるじゃん。
ライトを5つも6つも付けても、バンプや環境マップが設定できるでしょ(たしかw)
遅いと思うよ。(処理によると思うけど)
0207名前は開発中のものです。04/10/23 03:33:36ID:oxnV01Sw
モデルに対し
UVマッピングで1枚のテクスチャを貼る方法と面一枚一枚に複数貼る方法とでは
どちらが速度が速いのでしょうか?
0208名前は開発中のものです。04/10/23 04:19:16ID:IHYlkrYR
>>207
一枚のテクスチャを貼るほうが速いとされているけど
俺が測った感じだと数と場合による。

普通のモデルだったら一枚のテクスチャの方がはやいよ。多分。
でも、一画面にどう考えても入らないモデルをぎっちりまとめておくと
テクスチャ云々の問題よりモデルを分割して描画(つまり画面に入らない部分のモデルの計算からしない)
をすることができないから、それはそれでおそいんじゃねぇかなと予想してみる。
どうだろ。(ちなみに勘)
0209名前は開発中のものです。04/10/23 15:08:06ID:/MuH3fkP
テクスチャセットの呼び出しは少ない方が当然いい
0210名前は開発中のものです。04/10/23 17:28:27ID:SfTHYw6T
>>209
それはそうなんだけど。
一画面におさまる程度の大きさを超えた場合ってどうなるんだろうね。
つまり広大な地形の類とかさ。
真ん中に立って北を向いたとすると、そのときの描画自体は南のデータなんかいらないわけじゃん。
でもテクスチャやモデルは北と南の両方のデータがまとまってるわけじゃん。
こういう問題を含めると単純にまとめておくと速いって認識もどうよと思うわけよ。

スカイボックスの類なんてやったとすると一枚一枚別にした方がはやいんじゃねーかと考えてみたりして(もちろん勘)
0211名前は開発中のものです。04/10/23 17:37:00ID:sMo4Qn/6
一枚のテクスチャを複数のモデルデータで共有すればいいだけの話では?
0212名前は開発中のものです。04/10/23 20:27:44ID:YmVB4Iw2
>210
テクスチャは一つでもいいと思う
モデルは分割して見えない部分は描画しないってのも手だと思うけど
スカイボックスっていうぐらいだから頂点数は少ないでしょ
だったら分割してできるコストの方が大きい気がする

スカイボックスを軽く描画したいんだったら、できるだけ最後に描画したほうがパフォーマンスは稼げる
半透明(アルファ値を持つ)のものがあるとそっちの方を後に描画しないといけないけど
基本は手前から描いていく

>202はもうすこし理解してから質問しましょう
>頂点シェーダやらピクセルシェーダやらプログラマブルシェーダ
この時点で理解不足です
いや、煽りじゃなくてある程度理解がないと適切な質問もできないし、
返答を理解することもできないだろうから非効率だと思うんで
0213名前は開発中のものです。04/10/24 00:42:31ID:fL1Fp2Br
トゥームレイダーの暗闇をともすアイテム(マッチ)のような処理がしたいのですが
方法がよく分からないです。頂点カラーを操作しているのでしょうか?
0214名前は開発中のものです。04/10/24 01:48:44ID:cDjg2sjK
ポイントライト
0215名前は開発中のものです。04/10/24 13:47:50ID:y2umnsNY
すみません、DirectX9で3Dのゲームを作っている初心者なんですが、
スコアなどをテクスチャを貼り付けたポリゴンで表示したいのですが、
常に画面の同じ位置に表示させる方法が分かりません。
どうかこんな俺に救いの手をお願いします。
0216名前は開発中のものです。04/10/24 14:14:03ID:+00SYBin
D3DFVF_XYZRHW
0217名前は開発中のものです。04/10/24 15:34:27ID:fL1Fp2Br
カニ型ロボットを攻撃すると足やハサミが取れていくシーンを作りたいと思ってます。
そこで方法として
胴体x1 足x6 目x2 ハサミx2 計11個のポリゴンモデルすべてに同じボーン構造をもたせた
Xファイルを出力し、プログラム側で親子関係を持たせて結合、連動させるというのを思いついたのですが
この方法は正しいでしょうか?もっと他に良い方法など無いでしょうか?
0218名前は開発中のものです。04/10/24 16:07:17ID:/wWlJ+Yz
>>216
ありがとうございます。こんなに簡単な方法だったんですね。
かなり勘違いしてました。
ビルボードとかの技術を使わないといけないのかと思っていました・・・。 orz =3
0219名前は開発中のものです。04/10/24 19:34:17ID:bVUqYsQl
VC++でLPDIRECT3DVERTEXBUFFER9 vbを宣言しているmain.cppから
CreateA()してからA()、Aの戻り値が1ならCreateB()してB()という関数を呼び出してます。

A.cppのcreateA()という関数の中で
  externでvbを外部呼出しして
  CreateVertexBuffer命令・Lock・書き込み・unlockのあと
A.cppのA()という関数で
  その頂点データを使用して描画しています。

B.cppのcreateB()という関数の中で
  externでvbを外部呼出しして
  CreateVertexBuffer命令・Lock・書き込み・unlockのあと
B.cppのB()という関数で
  その頂点データを使用して描画しています。

B()関数を呼び出して描画しようとしてるのですができません。
原因わかりますでしょうか?
説明が下手で申し訳ありませんがよろしくお願いします。
0220名前は開発中のものです。04/10/24 19:37:54ID:OZox6TUu
できない、って、どういう具合にできないの?
エラーコードが帰ってきたりするならそれも教えて欲しいんだが
0221名前は開発中のものです。04/10/24 19:50:05ID:bVUqYsQl
頂点の情報は設定されているみたいなんですがテクスチャが張られてないみたいです。
0222名前は開発中のものです。04/10/24 21:06:51ID:ttvwl10O
みたいじゃなくて確認しろよ
■ このスレッドは過去ログ倉庫に格納されています