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

鬱だ氏のう DirectX (Part 7)

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

■ 過去スレ
Part 1 http://piza.2ch.net/tech/kako/966/966655286.html (プログラム板)
Part 2 http://pc3.2ch.net/test/read.cgi/tech/997101556/ (プログラム板)
Part 3 http://game.2ch.net/gamedev/kako/1005/10051/1005119775.html
Part 4 http://game.2ch.net/gamedev/kako/1016/10162/1016276254.html
Part 5 http://game.2ch.net/test/read.cgi/gamedev/1027351925/
Part 6 http://game.2ch.net/test/read.cgi/gamedev/1033920036/
0570名前は開発中のものです。03/02/09 20:30ID:yUWb7xod
何も考えずにそうやったらそれくらいで頭打ちになるよ。
テクスチャ等の切り替え回数を減らすとか工夫しないと。
0571名前は開発中のものです。03/02/09 21:08ID:JOf4tO9W
>>569
Windows98SE AthlonXP1500+DDR512MB+GFMX400(VRAM64MB) DirectX8.1では
正常に表示されるんだがな。win2000では無理って事か。ふむふむ・・・。

>フレーム毎に頂点バッファをロックして頂点座標を取得するのと、
>マップを作るときに予め頂点座標のみ取得しておき、
>それを使うのではどちらが良いのでしょうか。

どちらがいいでしょうか、ってそりゃソフトの使い道や環境によって自分で決めれば
いいことだろう。必ずこっち、という解答があるわけではない。
>>569の環境だとグラフィックカードがよさげなのでバッファロックも特に問題なさそう
だが、速度重視ならソフトでバッファを持てばいい。建物(直方体)ならそれほどメモリ
を食わないので普通ゲームを作る場合はこちらの方法で速度を上げる。
あと分かってないみたいだが当たり判定というのはあらかじめバウンでィングボックス(もしくは球)
を作ってそれを使い衝突判定をする。いちいち全部の頂点・面を判定に使用するのは
地形接触判定以外ではやらない。オブジェクトごとにそんな事をしていたらロック無しでも
アホみたいに遅くなる。バウンディングボックスという言葉は分かるよな?
0572名前は開発中のものです。03/02/09 21:08ID:0kXKwYwr
>>569
よほど複雑だったり数が多くなければ、後者ならそんなにメモリ食わないと思うけど。
計算してみた?
0573Newbie03/02/09 22:08ID:l8jF+XK3
アドバイスありがとうございます。
>>570
計算してみます・・・

>>571
バウンディングボックスは最初考えていたのですが、家の中に入ったり家の中の
階段を上ったりするので。家の中をどうするかを考える時点で挫折しますた・・・
全面検索だと、この辺は簡単にいけるのですが。

>>572
建物はかなりローポリで作ってテクスチャでごまかしてます。
今のところ小さい家で、頂点数118(GetNumVerticesで取った値)
2階建ての家で390くらいなので、恐らくこれから追加するモデルも500は越えないと思います。

人やモンスター等、複雑な形状になる物体には周りにエフェクト貼り付け用の透明な六角柱を用意して
それと当たり判定を取る予定です。
0574名前は開発中のものです。03/02/09 22:34ID:JOf4tO9W
>>573
>バウンディングボックスは最初考えていたのですが、家の中に入ったり家の中の
>階段を上ったりするので。家の中をどうするかを考える時点で挫折しますた・・・
>全面検索だと、この辺は簡単にいけるのですが。

クリッピングもできないみたいだな・・・。ポインタもよく分からないのだから
この辺が限界か。ま、頑張れ。
0575Newbie03/02/09 23:10ID:l8jF+XK3
>>574
クリッピングはバウンディングボックス使ってスクリーン座標から8頂点全部
はみ出したら描画しないようにしているのですが、ダメなのでしょうか・・・
0576名前は開発中のものです。03/02/09 23:25ID:JOf4tO9W
>>575
笑 家のモデルはたしか頂点数118の単一モデルだったよな?
家の中もそのモデル内に作ってあるとすればお前の仕様だと家に入ると家の内部を
いちいち全て描画することになる。
家の外装と内装(部屋、廊下、ドア、階段、壁)をそれぞれ
家のオブジェクト内に存在する子オブジェクトとして持てば描画範囲からあたり判定、
個別の仕様変更にも耐える設計となる。無論自作エディタも必要になってくるがな。
まぁ、ちいちゃい箱庭作って遊んでる程度なら気にしなくてもいいよw。
0577名前は開発中のものです。03/02/09 23:35ID:fW4IKGf/
>>Newbie
こんなことを言ってしまうと元も子もないが、はっきり言ってどうでもいい。
メモリを鬼のように食おうが泣けるほど重かろうが、とにかくまず動くものを。
今のおまいの話は完成後(ここ肝心)に速度その他に疑問をもったら聞きに来ればいい。
迷わず進めでFA。
0578Newbie03/02/09 23:37ID:d++7OTj6
>>576
なるほど、かなり参考になります。
そうなった場合、いかにバウンディングボックスを作るかが問題になりますね。
まだLightWaveではき出したXファイルをメッシュ単位で描画している程度なので、
そのレベルまでの道のりは遠そうです・・・

連続投稿規制はじめて食らいますた・(ノД`)・゜
0579Newbie03/02/09 23:39ID:d++7OTj6
>>577
はい、とりあえずいろいろ割り切って進めてみます。
0580名前は開発中のものです。03/02/10 00:15ID:iTDKJLi8
>>573
>>バウンディングボックスは最初考えていたのですが、家の中に入ったり家の
>>中の階段を上ったりするので
普通は別にコリジョン用のモデルを準備しとく
家ならさらにローポリで単純な形のモデル
表示しないのでテクスチャ、マテリアル、頂点カラーも不要
メモリも表示用モデルに比べれば小さくてすむし
0581名前は開発中のものです。03/02/10 00:20ID:Pol7gVJ3
>>577
いいこというねぇ。
とりあえず動くものができてからだよね。
0582DirectPlay03/02/10 02:44ID:Oiatng7o
DirectPlayで、ロビーサーバーを使用しない接続で、
「セッションの場所」という、接続を検出する先のホストを入力するためのダイアログボックスが、
自動的に起動してしまうのですが、これは、ロビーに対応しないでは抑制するのは不可能なのでしょうか?

また、擬似的でもなんでもいいので、見えなくする、とか、なんでも方法を知っている方がいらっしゃいましたらご教授くださいまし。。
0583名前は開発中のものです。03/02/10 02:54ID:h4+lH33U
点の可視判定をどう実装しようか迷ってます。
カメラ座標系の行列mCamera,透視座標系の行列mPersを
DirectXにある演算でD3DXMATRIXとして作って
点の座標をD3DVECTOR3型のpointで宣言して

pointDst=point*mCamera*mPers;
としたときに、その点がx[-1,1] y[-1,1] z[0,1]の
中に入っていなかったらその点は見えないと言えるのでしょうか?

実際には、8X8の64ボックスのエリアからなる街を効率よく
レンダリングするために、4分木にして可視判定を行っていこうと
おもっています。上記のことで正しいならば、実行半径と軸にして
それを行おうと思っているのですがどうなんでしょうか?
0584あぼーんNGNG
あぼーん
0585名前は開発中のものです。03/02/10 18:45ID:hZsKS2a4
>>582
オレがいじってたのはDirectX5のトキなのだが、
そんときはダイアログ無しでアプリ側から「TCP/IPでホストになる」とか
「123.45.56.78に接続」とかできたよ。当然今のバージョンでもできるはず。
でもやりかたほとんど覚えてない。
ダイアログから得られる情報を使って次の接続処理をしていると思うのだが、
その情報を自前で生成して接続する...ってカンジだったよーな...
スマソ。いろいろ調べてみてくれ
0586名前は開発中のものです。03/02/10 20:30ID:nRuciNwT
NT系で動いたDirectPlayのソースが9x系で動かないです。

クラサバからピアのセッションを張るときに
コールバック内からいろんな処理やったのがまずかったのかも

クラサバとピアのセッションって同時に張れますよね?

もう一度ちゃんとしたコードで書き直そうと思っているんですが
原因も知りたいので、知ってる人いたら教えて欲しいです。

リファレンスにある
「DirectPlay では、Windows 2000 上で動作するときに I/O 完了ポートを使用する。」
↑これよくわかんないんですが関係ありますか?
0587名前は開発中のものです。03/02/10 22:00ID:umxyvTXI
>>586
どこでエラー起こってるか書いてみ
058858603/02/10 22:36ID:nRuciNwT
エラーというより反応がないんです。

9xのコールバックがマルチスレッドじゃないとしたら
そんな動きかな?って感じでした。
0589名前は開発中のものです。03/02/10 23:24ID:hzpYDER/
DirectPlayよくしらんが、コールバックではフラグを立てるとか
Eventをシグナルするとかメッセージを投げるとかそれくらいに
しといたほうがいい気がする。
0590名前は開発中のものです。03/02/11 01:27ID:u2o+UQ0a
質問です。
DirectPlay8の PeerToPeerで
接続している プレイヤーすべてのDPNIDは取得できるのですが
起動させている自分自身のDPNIDはどうやって特定するのでしょうか?

0591あぼーんNGNG
あぼーん
0592名前は開発中のものです。03/02/11 06:28ID:KQOMDYQi
>>569
その環境でその負荷は、ありえないよ。
コリジョンつっても、数が全然少ない。
(とりあえず、CPU使用率確認すべし。表示とアニメだけなら、
CPU使用率5%以下の筈。全部HWなら)

多分、小さい頂点バッファを沢山描画してると思うんだが?
ストールしまくるよ。
0593Newbie03/02/11 13:29ID:ANuI3/is
>>580
アドバイスありがとうございます。
なるほど。参考になりますた。

>>583
D3DXVec3Projectという便利なモノがあります。
範囲はD3DVIEWPORT8で宣言した値で決まります。

>>592
566さんへのレスでしょうか?
俺の方は今のところ可視範囲を家で埋め尽くしても全然軽いです。
この先アニメーション付きの人物とか追加していくと不安ですが・・・
0594あぼーんNGNG
あぼーん
05951/203/02/11 18:44ID:iYhjkWBr
Win2000SP3 DirectX8.1 GeForce2MX VC++6.0SP5

640*480の画面いっぱいに同サイズのbmpファイルを表示させようとしてるんですが、
ぼやけてしまうのはなぜでしょうか?(表示はできてるんですが)


#define FVF_CUSTOM (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1)
struct CUSTOMVERTEX
{
    FLOAT x, y, z, rhw;
    DWORD color;
    FLOAT tu, tv;
};

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
0596名前は開発中のものです。03/02/11 18:44ID:iYhjkWBr

m_vtx[0].x = -0.5f;m_vtx[0].y = -0.5f;m_vtx[0].z = 0.0f;
m_vtx[1].x = 639.5f;m_vtx[1].y = -0.5f;m_vtx[1].z = 0.0f;
m_vtx[2].x = 639.5f;m_vtx[2].y = 479.5f;m_vtx[2].z = 0.0f;
m_vtx[3].x = -0.5f;m_vtx[3].y = 479.5f;m_vtx[3].z = 0.0f;
m_vtx[0].rhw = 0.5f;m_vtx[0].color = 0xffffffff;
m_vtx[1].rhw = 0.5f;m_vtx[1].color = 0xffffffff;
m_vtx[2].rhw = 0.5f;m_vtx[2].color = 0xffffffff;
m_vtx[3].rhw = 0.5f;m_vtx[3].color = 0xffffffff;
m_vtx[0].tu = 0.0f;m_vtx[0].tv = 0.0f;
m_vtx[1].tu = 1.0f;m_vtx[1].tv = 0.0f;
m_vtx[2].tu = 1.0f;m_vtx[2].tv = 1.0f;
m_vtx[3].tu = 0.0f;m_vtx[3].tv = 1.0f;

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

m_pd3dDevice->SetVertexShader(FVF_CUSTOM);
m_pd3dDevice->SetTexture(0, m_pTexture);
m_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, m_vtx, sizeof(CUSTOMVERTEX));
05973/203/02/11 18:46ID:iYhjkWBr
他の環境ないので試せませんが、ビデオカードの仕様だったら泣いてさしあげます
0598名前は開発中のものです。03/02/11 19:03ID:oc2BIV/D
640x480のテクスチャって作れたっけ?
1024x512のが拡大縮小されてる余寒。
0599名前は開発中のものです。03/02/11 19:19ID:iYhjkWBr
>>598
内部的には1024*512作ってるので、どうしてもぼやけてしまうんでしょうか?
0600名前は開発中のものです。03/02/11 19:37ID:oc2BIV/D
うは、そりゃボケるべ。
1024x512の、640x480の部分(たとえば左上)にBMPを転送して、
テクスチャの頂点位置を調節しろ。
0601_03/02/11 19:40ID:jSG2fsEs
>>596

for(i=0;i<4;i++)
{
m_vtx[i].x-=0.5f;
m_vtx[i].y-=0.5f;
}

たぶん、描画前これを入れるとうまく行くと思う。
0602_03/02/11 19:42ID:jSG2fsEs
すまん。すでに、0.5f引いてたのね…
060359503/02/11 19:57ID:WEOw/ne+
>>600
だよね、640*480なんてありえないよね。
D3DXCreateTextureFromFileでおかしな大きさのテクスチャでも作れてたから、
それをそのまんま使ってた。
512*512で試したらボケもなく表示されました。
お騒がせしました。

ああ、ボケてるのは画像じゃなくて自分の頭だ……
メシ食って歯磨いてオナニして風呂入って寝よう。
0604あぼーんNGNG
あぼーん
0605名前は開発中のものです。03/02/11 21:53ID:XJp4wK9H
>>595
D3DXのテクスチャ作成サポート関数で画像をロードすると、
デフォルトではサイズを2の階乗に合わせてフィルタリングを行います。
読み込みの際にフィルタリング設定でD3DX_FILTER_NONEを設定して、
頂点のuvに(imgが640*480 テクスチャが1024*512として)
u = 0.625; v = 0.9375;
と入れれば正常に描画できると思いますよ。

>メシ食って歯磨いてオナニして風呂入って寝よう。
メシ食ったら風呂場で歯磨いてオナニすればよかろう…
って人生も最適化始めたら人間おしまいよね(笑)
0606名前は開発中のものです。03/02/12 03:03ID:1pSK5fDw
DirectInput8を使用しているのですが、ジョイスティックを接続して、
ジョイスティックからの入力を受け取ろうとプログラムを実行すると、
ある特定のキーが押しっぱなしになった状態で起動しまうと何件か
報告されました。

自分の環境ではないので(自分の環境では大丈夫でした)、デバッグを
することが難しいのですが、どのへんがあやしそうかを教えてください。
ちなみに、起動時に何もキーなどは押していないそうです。
0607あぼーんNGNG
あぼーん
0608名前は開発中のものです。03/02/12 03:34ID:0lnWkCvL
>>606
「ある特定のキー」ってのが十字キーなら、少し遊びを持たせてみるとか。
0609名前は開発中のものです。03/02/12 03:38ID:eRbhd0f3
>>606
> どのへんがあやしそうかを教えてください。

方向キー押しっぱなしなら一回以上キャリブレーションを行う。
homeキーに割り当てる、という手もある。で、怪しいと思ったときにユーザが押す。
いや、これはどの解説書にも書いてあることだから
98%すでにキャリブレーションを行っていると思いますが…。

あとはユーザの環境に問題があるケース。
ジョイスティック関連は自分の環境をアプリケーションのせいにする輩が
非常に多いことで有名なので…。
「パッド付属のユーティリティで正しく設定しろ」以上の対処法は無い。
0610名前は開発中のものです。03/02/12 04:30ID:ghj8DsVG
コントロールパネルで パッドの設定が正しくできてないぐらいしか
おもいつかん
0611DirectX 9.1 to be introduced at GDC 2003 03/02/12 07:32ID:WFauWlhs
http://www.theinquirer.net/?article=7721
0612DirectX9.1!!03/02/12 11:28ID:Mvenkz0O
DirectX9.1!!
0613名前は開発中のものです。03/02/12 11:38ID:aUdjBjb9
コンパネで調整してもニュートラル位置が安定しないパッドはあったよ。
十字キーを押した状態を1.0の強さとすれば、押してなくとも 0.3くらい偏ってるような糞パッド。
入力の遊びを大きくとるしかない。
0614名前は開発中のものです。03/02/12 14:43ID:zfh0sZJ7
糞というか、サウンドカードのゲームポートを使用するコントローラの
場合は細かく位置を特定することが不可能なんでしょうがないかと。
(サイドワインダーのようなデジタル接続の物は別)
0615あぼーんNGNG
あぼーん
0616名前は開発中のものです。03/02/12 16:10ID:HUarmbXk
>>613
いくつかプレステのパッドをつなぐコンバータを持ってるが、
海外の輸入物はほんとに駄目なものが多いよ。
ニュートラルでも動く動く。即効ゴミ行きさ。

少々高くても日本でパッケージされている程のものはまず大丈夫の模様。
061761603/02/12 16:11ID:HUarmbXk
俺のはUSB接続の物の話ね
0618名前は開発中のものです。03/02/12 17:32ID:Auvbtkqn
スマートジョイパッドがダメダメなのを確認しますた(他の安物も同じだった)
ひょっとして変換機じゃなくてPSコントローラのほうがダメなんじゃないかと
0619名前は開発中のものです。03/02/12 17:46ID:wldWHlKz
>>618
どうだろうね。
PSのコントローラー自体が判定シビアなんじゃない?
デュアルショックで試したけど、思いっきり倒して元に戻すと±0.1位残ることもある。
(もちろんうまくやれば0になる。)
だから俺は>>613のように遊びを作って調整してる。
0620あぼーんNGNG
あぼーん
062161603/02/13 00:07ID:o+He/HHX
うちにスマートジョイパッド3が二つばかりあるけど、
十字キーはデフォルトで特に問題なし。
アナログは確かに少しずれてる。ブルブルするってことはさすがにない。
キャリブレートすると十字キーの方に影響出るから結局やってないや。
いやまあアナログは使わないから別にいいけど。
0622名前は開発中のものです。03/02/13 01:56ID:vSad8oY+
スマートジョイパッド3+DUALSHOCK2(PS2のコントローラー)使ってますが、十字キー
大丈夫です。スティックはずれてますが、デッドゾーン指定すれば問題ないみたいです。

クラスを3段階に定義しており、
#include"cb.h"
class CA{
CB cb;
};

#include "cc.h"
class CB{
CC cc;
};

class CC{
};

とインクルードファイルを3つに分けているのですが、ビルドすると
error C2011 class型の再定義と出てしまうのですが、これは何なのでしょうか?
0623名前は開発中のものです。03/02/13 04:29ID:blhLE+oa
>>622
なんだかよくわかんない。
どこかでinclude間違ってんじゃない?
0624名前は開発中のものです。03/02/13 06:58ID:YY2ER2Mm
>>622
漏れ全く同じ使い方してる。プリプロセッサに再定義させない指定してるけど。
cc.hなら例えば

#ifndef __CC_H__
#define __CC_H__
〜ヘッダの内容〜
#endif

多分これで回避できると思う。
0625名前は開発中のものです。03/02/13 18:55ID:c9ym2P+W
アドバイスどうもです。解決しました。
クラスCBのメソッドを収容してあるファイル
cb.cpp
の最初に
#include"cc.h"
と書いてしまったため、まさしく再定義されたようでした。
0626名前は開発中のものです。03/02/13 21:57ID:T2BpaXoT
DirectX 8と9、両方のDirectPlayに携わった方、よろしければ質問お願いします。

DirectPlay8から9にかけて、たとえばDirect3DからDirectGraphicsに
移行したときの様な、大幅な変更はありましたでしょうか。
また、少々無理してでも9の方を学ぶべき、理由などございますでしょうか。

障害として、9のsdkを入れると、動かなくなるアプリがある事情がありまして…。
初歩的な質問で恐縮ですが、よろしくお願いします。
0627あぼーんNGNG
あぼーん
0628名前は開発中のものです。03/02/14 00:25ID:xilLUCvM
DirectInput8でキャリブレーションをする関数を教えてください。
キャリブレーションで調べても全然見つからない…
他のキーワードかなんかあるんですか?
0629名前は開発中のものです。03/02/14 00:29ID:T9kWfjsm
VC++ & DirectInput8を使っていて、
パッドの数を取得して、
0〜複数を自動で認識したいんですが、
流れとしてはどうやるんでしょうか?

とりあえず、パッド一個を動かす事はできています。



VB+DirectX7の時は
Set EnumDevice = DInput.GetDIEnumDevices(DIDEVTYPE_JOYSTICK, DIEDFL_ALLDEVICES)
で、EnumDev.GetCountに何個パッドがあるか出てきて、

Set PadDeviceInfo(i) = EnumDev.GetItem(i + 1)
Set PadDevice(i) = DInput.CreateDevice(PadDeviceInfo(i).GetGuidInstance)
で、一個ずつ割り当てていったんですが・・・
0630あぼーんNGNG
あぼーん
0631名前は開発中のものです。03/02/14 01:37ID:s/e0+1Mp
>>628
そんな関数無かったと思うけど…
ジョイスティックのセンタ合わせなどはその製品のドライバ、ツールがやるべきことで
アプリケーションの仕事ではないでしょう。

それとも絶対座標軸で正確な中心を取る方法とかいう話ですか?
どうしてもというなら相対座標で受け取れば、なんとかなる場合もあるんじゃないでしょうか?

>>629
……一つ作成できてるなら、それと同じ方法を繰り返すだけでよくないですか?
列挙した時にGUIDが入った構造体が与えられるので、それに使って作成していけばよいはずです。

マニュアルのようにインターフェイスをグローバルで与えたくなければ、
列挙する時にLPVOID型の転送用の引数がありますので、
そこにインターフェイスを与えればよいと思いますよ。
063262903/02/14 01:59ID:T9kWfjsm
>>631
回答\(・∀・)/ アリガトン

使用するコールバック関数がイマイチ分かってませんでした。
取得に成功したら、DIENUM_STOPを返してて、次に行かないようになってました。
忠告されるまでLPVOID型の引数を無視してました。(笑)
これを使ってもう少しいいように作ってみます。

ためになりました。
063362603/02/14 02:04ID:e3XCNwxz
くぅ、小粋なPlayBoyはいらっしゃらないのか(´Д⊂
もう一度上げさせてください
0634名前は開発中のものです。03/02/14 02:39ID:63yL1klM
>>633
わずかな機能追加とバグフィクスが変更の中心です。
大きな変更はありません。
0635あぼーんNGNG
あぼーん
0636名前は開発中のものです。03/02/14 03:02ID:e3XCNwxz
>>634
ありがとうございます!おかげで心おきなく8Playの猛勉強開始できます。
これで安心して眠れます…本当に感謝です。

今日はきっとあなたの日ですよ(*´Д`)ノ◆パッ
0637名前は開発中のものです。03/02/14 08:02ID:+4PY8YS3
>>628
>>631の言うとおり、アプリ側でやることじゃないと思う。
もしやるなら、うんこハード、ドライバ用に十字キーの閾値の設定くらいかな。
0638名前は開発中のものです。03/02/14 19:24ID:tJTzQwc9
変換行列で、頂点座標を変換するにはどうやって計算しますか?
要するに、変換後の頂点座標が取得したいのですけど・・
0639名前は開発中のものです。03/02/14 20:36ID:DzHm3TpR
>>638
pD3DDevice->SetTransform(D3DTS_WORLDMATRIX(0),&Matrix);
のMatrixを保存しておいて、変換後の座標が必要なときに
座標に掛けてあげればOK。
0640名前は開発中のものです。03/02/14 22:27ID:FTji8okw
DirectX7で、描画先ウィンドウを変えたいんだけど
8以降にある Presentに渡すウィンドウハンドル見たいに
途中で転送先ウィンドウを変えたいんだけど・・・
7では無理ですか?
064163803/02/14 22:33ID:fnvvsKQl
>>639
レスどうも。

頂点座標にマトリクスの各配列を
どういう形で掛ければ良いのですか?
検索でも出てこないもので・・
0642名前は開発中のものです。03/02/14 23:01ID:DzHm3TpR
>>641
D3DXVec3TransformCoord関数で一発
あんまり難しく考えないようにね
064363803/02/14 23:50ID:NpYIeDIA
>>642
そいった物が・・
さっそく使ってみます〜 どうも〜
0644あぼーんNGNG
あぼーん
0645名前は開発中のものです。03/02/15 02:42ID:iI0jLvcO
Direct3D8を使ってるんですけど、
現在フレーム毎に、全部描き直してますが、
DirectDrawで別のSurfaceに書き残すみたいに、
描画した情報をどこか他のものに残す事はできないでしょうか?
IDirect3DDevice8::CreateImageSurface()なるものはあるようなのですが、
これも作っただけで、どう使えばいいか分かりません・・・
0646名前は開発中のものです。03/02/15 03:14ID:ruB4cEsX
ジョイスティックの遊びを設定できるようにしたいのですが、
あの遊びの値というのは、一般的に使われている式があるのですか?

なんか漏れが見たゲームの設定だと、1〜1000で設定できるように
なってたんだけど、これが一般的なのですが?
0647名前は開発中のものです。03/02/15 03:25ID:6ruvhBdO
>>645
8はよく知らないんだけどスワップチェインをFLIPじゃなくCOPYで
作成すればバックバッファには常にフロントと同じ内容が残るのでは?
要はWindowモード時と同じ処理。
D3DSWAPEFFECT_FLIP,D3DSWAPEFFECT_COPY<このへんがキーワードかな。
0648あぼーんNGNG
あぼーん
0649名前は開発中のものです。03/02/15 03:52ID:7eiV5nPW
>>645
IDirect3DDevice8::SetRenderTarget はどうかな?
ちょっとズレてるかもしれんけど。
0650名前は開発中のものです。03/02/15 04:20ID:B2h4zgOk
━━━━━( ・∀・)=終)´Д`(了=(・∀・ )━━━━━
0651名前は開発中のものです。03/02/15 04:29ID:6ruvhBdO
>>646
1〜1000ってのはユーザーに判り易く変換してるだけだと思う。
0652名前は開発中のものです。03/02/15 07:01ID:ruB4cEsX
軸の傾きって、一番ひどいパッドでどれくらいずれてますか?
0653名前は開発中のものです。03/02/15 07:03ID:IQxlefuQ
>>645
それはスナップショット的な物が欲しいということ?
それだったらGetBackBuffer()でサーフェイスを取得しておいて、
レンダリングが終了してたときにCopyRectsで用意しておいたサーフェイスに
転送すれば、描画されたイメージを取得できるよ。


>>646
それはアプリケーションが決めればいい事ですよ。好きにやったらいい。
遊びって大体10%〜30%くらいじゃないのかな?
0654名前は開発中のものです。03/02/15 09:35ID:2CJAwmu6
>>643
おいおい、数学的処理や意味を知らずに使うのはマズイだろ。
簡単に
struct VECTOR
{
float x, y, z;//同時座標じゃなくても出来る
};

struct MATRIX
{
float _11, _12, _13, _14;
float _21, _22, _23, _24;
float _31, _32, _33, _32;
float _41, _42, _43, _44;
};

で、ベクトルと行列の掛け算はで得られる結果X1, Y1, Z1は
X1 = x*_11 + y*_21 + z*_31 + _41;
Y1 = x*_12 + y*_22 + z*_32 + _42;
Z1 = x*_13 + y*_23 + z*_33 + _43;
//左手系、ベクトル×行列の順で、同時座標でいうwは常に1を補うとする。

簡単だろ、各回転行列やなんかは分るだろ?
で、_41, _42, _43が平行移動成分ってのも。
065565403/02/15 09:40ID:2CJAwmu6
タイプミス
>同時座標
同次座標
0656638 03/02/15 11:12ID:7dXkqCa/
>>654
どうも、為になります。

確かに意味も分からずに作って行くと、
後で行き詰まるのは、目に見えてますが・・
どうしても、試したかった事がありまして。
D3DXなんかが有るので、3Dの知識が貧しくてもどうにかなっていたものでして。
一段落したら、3Dの勉強をじっくりしたいですねぇ。
0657名前は開発中のものです。03/02/15 13:50ID:a0UzeSQB
               ∧ ∧
              ( ̄ー ̄)
              (つ  つ
               ( ヽノ
               し(_)

         Now Thread Stoping. ...
         大変見苦しいスレでありました.
           スレストするまでお待ちください。。。ニヤリッ
0658名前は開発中のものです。03/02/15 22:35ID:v4BGs1G4
単純にD3DXVECTOR4で宣言した変数と
行列を
vec4=vec4*matrix;
って感じで頭の3つを取り出せば座標が出ますよね。
0659名前は開発中のものです。03/02/16 01:52ID:3xyVlE7Z
ウィンドウ内でゲームが動いている時、セーブとかオプションを変更する為に
右クリックしてポップアップメニューを出したいのですが、どのようにして出せばいいですか?
環境はVisualC++6.0、DirectXSDK8.1です。
0660名前は開発中のものです。03/02/16 02:01ID:82lNxtkf
 _、,_
(  _!_  )
0661名前は開発中のものです。03/02/16 02:48ID:uicgqHLM
なあ?
バンプマップはわかるんだが、ディスプレースメントマップってなんのためにあるの?
モデリングでつくっときゃいいじゃん
0662名前は開発中のものです。03/02/16 03:14ID:By3z7WHs
ttp://masafumi-t.cool.ne.jp/directx9/ready/ready02.htm

[スマートポインタ]
は、自動開放をしてくれるとの事で、早速使ってみたいのですが、
こちらのサイトからの情報だけではいまいち理解できまへんでした。

どこかにシンプルで簡単なサンプルコードはありませんか?
とりあえずIDirect3D9をスマーティ〜に作ってみたいのですが。
4〜5行で済むことなら直接書いていただくのもアリかな:-)




0663名前は開発中のものです。03/02/16 03:33ID:qivgoxYo
>>662
そこだけじゃなくて他のサイトも見て理解してください。
0664名前は開発中のものです。03/02/16 03:34ID:I55/V1zD
>>659
「猫でもわかるプログラミング」ってサイトにいろいろ詳しく
掲載されてるっぽ。検索してみれ。
0665名前は開発中のものです。03/02/16 04:00ID:ZVOz3UrZ
DirectXは、バージョンをあげても動くというのが建前ですよね。

しかし、実際には動かないゲームやアプリがあります。
うちのWinFastという古いアプリもそうですし、FFもそんな噂を聞きます。

これの原因は何なのでしょうか?
単にコードの冒頭でバージョンを定義してないせいとか…、
いやそんな単純じゃないですよねぇ…。よろしければご教授を。
0666名前は開発中のものです。03/02/16 04:07ID:I55/V1zD
ドライバやOSも関係してくるから一概に言えない
0667名前は開発中のものです。03/02/16 04:08ID:ZVOz3UrZ
>>666
ありがとうございます。ではコーディングする側としては
どうしようも無いんですね。ある意味ほっとしました。
0668あぼーんNGNG
あぼーん
0669名前は開発中のものです。03/02/16 05:24ID:qivgoxYo
他にもOSの種類を9x系に限定したりとかが原因で動かなかったり。
■ このスレッドは過去ログ倉庫に格納されています