1 :
名前は開発中のものです。 :
02/03/16 19:57 ID:0VBfShh8
なんか重い
前スレ999の訂正 ×ユーザーを ○ユーザーに
4 :
名前は開発中のものです。 :02/03/16 21:05 ID:0wG/b+eS
おもしろさはかませないよ
DirectX8.1で、IDirectDraw3使用。 Matrox Millenium G400で、Lock後のDDSURFACEDESCのddpfPixelFormatで、 BPPやRGBビットマスクが正しい値を示さないようなんだけど、 同じ症状の人居ない?
せめてIDirectDraw4以降にしてあげなよ・・・
8 :
名前は開発中のものです。 :02/03/18 00:37 ID:e4TWzhqJ
前スレで気になったことを少しだけ。 Direct Xのコンパネは一般ユーザー用のDirect Xをインストールしただけでは追加されません。 ゆえに、コンパネを一般ユーザーにいじくられることは無いということ。 っていうかむしろ、一般ユーザーにいじくらせてはいけない。
9 :
6 :02/03/18 03:25 ID:???
>>7 そうしたいところだけど、デフォのWin95やNTをサポートしないといけないのよ。
10 :
名前は開発中のものです。 :02/03/18 04:20 ID:cC7IKhF7
単純なビットマップ(BITMAPではない) typedef struct { unsigned char r; unsigned char g; unsigned char b; unsigned char a; } ORG_PIX; とか用意します。 そんで、CreateSurface()で、適当なサーフェースを作ります。ポインタをpSurとしましょう。 で、ORG_PIX* imgに展開されているイメージを、作ったサーフェースにコピーしたいんです。 こいつのピクセルフォーマットがA8R8G8B8のときなら dc = pSur->GetDC(); StretchDIBits(dc,.....); pSur->ReleaseDC(); でどうにかαの値も転送できたんですけど、 それ以外、例えばA4R4G4B4の時なんかはどうにもなりません。 どうするべきなんでしょう? (転送元のPIXは、それなりに減色したりパックしたり、当然します)
>10 サーフェスをLockしてがりがりやるだけなのでは? 転送ルーチンを想定フォーマット分作る。 サーフェスをビデオメモリに取るとLockした時激遅になるから、 システムメモリに取った方が良いよ。
12 :
10 :02/03/18 04:59 ID:dk9uRKOS
>>11 ありがと。いろいろ見てみたんだけど、
DDSURFACEDESC2 desc;
void* img = desc.lpSurface;
pSur->GetSurfaceDesc( &desc );
pSur->Lock();
..... imgを処理 ......
pSur->Unlock();
って感じになるのかな?
テクスチャに使用するつもりなんで、ビデオメモリに取って、
最初の初期化だけで使用するなら問題ないよね??
で、あとここで直接のimgなんだけど、
A1R5G5B5 : WORD*、
R8G8B8 : DWORD*
A8R8G8B8 : DWORD*
となるんでしょうか?このあたりの資料が見当たらない・・・
あと、システムメモリだったら
*img = 0x00;
とか直接書き換えてよさそうなんだけど、ビデオメモリでも
そんなことが許されるんでしょうか?
13 :
10 :02/03/18 05:00 ID:dk9uRKOS
DDSURFACEDESC2 desc; pSur->GetSurfaceDesc( &desc ); void* img = desc.lpSurface; pSur->Lock(); ..... imgを処理 ...... pSur->Unlock(); こうでした・・鬱
14 :
10 :02/03/18 05:06 ID:dk9uRKOS
ああ!!わかった!! 「クライアント メモリ サーフェスの作成」 ってヤツだ!!!見つけた!!! なんだ、CreateSurface()で、 DDSURFACEDESC2 ddsd2; ddsd2.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_LPSURFACE | DDSD_PITCH | DDSD_PIXELFORMAT | DDSD_CAPS; ddsd2.lPitch = (LONG)1テクセルのバイト数 * 横ドット数; ddsd2.lpSurface = lpSurface; ってやって、ピクセル情報とバッファを指定できるんだね。 ありがとう!
>>9 デフォのWin95はDirectXはいってないでしょ?
16 :
6 :02/03/18 17:56 ID:???
>>15 いや確かにそうなんだけど、NTはどのバージョンまでサポートだったかな。
というかそういう事について議論したいんじゃなくて、G400の挙動について
知りたいんだけど…。
プライマリのddpfPixelFormatが嘘を返すみたいだ。プライマリ以外は全て
システムメモリに取ってるからかな。
ドライバは最新だよね? G400は・・・かなり手ごわいと聞くぞ。
18 :
6 :02/03/18 20:53 ID:???
>>17 クライアント(ユーザね)は最新だと言ってるみたい。
Matrox製はいつになっても手強いな。
19 :
6 :02/03/19 02:29 ID:???
原因判明。PrimaryのLockが出来ないために、DDSURFACEDESC自体が 取得できていなかった模様。何故Lock出来ないかは不明。 バグなのか仕様なのか。 while((hr=pSurface->Lock(NULL, &dddesc, 0, NULL))==DDERR_WASSTILLDRAWING); Lockしてるところはこんな感じ。代わりにセカンダリを見るようにして対処。
20 :
名前は開発中のものです。 :02/03/19 04:24 ID:31ewjsnk
プログラマ板でも書いたのですがレスがつかなかったのでこちらで・・・。 Zバッファをbltで別のZバッファに 保存しているのですが、Zバッファのbltをサポート しているかどうかを調べることは出来るのでしょうか。 それとも調べるまでも無く、 基本的に備わっている機能なのでしょうか。 使用しているのはDirectX 7です。
21 :
:02/03/19 05:00 ID:???
そんな事できる環境あるんだ Geforce(DX8&HAL)じゃZbufferのLockすら出来ないよ GetSurfaceDescで調べられるんじゃない?
>Geforce(DX8&HAL)じゃZbufferのLockすら出来ないよ うげ。ヤなこと聞いちゃったなー。 レンズフレアのサイズ決めるのどうしよう。
23 :
6 :02/03/19 10:49 ID:???
一部のビデオカードだと逆にLockしないと、 GetSurfaceDesc出来なさそうで怖いなぁ。 うちはRIVATNT2なんだけど、プライマリをLockできる。 最近のビデオカードだと駄目なのかもしれないなぁ。
このスレのタイトルどおりだ…
25 :
20 :02/03/19 13:08 ID:tA4eHCtW
念のために、という程度の軽い気持ちで聞いたのに・・・
まさか出来るほうが稀だとは。
ビデオ表示関係作り直しです。
(゚∀゚ ) アヒャ!
>>21 さんありがとうございました。
26 :
20 :02/03/19 13:26 ID:9k2LxFbF
あぁ・・・でも
>>21 さんはDX8でって言ってますね。
たしかサーフェス関係の操作はDX8で大分制限されてると聞きました。
うちはGeForce2 MX+DirectX 7なんですが、ZバッファのbltもLockも出来ました。
DirectX 7でも出来なかったという方はいますでしょうか。
作り直すのはもうちょっと調べてからにします。
でないと本当に
(゚∀゚ ) アヒャ!
ってなるので。
27 :
名前は開発中のものです。 :02/03/19 13:42 ID:7hnDVQXs
ラデオンとかGF4とかって チップ内部にZバッファのMIPMAPみたいなの持ってるって言うじゃん。 そういうのが影響しとるのかの?
28 :
20 :02/03/20 00:34 ID:J9JVDwtj
DirectX 8使ってみました。
ZバッファのLockは
>>21 さんの言っていたように出来なくなってました。
フォーマットにD3DFMT_D16_LOCKABLEを指定してみましたが、
そのときはデバイスの作成すら出来なかったです。
ただ、SetRenderTargetでZバッファの交換は出来ました。
これなら、私のようにZバッファの書き換えではなく、
Zバッファを差し替えることが目的であれば使えそうです。
29 :
:02/03/20 00:44 ID:???
差し替えるにしても、書き込めないと使えなくない? FFみたいな背景のプリレンダーした結果のZバッファを書き込む とかできないんかねぇ?
30 :
名前は開発中のものです。 :02/03/20 01:10 ID:TL0LxE1T
プログラム板では誰も答えてくれない、鬱・・・ 親切な人教えてください。 これからDirectXを学習してみようと思ってるとこです。 で、現在CでWinアプリがぼちぼち書ける状態なのですが、 DirectXに行く前にC++覚えたほうがいいですか? DirectXのサンプル見ると、classやnewやdeleteを使っているので C++覚えないで行くとハマる?
31 :
:02/03/20 01:15 ID:???
ちゃんとCがわかってるなら問題にならないよ まぁNew、Delete位は知らないと駄目だし、 MSのサンプル読むなら 継承(ポリモーフィズム) も知らないと駄目かな 工学社のDX入門本とか読めば問題ないと思われ
32 :
名前は開発中のものです。 :02/03/20 01:23 ID:3xx3+7Z6
>>30 自分の場合いきなりC++から覚えましたよ。
VC++に付いてた参考書がC++だったので・・。
おかげで挫折して1年間ぐらい無駄にしましたけどね。
既にCをマスターしているのならC++を覚えるのはそう難しくないので
DXの前に軽くこのなしてしまって良いと思います。
ただC++は膨大なのであんまり深入りしないで、classの文法程度を覚えたら
DirectXと同時進行で覚えていくのが良いと思います。
33 :
20 :02/03/20 01:26 ID:J9JVDwtj
>>29 私の場合はDirect3Dでレンダリングした時のZバッファを
保存しているだけなので書き込みは必要ないんです。
と、思ったんですが、これ使えるのは1回だけですね。
差し替えた後にレンダリングしたら当然Z値が変わってしまう・・・。
何回も使う必要があるのに・・・。
やっぱりDirectX 7でZバッファをbltしていいのかどうか知りたいです。
誰か出来ないビデオカード持ってる人いませんか〜 (;´Д`)
34 :
30 :02/03/20 01:35 ID:TL0LxE1T
>>31-32 レスどうもです。
C++の基本的なところを理解してからDirectX行ってみようと思います。
それにしてもDirectX8のヘルプ、3D初心者の為の解説とかあって
すっごく親切ですね。
>>33 ヘルプ見た?
>現時点では、Z バッファは Direct3D アプリケーションでしか使用されないが、
>DirectDrawSurface7::Blt を使用して DDBLT_DEPTHFILL フラグを設定することにより、
>Z バッファ サーフェスの深度値を設定できる。
>詳細については、Direct3D 直接モードの「深度バッファのクリア」を参照すること。
>DirectDraw を使用して深度バッファをクリアすることもできる。
>これをクリアするには、深度バッファ サーフェスの IDirectDrawSurface7::Blt メソッドを呼び出す。
>DDBLT_DEPTHFILL フラグは、ブリットによって深度バッファをクリアすることを示す。
>このフラグを指定するときは、IDirectDrawSurface7::Blt メソッドに渡す
> DDBLTFX 構造体を初期化し、その dwFillDepth メンバを必要な深度に設定しなければならない。
と書いてある。
書いてあるからといって実際に使用できるかどうか不明だが、
すくなくとも基本的には使えると思っていいんじゃないの。
36 :
20 :02/03/20 02:12 ID:???
>>35 はい、私も基本的に使えるものだと思いつつ、
念のために聞いてみたのですが、
>>21 さんのレスでちょっと不安になりまして・・・。
一応、保険ということで
Zバッファを保存できなかった場合の対処コードは書くつもりです。
パフォーマンスが落ちると思うので、この保険を使わずに済めばいいのですが。
37 :
顔も名前も出さずに毎月100万円 :02/03/20 02:28 ID:X28IDIqU
Future-Web(フューチャーウェブ)登場
なんと10,000円単位の収入
●10,000円単位の高収入
1件につき最大10、000円の高額収入。月収100万円以上も可能。
●画期的なビジネス!
インターネットを利用したこれまでにない斬新で画期的なビジネスです。
●誰でも出来ます!
インターネットが出来る環境の方なら誰でも参加可能です。
●専門的な知識は一切不要!
ビジネスに必要なツールはすべて当社で用意いたします。また、サポ
ートも万全です。
●詳細は今すぐHPをご覧ください。
http://www.future-web.tv/7823/
38 :
名前は開発中のものです。 :02/03/20 16:29 ID:7vhr8N1/
D3DX のヘルプファイルってないのでしょうか? 英語でもいいんですけど .chm っていうのかな、いつものヤツ。 使ってる人はどうやってるんだろう?ヘッダだけ?
39 :
:02/03/20 16:54 ID:???
日本語版あるじゃん
40 :
名前は開発中のものです。 :02/03/21 03:20 ID:5/uSd78r
そういえばchmヘルプって検索使ったら ネットにつなごうとするんだけど・・・。 なんかいやだなぁ。
41 :
名前は開発中のものです。 :02/03/21 04:27 ID:4EcPxfN/
シツモンです。 マウスのカーソルがウィンドウに乗った途端に遅くなるのはなぜですか? 遅くなるプログラムとならないプログラムを見比べても違いは見つからないんです。
42 :
38 :02/03/21 06:44 ID:UEeaAHcN
>>39 どこにあるのでしょう?探したけれど見つかりません。
MS のサイトを見てもそれらしいものは見つからないし…
>42 探したなら見つかるはず。どこ探してるの?
>>41 WM_PAINTで全面描画してるからです。
45 :
名前は開発中のものです。 :02/03/21 13:32 ID:Z3SYmda6
>>41 私のプログラムでも、VooDoo3000、G400でカーソルが遅れて動く現象
が発生します。フルスクリーン時には発生しません。
レンダリング後にSleepやGetDC・ReleaseDCなどを入れると
軽減することがありますが、グラフィックカードによって挙動は様々です。
それにSleepなんて無駄なので、おすすめしません。
おそらくウインドウメッセージ関連だとは思うのですが、はっきりした
ことは私にもわかりません。
46 :
名前は開発中のものです。 :02/03/21 16:22 ID:0p7f/wDg
日本語の文字表示を、市販のゲーム(エロゲー)みたいに 丸っこい 滑らかなフォントで表示するにはどうすればいいのでしょうか? 別個で、フォントデータが必要なのでしょうか?
47 :
名前は開発中のものです。 :02/03/21 17:23 ID:gYyzC957
49 :
名前は開発中のものです。 :02/03/21 22:49 ID:Z3SYmda6
>>46 X フォントファイル自体の配布(ソフトに組み込む)
○ ゲームや広告で使用する
だと思うのですが、フォントをビットマップに書き込んで
転送して使えばOKなんじゃないででしょうか。
一般に売っているフォントでの話ですが。
50 :
名前は開発中のものです。 :02/03/21 23:25 ID:UEDPziA9
うちの環境なんてマウスカーソルをウインドウ内に*置かないと*遅くなる。 どうもウインドウにハードウェアで拡大してBltするときに起こるらしい。 OSが違うと起こらない。ドライバの不都合の模様。もうアホかと。
52 :
:02/03/21 23:39 ID:???
環境かけよ
例えば、51みてーに既知外がコピぺするわな。 そうすると、OSが違うとなにが反応するか分からないのよ。 もうアゴかと。置かないと、遅くなるどころか早く振動するのよ。 もう終わってり(以下尺)
54 :
38 :02/03/22 00:35 ID:???
>>43 ローカルディスクの中を .chm で検索しました。
通常の機能についてのヘルプはありましたが D3DX については書いてありません。
MS のサイトを調べてみましたがダウンロードできるのはローカルディスク内に
あるのと同じ物でした。
D3DX のヘルプはどこにあるのでしょう?探し方がおかしいのだとは
思いますが、本当にわかりません。よろしくお願いします。
56 :
名前は開発中のものです。 :02/03/22 00:40 ID:bpcg30Y5
>>54 DirectX 8.0のヘルプの中にあったよ。
SDKのヘルプを開いて「キーワード」ペインでD3DXと打ってみる、と。
58 :
38 :02/03/22 01:10 ID:???
>>55 ありがとうございます!!
無事ヘルプを得る事ができました!!
というか、英語ヘルプにもD3DXのAPIリファレンス含まれてますけど……。 未だに38の状況が良く分からない拙者であった。
∧_∧ ( ´Д`) / \ __| | 60 | |__ \  ̄ ̄ ̄ ̄ ̄ \ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
61 :
名前は開発中のものです。 :02/03/22 02:36 ID:sbFQt95u
最近 DirectGraphics8 をはじめたばかりなのでよくわからないのですが、 同じ頂点データをシーンの様々な場所に使いまわすには それぞれの物体を描く前に、SetTransform(D3DTS_WORLD, 位置とかを設定した行列) をするという事でしょうか? 一般的なやりかたというのはこういう感じでいいのでしょうか?
62 :
:02/03/22 02:40 ID:???
OKです。それで対応できない状況は別の方法でやります
63 :
61 :02/03/22 02:43 ID:sbFQt95u
>>62 ありがとうございます。これでオッケイなのですね。
後学の為に聞いておきたいのですが、この方法で対応できない状況というのは
どんな場合なのでしょう?
64 :
名前は開発中のものです。 :02/03/23 00:18 ID:U1CJ6Ne+
D3DXMatrixLookAtLH の pUp って pEye からの相対位置じゃなくて (0,0,0) からの位置ですか?
65 :
名前は開発中のものです。 :02/03/23 01:06 ID:B+RYlbts
>>64 ワールド座標系での、視点の上方を表すベクトルですね。多分。
(0,0,0) からの位置。
66 :
64 :02/03/23 02:43 ID:U1CJ6Ne+
>>65 どもです。pEye からの相対値だと勘違いして随分ハマリました。
67 :
名前は開発中のものです。 :02/03/23 19:34 ID:6+0k3M1g
Bio100%でも書いたのですがレスがつかなかったため 2重投稿になってしまい申し訳無いのですがよろしくお願いします。 VBで作成していてDirectPlayVoiceTestのレジストリを参照する作業は、 DirectPlayVoiceTest8.CheckAudioSetup("", "", 0, DVFLAGS_QUERYONLY) であると思ったのですが、テスト(全2重と確認)後に値を取得したときに『2』であり、DVERR_RUN_SETUPもDV_FULLDUPLEXもDV_HALFDUPLEXも値が違いました。 何処かに間違えがあるのでしょうが、全く判りません。 解決方法を教えて頂きたいです。お願いします。
68 :
名前は開発中のものです。 :02/03/23 20:20 ID:bIOVjYAR
HRESULTでいうと0x2はERROR_FILE_NOT_FOUNDになるんだけど。 DVFLAGS_ALLOWBACKは成功すんの?
69 :
名前は開発中のものです。 :02/03/23 20:58 ID:6+0k3M1g
戻るボタンを押すとオートメーションエラーとなってしまいました。 (DirectPlayVoiceTest8.CheckAudioSetup("", "", Me.hwnd, DVFLAGS_ALLOWBACK)) その後、デバックを押し、その一時停止状態からもう一度開始すると↑をもう一度やりました。
70 :
67.69 :02/03/24 13:42 ID:5HzI58ib
DVERR_RUN_SETUPの値はDirectPlayVoiceTest8.CheckAudioSetup("", "", 0, DVFLAGS_QUERYONLY)の エラーの値で一致したのですが、全2重等を確認した後はエラーは出ず、 値を取得する事は出来ませんでした。
71 :
67.69.70 :02/03/24 13:45 ID:5HzI58ib
ただ、エラーコードの中にDV_FULLDUPLEXもDV_HALFDUPLEXもあるため、 Err.Numberから値を取るような気はしてるのですが、上手くいきませんです。
72 :
名前は開発中のものです。 :02/03/24 20:33 ID:5HzI58ib
『エラーは負の値で表され、組み合わせて使用されることはない。』のはずなのに、 DV_FULLDUPLEX = 1376261 DV_HALFDUPLEX = 1376266 となるのと、テスト後のDirectPlayVoiceTest8.CheckAudioSetup("", "", 0, DVFLAGS_QUERYONLY)の値は 『0』だったり『2』だったりします。
マルチ投稿する奴には答えないという暗黙のルールが。
VB使ってる奴が少ないと言う罠。
VC++.net でDirectXはどんな感じになったの? 誰か試した人いる?
DirectXはDirectXだろーが あほかお前
/⌒彡::: /冫、 )::: ・・・・その自作自演に何の意味があるのだ・・・ __| ` /::: / 丶' ヽ::: / ヽ / /::: / /へ ヘ/ /::: / \ ヾミ /|::: (__/| \___ノ/::: / /:::
>>75 VC++.netnに入ってるのはdx8.0だね。
x ファイルの構造について、詳しく解説してるサイトはないでしょうか? 特にアニメーションがさっぱりです
>>79 俺もきぼんぬ。
ただ今の野望はアニメキャラを3Dで動かすこと。
>>79-80 SDKのヘルプ以上に詳しくわかりやすい情報は無いと思いますが。
82 :
79 :02/03/28 01:46 ID:???
83 :
80 :02/03/28 02:34 ID:???
>>82 サンクス。俺も勉強します。
サンプルのSkinnedMeshがワケワカメなのが俺だけじゃなくて安心した。
84 :
79 :02/03/28 04:33 ID:???
結構わかってきたかも、これから自分のコードに落としこみます。 80さん、わかんないことあったら聞いてください。できたら答えますんで
/⌒彡::: /冫、 )::: ・・・その(以下略 __| ` /::: / 丶' ヽ::: / ヽ / /::: / /へ ヘ/ /::: / \ ヾミ /|::: (__/| \___ノ/::: / /:::
86 :
80 :02/03/28 19:43 ID:???
>>85 全然自作自演じゃないんだが。
こんな普通のやり取りも自作自演に見えるほど
この板の住人は少ないのか?
87 :
名前は開発中のものです。 :02/03/28 23:10 ID:heIiu0GQ
皆さんは8.1SDKに付いてるDirectX AppWizard使ってますか?
89 :
名前は開発中のものです。 :02/03/29 04:28 ID:AV6+tb2a
シツモーン 皆様Xファイル読み込んでアニメーションさせたい言ってますが、 その元のXファイルはどうやって作るんでしょうか? お安いところでメタセコイヤなど有りますが、アニメーションは? なんかフリーでいいものあるんでしょうか?
max安いよ
たかいって・・・
92 :
名前は開発中のものです。 :02/03/29 12:05 ID:Jx1kEynD
SHADEはXファイル吐かないんだっけ? 当方はライトウェーブのプラグインを使ってる。
93 :
名前は開発中のものです。 :02/03/30 19:08 ID:NfT6Ft0o
DirectX8のDirectSoundはDSBCAPS_CTRLFXを持つバッファに DuplicateSoundBufferを使えませんが、 銃弾や爆発音などは中身の同じ複数のサウンドバッファを 作ってやるものなんですか? 無茶苦茶むだっぽいんですが・・・ それともIKsPropertySetでEAX使うんでしょうか?
94 :
名前は開発中のものです。 :02/04/01 03:05 ID:0JhLjDkQ
ぶっちゃけメッシュという単語の意味がわかりません。 検索かけてもばらばらな意味合いで、どれがそうなのか判別つかず。。。 だれか教えて。
95 :
名前は開発中のものです。 :02/04/01 03:17 ID:BvPbMnQF
ポリゴンが集まってりゃメッシュです。 いやいや、1枚でもメッシュかも? そんなもんです。 深く考えるのはよしまショー
96 :
名前は開発中のものです。 :02/04/01 03:28 ID:0JhLjDkQ
Σ('ロ')なんと なんか「メタセコではDX8のメッシュ情報は云々・・・・」とかいうのが どこかにあったんで、DX8から取り入れられた何かしらの技術だと 思ってたんですが・・・そうなのね。 thx!
97 :
名前は開発中のものです。 :02/04/02 20:16 ID:evm2qedr
みんなどうやってキー入力取ってる? WndProcでやると簡単だけどカクカク。 DirectInput使ってる?
98 :
名前は開発中のものです。 :02/04/02 20:22 ID:Ks0FRQrf
>>97 当然DirectInput。初期化部分はサンプルからコピペすれば簡単だよ。
WndProcはALT+TABとかALT+F4のようなシステムコマンドに使うもの。
99 :
名前は開発中のものです。 :02/04/02 20:40 ID:evm2qedr
>>98 ほほう。
サンプルってこれ?
ソース ファイル :(SDK ルート)\Samples\Multimedia\DirectInput\Joystick
ちょっとこれ見てみるよ。
∧∧ 丿′ ̄;'',,';Д。) <アア〜100だ〜げっとだ〜 UU ̄U U
>>97 そこらへんのライブラリからコピペしてくると良いよ。
フルスクリーンでVSync待たずにビルトしたいのですが D3DSWAPEFFECT_COPYだと思ったら違った 質問しようと思ってメンバ調べたら下にD3DPRESENT_INTERVAL_IMMEDIATEがあった 鬱だ詩嚢
>>97 DirectInput使うのがめんどくさいときとかテスト用のプログラム作ってるときは
GetAsyncKeyStateとかGetKeyboardState使うと楽だよ
104 :
97 :02/04/03 18:35 ID:pyeIqBtk
MSのサンプルに見きりをつけてライブラリから探してみるよ〜。 ホタテのコードでも見てみるか。
>>104 どこがわからんの?
チュートリアル通りにやれば誰でも出来ると思うんだが?
106 :
97 :02/04/03 19:58 ID:???
できたよ〜。
107 :
名前は開発中のものです。 :02/04/03 20:13 ID:5L/0y8l8
DirectX8で2Dシューティングゲーム作ってるんだが 背景マップをオフスクリーンサーフェースに描いていきたいんだが、 オフスクリーンサーフェースってどうやって用意するんですか?
んだが
DirectX9まだ?(゚ε゚)
110 :
名前は開発中のものです。 :02/04/03 21:02 ID:esV7cwkm
>>107 DirectX8では、オフスクリーンサーフェス自体がなくなったから
DIBSectionにでも描いてBltするんじゃなかったっけ?
111 :
105 :02/04/03 21:12 ID:???
>>107 DirectX8の場合、サーフェスに描いてCopyRectか自分で転送、テクスチャで描くかしか
方法が無かったように思う。
2DならDirectX7でD3DX使った方がかなり楽。
>>110 ,111
ありがとうございます。オフスクリーンサーフェース自体なくなったのか?
知らなかったよ。
事情があってDirectX8でやらなくちゃいけないんです。
どなたか、もし他に方法知ってたら教えてください。
113 :
105 :02/04/03 21:56 ID:???
>>112 >サーフェスに描いてCopyRectか自分で転送
方法書いたが?これじゃ駄目なのか?
事情はしらんけど、とりあえずはヘルプを熟読することを推奨。
114 :
名前は開発中のものです。 :02/04/03 23:12 ID:JWGNVBMk
Direct X7でDirect Music使っています。 ポートの列挙でMidi Mapperを探し出したいんですけど、 なんだか環境によって「Midi マッパー」とか「MIDI Mapper」とか 名前が変わりすぎです。(泣 名前以外で判定する方法ってありますでしょうか? 一通りヘルプを読んだんですけど、Midi Mapperについては何もかかれてなくて・・・
orで検索すればいいだけじゃん?
116 :
名前は開発中のものです。 :02/04/03 23:32 ID:JWGNVBMk
全環境のMIDIマッパーリストってあるんですか? もしあるのなら教えていただきたいです。 一体、何通りあるのでしょう・・・。 英語日本語中国語韓国語。 さらにOSのバージョンによっても微妙に違うし。 ああ、鬱だ。
117 :
114 :02/04/03 23:37 ID:JWGNVBMk
あきらめてデフォルトの Microsoft Synthesizerを使うべきなのでしょうか(泣
118 :
97 :02/04/04 02:08 ID:3oFlzdXM
DirectInput使ってのその後の話、 なんか人のワークスペースをそのまま使うとエラーが起きないのに、 自分のワークスペースでやると c:\dxsdk\include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800 pad.obj : error LNK2001: unresolved external symbol _GUID_SysKeyboard pad.obj : error LNK2001: unresolved external symbol _IID_IDirectInput8A dinput8.lib(dilib4.obj) : error LNK2001: unresolved external symbol _GUID_POV dinput8.lib(dilib4.obj) : error LNK2001: unresolved external symbol _GUID_Slider 等のエラーがでる。 自分で用意した新しいワークスペースに人のコードをまったく手を加えずに追加してコンパイルしても上のエラーがでる。 ちゃんとdinput8.libも設定で追加したし・・・。なぜ?
119 :
名前は開発中のものです。 :02/04/04 02:24 ID:g7m5dzie
うちは市販ソフトだけど、もうMIDIなんて使う気 さらさらありません。
>>119 何使ってます?
CD-DA? or MP3系?
まあ MIDI は音が音源によって変わりますからなぁ。
122 :
97 :02/04/04 02:45 ID:???
>>121 おー、なるほど、つーかバカかおれわ。
さんきゅー。
>119 フリーソフトだけど禿同。 回線速度上がったし、もせでも十分いける。
124 :
名前は開発中のものです。 :02/04/04 14:08 ID:VskWoZt9
鬱age
125 :
名前は開発中のものです。 :02/04/04 14:48 ID:VWxy3QQo
>>113 さん
ありがとうございます。
おかげさまでオフスクリーンサーフェイスを使うことができましたが、
転送がかなり遅いです。
//オフスクリーンからバックバッファにコピー
LPDIRECT3DSURFACE8 pBackBuffer=NULL;
g_pD3DDevice->GetBackBuffer( 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer);
RECT rect={0,0,640,480};
g_pD3DDevice->CopyRects(g_pOffSurface,&rect, 1, pBackBuffer,NULL);
てな感じでやっているんですが、何か注意点があれば教えてやってください。
CopyRectsってLockして転送してるだけだよ。 DirectX8だと2D描画でもDrawPrimitive使わないと遅いよ。
>>125 速度の話なら環境を書かないとなんとも言えない。
128 :
名前は開発中のものです。 :02/04/04 22:58 ID:AXMg/Cri
Direct3Dの座標変換がうまくいきません。助けて・・・ DirectX8.1です。 単に三角を表示するだけなんですが、D3DFVF_XYZRHW で座標変換しない場合は 表示できたのですが、D3DFVF_XYZを使うと表示してくれないんです。 (頂点の定義部分) ------------------------------------------------------------------ struct CUSTOMVERTEX{ FLOAT x, y, z; DWORD color; }; CUSTOMVERTEX g_vertecs[] = { { 0, 50, 0, 0xffff0000}, { 50, -50, 0, 0xff00ff00}, {-50, -50, 0, 0xff0000ff}, }; #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE) ------------------------------------------------------------------ (トランスフォーム部分) ------------------------------------------------------------------ D3DXMATRIX matWorld; D3DXMATRIX matView; BOOL InitDevice() { // ワールドトランスフォーム(今のところ使ってない) /* D3DXMatrixIdentity(&matWorld); if(FAILED(CD3D.lpD3DDevice->SetTransform(D3DTS_WORLD, &matWorld))){ CD3D.DispErrMsg("Failed CDirect3D::InitDevice SetTransform(D3DTS_WORLD)"); return FALSE; } */ // ビュートランスフォーム D3DXMatrixLookAtLH(&matView, &D3DXVECTOR3(0, 0, -200), &D3DXVECTOR3(0, 0, 0), &D3DXVECTOR3(0, 1, 0)); if(FAILED(CD3D.lpD3DDevice->SetTransform(D3DTS_VIEW, &matView))){ CD3D.DispErrMsg("Failed CDirect3D::InitDevice SetTransform(D3DTS_VIEW)"); return FALSE; } return TRUE; } ------------------------------------------------------------------
129 :
128の続き :02/04/04 22:58 ID:AXMg/Cri
(描画部分) ------------------------------------------------------------------ BOOL AppMain() { // 画面描画 CD3D.BeginRender(); CD3D.lpD3DDevice->SetVertexShader(D3DFVF_CUSTOMVERTEX); CD3D.lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, g_vertecs, sizeof(CUSTOMVERTEX)); CD3D.EndRender(); return TRUE; } ------------------------------------------------------------------ こんな感じですが、実行しても3角形がまったく表示されません。 何が悪いんでしょうか?
頭が悪いのではないでしょうか?
131 :
名前は開発中のものです。 :02/04/04 23:35 ID:WlT6GFeI
>>129 DrawPrimitiveUPがおかしいヨ。
エラーが帰ってきてるはず、
きちんとエラーコード取得して、
ヘルプを参照なさい。
>>125 本来の使い方をしていないのだから、速度は求められないんじゃないかなあ。
DirectX8だけどDirectDraw7を使うとか、DIB使って最後だけDirectX使うとか。
事情というのがどの程度の事情で、どんなものを作っているのかわからないから
これ以上はアドバイスのしようが無いと言うのが本音。
133 :
128 :02/04/05 00:29 ID:qZbbZCHa
>>131 調べてみましたが、DrawPrimitiveUPは0が返ってきてます。
DirectX8 SDKじゃDirectX7を使えないと思ってるのかも。
135 :
名前は開発中のものです。 :02/04/05 00:33 ID:7BV1qZd5
09049541756 おじいさんの謎メッセージが聞ける
136 :
119 :02/04/05 00:56 ID:???
OggVorbis先物買い
138 :
128 :02/04/05 23:43 ID:qZbbZCHa
>>137 プロジェクション行列追加したら表示できました。ありがと。
ワールド行列は省略可だけど、ビューとプロジェクションは省略不可なのね。
139 :
名前は開発中のものです。 :02/04/05 23:52 ID:T9OfWPyd
フライトシミュレータとかでオイラー法で積分するとして、 メッセージループから呼び出して計算した場合にFPSが落ちてくると冲が大きくなって 計算精度が落ちると思うんだけど解決法法はあるんですか? 常に同じくらいの冲を取ってプレイヤーの入力後に計算するためには一体どうすればいいんですか?
>>139 スレッド使って計算しる
または、毎フレーム最低10回計算するようにしる
ってのはどう?
dtは0に近ければ近いほど良いはずでしたよね?たしか。
冲の最大値固定>スローになる or 描画間引き or 姿勢行列なら予言数
142 :
79 :02/04/06 03:12 ID:???
やっとできた...しかも82のサイトの劣化コピーにしかならなかったよ...鬱
143 :
139 :02/04/06 13:35 ID:2sBUZSQs
>>140-141 ありがとう。
ちょっとこれから試してみます。
まとまったらまた書きます。
144 :
:02/04/06 15:30 ID:gGSxUTnj
スレッド使って計算すると、変数が表示用と計算用とダブルバッファに必要になるよね〜 単純な変数構成ならいいけど、親子関係とかあるとグチャグチャになりそう 更にリプレイ用に一部、保存したりすると嫌かも… いい書き方はないもんか 俺は描画前に凾狽ェ大きければ再度、計算ループを回す方法にした。楽だし
145 :
:02/04/06 16:02 ID:gGSxUTnj
あ、ダブルじゃなくトリプルか?
146 :
名前は開発中のものです。 :02/04/06 16:17 ID:XrlyzQXc
147 :
名前は開発中のものです。 :02/04/06 18:09 ID:0Pv1iBiS
DirectX8.1のDirectXAppWizardでDirect3Dベースで作成したプログラムに DirectShowのビデオ・レンダリング・グラフが作るウインドウを アプリケーションの子ウインドウにして再生する方法でムービーを流そうと 試みてるんですが再生開始時にビデオウインドウが準備される様子が 一瞬見えてしまうのですがこれを何とかする方法はないでしょうか? へっぽこな質問でなんですが、アドバイスお願いします。 ちなみに、このムービーの流すやりたかって適切なんでしょうか? (DirectShowってみんな使ってるのかな?) どなたか、DirectShowを使ってムービーを流しているゲームのサンプルソースとか を公開しているHPを知っていたら教えてください。 っていうか、良い文献ないですかねぇ?
148 :
名前は開発中のものです。 :02/04/07 03:07 ID:KL8x70+x
DirectX8での当たり判定ってどうやるんすか? 3DでやるにはGetBoxっていうのがあるらしいと、検索出たんですが、 ヘルプには乗ってないんです。 誰か教えてタモーレ
149 :
名前は開発中のものです。 :02/04/07 03:33 ID:CvXz8lsB
150 :
名前は開発中のものです。 :02/04/07 03:49 ID:KL8x70+x
数学? 座標の比較するだけではないの? バウンティンボックスは分かったがこれって自前で設定するのかな。
>GetBox RM時代にフレームのどうのこうのであったんじゃないでしょうか? 円でも箱でもポリゴンでも,基本的には自前でやるもんじゃないの?
>150 それくらい自力で出来ないなら諦めた方がいいよ。
153 :
名前は開発中のものです。 :02/04/07 05:44 ID:v2QhgIlM
どこの板にでもいるんだな、こういう自作自演君は・・・
素直に共分散行列の固有ベクトルを使って最適OBBを計算した方がいいよ。
AABBしかやったことないんですがOBBの方がいいのかな? てゆーか時と場合によるだろうけど・・・ しかし共分散行列の固有ベクトルとか初耳なので勉強してみます.。oO(素直にか・・・)
AABBとOBBだと、ピーク時はOBBの方が計算量少なくなるって 話を聞いたことあるな。 どこかに両者を比較した論文あるらしいけど忘れた。
(´ー`).。oO(OBBを使ってるゲームなんてあるのかなぁ・・・)
158 :
名前は開発中のものです。 :02/04/07 23:48 ID:sAXQvgZ2
D3DXIntersect D3DXComputeBoundingBox D3DXBoxBoundProbe
159 :
転がる :02/04/08 00:29 ID:???
BBXとマルチポストなんですが・・・ 今回の質問は、ヒラヒラと舞い落ちる葉っぱの表現方法についてです。 キャラクターが木に突っ込んだ時などに、エフェクトとして葉っぱを落としたい と思っています。 Xファイルから読み込んだ葉っぱを、適当に回しながら落としてみたのですが、 どうやっても独特のヒラヒラ感が出ません。ただ回転して落ちているように見えて しまいます。 葉っぱのシミュレーションについてご存知の方、よろしくお願いします。
>>159 今適当に考えたんですが支点が等速度で落下していく振り子とかはどうでしょう
葉っぱの表面が支点を向くようにして。
161 :
名前は開発中のものです。 :02/04/08 03:18 ID:lp3UXeXE
>>159 160さんの意見ぽくお手軽にやるなら、
モデリングするとき葉っぱを原点より下に描いて、
レンダリングするときX,Z軸(DirectXの場合)回転を適度に加えるのがいいカモ
(±45度以内でsin使って…とか)
"適当に回しながら"は、Y軸回転だと思うので
シミュとか言われると次元が違いそうで心配ですが(w
マウスの入力を取得するのに、DirectInput(DX8)を使ってます CooperativeLevelに(DISCL_EXCLUSIVE|DISCL_FOREGROUND)を指定して、 WA_INACTIVEを受け取ったらUnacquire()すると、alt+tabで他の窓を アクティブにしてもマウスが使えます が、VCのデバッガのブレイクポイントで止まってデバッガがアクティブになると、 マウスが使えなくなってしまいます NONEXCLUSIVEもフルスクリーンモードもヤなんですが、 対処法を教えてくださぃ
>>160 >>161 なるほど、まだためしてませんが、それはいい感じですね・・・
たしかにヒラヒラして見えそうです。厳密にシミュレーションしなくても
それらしく見えればOKですので、これで行きたいと思います。ありがとうございました
164 :
名前は開発中のものです。 :02/04/08 08:04 ID:M88RZzWM
>>163 適当にまわしながら・・・
は当然1/f揺らぎでね。
(たぶん、葉っぱのゆれも1/f揺らぎ特性があると思われ)
>>164 その「適当」具合が一番難しいという罠。
ブラウン運動
電子雲
1/fゆらぎ = ピンクノイズ ≒ ブラウン運動?
169 :
名前は開発中のものです。 :02/04/09 07:44 ID:JLB9fUqE
>>168 それで良いと思ふ
でも、もしかしたら
1/fゆらぎ = ピンクノイズ ∋ ブラウン運動
かもしれない
1/fゆらぎ = ピンクノイズ = フラクタルノイズ
172 :
名前は開発中のものです。 :02/04/10 02:07 ID:0pI8WtGk
3Dゲームを作るときに速度や加速度、モーメント等をどの型でとるのが定石ですか? 行列(D3DXMATRIX)にしようかベクトル(D3DXVECTOR3、D3DXVECTOR4)にしようか・・・。 最低限のものだとD3DXVECTOR3なんだろうけど、というかD3DXVECTOR3しかないか。
>172 回転モーメント、Matrix以外で表せるの? 普通はMatrixで回転、移動いっぺんに片付けると思ってたが。
>>173 モーメントは三次元ベクトル、M(Mx,My,Mz)だよ
>>173 おいおい、運動と座標変換(剛体変換)を混同してないか?
177 :
名前は開発中のものです。 :02/04/10 23:24 ID:/lR3pti2
>>171 ブラウン運動の位置は1/(f^2)
ブラウン運動の速度は1/f
178 :
鼻毛 :02/04/10 23:28 ID:3mEoS2rY
3Dバウンディングボックス同士の当たり判定で悩んでいます。 現在、キャラクタが持っている領域情報は、vecMin(左手座標系で手前・左下)とvecMax(同じく奥・右上)で、これらのベクトルと、キャラクタ描画用のMatrixを1セットにしています。 で、これが2セット(バウンディングボックスA、B)あったとして、現在行っている当た り判定方法は以下のとおりです。 1.バウンディングボックスAの2つのベクトルから、直方体の全頂点に相当するベクトル8つを算出 2.8つのベクトルを、バウンディングボックスAのMatrixでD3DXVec3TransformCoordしてワールド座標に変換 3.更にバウンディングボックスBの逆行列を掛けて、バウンディングボックスBから見た座標系に変換 4.面の方程式を利用して、バウンディングボックスAの12本の辺がバウンディングボックスBの6面と交差していないか検査 5.AとBの立場を変えて1からやりなおす で、問題というのは、なぜか微妙に当たり判定の位置がずれてしまう事なのです。特に、Matrixにスケーリングの処理が入っていたりすると明らかにずれてしまいます。 なお、vecMinとvecMaxの値は信頼できます。 自己流ですのでもっといい方法があるのかもしれませんが、これしか思いつかなかったので・・・ どなたかご指示を。
>>177 サンクス。
水分子の熱運動で駆動されていると考えれば、加速度が白色ノイズになって、
それを積分して得られる速度は確かに1/f(ピンクノイズ)になるね。
180 :
171 :02/04/11 00:02 ID:???
179=171です。スマソ。
181 :
名前は開発中のものです。 :02/04/11 01:06 ID:wvSp2EOM
>>178 スケール含みの逆行列掛けるなら、4.の交差判定時も異方性考慮しないと
いけないのが出来てないとかは?
もっといい方法は色々あると思うけど、とりあえずワールドで取る方が楽だと
思う。
182 :
鼻毛 :02/04/11 20:19 ID:/dNrEQMM
>>181 レスありがとうございます。
スケーリングをしなくてもずれてしまうんです。
そもそも、バウンディングボックスの頂点をワールド座標系→相手の
バウンディングボックスの座標系へと変換する場合、D3DXVec3TransformCoord
を使うというのは正しいのでしょうか?
このへんがイマイチよく分らないままなんです
>>182 ワールド座標でやったほうが速いのでは??
さらに、
12本の辺を立場変えて2回もやらなくても、
一方のBOXにもう一方のオブジェクトの6つの頂点が入ってないか
調べるだけで十分。
これだけ単純にしてしまえばズレが出ることはまず無い。
ズレが出てもすぐ見つけられると思うが、どうか?
184 :
183 :02/04/11 23:09 ID:???
>もう一方のオブジェクトの6つの頂点が もう一方のBOXの8つの頂点が の間違いでした。
>>183 お答えありがとうございます。
>ワールド座標でやったほうが速いのでは??
ワールド座標系でのやり方がわからなかったんです(汗
それに、8頂点2セットをワールド座標へ変換するのも、8頂点1セットを
ワールド座標系に変換&相手の座標系に変換するのも、コスト的には
変わらないのでは・・・
>一方のBOXにもう一方のオブジェクトの6つの頂点が入ってないか
>調べるだけで十分。
うーん、あんまりレアケースを考えてもキリがないのですが、これだと
細長い物体が交差した場合に判定出来なくないですか?
186 :
名前は開発中のものです。 :02/04/12 05:33 ID:i7M8RqfU
Direct Input使おうとして、LPDIRECTINPUT8オブジェクトを宣言しようとすると "error C2146: 構文エラー : ';' が、識別子 'g_pDI' の前に必要です。" というエラーが起きるのですが、理由がわかりませぬ。 dinput8.libもリンクしてるし、dinput.hもインクルードしているのですが・・・ サンプルをビルドしようとしても同じエラーがおきます。 D3D8オブジェクトは問題ないのですが・・・ 誰かお助けを、、
>186 多分 ";" が抜けてるんだと思うが、その部分のソース晒せ。
>>186 すぐ上でがいしゅつ
dxguid.lib
>>182 D3DXVec3TransformCoordはw=1で計算だからあってると思う
あとは簡単なモデルとデバッガで調べればどこがおかしいかすぐわかる
マトリクス自体が誤差の積み重ねで正規直行になってないとか・・
まあ「微妙」がどれくらいかによるけど
>>186 藁
構文エラーなんだからリンク以前の問題でしょう
191 :
名前は開発中のものです。 :02/04/12 06:58 ID:i7M8RqfU
いやDirectX付属のサンプルでもなるんですが・・・
>>188 それも入れてるんですが
193 :
名前は開発中のものです。 :02/04/12 07:10 ID:i7M8RqfU
笑われてしまった・・・ 上のログみましたが、dxguid.libはリンクしてるし、うーん、何故だろう・・
194 :
名前は開発中のものです。 :02/04/12 07:17 ID:jFcfvtj.
# なんか変なのがいるなぁ
>>186 DirectX8のヘッダにパスが通ってない.。
VC++付属のDirectX5のヘッダを読んでるに1票。
195 :
186 :02/04/12 07:22 ID:i7M8RqfU
>>194 VC付属のdinput.hを消したら上手く行きました。。
VCにDirectXのSDKが付属しているとは知らなかったです。
どうもです。お騒がせしました。。
197 :
名前は開発中のものです。 :02/04/12 07:42 ID:hwRIELgs
198 :
186 :02/04/12 08:08 ID:i7M8RqfU
>>197 イヤ本当はリネームですが、、
インクルードディレクトリの優先順位を一番上にすればよかったんですね、本当は。
199 :
名前は開発中のものです。 :02/04/12 08:45 ID:HHg4tI.6
200Get! 志望志望志望志望志望志望志望志望志望志望志望志望志望志望志望志望志望 カフ ビーグル
200 :
名前は開発中のものです。 :02/04/12 09:37 ID:t1MnZNUs
なにもわかっていない189に幸あれ!! そして200ズサー
201 :
名前は開発中のものです。 :02/04/12 09:41 ID:sNQyI/Ws
>>189 どうもです。
vecMinとvecMaxはポリゴンとして表示してますから、値は信頼できます。
で、バウンディングボックスのMatrixも、同様に信頼できるわけです。
後考えられるのはD3DXVec3TransformCoordによる計算誤差くらいのもの
なんです・・・誤差が問題なんでしょうか・・・マイッタナー
202 :
名前は開発中のものです。 :02/04/12 21:10 ID:wmHrPQzY
Direct 3Dで、今までメインルーチンでジョイスティック等の入力情報を取得した後 描画していたのですが、 ゲームの速度を一定にするためにタイマーを使って入力を取得するようにしたら、 動きがカクカクになってしまいました。 具体的にはプロシージャのWM_TIMERメッセージ毎に、1/1000秒単位で入力情報を取得しています。 他のタイマー関数などを使ったほうがいいのでしょうか? ちなみにFPSは殆ど変わっていないのですが・・・
>>202 WM_TIMERはウィンドウメッセージの中でも最もプライオリティの低い物ですよ。
(WM_PAINTよりは上だったっけ?)
それと1/1000秒間隔で入力を取得するのは意味がないし、多くのジョイスティック
はそんなに速く反応できません。物によっては1/100秒でも無理です。
>>203 > WM_TIMERはウィンドウメッセージの中でも最もプライオリティの低い物ですよ。
しかも、メッセージキューに複数の WM_TIMER がたまると一つにまとめ
られるし。(そうでないと困るんだけど)
1/1000 秒で WM_TIMER を投げても、実際にはかなり不規則・長い間隔で
WM_TIMER が一つ飛んでくるだけ。
205 :
202 :02/04/12 23:40 ID:wmHrPQzY
なるほどWM_TIMERは駄目でしたか。 しょうがないのでtimeGetTimeなど使ったらだいぶ改善しましたです。 しかしこれでもまだスムーズにいかんです。 昔みたいにVsyncでも使おうかな、、
timeGetTimeでスムーズにならないならばプログラムに問題あり。 ハードの性能とプログラムのバランスがとれていないとか。 ちなみにDirectXのバージョンがDebugとRetailでは動作が変わるが知ってるよね?
207 :
名前は開発中のものです。 :02/04/13 01:05 ID:nn/6jc3U
動作かわんの?! エラーチェックが厳しいだけちゃうんか?
チェックが厳しいから動作がはるかに重くなる。
はるかに遅いか? Debugモードでも問題あるプログラムの方がおかしいような 素Pentium@133とかならしらんけどさー
デバッグモードで遅くなるのはMSのサイト見たほうが早いが DirectXのバージョンによってはデバッグモードではそのほかにマウスカーソルがカクカクするらしい
211 :
202 :02/04/13 02:08 ID:nprCXGIE
うちの環境では、Releaseで実行速度優先にしても、FPSを見る限りはあまり変わりませんね。 元が400FPSぐらいでるプログラムだったので、400/1秒ぐらいの精度が求められる タイマー求めるのは贅沢ですかね、、、
>>211 それはコンパイラのDebugモード。
上に書かれているのはDirectXのDebugモード。
>>211 timeBeginPeriod使ってる?
市販のゲームでdebugとretailと再頒布用のランタイムでそれぞれ動作違うのがあるよね(藁
スタート→設定→コントロールパネル→DirectX→各モード debugとretail変えながらSDKのサンプル動かせばどれだけ差があるかわかる罠。 debugじゃサンプルのMFCFogが遅すぎて使い物にならないがretailだと滑らか@Win98、DirectX8.1、128MB、VooDoo3
Pentium2 392MHz、Win2000、DirectX 8.1、384MB、TNT2 32MBでテスト。 debug: 180fps retail: 350fps まさか倍違うとは。
バージョン8.1でDirectInputを使うと、コンパイルするときに DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800 の警告が出ます。動作には支障はないんですが、なんか気持ち悪いので 消したいです。どうすればいいでしょうか?
219 :
名前は開発中のものです。 :02/04/13 11:50 ID:mB6ENfdk
Direct Inputの初期化で、キーボードの強調レベルをセットしようとすると SetCooperativeLevel関数がDIERR_INVALIDPARAMを返します。 ジョイスティックは大丈夫なのですが、原因が解りません。 誰か教えてください if(FAILED(hr=DirectInput8Create(hInst,DIRECTINPUT_VERSION,IID_IDirectInput8,(VOID**)&g_pDI,NULL))) return hr; if(FAILED(hr=g_pDI->CreateDevice(GUID_SysKeyboard,&g_pKeyboard,NULL))) return hr; if(FAILED(hr=g_pKeyboard->SetDataFormat(&c_dfDIKeyboard))) return hr; hr=g_pKeyboard->SetCooperativeLevel(hWnd,DISCL_EXCLUSIVE); if(FAILED(hr)){ if(hr==DIERR_INVALIDPARAM){ MessageBox( hWnd,"sine","aho",MB_OK); } return hr; }
>>219 少しくらいHELP読め
IDirectInputDevice8::SetCooperativeLevel
>アプリケーションは、DISCL_FOREGROUND または DISCL_BACKGROUND のどちらか一方を指定しなければならない。両方指定することも、まったく指定しないこともエラーとなる。
>同様に、アプリケーションは、DISCL_EXCLUSIVE または DISCL_NONEXCLUSIVE のどちらか一方を指定しなければならない。
221 :
219 :02/04/13 12:12 ID:mB6ENfdk
>>220 即レス有難うございます。
これでアホダイアログが出ずにすみます。
222 :
名前は開発中のものです。 :02/04/16 07:38 ID:KKgE4dNw
Xファイルサンプルがわからねぇー 皆どうしてる? ちなみにスキンメッシュの方。 誰か解説しておくれ
xファイルの読込関係専門のスレに解説(つか、やりとり)があったはず
224 :
なまえをいれてください :02/04/18 03:51 ID:mMey5w46
3DXでDiectXプログラム初心者です。 ライブラリの関数内でよくハングするのですが、 みなさんデバックってどうやっていますか? 使い方がいけないのだとは思いますが、 出来ればMFCのようにライブラリ内部のコードまで追うことができれば 原因もつかみやすいのですが.... 玄人のかた宜しくお願いします。
225 :
名前は開発中のものです。 :02/04/18 04:24 ID:gMNkMEys
nai
226 :
名前は開発中のものです。 :02/04/18 07:41 ID:gMNkMEys
とりあえずテンプレートとファイル読み込みの勉強するか。。。
227 :
名前は開発中のものです。 :02/04/19 01:34 ID:ElxWJZ42
DirectSoundBuffer から DirectSoundNotify を取得できなくて困っています。 バッファは 非プライマリ で DSBUFFERDESC dsbd; ZeroMemory(&dsbd, sizeof(dsbd)); dsbd.dwSize = sizeof(dsbd); dsbd.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_GLOBALFOCUS | DSBCAPS_LOCDEFER; dsbd.dwBufferBytes = dataSize; dsbd.lpwfxFormat = &waveFormat; というデスクリプションで作成しており、 HRESULT hRet = pバッファ->QueryInterface(IID_IDirectSoundNotify, (LPVOID*) &受け取るポインタ); という感じで取得しようとしているのですが、 QueryInterface に失敗してしまいます。 どうしてなのでしょうか?よろしくお願いします。 で取得しようとしている
228 :
227 :02/04/19 01:55 ID:nuN89apc
フラグが足りないだけでした… DSBCAPS_CTRLPOSITIONNOTIFY ですね。 鬱。
229 :
名前は開発中のものです。 :02/04/19 15:24 ID:mCs8PDIE
DXライブラリっていうのでいろいろ試しながら勉強してるんですけど、 フルスクリーンのFlipがウインドウモードに比べてかなり遅いです。 これって、普通なんですか? それとも、DXライブラリがなんかおかしいんですか?
>>229 DXライブラリってD3DXか?
そもそもウィンドウモードではFlipじゃなくBltになるが、
遅くなるのは環境次第じゃないか?
とりあえず自分の環境書け。
>229 マジレスすると、ウインドウモードの場合、リフレッシュレートに左右されないが、 フルスクリーンでプライマリサーフィスのFlipを使うとモニタのリフレッシュレートの上限でしか 更新できなくなる。
232 :
名前は開発中のものです。 :02/04/19 16:26 ID:mCs8PDIE
233 :
名前は開発中のものです。 :02/04/19 23:04 ID:j6.t32zw
おい、誰かいるかー?
235 :
名前は開発中のものです。 :02/04/19 23:24 ID:qxqX/Wuc
シツモン! 参照カウントってなんすか。 これはてんぷれーと系の単語?
>235 ヘルプ読め。 >オブジェクトは、参照カウントが 0 になると解放される。 >AddRef メソッドを呼び出すと、オブジェクトの参照カウントは 1 だけ増加する。
238 :
名前は開発中のものです。 :02/04/20 03:55 ID:jnbDEuhc
239 :
名前は開発中のものです。 :02/04/21 23:33 ID:PLg4cUfA
なんかいろんなところでFlipすると必ず垂直同期を待つみたいなこと 言ってる人がいるけど、待たないFlipもできるんですが・・・ (リフレッシュレートに依存するからFlipは使うべきではないとか言ってる人の気持ちがわからん) 皆知らないだけ?思いっきりヘルプに載ってると思うんですが・・・ 何でこのことが話題にすら出ないのか、かなり謎なんですが・・・
>>239 逆に聞きたいが、ティアリングが起こるFlipを使うメリットはあるのか?
>>240 ティアリングが起こってもかまわないなら、BltよりはFlipの方が速いから
ベンチマーク目的なんかでは使うことはあるな。
>>239 一応言っておくと、NOVSYNCは使えない場合もあるよ。
NOVSYNCを指定したからといって本当にVSYNCを待たないかどうかはドライバ
次第。ドライバによってはNOVSYNCを指定しても常に待つものもあるし、
指定しなくても待たないものもある。
>>239 マ板のリフレッシュレートスレが詳しいと思う。
Direct X8で、いままでDrawPrimitiveUPを使ってたのですが、 DrawPrimitiveでたとえば(1,1,1)の座標に描画したい時って D3DXMatrixTranslation(&objMat,1,1,1) みたいに使うんですか? なんか上手くいかんのですが、、、、
>>243 DrawPrimitiveUPで(1,1,1)の座標に描画したい時は
どうしていたのかと
245 :
243 :02/04/22 09:21 ID:bz.uCQ66
具体的にいうと、SetTransformでワールド座標にセットすると、 その前に描画していたポリゴンが消えてしまうのです。 SetTransformをコメントアウトすると前に描画していたのは残ってるのですが・・・ D3DXMatrixTranslation(&objMat,1,1,1); lpD3DDEV->SetTransform(D3DTS_WORLD,&ObjMat); lpD3DDEV->SetStreamSource(0,obj[0],sizeof(LVERTEX));; DrawPrimitive(D3DPT_TRIANGLEFAN,0,2); ってやってます
>>245 状況がよくわからんけど
lpD3DDEV->SetStreamSource(0,obj[0],sizeof(LVERTEX));;
DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);
D3DXMatrixTranslation(&objMat,1,1,1);
lpD3DDEV->SetTransform(D3DTS_WORLD,&ObjMat);
lpD3DDEV->SetStreamSource(0,obj[0],sizeof(LVERTEX));;
DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);
こうするとどうだ?
247 :
:02/04/22 21:48 ID:FyuY6QgE
248 :
名前は開発中のものです。 :02/04/22 22:11 ID:mGNBYW3s
from BBX >プログラムのコメントの書き方が、あまりよくないと思います。 >「サーフェスを得る」や「イメージサーフェスを作成」などといったことは、 >使っている関数名(メソッド名)などを見れば一目で判りますし、 >逆にそれで判らなければプログラマとしてまずいです。 > >自分で後からそのプログラムソースを見たり、他人が見たりした時、 >知りたいのは「サーフェスを得ているかどうか」ではなく、 >「なぜサーフェイスを得ているのか、何の目的なのか」ということだと思います。 >だから一連の処理の頭に「処理の目的、簡単な流れ」を書けばそれで十分だと思います。 >関数を使う毎に、その関数のただの日本語名のような文章を書いていると、 >意味の少ないコメントが乱立して、メンテナンスし難くなる場合が多いです。 うぜえええ。なんでこんな事まで言われにゃならんのだ
あれ、いつのまにBBXのアドレス変わったんだ?
>>248 確かにうざいが、引用にこの一文が抜けてるぞ
「あと、余計なお世話だとは思いますが、」
まぁ、いいじゃん、相手どうみても初心者だし。
つか引っかかるほどのもんじゃないし、
言われた本人がプライド傷つけられて来たのかな(・∀・)ニヤニヤ
>>248 一連の流れからするといわれてもしゃーないねー。
>だから一連の処理の頭に「処理の目的、簡単な流れ」を書けばそれで十分だと思います。 そんなのソース見れば解るじゃん。 コメントなんかイラネーよ。 逆にそれで判らなければ、ソースとしてまずいです。(ワラ
そんな無理して噛みつかんでも・・・
質問した奴がタコだったってことで。 次逝こう。
豊田芳彰って何者?
255 :
転がる :02/04/23 00:59 ID:kCdUFZP2
>>255 環境書いてないから適当に答えるけど、マスクの画像用意してANDを取ってからORすればいいんじゃないの?
ここはBBX補完スレですか?
はいはい、ヲチはここで終了。
低脳な煽りほど効果ある、とか言うんだろうなぁ。低脳は。
とにかく、この由緒ある名スレを荒らすんじゃない。 やるならせめて他のスレでやれ。
マリアは処女で身篭った(本人談)から父親が居るわけがない。 芳彰って天才たけどボケも面白い。
赤ちゃんはコウノトリは運んでくるんですよってか?(藁
>>256 どうやればいいんでしょうか?今までポリゴンにテクスチャ貼り付ける事しかやった事がないもんで・・・
ちなみに環境はDirectX8.1です
266 :
名前は開発中のものです。 :02/04/24 00:18 ID:sJ/Mtu..
age
>>265 はいお願いします。全ソースじゃなくても、ポイントだけ押さえて頂ければ後は何とかしますので
269 :
名前は開発中のものです。 :02/04/24 07:31 ID:sJ/Mtu..
てゆーかまず
>>265 がどうやってるか書けYo。
どうせやり方を書いたって僕の使っている方法とは違うのでとか言い出すんだろ。
大体
>>256 で答えが出てんじゃねーか。
271 :
265 :02/04/24 17:38 ID:ukW4/.uI
うっせー、ヴォケ。 素直に教えを請うてるんだから教えろよ、禿。 いいから速く教えろ
>>271 まっ煽りなんだろうが、答えは出ている品(藁
>>272 むしろ騙りじゃない?まぁ
>>268 の物言いも何だか居丈高だけど…。
とりあえずそのレベルなら、D3DXCreateTextureFromFileExAで読み込むとき、
カラーキーを設定して、そのレーダーの回りの部分とやらを抜いて
おけばいいんじゃない。テクスチャをロックしてα値書き込んだりは慣れてから。
というか、ぷよ〜ん氏のサイト閉じちゃったんだね(´・ω・`)ガクーリ
なんかあったのかな…。
>>273 レーダー上のアイコンがはみ出るってことだろうね
ステンシルバッファ使えばとか言ってみるテスト
>>274 うぉ、サンクスかなり読み間違えてた。
というわけですまない、273は無視してくれ。
普通は敵は1ドットにするか、アイコンにするなら枠からはみ出るようにするかな。 あとは、外枠を描画してはみ出た部分を隠すってのが常套手段。 255の要望通りの動作にするならステンシルやDestαを使うのが素直な実装方法だけど、 どっちも環境が限定されるので注意。NV系では16bitカラーでは使用不能。 一番汎用的な方法は、α成分に円を描いたマスク用のテクスチャを併用するか、円形の ポリゴンに敵のアイコンテクスチャを張り付ける方法かな?前者はマスクのテクスチャ 座標を上手く計算する必要があって、後者は1テクスチャにアイコン1つにしないと駄目。 あとは、円の中心からの距離をαに入れてαテストで抜くとか、レーダーをテクスチャに 描画するとか色々やり方はあるな。あ、一番初歩的なのを忘れてた。Lockして描画。
277 :
名前は開発中のものです。 :02/04/24 20:59 ID:sJ/Mtu..
271は騙りです。
>>270 >てゆーかまず
>>265 がどうやってるか書けYo。
素直にxyzwの頂点を4つ用意して、SetTextureでテクスチャを指定してDrawPrimitiveUPです。
まずレーダーのディスプレイになる円状の物をテクスチャを描いてから、その上にアイコンを同じように描画してます。
>どうせやり方を書いたって僕の使っている方法とは違うのでとか言い出すんだろ。
いやあ、そんな事は言いませんからよろしくお願いします。
>大体
>>256 で答えが出てんじゃねーか。
そのテクスチャに対してANDとかORする方法が分らないのです。
>>274 ステンシルバッファは、対応しているハードが少なくないですか?
GeForce2MXあたりをターゲットにしているのですが、GeForce2MXでステンシルバッファのサンプルが動かなかったので心配です。
レンダリングステートでなんとかできないか?
279 :
名前は開発中のものです。 :02/04/24 21:12 ID:sJ/Mtu..
>>276 色々候補を挙げていただいてありがとうございます。
>α成分に円を描いたマスク用のテクスチャを併用するか
レーダーの円状のテクスチャのエッジに、元画像のα値を使ってアンチエイリアス
を利かせたいと思っていますので、この方法で行きたいと思います。
これは、マスク用の画像のα値の一部を、アイコンのテクスチャのα値にLockして書き込んでやればいいのでしょうか?
もっと速いやり方がありますでしょうか?
280 :
名前は開発中のものです。 :02/04/25 00:38 ID:llT4pS1c
>>279 単純にD3DXCreateTextureFromFileExの最後から4番目の引数に透明色指定するだけじゃ駄目なの?
例えばD3DCOLOR_ARGB(255, 0, 0, 0)とか
281 :
276 :02/04/25 03:13 ID:???
>>277 NVIDIAのチップならだいぶ前からステンシルバッファをサポートしてるよ。
ただし32bitカラー限定。
>>276 マルチテクスチャでステージ0にアイコン、ステージ1に円形マスクを指定して
色をステージ0のテクスチャ、αをステージ1のテクスチャから取得するように
するだけ。
αマスクの方のテクスチャ座標はTexGen使うと簡単だけど、トランスフォーム
済み頂点使うなら自分で設定しないと駄目だね。
282 :
名前は開発中のものです。 :02/04/25 20:10 ID:L3yRfTHs
>>281 レスありがとうございます。
>マルチテクスチャでステージ0にアイコン、ステージ1に円形マスクを指定して
また質問なのですが、アイコンが元々持っているα値も一緒に使用する事は出来ないのでしょうか?
レーダーとアイコン両方のテクスチャのα値の積を使用したいのです・・・
こうなるとLockするしかないでしょうか
>>282 実際にやってみたのか?
そのものズバリな回答が欲しいのなら、ソース上げれば誰かが追加してくれる。
>>282 >レーダーとアイコン両方のテクスチャのα値の積を使用したいのです・・・
そのまんまの設定があるけど、ちゃんとヘルプ読んでる?
>>282 BBXざっと見たけど、一度ヘルプをざっと眺めておいた方が良いと思うYo!
286 :
282 :02/04/25 22:31 ID:???
みなさんのおっしゃる通り、ヘルプをよく読んでみたいと思います。 変な文章が多いし、今まではちょっと読んで分らなかったらスグ投げ出していたので・・・ それでも分らなかった場合は、また質問させてください。みなさんありがとうございました。
I/O別冊のDirectX8についてるsafuli2.xっていうファイルなんですけど、 これを自分で読み込んだときと、DirectX8のサンプルで読み込んだときで、質感が変わってしまいます…。 サンプルとの違いを調べてみたんですが、多分、 FVFを強制変更して、法線ベクトルを計算しているとこが違うと思うんです。 なんでこんなことしてるのでしょう? XFileのデータをそのまま表示するほうが元のデータに忠実に表現できるような… と思うのは間違いなのでしょうか。 (しかもこの部分のコード入れても俺のは綺麗にならなかったLOL)
288 :
287 :02/04/26 02:21 ID:???
今、DirectX付属のSkinnedMeshサンプルで読み込ませたら、 やはり同様に質感が変わって見えました…。 …XFileのほうが例外的なファイルであるという結論にしてしまおうか(爆 でもやっぱりスッキリしないなぁ。
289 :
名前は開発中のものです。 :02/04/27 12:00 ID:Nzn80/ZM
>>287 ライトのプロパティとかレンダーステートは同じなんか?
法線ベクトルは、元のXファイルにデータとして付加されていない場合
頂点情報から生成しているだけだと思った。
290 :
287 :02/04/27 17:13 ID:???
>>289 今レス書いてて気づいたんだけど、
自動法線正規化のレンダーステートに完全に惑わされてました。
法線を計算するんじゃなくて、法線を正規化するだけなんでした。
あー、もう俺ってバカ…。
参考になるレスをどうもありがとうございました。
291 :
名前は開発中のものです。 :02/04/28 20:16 ID:JfpcGEt2
メタセコイアで作ったテクスチャつきのメッシュを、サンプルのOptimizedMeshで表示させてみると、 陰影が滑らかに付かない個所が出てきてしまいます。 単純な円柱を表示させてみても、他のところは滑らかに陰影がついているのに、 特定の個所だけは急に暗くなったりします。 これってメタセコイアの出力するxファイルがまずいんでしょうか?
メタセコのスムージングの角度設定 だな 設定角度以上はわざと滑らかに繋がないでエッジを出せるようになってるんだよ
293 :
287 :02/04/28 21:23 ID:???
>>291 メタセコで立方体を製作
→オブジェクトのスムージング角度を89.5に設定
→見た目を確認
→オブジェクトのスムージング角度を90.5に設定
→見た目を確認
→ウマー
295 :
名前は開発中のものです。 :02/04/29 20:52 ID:yRZDCEAY
DirectX7 のBlt命令を使って、 転送元画像から転送先画像への転送を、 32x32(または16x16)のパターン画像でくりぬいて転送することは可能でしょうか? またはαブレンドのように、 自前で転送処理を書く必要があるのでしょうか?
可能。つか、SourceRECTで指定するだけじゃん
297 :
295 :02/04/29 21:05 ID:???
>>296 説明不足ですみません。
たとえば、src(0,0)-(99,99)を、dest(50,50)へ転送するために、
16x16(or32x32)のパターンを使って、
フェードインっぽい処理をしたいと思っています。
たぶん可能だけど今一伝わらない。 画像なんかを解説してくれれば一発なんだが
>画像なんかを 画像なんかで
301 :
295 :02/04/29 21:14 ID:???
>299 まだ設計してる最中なのでソースは書いてないのですが、 とりあえず下のような感じの処理です。 (即興なので、バグってたらすみません)(^^; BYTE *pbyInp; // 引数・入力バッファ BYTE *pbyOut; // 引数・出力バッファ BYTE *pbyPattern;// 引数・転写パターン *pbyOut = *pByInp & *pbyPattern | *pbyOut & ( ~*pbyPattern );
302 :
295 :02/04/29 21:16 ID:???
(301)書いた後でみてみたら、この処理は、 1pixel=1bitとして考えたときの処理になってます。 24bitで考えるとヘンになるので念のため・・(^^;
>>295 カラーキーを使って先にマスク画像を重ねて、その後転送すれば一発じゃん。
304 :
295 :02/04/29 21:35 ID:???
>303 確かにその手を使えば1発なのですが、 その方法だとユーザ側にカラーキーを固定してもらう必要があります。 汎用スクリプトエンジンの中に組み込みたいので、 できればカラーキーも自由にしたいのです。 (現状では、画像単位で自由に出来るように設計しています。) あと、αなどの都合でシステムメモリサーフェスを利用するとすれば、 あまりBltそのものの回数を増やしたくないというのも・・・(^^; (転送面積÷パターン面積分の転送が必要なので。)
>>304 ノベルツールだろうか、、、
現状と仕様と制限を詳しくキボンヌ
306 :
295 :02/04/29 23:49 ID:???
>>305 当方、同人サークルをやっておりまして、
今まで2作ほど、DirectX3でゲームを作ったのですが、
その流れで考えている2Dのライブラリです。
前作のものもスクリプトでノベル程度のものは作れたのですが、
次はプログラムとしてはデザインパターン重視で仕様追加を行いやすく、
仕様追加として画面効果を幾つか増やそうと思っています。
基本的には自サークルで使おうと思っているのですが、
知り合いのサークルさんでも使ってもらうような話になっているので、
出来る限り、プログラム側の一方的な制限を設けないようにしたいと思いました。
・・ただ、[304]からレスが増えない所をみると無理なのかな・・(^^;
個人的には、"DDBLTFX::lpDDSPattern"というのが気になっているのですが。
(解説書には"タイルパターンとして使用するサーフェスのポインタ"とだけ。)
307 :
295 :02/04/29 23:59 ID:???
大まかには、セル画管理ライブラリです。
ライブラリに、"画像読み込み"と"テキスト画像化"を指示した上で、
ライブラリ内のZバッファを管理できるクラスに対して、
どのサーフェス(番号)のどの範囲を、指定Zオーダ(番号)で登録すれば、
その結果を画面に表示するようなものです。
登録済みのセルに対して、移動(目的地・速度)などのオペレーションが指定できて、
2度目以降の描画は変更セル範囲のみ・・っと、これは常識ですね。(^^;
このライブラリの関数をさらにパックした簡単なスクリプト言語を作って、
スクリプトで動きを実現出来るようにしたものが前作までの仕様です。
各画像は、BMPファイルから暗号化を兼ねて圧縮していまして、
その圧縮時にカラーキーを指定することが出来るようにしていましたので、
CG1枚に対して1つのカラーキーが持てるようになっていました。
(
>>303 さんの手法が素直に使えない理由なんですが・・)
>>307 カラーキーが使えないのなら、LOCKして抜けば?
いちまいちわかってないけど、特定のパターン(渦巻きとか)でフェードインとかしたいって事? そら、MMXでゴリゴリ書くパターンですな または、3dビデオカードなら、 パターンをテクスチャ(ラップテクスチャモード←貼る面積よりテクスチャが小さい場合、テクスチャ模様を繰り返し適用する) にして重ねれば出切る
310 :
295 :02/04/30 00:39 ID:???
>>308 αブレンド(=Lockで抜く)処理の部分に対して、
スペック的に付いてこないマシンで描画する時に、逃げ道として
パターンによるフェードアウトをしたいと思っています。
>>309 まず、渦巻きなどのPixelの位置まで移動する処理は考えてないです。
(初歩がわからない内にその先へ進むと後々大変なので・・)
ただ単純な『Bltでマスクパターンの指定が出来ないかな・・』というものです。
(実処理は
>>301 のような感じです。)
あと、Direct3D や、DirectX8 使用となると、
必須スペックが上がってしまうので、同人レベルでは所詮・・(^^;
>310 そんなのGDIで十分じゃん。 DirectDraw使うにしても、本買えばそういう基本的なことは載ってる。
312 :
295 :02/04/30 01:28 ID:???
>311 それを画面更新あたり300枚以上のセル画に対して処理すると考えると、 GDIでは処理落ちしてしまいますので、 出来る限りDirectDrawのAPIで改善できないかと考えています。 DirectDrawの本についても、単純なBlt使用法なら、 大抵の本に載っていますが、すこし特殊?な方法になると、 私の購入した本には載っていません。 もし、よろしければ、事象が掲載されている本を教えて頂けると嬉しいです。 (当方、DirectX3の時には、『翔泳社 DirectDrawプログラミング』が、 メインの参照本となりました。)(ISBN4-88135-450-7) 本業がフリープログラマのため、(クレジットカードが作れないため) 米国の本は直接購入出来ないですが、 普通に注文・購入できるものであれば、是非買いたいと思います。
313 :
名前は開発中のものです。 :02/04/30 01:50 ID:oS/CyFd2
他のスレで誰も教えてくれませんでした。 すこし前のレスにメタセコの話があったので期待。 ライトウェブのXファイルを吐き出すプラグインの質問(ディストームのHPで落とせる奴) ボーンの情報が、吐き出されていません。親子関係の動きは正常に吐き出されています。 DirectX8でやってます。ライトウェブは、6.5Bです。 何方か、分かる方いませんか?
>>313 プラグインって内部の情報公開してた?
多分ディストームに問い合わせないと駄目じゃない?
>>312 っていうか、セルを描画し終わったサーフェスに対してGDIでもDirectDrawでも描画すれば?
>それを画面更新あたり300枚以上のセル画に対して処理すると考えると、 GDIでは処理落ちしてしまいますので、
と
>スペック的に付いてこないマシンで描画する時に、逃げ道として パターンによるフェードアウトをしたいと思っています。
から考えると、どうしたってハードウェアが駄目なら同じだと思うが。
本当にフリープログラマなの?
そもそも、DirectDraw使う事が間違ってると思う。 DIBSectionで十分だし、そっちの方が向いてるかと。 あとは、NxLibとかのライブラリを利用するとか。
317 :
295 :02/04/30 02:32 ID:???
>315
全体のフェードアウトの実装を目的とするならば、
(同じような機構で実現できるのなら)それが、個々のセルでも実現できると。
それで、元々の質問が、DirectDrawAPIで実装可能か?
(→ハードウエア側で実現できる可能性を持たせることができるか?)
というものなので、途中で話が曲がってるような気が。
っで、本当にフリープログラマです・・が、実用ソフトの。(^^;
(・・なので、DirectDrawに関しては素人と同レベルです)
>>316 今回、質問させて頂いた件は、考えているライブラリの
一部の処理なので、DIBSection使用で考えると、
別の部分で色々な壁にあたってしまいます。
ほかの(オープンソース)ライブラリを利用することも
考えてはいるのですが、今はパターンの問題だけなので、
(結果が分かれば簡単に実装できるはずと思って)
元々のソースを再利用していく考えです。
>>317 サイズ次第とは言え300枚以上のセル画に対してマスク処理を行うという設計自体が無理があると思うが
319 :
295 :02/04/30 02:54 ID:???
>>318 もちろん、全部マスク処理を行うわけではなく、
転写方法クラスで、セルの転写情報を持ちます。
実際に使用する段階では、そのほとんどが通常の転写(Blt)を
利用すると思いますし、幾つかのセルの集合体のセルを定義して、
そのセルをプライマリにマスク描画する事で、
重たくなる処理の回数自体を減らすことは出来ると思います。
DirectX9まだ?(゚ε゚)
>>321 正直あまり来て欲しくないヘタレは、オレだけだろうか…
>>322 安心しろ、ここにもいる。
やっとWizardが吐くコードを理解したのに…
大幅に変わるの?
325 :
名前は開発中のものです。 :02/04/30 15:45 ID:fNd92hNg
7から8に変わったときは正直面倒くせーって思ってたけど、 今となっては7には戻りたくないな、、
326 :
名前は開発中のものです。 :02/04/30 16:10 ID:a3cFuDTc
D3DXの拡張はガンガンやって欲しいな。
拡張より洗練を! とかぃぅ
d3dfile.cpp で定義されてる CD3DFile と CD3DMesh ってどう違うの? どちらもファイルからXファイル読めるみたいだけど…
329 :
名前は開発中のものです。 :02/04/30 23:53 ID:ZnWxoeAg
>>325 漏れはDirect X8が出る直前にDirect X7使ってゲーム開発はじめたよ
Direct X8でいろいろと便利になった(不便になった床もあるらしいけど)って聞いて
ちょっと悲しくなったりしたよ
今からDirect X8つかい始めるとX7の時の二の舞になるので、
Direct X9出てから開発はじめようと思うんだけど、
なかなかでなくて困ってる・・・いつ頃出るの?夏だっけ?
まだβも出てないよ>DirectX9 βが出てから半年以上はかかるから、安心してDirectX8を使いなさい。 DirectX7以下と8で大きく変わってるから、8でシェーダーで遊んでおくのがいいかも。
今から7をやってみようというのは無謀ですか
>>331 勉強にはなるだろうけど、開発効率は悪い。
333 :
sage :02/05/01 03:41 ID:7caWKSiI
Win32 Console Application でDirectXを使うにはどうしたらいいんでしょ? 引数のHINSTANCEに何を入れればいいのか分からない・・・。
334 :
名前は開発中のものです。 :02/05/01 04:49 ID:ko02TnFs
335 :
なあ :02/05/01 07:56 ID:???
(^^; ↑この顔文字はやめようぜ。
::GetModuleHandle(NULL)
わーい(^^;
339 :
336 :02/05/01 17:40 ID:???
>>334 軽く読んでみたけど、イベントドリブンが性に合わないってのは、
適当なメッセージループの説明を読んでしまったからなんだろうなぁ。
WindowsプログラムだってMS-DOSの時と何ら変わりなく組めるのにな…。
と愚痴ってみるテスト。
イベントドリブンはOOみたいなもんで、受け入れられるかどうかが問題だね。 馴れてしまえばなんでもないことなのに。 それか、メッセージポンプをメインループに組み込めばコンソールアプリケーション にする必要もないのに。キー入力のついでにPeekMessageすればいい。
>>340 そしてメッセージポンプをメインループに入れてソースを見渡すと、
アプリのアイドル処理とはゲームのメイン処理だった、ってことになるんだよな。
(^^; (T_T) (^^)/
343 :
335 :02/05/02 06:16 ID:???
DirectX9のベータがまもなく出るらしいage(^^;
DirectX9のβが出たら、誰かインストールする? インストールしたとして、普通にアンインストールできるのかな?
345 :
名前は開発中のものです。 :02/05/02 10:17 ID:YqVtkjO.
>344 .NETでひどい目に合った立場から言わせてもらえば、 DriveImageでバックアップ取ってから入れるのが吉。
そりゃもちろん、パーティッション新たに切って入れるよ。 OSとVC++と・・全部いれるの大変だなあ。
347 :
名前は開発中のものです。 :02/05/02 12:27 ID:S25ejeZM
ふふふ、DirectX 9が出たらDirectX 8.1ユーザがまた嘆き悲しむのかね。 APIを容赦なく刷新してくれるのは嬉しいけどね。 DirectX 3あたりのがずっと生き残ってたらと思うと寒気がする。
つか、素人なら、開発の長期化にそなえて影響受けないようにクラス設計しとけ DX抽象クラスから派生でDX9クラス作れ
349 :
名前は開発中のものです。 :02/05/02 13:41 ID:LSedsLX2
Direct3Dは、8からはしばらく変わらんだろ。 忘れがちだが、バージョンアップで大規模な改変が行われたのは 7→8のときだけだよ。
DirectX10までは予定が発表されてるしね。 PSとVSの統合って文法が同じになるだけかな? PSでも成分の入れ換えができるようになるならめちゃくちゃ嬉しい。
しかし、メーカーはXBOXのGPUをターゲットにしないかな 結局、新機能はほとんど普及しない罠
結局デモプログラムぐらいしかピクセルシェーダ−も使えんのはつまらんよなあ・・・
354 :
名前は開発中のものです。 :02/05/02 17:23 ID:7aVH7DDk
対象をXboxに絞るんなら PS/VSとも、作り上げることの出来る シェーダールーチンって限られてこないか? 結局どこも自前レンダーステート(又はNVLink) みたくなってるんだろうなあ。
355 :
アゲ :02/05/03 05:24 ID:???
DirectXでゲーム作ってるんだけど起動して1分くらいでパソがごおおおおおおおおおおおおおおおおおおおおおおおお って轟音を上げるんだが処理が重いのかな?普通? あまりパソゲーやらないんでよく分からん。ちなみにペンチ700MHz。
おれはゲームやると何分かしたら 轟音上げるけど。 環境は同じくらい。
おれはゲームしなくても常に轟音。
CPUファンの回転数が上がってるとかでなくて?
359 :
名前は開発中のものです。 :02/05/03 11:27 ID:wKrDTHAc
一つのトライアングルでuv値を0〜10とすると 0〜1に比べて物凄く遅くなりますが どういった理屈でこうなるのでしょうか??? 地形の表示で,遠くのポリゴンを何個かまとめて表示させているのですが, これのおかげであまり速くなりません...
360 :
名前は開発中のものです。 :02/05/03 11:30 ID:wKrDTHAc
>>355 ファンにほこりが溜まっているのではないですか?
私は轟音がして一ヶ月くらい放っておいたら電源が壊れました
361 :
アゲ :02/05/03 14:36 ID:???
>>357 やばくないか?それ
まぁ漏れが前使ってたデスクトップはプレステ2よりうるさかったけどね。
>>360 ノートだから開けられんです。トーシロなんで・・・。
つーか同時に描画できるサーフェス(キャラクター)て何個くらいまですかね?
当然環境によって変わるんだろーけど・・ ちなみに漏れのVRAMは8M。
>>361 DirectDrawかDirect3Dかで違うし(w
364 :
アゲ :02/05/03 21:51 ID:???
365 :
名前は開発中のものです。 :02/05/03 23:10 ID:ZQ0w8Z/2
>>364 キャラクターってどのくらいの大きさやねん!
スプライトが何枚表示できるかはVRAM関係ないぞ。
(もしかして、別のスプライトか?)
>>365 ビデオメモリに入りきらず、システムメモリになると遅くなるからでは?
368 :
アゲ :02/05/04 02:57 ID:???
>>364 よく知らんがそれって古い技術なのでわ?
つーか厨房でも使えるの?
>>368 2Dでチョット前のPCもターゲットにするならDirectDrawで充分
370 :
アゲ :02/05/04 03:05 ID:???
>>368 それを聞いて安心したぜ。
てか左右反転で転送することってできますか?
も〜〜ダイレクトXのヘルプは全部英語でサパーリです(´д`;
>>370 それってbltで?rectで?どっちにしてもできるけど
WinGBitBltがお勧め
>ダイレクトXのヘルプは全部英語で ネタ?
WinGってDIBSectionになってるんだけよな? なぜ今ごろ? Windows3.1用のゲームでも作る気なのかな?
>>374 こ、これほど「鬱だ氏のう」の文字が、似合うスレもないな…。
376 :
名前は開発中のものです。 :02/05/04 11:27 ID:LhfxDlgg
表示は全てgifをつかうようなアプリケーションなら、 GDIだけで作れるんでしょうか?
別にGIFとかBMPだとか関係ない。 要は速く描画したい時とか、標準のAPIでできない事をする時にライブラリ使うの。 解ったら早速WinG使いなさい。
ついでにPCMで和音使いたい時はWaveMIXを使う事。これ最強。
こっちこそ真のWinGスレだな
382 :
アゲ :02/05/04 17:36 ID:???
>>371 DirectDrawでできるってこと?それともそのWinGを使えってことですかい?
だが簡単に引数のオプションで指定したりしてできるわけじゃないんデショ?
てかWinGって評判悪いの?(付加疑問文)
どっちでも簡単にできるが 大評判のWinGつかっとけ。
2DはWinG。最強。
ガンダムの一種ですか?
386 :
名前は開発中のものです。 :02/05/04 20:34 ID:DoQwTAVw
彡 ビュウウウ… 彡 彡 .∧ ∧ このスレ寒いなオイ・・・。 ヾ(,,゚Д゚),) 人つゝ 人,, Yノ人 ノ ノノゞ⌒〜ゞ . ノ /ミ|\、 ノノ ( 彡 `⌒ .U~U`ヾ 丿
WinGさえあれば、モテモテになれそうな気がしてきたよ…。
389 :
名前は開発中のものです。 :02/05/05 21:51 ID:GK7msIf2
390 :
名前は開発中のものです。 :02/05/05 21:53 ID:GK7msIf2
age
391 :
名前は開発中のものです。 :02/05/05 21:57 ID:GK7msIf2
394 :
名前は開発中のものです。 :02/05/05 23:44 ID:HZ/kacKY
DirectSound3Dで川のせせらぎの音のような不定形のものを表現するとき 川がある位置にところどころ音源を置くやりかたでいいんでしょうか。 音源が物凄い勢いで増えてしまうような気がして不安です。
>>393 川のせせらぎって水がはねてるところから聞こえるよね?
川全体から聞こえているわけではないのよ。
DirectX8にて2Dシューティング作っているんだが 2D格ゲーの超必殺技を使う時に光るような効果は 3Dで表現するにはどんな感じでやればいいんでしょうか? どなたかヒントでもいいので教えていただけると嬉しいです。
目コピできない人は ゲームプログラマの才能ないよ
3D格ゲーの超必殺技を参考にすればいいじゃん
399 :
名前は開発中のものです。 :02/05/06 17:51 ID:JfFPQD72
モデラーに、よくメタセコの名前がでてきますが、 これで出力したXファイルって、読み込ませても表示されないんですが、 どうすればできますか? なんか8には対応してないとも聞いたのですが、、、
2Dシューティングを作っていて2D各ゲー参考に…って言うときに どうして3D云々が必要になるの?
>>396 エフェクト用の画像を用意して、半透明処理使って描画。
というか、これ以外にやりようがない気がするが…(w
フラッシュってことなら、画像と加算して描画しる!
効果だけ3Dにしたいんでしょ エフェクトだけ3D使ってるのって結構あるじゃん
403 :
名前は開発中のものです。 :02/05/06 19:45 ID:VKx4oYY2
>>400 3Dエフェクトを使って絵を用意せずにきれいなのをやりたいと
思ったからです。
404 :
名前は開発中のものです。 :02/05/06 20:27 ID:FxlgJW6E
ポイントスプライトでパーティクル
>>403 それ、「2D格ゲーの超必殺技を使う時に光るような効果」には
ならないと思われ。
だって、あれは画像使ってるんだし…。
>399 普通にできます
407 :
名前は開発中のものです。 :02/05/06 23:52 ID:iMlkcTys
DirectX8のフルスクリーンモードでメニューやダイアログを表示させる方法はありますか? 7以前はFlipToGDISurface(だっけ?)でできたようなんですが…。
408 :
名前は開発中のものです。 :02/05/07 00:21 ID:beSQZnQE
>>407 俺の場合、640x480で!D3DSWAPEFFECT_FLIPで
表示されるダイアログに重なるように事前にマウスカーソルを
置いておくようにするとダイアログが表示可能だ。w
まあ精進しろ。
409 :
名前は開発中のものです。 :02/05/07 07:57 ID:GYsO3cnI
今までDrawPrimitiveUPで描画していたのをDrawPrimitiveに変えたら、 FPS落ちてもた。 HT&L対応してないビデオカードだとそうなるのだろうか、、、、
VertexBufferのフラグを適切に指定しないと遅くなるよ。 NVIDIA曰く、適切に指定すれば常にDrawPrimitiveの方が速いそうだ。
その適切を解り易く解説している所知りませんか? セットアップしたらもう変更も参照もしねーよって時は WRITEONLYとPOOL_DEFAULTでいいのかぁぁ?よくわかんない
412 :
名前は開発中のものです。 :02/05/07 11:19 ID:Aw7Dnvr2
>適切に指定すれば常にDrawPrimitiveの方が速い それってHT&L対応していないチップででもですかね・・・
413 :
名前は開発中のものです。 :02/05/07 11:20 ID:H21ddL0Q
IDirect3DDevice8::CreateVertexBufferで D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY
414 :
名前は開発中のものです。 :02/05/07 11:55 ID:Aw7Dnvr2
D3DUSAGE_DYNAMICフラグを指定したら、CreateVertexBufferの時点で 何故か落ちてしまうのですがビデオカード関係あるんですかねぇ、、、 D3DUSAGE_WRITEONLYは大丈夫でしたが、、、
415 :
名前は開発中のものです。 :02/05/07 12:08 ID:H21ddL0Q
>>414 ヘルプにD3DUSAGE_DYNAMICは
D3DPOOL_MANAGEDでは使用できないと
書いてあるな。
416 :
名前は開発中のものです。 :02/05/07 12:15 ID:Aw7Dnvr2
>>416 その通りでした。どうもお騒がせしますた。
しかし、D3DUSAGE_DYNAMIC指定してもFPSかわらんです、、、
やっぱTNT2が悪いのか???
Direct3Dばかりのスレで質問するのも恐縮ですがDirectPlay関係で質問があります。 DPN_MSGID_RECEIVEだと、別スレッドで処理させるためのような戻値のDPNSUCCESS_PENDINGがありますが、 それ以外のメッセージではとても別スレッドで処理させるものとは思えないんです。 特にDPN_MSGID_INDICATE_CONNECTはイベントを作って同期を取れ、っていってるくらいの仕様で…。 これらについてはメッセージを受け取ったスレッドで処理してしまうのが良いのでしょうか? そうするとスレッド間の同期がまたややこしくなりそうな気がするのですが…。
>>412 GeForceだってソフトウェア頂点処理は使えるし、常にって言うくらいだから
T&L無しのビデオカードでもそうなんじゃない?
でも、T&L無しの場合は速くなったとしても誤差の範囲だと思うよ。
T&L使う場合は、VertexBufferを作る場所なんかでも大きく変わるし、Lockの
仕方でもかなり変わるんだけど。
パフォーマンス関係の資料はNVのとこにいっぱいあるから見てみるといいかと。
頂点は32バイトの倍数のサイズが一番効率いいとかいう資料もあるよ。
(Indexedでなければ単純に小さいほど良さそうな気がする)
419 :
396 :02/05/07 16:29 ID:djkdk0uQ
>>401 >>404 ご意見ありがとうございます。
>>402 よくあるんですか?
もし3Dエフェクトについて少しでも書いてあるページをご存知でしたら
お教え願います。
>>419 アーケードゲームだとGGX、カプエス2とか、どう見ても3D使ってるね。
PCゲーだと、英雄伝説4とかが使ってたぞ。
エフェクトならレンダリングステートの設定とか変えるだけでも結構変わる。
わかったらOpenGL使いなさい
見なくてもNAOMIという時点でポリゴンなのは当然かと>GGX、カプエス
423 :
名前は開発中のものです。 :02/05/09 18:17 ID:OK3DVRvU
SDKに入っているサンプルXファイルで、Tiger.xはきちんと表示できるのですが、 car.xだと真っ白に表示されてしまいます。 DrawSubset()を使っているのですが。
424 :
名前は開発中のものです。 :02/05/09 18:42 ID:69MmpqZc
>>423 後学の為に、Xファイルの中身は見るようにした方がいい。
Tiger.xは単一のメッシュでテクスチャで色付けされている。
一方car.xは複数のメッシュに分割されており
おのおの違うマテリアルを設定することで色分けをしている。
D3DXLoadMeshFromXでXファイルをロードした際
マテリアルの配列を取得しているはず。
DrawSubset()で使う前に
それに合わせたマテリアルを設定しなければ
単色で表示されてしまう。
425 :
名前は開発中のものです。 :02/05/09 19:42 ID:OK3DVRvU
>>424 即レスありがとうございます。
SDKのサンプル(EnhancedMesh.cpp)見るとパッチ(?)数分、
D3DRS_PATCHSEGMENTSをセットしているみたいですね。
Xファイルの中身も解析してみようと思います。
426 :
名前は開発中のものです。 :02/05/09 20:01 ID:3FuHlBew
>>425 それはNパッチの用の定数で
今回の件には関係ないと思われ。
427 :
名前は開発中のものです。 :02/05/11 10:53 ID:bZs7B3mQ
おおう、こんな記事が… ハードウェアが一新されるってことは、ソフトウェアのほうにも影響出てくるの? DirectX9で書いたプログラムはDirectX8以前にしか対応してないハードで動かないとか。
GeForce4はソフトウェアエミュレーションで動作します くらいのもんじゃないか?
430 :
名前は開発中のものです。 :02/05/11 15:18 ID:Z2/0mNSI
いやあマジ全然わかんね。 Tessellatorって何? へたにレガシーパイプラインに熟知している分だけ 思考の切替に苦労する奴続出しそう。
へたにレガシーパイプラインに熟知している分だけ
Borland C++でDirextDraw失敗しまくり・・ 鬱だ氏のう
曲面をポリゴンで近似して、その頂点座標を算出する装置のことかなあ。 曲面は方程式でもN-Patchでも構わんと思うけど、そういう感じで。
434 :
名前は開発中のものです。 :02/05/11 19:50 ID:c8jMVapM
>>433 >DirectX 8では、Vertex ShaderとPixel Shaderの間で処理していたクリップなどもなくなる。
>概念は存在するのだが、その機能はTessellatorの段階に入る
Tessellatorは従来のクリッピングの代替になるって書いてあるぞ。
VertexShaderを通して初めて、ワールド座標系での頂点の位置が生成されるのに
その前フューズでクリッピングなんか出来るんか?
435 :
名前は開発中のものです。 :02/05/11 20:04 ID:c8jMVapM
「Tessellator(平面分割ユニット)」とも書いてあるんで、
折れが想像するに、ワールド空間をXYZで区切り小さな正方形の空間に分割して
ポリゴンオブジェクトもそれぞれの空間に属するよう分割するってやつじゃないのか。
PowerVRの3次元版みたいな。
そうすりゃクリッピングも出来るし、Z軸に対し前列の方から処理をすれば
陰面消去もかなり省ける。半透明もいける。
だけど
>>434 が問題なんだよなあ。
実はトランスフォームはGPUでは行わないとか?
後藤たんにだまされるな。
>>434 漏れもそこは納得できなかった。おそらく後藤たんの勘違いだろう。
Tessellatorが担うのは高次元サーフェスやディスプレイスメントマッピングだと思われ。
従来どおりの頂点単位のクリッピンク「も」やります。 ってことは?
439 :
名前は開発中のものです。 :02/05/12 01:30 ID:Xo7NVnZk
うちのDirectX8のヘルプには、レンダリングパイプラインの頂点シェーダーの 前にTessellatorあるけどなぁ。 それと、DirectX10でシェーダーを統合するとは言ってるけど、文法を同じに するだけで一緒に処理するわけじゃないと思うんだが。一緒に処理するような 次元のものじゃないし。 ただ、文法が同じになれば頂点シェーダーとピクセルシェーダーで同じ回路を 共有なんてこともできるようになるかも?ビットマップからジオメトリを形成 するような処理が最近の流行だから、頂点シェーダーでもテクセル補間みたい なのは必要になるし、同じ回路を使いまわせそうな気もする。
TessellatorはDX8からある。後藤たんが知らなかっただけ。
>>439 >ビットマップからジオメトリを形成するような処理が最近の流行だから、
>頂点シェーダーでもテクセル補間みたいなのは必要になるし、
それこそ、まさにDX9のディスプレイスメントマッピングだな。
テセレーションのLOD制御もかなり自由度が高いらしいぞ。
それにしても、後藤たんの妄想記事は何とかならないのか・・・。
442 :
名前は開発中のものです。 :02/05/12 20:15 ID:JIgZ5ftk
DirectX8のD3DXSPRITE::Drawを使ってスプライトを描画した上に ポリゴンを描画したいんですが、どうしてもポリゴンの方がしたに なってしまいます。何かうまい方法はないでしょうか?
443 :
442 :02/05/12 20:27 ID:???
解決しました。 SetRenderState(D3DRS_ZENABLE,D3DZB_FALSE) を最初に実行しておけばいいだけでした。
後藤たん、推測は外れるし事実は誤認してるし… 知ったかですか?アホですか?
445 :
名前は開発中のものです。 :02/05/14 21:33 ID:gp9yAFEg
IDirect3DSurface8間でのイメージの転送って CopyRectsしかありませんか?
447 :
名前は開発中のものです。 :02/05/17 15:38 ID:xxARlwQE
C++/C では、Microsoft® Direct3D® サーフェスにイメージをコピーする場合に、次のメソッドも使用できる。 D3DXLoadSurfaceFromFileA D3DXLoadSurfaceFromFileInMemory D3DXLoadSurfaceFromFileW D3DXLoadSurfaceFromMemory D3DXLoadSurfaceFromResourceA D3DXLoadSurfaceFromResourceW D3DXLoadSurfaceFromSurface IDirect3DDevice8::CopyRects
448 :
名前は開発中のものです。 :02/05/18 22:03 ID:nLBOy5nA
なに?DDrawってもう用済みなの?D3DのIMってどこいっちゃったの?
ぜんぶD3D IMになっちゃった。
>>447 それも結局内部でCopyRects呼び出してるだけだね
452 :
名前は開発中のものです。 :02/05/18 23:09 ID:vV3OwEEg
>>449 RMがDx7で廃止
IMがDx8で廃止(名前が消えただけ?)
DrawもDx8で廃止
453 :
名前は開発中のものです。 :02/05/18 23:31 ID:v4jBUbb2
RMが無くなったからIMと言い分ける必要が無くなっただけで、中身は IMそのものだよ。
>>453 D3DXの関数はすべてD3DDevのラッパーだから
456 :
名前は開発中のものです。 :02/05/19 02:30 ID:xPxMqsdA
D3Dのリソースマネージャクラスを作っているのですが、 ロスト時に再ロードする仕組みで悩んでいます。 1 ロードしたリソースを保存しておいて、そこから復元 2 ロードする手順を保存しておいて、再生 1はメモリを食いすぎるし、プログラムで動的に作成したリソースの復元が不可能 2はリソース管理クラス自体がファイル読み込みなどの機能を備えなければならず、 巨大なクラスになってしまう上に、暗号化ファイルなどのサポートも 管理クラスで行わなければならず、アプリケーションごとに修正を加えなければ ならなくなってしまう。 何かいい妥協点か、第3の方法とか無いでしょうか? それとも、ここを汎用化しようと言う考え自体間違っているのでしょうか?
2の方法でいいと思うよ。いまどうやってロードしてるわけ? 外部の関数呼べばいいじゃん なにもリソースクラス内に読み込みのコード書く必要ないじゃん 規模にも寄るけど、アマチュアレベルなら別にメモリに保存でいいと思うよ。 VRAMに入るくらいだから数Mでしょ
>>457 2だとリソースマネージャがローダなりファイルクラスを知らなければならないでしょ?
ファイルクラスのような低レベルのクラスまで含むとなると、
一種のフレームワークを形成することになってしまい、クラスの独立性が保てなくなる。
ローダを実装するにしても、すべてのリソース取得はマネージャを通すので、
結局マネージャ専用ローダとなり、マネージャに機能を実装するのと変わらなくなる。
って、ローダのフレームワークを提供すればいいのか・・・
クラス図書いて検討してみます、ありがとでした。
459 :
457 :02/05/19 04:20 ID:???
むしろ、ファイル管理もリソースクラスでやらせるように作るけどな クラスの独立性ったって低レベルなモノほど切り離せないでのでは? ロードクラスの基底クラスを作って抽象化すればいいんちゃうん?
>>459 それがそうもいかないんですよ。
GDI/OpenGL/DirectXクラスをインプリメントしてるんですが、
DirectXのロストってのが特殊すぎてどうしようもないんです。
グラフィックスサブシステム周りを大きくしていくと、
他の箇所に影響が出まくりなんで、困っちゃうんです。
8.1です。
463 :
457 :02/05/19 04:40 ID:???
俺も、GL&DX対応させてるよ。コチラも基底クラスを作って Core->Resotre(pMesh) グラフィックエンジン毎に専用のリストア関数書けばいいんじゃないの? MeshやTextureクラスにはファイル名とか、頂点バッファのポインタいれてさ〜 リソースクラスに、現在使ってるエンジンのポインタを持たせて for(全部だゴルァ) core->Restore(*) とかしてる
>>456 俺は2の方法だよ。
つーかGDIまでサポートするよう作ってるなら
Direct3Dは自動リソース管理にして
ロストそのものを無くした方がよくない?
DXのロスト回避ってどこまで信用できるようになったの? 毎回、手が入れられてるよね
>>464 こんな便利な機能があったんですね。
鬱だ・・・・
逝ってきます
>>465 VRAMに格納出来て、画面モードの変更などにより
消失する可能性があるVバッファやテクスチャなどのリソースは
全てIDirect3DResource8から継承されてるんだけど、
こいつは作成時にD3DPOOL_MANAGEDフラグを設定してやれば
D3Dが勝手にメインメモリにコピーを作ってくれて
消失した場合自動でリロードしてくれる。
よって論理上だがロストは皆無にすることが出来るようになった。
プリロードや優先レベルの設定も出来るのでパフォーマンスの問題も
殆ど無いと思う。やっぱ問題は精神衛生上的なものか。w
DirectX8のヘルプ流し読みしてみたんだけど、 テクスチャのサイズが2^nで無ければならないと言う記述が見あたらないんだけど、 もしかしてこの制限なくなったの?
カード依存だけど、とっくに無くなってるよ ただしパフォーマンス的には2^nが有利
2^n以外ではミップマップが使えないよ。 スクリーン等倍のフルシーンエフェクトやスプライト専用だね。 あと、テクスチャ圧縮も使えないみたい。
やべー趣味でやってるから、ミップマップなんて対応した事ないよ あれって自動でやってくれんの? つーか どーいう判定でテクスチャサイズ選ぶか基準かヘルプ書いてある?あんまみたことないんだけど
mipmapってテクスチャのLODのこと?
>>471 >どーいう判定でテクスチャサイズ選ぶか基準かヘルプ書いてある?
日本語が意味不明
カメラ〜オブジェクト間の距離でサイズ設定すんでしょ? 例えばどの位距離が開くと1段サイズ落すとか そーいうのはどういう条件なのかな と
>>470 ヘルプには正方形じゃなくても良いって書いてあるよ。
誰も正方形の話なんかしてない
>>474 それはDirectXは関係ない。ビデオチップ側の処理。
チップによって結果が変わるよ。
どうも c:\DXSDK\INCLUDE\d3dx8math.h(259) : error C2065: 'UINT_PTR' : 定義されていない識別子です。 c:\DXSDK\INCLUDE\d3dx8math.h(259) : error C2146: 構文エラー : ')' が、識別子 'p' の前に必要です。 c:\DXSDK\INCLUDE\d3dx8math.h(271) : error C2146: 構文エラー : ')' が、識別子 'p' の前に必要です。 cl.exe の実行エラー
480 :
名前は開発中のものです。 :02/05/21 02:01 ID:YNgZ7oAU
↑エラーが出てコンパイルできなくて困っています。 どうすればいいんでしょうか?
エラー通りだろ。 先にCの勉強しろ。
新しいPlatform SDKを入れろ
>>481 言ってることはもっともだが、あまり門前払いしすぎるのも
この板の発展にとって良くないと思う。
>>480 UINT_PTRっていう型をコンパイラに知らせてないのが原因。
手っ取り早く言うと、必要なヘッダファイルが includeされていない。
typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
この1行を、自分のソースの適当な場所に追加してみろ。
俺の記憶違いかもしれんが、BorlandのコンパイラからDirectXを使おう
としたとき、このエラーが出たような気がする。
>>471 >どーいう判定でテクスチャサイズ選ぶか基準かヘルプ書いてある?
>>474 >カメラ〜オブジェクト間の距離でサイズ設定すんでしょ?
>例えばどの位距離が開くと1段サイズ落すとか そーいうのはどういう条件なのかな と
SDKのヘルプ [Enumerated Types]→[D3DTEXTUREFILTERTYPE] に少し書いてある。
DeviceCapsを調べた上で
アプリケーション側で用意したMIPMAP用画像データを
テクスチャサーフェスに転送、あとは例えば
SetTextureStageState( ステージ番号, D3DTSS_MAGFILTER, D3DTEXF_LINEAR );
SetTextureStageState( ステージ番号, D3DTSS_MINFILTER, D3DTEXF_LINEAR );
SetTextureStageState( ステージ番号, D3DTSS_MIPFILTER, D3DTEXF_LINEAR );
のように糞真面目に設定すれば、おおむね同じ出力は得られる。
リファレンスラスタライザの出力と若干違いが出るだろうが
これはハードウェアレンダラの怠慢なので仕方が無い。
でも、MIPMAPを自動生成にまかせたりフィルタ設定をデフォルトのままにすれば
ビデオカードのドライバ設定が適用される。当然、環境によっては出力がだいぶ
変わるだろうが、それはアプリケーション側の怠慢なのだから改善可能。(の場合が多い)
テクスチャとかサーフェースのダーティって何? マニュアルに用語解説もなくサッパリなんだけど
>>483 typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
これは64bitの環境のみ
32bitのwindowsだとUINTです
>>485 Dirty = みだらな、下品な
つまりはそういうことだ!!
>>487 そんなこと言われても意味が分かりません。
ダーティ領域を追加すると淫らなテクスチャが出来上がるんですか?
489 :
名前は開発中のものです。 :02/05/21 08:16 ID:7XvRBffw
>>483 どうもありがとうございます。助かりました VC++5とDirectX8の組み合わせだとServicePack3
も必要だったみたいです
ダーティって普通は データーの改変が行われた状態の事だな ワープロなんかでSAVE後、編集で内容が変わった状態
素直にmodifiedって言えよー
DirectX8ラッパー作るのものすごく鬱だ DirectX自体がよくできているので、基本的にメソッドをそのまま通すことになり、 ラッパーを作ること自体が無意味に思えてならないよ
そのまま通すような、シンプルな構造だからでしょ オブジェクトの描画順とか、コントロールするにはラップ必須
いんや、描画順の制御はまた別のレイヤーで行うので、 DirectXはそれ自体で独立したモノとして作ってるので。 DX8自体は単なるラスタライザとして使う設計なんだけどね。
<ヽ`∀´>・・・。
Direct3DとOpenGL両対応にするとか、 DirectX9になったときの違いを吸収しやすくするとか じゃないと意味ないということか
質問、当方DirectX7でプログラムしてるのですが、 絵の透過処理ってどうすればいいのでしょうか?
500 :
498 :02/05/23 00:14 ID:???
>>499 絵の半透明処理と言った方がよかったかな?
転送時に転送先サーファイスにANDしながら転送するには
どうしたらいいのかと・・・
>>500 サーフェスをLockして自分で計算して結果を書きこむ
502 :
498 :02/05/23 00:39 ID:???
>>501 Bltにそういう機能はないのですか・・・
自作関数作でも作ってみます。
ありがとうございました。
503 :
名前は開発中のものです。 :02/05/23 07:15 ID:CX9eFXSY
and程度なら、DCゲットしてBitBltでフラグ指定すればいいのでは?
>>503 絵の半透明処理とも書いてあるからBitBltでは無理ではないでしょうか。
and演算を行うbitbltなんて無い
bitbltじゃなくて、半透明だ
>転送時に転送先サーファイスにANDしながら転送するには ANDらしいが?
508 :
498 :02/05/23 13:36 ID:???
503を見てとりあえずBitBltでやってみたんですが、 下になる絵の色がおかしくなるのでダメみたいです。 これやるには下の絵の色+重ねる絵の色をやらないといけないみたいですね。 これからバイトに行かないといけないんでバイト中にちょっと考えてみます。 半透明処理が無いのなら結局501の言うようになると思いますが・・・
半透明じゃなくて色抜き転送したいんじゃないの? マスクパターンを作ってAND/ORで転送じゃなかった?
何がやりたいのかはっきり言えーーーーーー!!!!
言うのならできるけど文章にはできん
結 論 W i n G を 使 え
結 論 W i n G L を 使 え
514 :
498 :02/05/23 23:18 ID:EcEbM6h2
はっきり言わなかった為混乱させてしまいすみません。 初めに透過処理とか言ったのがいけなかったみたいです。 初めはANDで半透明処理が出来るのでは・・・と思っていたので。 ANDではそれっぽく見えるけど下の絵がはっきりわからなくなります。 要は書き込む絵を半透明にして下の絵と重ねたいと言う事なので、 色抜き転送ではありません。
515 :
498 :02/05/23 23:20 ID:EcEbM6h2
で、ちょっと組んでみたんですが・・・ void CMyApp::TranslucentBlt( LPDIRECTDRAWSURFACE lpS_Point,int PointX1,int PointY1,int PointX2,intPointY2,LPDIRECTDRAWSURFACE lpS_Source,int SourceX,int SourceY ) { DDSURFACEDESC ddsd1,ddsd2; short *lpsSource = NULL; short *lpsPoint = NULL; ZeroMemory( &ddsd1,sizeof( DDSURFACEDESC ) ); ZeroMemory( &ddsd1,sizeof( DDSURFACEDESC ) ); ddsd1.dwSize = sizeof( ddsd1 ); ddsd1.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT; ddsd1.dwWidth = WinXMax; ddsd1.dwHeight = WinYMax; ddsd2.dwSize = sizeof( ddsd2 ); ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT; ddsd2.dwWidth = WinXMax; ddsd2.dwHeight = WinYMax; lpS_Source -> Lock( NULL,&ddsd1,DDLOCK_WAIT,NULL ); lpS_Point -> Lock( NULL,&ddsd2,DDLOCK_WAIT,NULL ); lpsSource = ( short * )ddsd1.lpSurface; lpsPoint = ( short * )ddsd2.lpSurface; lpsSource += SourceX + ( SourceY * WinXMax ); lpsPoint += PointX1 + ( PointY1 * WinXMax );
厨な質問で申し訳ないが、8.0のSkinnedMeshサンプルが理解し切れない…。 他に、スキンメッシュのサンプルコードや解説してる本があったら教えてくだされ。
517 :
498 :02/05/23 23:21 ID:EcEbM6h2
for( int i = 0 ; i < ( PointY2 - PointY1 ) ; i++ ) { for( int j = 0 ; j < ( PointX2 - PointX1 ) ; j++,lpsSource++,lpsPoint++ ) { *lpsPoint = ( *lpsPoint + *lpsSource ) / 2; } lpsSource += ( WinXMax - PointX2 ) + PointX1; lpsPoint += ( WinXMax - PointX2 ) + PointX1; } lpS_Point -> Unlock( 0 ); lpS_Source -> Unlock( 0 ); } これだと色がおかしくなるので、一度色を要素別に分け、 それらを足してから2で割り、色データに変換しないといけないような気がします。 しかし、色データをRGBの要素別に分けるのにはどうすればいいのでしょうか? その辺の解説をしていただけると助かります。
518 :
498 :02/05/23 23:22 ID:EcEbM6h2
あ”−なんだか変になってる
519 :
名前は開発中のものです。 :02/05/24 02:30 ID:rNrOyBCE
>>516 ない、多分。
はっきり言って
SDKのSkinnedMeshサンプルは
ソースが汚い。
俺も読む気が失せたが、気合で読んだ。
なんかSkinnedMeshサンプルのスキニングウエイトの扱いって変なん だよなぁ。Maxからコンバートしてるんだけど、どう考えても有り得 ない曲がり方しやんの。どっかでウエイト数値が補正されてると思う んだけど、チンプンカンプン。 ちょいとわかる方いましたら教授頂きたいです。
>>517 この手の自力半透明は一昔前に流行ったから、検索すると参考ページが結構出てくるぞ
結 論 W i n G を 使 え
今時WinGを使えとは言わんが、VRAMのSurfaceをLockするくらいなら DIBの方がラクだし速度も出るぞ。
>>520 いや俺の場合は大丈夫だけど。
自作クラスでアニメーションさせてるけど
tiny.x以外の2種類のXFILEも普通に動いてるよ。
525 :
516 :02/05/24 13:24 ID:???
レス感謝。 やはり、このソースを解読するしかないということか…。 とりあえずmload.cppとmdraw.cppを切り離してクラス化し、 自作プログラムの中にでも組み込んで見ます。
526 :
名前は開発中のものです。 :02/05/24 17:39 ID:sqwn/yLQ
DirectX8にて256以上のサイズのテクスチャーを読み込みたいのですが、 何かうまい方法はないでしょうか?
ウチのSPECTRAくんは2048x2048までのテクスチャが使えると言ってきてます
>>526 マジレス。
ビデオカード変えれ。
数世代前のうちのTNT2ですら2048x2048まで扱える。
Voodoo?ナニソレ。オイシイ?
TNT2?ナニソレ。オイシイ?
>>524 んー、微妙に意図するスキニング結果が得られないのよねぇ。間接とか
きちゃなく曲がるし。四肢の付け根はガタガタになるやがるし。MAX側の
スキキングがそのまま再現出来る訳じゃないのかなー?
ふつうに読め ■■■終了■■■
535 :
516 :02/05/25 10:53 ID:???
>>533 それ、もしかしてtiny.xがゾンビ化して表示されるという現象デスカ?
(全身の骨をプレス機で粉々に砕いたかの如き姿で表示される)
だったら今の漏れと同じ状況(藁
skinnedmeshサンプルをそのまま流用しようとしてるんだけど、
その中のSetProjectionMatrixの使い方が怪しいと睨んでる。
536 :
705 :02/05/25 13:30 ID:???
よく見たら、そんな基本レベルの問題じゃないね(w スマンす。
当方DirectX8.1にてRPGの見下ろし型のスクロールを やりたいのですが、クリッピングが上手くいきません。 画面から少しでもはみ出すと表示されないようです。 何か良い方法ありますか?
DX9beta1きたね
もうDX9か。GeForce2ダメかなぁ SPECTRA高いし、どうするか。
540 :
537 :02/05/25 18:52 ID:???
ぶっちゃけた話DX9って 何が売り? シェーダーとか現状じゃ扱いづらいので、あんまいらん
>>540 >DirectX を使うと Windows のシステムに邪魔されることなく、グラフィックボードや入力機器に 直接アクセスすることが可能になり、
見てみたが、これを筆頭に間違いだらけだぞ
>>541 シェーダーのC風高級言語や、VSに統合されるデバッガとかがあるよ。
Vertex Shaderは条件分岐やループも使えるようになって、かなりマシになるかも。
あと、何気に2D機能が復活したっぽいのが嬉しい(詳細不明)
544 :
名前は開発中のものです。 :02/05/26 01:46 ID:XI5aVJYk
DirectX9βテスタの皆様、やっぱりEULAの関係上、 ここでDX9スレとかは立て無いの? まだ立って無いみたいだけど。 公式のニュース鯖も、まだ全然活動してないみたいだし。
スレ立てる必要あるの?
546 :
537 :02/05/26 11:49 ID:???
>見てみたが、これを筆頭に間違いだらけだぞ まじですかヽ(`Д´)ノ ウワァァン 画面一杯(例えば640*480全体)に表示してスクロールするのは上手くいかなかったので 画面の一部(例えば320*240)に表示してそのまわに枠をつけることでなんとか 妥協しました。 ご指摘ありがとうございした。他に良さそうなDirectX8の入門ページ探してみます。
技術を盗みたいシナは、あまり無茶はできません。苛められたら撤退すりゃいいだけのこと。 そうか?ロックして取得したアドレスで内容書き変えれるだから 直接アクセス という表現をしてもいいんじゃないか? チップのレジスタに直で触れるわけではないが
あぁ 変なコピペしちゃった。 >DirectX を使うと Windows のシステムに邪魔されることなく、グラフィックボードや入力機器に 直接アクセスすることが可能になり、 ね
>>547 実はものによってはUnlockの時点で転送してるので本当に直接アクセス
してるわけではない罠
>>544 >ここでDX9スレとかは立て無いの?
何故すぐに新スレを立てたがるのか、小一時間問い詰めたい。
>>549 そんな1Byte1Byteいちいちアクセスしてどうなる。
DirectXのいう直接アクセスというのは、
直アクセス並に柔軟な扱いが可能になるということであり
Windowsの厚いレイヤーを通さずにすむという意味も兼ねている。
>>540 のリンク先もそんなにおかしなことを言っている訳でもない。
552 :
549 :02/05/27 18:40 ID:???
>>551 いや、別にDirectXがどうとか540のリンク先がどうとか言う気はなくて
たんに547にツッコミを入れただけだが。そのツッコミは547にしてよ。
ところで537は画面全体をCopyRectsか何かで転送してるの?
553 :
名前は開発中のものです。 :02/05/27 18:44 ID:hVSF2hTA
>実はものによってはUnlockの時点で転送してるので本当に直接アクセス ものって具体的にはなに? どうやってポインタの先書き換えを記録してんの?
>>553 Lock した時点で主記憶にコピーを作って、Unlock で主記憶から VRAM にコピー
なのでは? 知らんけど。
555 :
名前は開発中のものです。 :02/05/27 19:29 ID:hVSF2hTA
あーそーなのかーLock重いのは、タイミング待ちかなにかと思ったら コピー時間なわけね。つーことはデカイバッファは比例して重いのか? VGAとUXGAで6倍程違うが、それだとちょっと差がありすぎで困りそうだね サーフェイス系は違うのかな
>>555 そういう物もありうる(あるの?)って話だろ。
実際にウチだとLock先のポインタにさわるの自体がえらく遅いんで、
Lockで帰ってきたのはメモリマッピングされたVRAMのアドレスだと思われ
557 :
nyamo :02/05/27 23:25 ID:0dHGsNog
DX7を使っています。 Bltでサーフェイスをコピーするとき、srcRectとdstRectの大きさが 違っていると自動でリサイズしてくれますが、ウチのビデオカード(GeForce256 16ビットカラーモード)だとバイリニア法っぽくボンヤリ拡大してくれます。 ニアレストネイバー法でカチカチに拡大して欲しいのですが、Lockして 1ピクセルずつちまちまコピーするプログラムを書くのが常套でしょうか。 なんかオプション渡せばやってくれそうな気がします。ご存知の方 おしえてくだちぃ
遅くなるけどシステムメモリにサーフェス確保しる。
厨質問で申し訳ないが、DX7のDirectDrawのWindowモードで画面左側にはみ出すようにBlt転送すると、 戻り値はDD_OKで返ってくるのに画面に反映されていないのは、クリッパーの仕様? それくらいは自分で転送元/転送先共に設定してやれって事なのかな? ちなみに、画面右側がはみ出ていてもきちんと反映されている。 あ、転送先Windowのクライアント領域の座標は取得してます。
MSのヘルプだかFAQでそういう話を見たことはあるな。 DirectX登場以前のチップだとメモリ配置がDirectDrawの想定しているのと 違う可能性があるからそういうチップならそういう実装もあったんじゃない? 16色の頃はプレーンごとに分かれてる方が普通だったじゃん。 今でもひょっとすると一部のOpenGL向けのチップはそういう特殊な実装をして いるかもね。 ところで最近のDirectXのヘルプには、Lockの説明にバンクメモリ云々の注意 事項が書いてないね。もうそんなチップ無いから無視していいってこと?
561 :
nyamo :02/05/27 23:57 ID:0dHGsNog
>558 早速試すでつ
562 :
nyamo :02/05/28 00:12 ID:U/sOJx5k
>>558 できたよ!ほんとだ!dstサーフェイスをシステムメモリに配置したところ
ニアレストネイバーのカチカチ拡大になりました。そうかビデオカード使わ
なきゃいいんだ。。。
遅いという罠
それが嫌で某エミュではDirect3D化しました
それ,起動する時に解像度が一瞬変わるのやめてホスィねw
それってどれのこと?
567 :
名前は開発中のものです。 :02/05/28 04:33 ID:bqsf0q/I
今時DDRAW使うなよといいたい
>>567 じゃあ何を使えと?DGraphicsでも同じだぜ?
2dもD3dつかえと
>569 低スペックマシンでうごかねぇじゃん。 アフォか。
ん?3Dにしてテクスチャのフィルターカットで描画するって事?
572 :
名前は開発中のものです。 :02/05/28 08:51 ID:sdv9PJPc
DX8のID3DXSprite::Drawで、スケール設定してもビデオカードによっては機能しない のがあって萎え。 色々な環境で調べた方が良いね・・・
低スペックを相手にしてるエログラマはいらないよ。 もう氏んだら
最近はノートPCのビデオチップも少しずつまともになりつつある罠
D3Dで2Dやるとラスターエフェクトとかが使えない罠
時代はピクセルシェーダという罠
pixelShader 対応は流石にまだ少ない罠
PixelShaderに対応しているビデオカードってどれくらいあるの? Geforce3、4(not MX)、Radeon8500、他には?
むむ、DX9でGetDC復活してんのか XBOXにwindowsが載る日は近いのかー?(適当。そうなの?
カーネルでなくて、window表示周り つーことを察してください
582 :
名前は開発中のものです。 :02/05/28 21:15 ID:PCwwkiQQ
世の中、超高価なビデオカードを頻繁に取り替えては 宝の持ち腐れ状態にしている人が大勢いるのに 俺にはPixelShader実行環境なんて永久に手が届かない罠。
>>582 そんなあなたにWinG。
もう環境に振りまわされないで済みますよ
>>582 そんなあなたにリファレンスラスタライザ。
もう時代に取り残されないで済みますよ
587 :
名前は開発中のものです。 :02/05/29 17:33 ID:5A.rxik2
だむぇだぁDirectInput教えてくだされ。 ジョイパッドの軸入力をバッファリングモードで取得してるんだけど ずっと十字キーを押してるのに、押した瞬間の1回しか反映されず それ以降は0になってしまいます。 軸の範囲が-100〜100だとすると 100、0、0、0 みたいな感じです。 100、100、100、100 という風にしたいんです。 サンプルと見比べてみたんですが、設定し残しは特に見当たらない感じです。
588 :
名前は開発中のものです。 :02/05/29 18:18 ID:WglpNvG.
バッファに収めときゃいい
589 :
587 :02/05/29 19:27 ID:SjTOp7to
>>588 解決しますた。
バッファの使い方がよくわかってませんでした。
アクションマップは便利だけど、バッファがうざいですね。
ありがとうございました。
590 :
名前は開発中のものです。 :02/05/29 23:43 ID:/Fl9zVk.
DX7 で作るか DX8 で作るか悩んでます。 より多くの人に見てもらうには、やはり DX7 でしょうか? 作ろうとしているのは、簡単なポリゴンのデモです。
8
>>590 別にDirect3Dを使うんなら
7でも8でも差は無いでしょ。
>>590 ころころ仕様が変わるDirectXは無視してOpenGLを使いなさい
機種依存しまくりのOpenGLなんて使い物にならん
595 :
名前は開発中のものです。 :02/05/30 02:19 ID:3VHBqsV2
D3DXのC++拡張機能は便利だ。 D3Dは別に使わなくていいけど、 D3DXQUATERNIONとかは使った方がいい。
よく593みたいな事言う人いるけど、新しいバージョンが出たら古いのは 使えなくなると思ってるのかな?
>>595 おまえひねくれ者だな。
D3DXを使ってラスタライザは自前かよ
普通自前でラスタライザを書くならfloatじゃなくてdoubleを使うから
基本floatのD3DXは使い物にならん
DDraw+自作3dエンジンでえーんでないの 簡単なデモなら
599 :
名前は開発中のものです。 :02/05/30 04:36 ID:OepbMKuk
>>597 違う違う、別に強制はしないよという意味。
座標系の違いがあったかどうかは忘れたけど
OpenGL+D3DXでもいいんじゃないのみたいな。
>普通自前でラスタライザを書くならfloatじゃなくてdoubleを使うから
これはちょっとわからん。精度の問題?
floatで問題になるケースがあるとは思えないけど。
OpenGLの仕様は変わらないというけど ハードが変わるとコードを変えなきゃなんないから(エクステンション等) 結局DXと変わらないという罠
OpenGLはもうすぐ仕様が変わりそうという罠
doubleでラスタライザ書くなんて人は初めて見た。レイトレ?
固定小数点使う方が一般的だと思うけど。
>>600 まだ統一規格のあるDirect3Dの方がマシかも。
貧乏な漏れのノートPCはレガーシなんで 8はまともに動かん、で7キボンヌ。
なるほどー、特にノートだと、最新のドライバが提供されなかったりとかありそうだね。デスクトップでも、いろんなチップメーカーが消えていったもんなぁ・・・・
605 :
259 :02/05/30 17:04 ID:???
実際、DX8って大半のノートじゃ動かんだろ。 なのに、なんでDX8用のソフトを作ろうとするわけ? コピペ
>>605 Direct3D7.0が動く環境ならDirect3D8.0も当然動く。
D3Dを使う分には7を選ぶメリットはない。GetDCぐらい?
そもそも3Dやるのにノートを眼中に入れることが間違い。 自虐的なノート使いの戯言だが。
PC9801VX対応。これ最強。
>>609 608じゃないが、98ソフトといえばVX対応だろ〜(笑
ノーマル98と言えば高嶺の花 PC-9821An/C9Tしか無いだろ。
612 :
516 :02/05/30 23:15 ID:???
スキンメッシュって、HAL T&L(D3DCREATE_HARDWARE_VERTEXPROCESSING)を使っては いけないんでしょうか? skinnedmeshサンプルのcreatedevice関数で、ココいじるとモデルが崩壊 するようなんですが(´Д`; 私の勘違いでなければ、VGAの機能の大半が役に立たなくなってしまうのでは…。 回避策があるようでしたら、ヒントだけでもいいので教えてくださいませ。
>>606 フィードバックエフェクトやろうとすると、8はBltないのが痛いよ。
CopyRectsがあるじゃん
>>612 それはモデルのウエイト数が、
Direct3DHALのジオメトリブレンディング能力の
キャパシティを超えている為だと思う。
バーテックスブレンドなら、ひとつの面にかかるウエイト数。
インデックスブレンドなら、ひとつの頂点にかかるウエイト数になる。
D3D8CAPS見てみ。
ソフトウェアTLの場合は最大で4つ。
ハードウェアTLの場合はGPUによる。
GeForce256ならバーテックスブレンドが2つで
インデックスブレンドが0、
GeForce2GTS以降なら多分バーテックスブレンドが4つで
インデックスブレンドが0になる。
それ以上のウエイトを使うようなモデルだと、
ID3DXSkinMeshの変換メソッドが失敗するか、表示が崩れる。
つーか何でSkinnedMeshサンプルは450FPS出るのに 自分のプログラムだと300FPS以下しか出ないんだ・・。 単純にドロープリミテブ繰り返してるだけなのに。 むかつくぜ。
617 :
名前は開発中のものです。 :02/05/31 02:08 ID:6a0xSIHk
環境変えたら LNK1106 エラーが出てリンク通んねぇ・・・ 鬱・・・
>>614 Stretchできないから使い物にならない>CopyRects
IDirect3DDevice9::StretchRectはちゃんとハードウェアで実行してくれるのかな?
スキンメッシュいじってる人アニメーションどうやって作ってるの? やっぱLW7とかmax4なんかな。
620 :
516 :02/05/31 09:56 ID:???
>>615 超感謝。ありがとうございます。
tiny.xそのまま再現させてたんで、ウェイトかかりまくってると思われるので。
つーか、おまえら DX7とDX8の違いをおさえてないだろ。 両者のメリットとデメリットを言ってみ。
まず貴方様の素晴らしい知識をご開陳いただきたく。
skinMeshのサンプルって、ハードのブレンド数の上限にあわせて、分割表示してなかったけ?
624 :
615 :02/05/31 15:43 ID:???
>>623 いや、1頂点にかかるウエイト数の問題だから
メッシュを分割してどうにかなるもんでもない。
tiny.xは、1頂点あたり4ウエイトのモデルだがそれを
2ウエイトのモデルに変換しょうとしても出来ない。
ID3DXSkinMeshの変換は超高速だが、あんまり親切じゃない。
thank you
626 :
名前は開発中のものです。 :02/05/31 21:40 ID:gCpEEKqg
草原ってどうやって表現しる?
1年くらい前のMSDNマガジンで頂点シェーダの スキンメッシュやってた記憶があるが、 どんなのだったっけ。
>>627 全然参考にならなかったような
sdk sampleの方がマシでは
頂点シェーダを使う場合、頂点ストリームを複数入れるようにして 1本は普通のFVF、残りはウエイトの塊っていうふうにすれば 事実上ウエイトの制限はなくなるよねえ。 つーか、MAXでは1頂点につき16x256Bのデータが使えるので 1頂点つきそれぞれ別々のライト10個使用なんてのも出来るね。 速度を無視すれば何でもありってこと?
Direct3Dで、一部ポリゴンを平行投影しようと思っているのですが、 投影行列を平行に指定した途端、ちゃんと描画されなくなってしまいます。 w 0 0 0 0 h 0 0 0 0 Q 1 0 0-QZ0 が透視投影行列で w 0 0 0 0 h 0 0 0 0 Q 0 0 0-QZ0 が平行投影行列で良いんですよね?3行4列目の数値を0に下途端 何も出なくなってしまうのですが、D3Dで平行投影は可能なのですか?
631 :
名前は開発中のものです。 :02/06/02 22:24 ID:YU8oew0w
age忘れました。すみません。
w 0 0 0 0 h 0 0 0 - 1 0 0 0 -Q 0
>>630 もう少しだけ、もう少しだけ頭を使えばいい。
>>630 ベクトルのw成分を0にしちゃいかんよ。
635 :
名前は開発中のものです。 :02/06/04 21:55 ID:QedpiA6w
DirectX8.0a使ってます。 D3DXCreateSpriteやlD3DXSprite::Drawを使ってスプライトを行うとき、 D3DXCreateTextureFromFileなどを使い使用する画像ファイルを読み込むわけですが、 外部に配布するゲームなどで、ファイルの中身を簡単には見られたくない場合、 D3DXCreateTextureFromFileじゃダメですよね? 画像ファイルを暗号化して、それを読み込めるようにして …って理屈はわかるんだけれども、こんな場合どうすりゃいいんだろう…。 プログラム暦浅いのでこんなんでスマソ。
>>635 一番目の方法としてID3DXSpriteの使用をやめる
それが嫌なら
DibSectionなりをつかって独自フォーマットを一時的にbmpに置き換えて
それを読みこませる。
まぁVRAM復帰で死ぬけど。
>>636 うそだった、
Textureをlockして書きこめばよかった…
鬱死
638 :
名前は開発中のものです。 :02/06/04 23:33 ID:z0uR.zsQ
おのれでファイルを開き、全部メモリに読み込んでから D3DXCreateTextureFromMemory 後から暗号化するのも変更点少ないからこれにしとき。
640 :
名前は開発中のものです。 :02/06/05 08:03 ID:ci2rQ1FE
DirectX9β1でたよね。runtimeだけ?SDKは?
2ch来てるような 同人STG作者には関係ないということで・・・終了
>641口から泡出てるヨ。
643 :
名前は開発中のものです。 :02/06/05 12:52 ID:8Vcze9a.
同人シューティングって、なんでRay Force/Stormみたいのが多いの?
えを多く用意しなくて良いから
マクロスみたいな 誘導ミサイル を3Dゲームに落とし込むのか企画屋の夢だったから RAYシリーズで見事やられちゃったけど、未だにその夢の残骸を追いつづけてる
646 :
名前は開発中のものです。 :02/06/05 13:24 ID:8Vcze9a.
システムだけじゃなくて絵とかまでくりそつじゃん。
レイでなければ東亜系だが、ダサすぎて売れずに轟沈
3Dシューティングでボンバー搭載のもちょっと見たい ボンバーの演出燃えそう
650 :
名前は開発中のものです。 :02/06/06 07:57 ID:3HfZgzKI
省ポリゴンで3D縦シュー作るとなぜかレイストームになっているという罠
ストーリーも、とってつけ方がレイなのが多いな。 絶望的戦局の最後の希望とかなんとか。
DirectX8にて、画面が16ビットモードなら問題なく初期化できるのですが、 24ビットモードで同じプログラムを実行すると初期化に失敗します。 D3DPRESENT_PARAMETERSのBackBufferFormatにちゃんとディスプレイモードを セットしているのですが、失敗します。 どなたか教えていただけないでしょうか?
653 :
名前は開発中のものです。 :02/06/06 11:12 ID:VX129WA.
VRAMがたりてないとか。解像度どうよ? 最近のビデオカードだとありえないとも思うけど、 トリプルバッファでやってるとか。
レイシリーズは好きだけど、バックストーリィは知らなかった。
655 :
652 :02/06/06 11:58 ID:???
>>653 即レスありがとうございます。
トリプルバッファはやってません。
VRAMは足りているはずです。
解像度は今、変えてみましたが、24ビットではうまくいきません。
他に考えられる原因がありましたらよろしくお願いいたします。
実は32ビットモードだと上手く行くとか
>>655 ビデオカードは?
24ビットモードが無いだけのような気がする。
画面モードを列挙しる!
659 :
652 :02/06/06 18:18 ID:???
24ビット時に取得したディスプレイモード(D3DDISPLAYMODE::Format)の 値はD3DFMT_R8G8B8 = 20 です。
660 :
名前は開発中のものです。 :02/06/06 19:30 ID:VX129WA.
フルスクリーンモードで初期化するとうまくいく罠
661 :
名前は開発中のものです。 :02/06/06 20:06 ID:RxPMJbQM
RPGみたいなマップチップを敷き詰めて表示するプログラムやってます。 DirectX8.0aで組んでいたプログラムをDirectx8.1でコンパイルしてみたら なぜかマップチップ同士の継ぎ目が見えちゃうようになったんですが… なんででしょ? lD3DXSprite::Draw使ってます。
ID3DXSpriteを使うなってことだろ。 ファイルをテクスチャにロードする際に 2^nのサイズに補正されてロードされるから、 イメージの補完式が変わると当然結果も違ってくる。
663 :
名前は開発中のものです。 :02/06/06 22:02 ID:AuhGqnfs
mmioOpenを使ってWavファイルを読み込んでいますが、 Wavファイルの中身を簡単には見られたくない場合どのようにしたら いいのでしょうか?
winnt\system32\dllcacheとかに紛れ込ませる
>>662 テクスチャサイズは大丈夫なはず。
やっぱ自前でSprite組んだ方が良いのかな
>>663 読み込んだデータを自前の形式でセーブすれ
>>665 テクスチャの問題ということじゃなくて。
テクスチャの幅と高さが2^nのサイズになるように引き延ばされてロードされるから、
当然bi-linearだったりその他アルゴリズムで補間(画像を変形される)される。
Spriteとして描画するときはその都度縮小描画をするんだけど、
ロード時にすでに元絵が崩れているから、綺麗にならない場合がある。
で、8.0で正常に表示できていて8.1でダメになったと言うことは、
そのときの補間式が変更になって、1dot単位で厳密に絵があわなくなったって事じゃないの?
>>667 512x512の画像を読み込んで、そこから48x48単位で
切り出してマップチップとして使ってます。
で、48が2^n単位ではないからおかしくなってる、
って事かな?
DIRECTDRAWSURFACE7のサーフェスのメモリを直接操作したいのですが、 LPSURFACEDESC2 sd; pBmp1->Lock(NULL,sd,DDLOCK_SURFACEMEMORYPTR ,0); こうやると、DDERR_INVALIDPARAMSが返されて、サーフェスをロックできません。 pBmp1にはLoadImage("",LR_FROKFILE);で読み込んだイメージをpBmp1のHDCを取得してBitBltしたイメージが入っています。 WEB上のさまざまなサンプルの組み合わせを試しましたが、原因がわかりません。
DDSURFACEDESC2 sd; ZeroMemory( &sd, sizeof(sd) ); < これはいらないかも sd.dwSize = sizeof(DDSURFACEDESC2); pBmp1->Lock(NULL,&sd,0,NULL); これで出来んか?
>670 できました。どうもありがとうございました。
DirectXでワイプインをしたいのですが,どのようにやればできるでしょうか? 値を少しずつ減らしていくのはわかるんですが
673 :
名前は開発中のものです。 :02/06/08 04:03 ID:I7s5cA6M
SkinMeshのデーターを作りたいんですが、IDXSkinMeshってLoadだけですよね? どうやったら、IDSkinMeshで読める形のデーたーが作れるでしょうか? なんか、SkinMesh用に拡張されたXファイルのヘッダー情報がどっかにあったけど、 それみて、自前でやるしかないんでしょうか? ツールの出力プラグインも使えない状態です。出力プラグインのソースって公開されてます?
675 :
名前は開発中のものです。 :02/06/08 04:36 ID:I7s5cA6M
あ、どうも。MAXとMAYAで共通なソースファイルのないですね〜(萎え 勉強しまふ つか、実は結構、大変そうな予感
DirectXでワイプインをしたいのですが,どのようにやればできるでしょうか? 値を少しずつ減らしていくのはわかるんですが
値って何の値だよ?主語をはっきりさせろ
678 :
名前は開発中のものです。 :02/06/08 11:18 ID:I7s5cA6M
画面いっぱいの半透明ポリゴン またはMMXでゴリゴリ計算
>>678 それは単なるαブレンド。
ワイプじゃない
680 :
名前は開発中のものです。 :02/06/08 14:27 ID:Mv7t19VY
681 :
名前は開発中のものです。 :02/06/08 14:38 ID:I7s5cA6M
サンキュ。 そういえばMAX版はバグってるつー話聞いたけど 一生懸命、バグ付ソース読むのは切ない… LightWaveのはちゃんとうごくのかなぁ
そもそもそんな高級アプリに手が出せない
LwのDirectX Export WeightMap関係のいろいろな値を見てない。 WeightMapなし、WeightMapあり、 WeightMapMapOnlyなしが混じってるとダメ。
サンクス。まともなXファイルExporterは存在しないのかー?
>>681 MAX用プラグインで出せるスキンはphysiqueのBoneのみ(readme.txtに書いてあるけど)
MAXはVer.Upを重ねてブクブク太りすぎなので他のBoneを使ってると落ちます。
座標系も直さず吐き出すから不便。
687 :
名前は開発中のものです。 :02/06/18 10:51 ID:321WPTBQ
┗(゚д゚;)┛age
DirectX Audio を使ってMIDIを鳴らしているんですが ボリューム調整(フェードイン/アウト)ってどうやるんでしょうか。 検索してサンプルソース探してみたんですが、ありそうで ありません。参考になるサイトや知ってるって方いらっしゃいましたら 教えてください。
>>688 IDirectMusicPerformance8->SetGlobalParam(GUID_PerfMasterVolume,&Volume,sizeof(long));
マスターボリュームいじるなコノヤロウ!
688です。 マスターボリュームは全体のボリュームですか? いくつかのセグメントがあって、それぞれのボリュームを動的に コントロールしたいんですが、セグメント単位でボリュームを コントロールできる方法をご存知でしたら、ぜひ教えてください。
692 :
:02/06/18 23:42 ID:???
最近DirectX+LightWaveで開発はじめてみますた。 LightWaveのDirectX Exportを調べてみたのですが WeightMapを1枚でも使用すると全てのBoneにUseWeightMapOlnyの チェックが入ったのと同じ状態で出力されるようです。(合ってます??) なので現状の回避策としては ・WeightMapを使用しない ・全BoneをUseWeightMapOnlyにする→BoneごとにWeightMapを用意する(´Д`;) マジ使えない状況です... しょーがないのでObject,Scene Libraryに含まれるDirectXコンバーターの ソースに手を加えているトコロです...だりぃ....
693 :
689 :02/06/19 01:01 ID:???
>>691 マスターボリュームは全体のボリュームです
セグメント単位で変えたいのであれば
IDirectMusicAudioPath8->SetVolume(Volume,0);
としてあげましょう
>>692 私もdxskm.cppに手を加えてWeightMap対応にしたかったが
挫折中。成功したらあなたは神
とある本にDirectXのライトは重いので使うなと書いてあったのですが実際のところどうなんでしょうか。
696 :
692 :02/06/19 05:14 ID:???
>>694 成功しますた。
私はいまんとこUseWeightMapOnlyは使ってないので、ソレには対応させてないですが。
あと、このプログラム(含plugin)、張力計算も変ですね。
ミョーにパキパキ曲がるカンジ。FallOffをでかくしすぎたのに近いかな?
今はそっちの調節をしてみてます。
697 :
名前は開発中のものです。 :02/06/19 05:20 ID:99tvqaKY
面手
>>695 いつの時代だ。ただ俺もどこか見た覚えがある。
洋ゲーではフォーセーケン(自前ライト)
国産ではミッドガルドの頃か
>>695 ソフトウェアだった頃は事実重かった。
Hardware TnL になってからは、気にならない。
パイプラインに組み込まれてるからか、フィルレートが壷首だからか。
つか、昔のゲームは、ライティング計算 簡素な方法で近似してたじゃん。 DXは真面目に計算してたし重いのはある意味当たり前 最近はどうなんだろう?シェーダ−で簡素化しても、昔と違って ハイポリだし、誤差の見えるおかしな絵になちゃうなんてことある?
701 :
名前は開発中のものです。 :02/06/19 15:18 ID:mOOoeDK.
シェーダ−でFixedTLのライトを実装しようとしたら 死ぬと思う。
702 :
名前は開発中のものです。 :02/06/19 15:25 ID:j/iFmOMQ
D3DXVECTOR2の2Dベクトルを回転させるには何使えばいいんでしょうか? D3DXMatrixRotationZで回転行列を作って積をとるの?
691です。
>>689 さんありがとうございます。
それぞれのセグメントに対して次のようにして
IDirectMusicAudioPath8* audiopath を作ろうとしたのですが、
GetAudioPathConfig関数がエラーを返してオーディオパスを取得
することができませんでした。
IUnknown* config = NULL;
if (SUCCEEDED(segment->GetAudioPathConfig(&config))) {
performance->CreateAudioPath(config, TRUE, &audiopath);
config->Release();
}
他に、performance->GetDefaultAudioPath(&audiopath); でデフォルトの
オーディオパスを取得できたのですが、audiopath->SetVolume(vol, 0);
とすると全てのセグメントのボリュームが変わってしまいます。
どうしたものでしょう(泣
>>701 litっていうそのまんまの命令があるよ。
でも頂点シェーダー2.0では消えたみたい。
705 :
名前は開発中のものです。 :02/06/19 21:53 ID:6L5LvgJg
>>704 いや減衰率とかスポットのコーンとかさ。
706 :
名前は開発中のものです。 :02/06/20 02:34 ID:XwaxD532
なぜか出し惜しみスレで締め出し食らったのでこちらに転載させて 頂きます。よろしくお願いします。 > ちょっと困っています。DirextXSDK付属のMAX用Xファイルプラグインです >が、MAX4.2用にコンパイルし直すとテクスチャーが一切付いてこないのです。 >何方か原因解りませんか?上のほうだとうまく言ったという報告がチラホラ >なんですが…。とほほ ほんと、とほほです。
>>706 割れ物MAX使ってるのか。
通報しとく。
710 :
名前は開発中のものです。 :02/06/20 21:47 ID:bvvsEuks
複数人で3Dの簡単なゲームを作成しようと思い、3Dアニメーション作成ツールを作りました。 ところが間抜けな失敗が…。1つのオブジェクトを中心とした アニメーションならば問題ないのですが、2つ以上のオブジェクトが 関わってくるようなアニメーションのことをすっかり失念していたのです。 たとえば自分の周りを球がくるくる回った後、球が任意の敵座標に向かって 投げ出されるようなアニメーションなどが実現できません。 私がコード的に解決することはできますが、それだと担当の人がしょんぼりですし…。 市販のエディタツールを参考にしようとしても、相互に作用するものまで 踏み込んでいるものは無そうですし…どうしたら良いのか途方にくれています。 一般にはどうやっているのでしょうか?相談に乗って頂ければ嬉しいです。
親子関係を切り離せるようにする または 球のスケールを0にして、別オブジェクトで新規球を作る または カメラに写らないほど遠くに球を移動して、逆に遠くに用意しておいた別オブジェクトを近くに持ってくる
>>706 座標軸が左手Yアップじゃない点を除けば問題無く出たと思うが。
テキスト形式で出して確認してみれば?
MAX使っててXファイルに書き出す必要に迫られる状況が思いつかん。
713 :
名前は開発中のものです。 :02/06/20 22:22 ID:hTuEOYZY
>>710 そういう自分と球のような
関係が切り離されるものどうしは
はなっから親子関係で括らない。
球はあくまでワールド座標系での移動行為として
自分の周りをまわるようにする。
714 :
710 :02/06/20 23:27 ID:???
>>711 >>713 お二人ともレスありがとうございます。
最初から、あるいはある時点から別のオブジェクトとして
扱うというのがセオリーなんですね。とても参考になりましたですm(_ _)m
しかし、そうなるとワールド座標の移動方法は、かなりコードの方で
補わなければいけないという認識で良いのでしょうか?
正直、イベントに対してその都度アニメーションを変える程度で
それなりにゲーム作れると思っていたのですが…甘かったです…。
うー、最初から設計し直しの予感です…いや、いっそ飛び道具禁止に…(´・ω・`)
アニメーションデーターに 親を切り替える等のコマンド組み込めば? frameに連動した効果音の発生とかも必要になるでしょ まぁ、アニメデーターと同じ構造体に入れるかは別問題だけど
716 :
DirectXは知らないが、 :02/06/21 00:50 ID:vXM1TDO.
>710 ローカル・ワールド変換マトリックス作って、座標変換すればよいのだよ。 移動速度もワールド基準に変換するのを忘れ尿に名。
DirectInputのAcquire()が失敗します。原因を特定するにはどうすればいいんでしょうか… コードはヘルプのをまんま使ってます。
719 :
717 :02/06/21 04:21 ID:???
>>718 戻り値が何を意味してるのかがわかんないんですよ…
エラー一覧みたいなのがないのか探しているんですが。
720 :
名前は開発中のものです。 :02/06/21 04:32 ID:AR4pKO1Y
>>717 それは、先日
折れが遭遇したのに似てる。
それデバックビルドのEXEじゃない?
SetCooperativeLevelで
DISCL_EXCLUSIVE | DISCL_BACKGROUNDにしてみ。
721 :
717 :02/06/21 04:45 ID:???
>>720 レスどうもです。やってみたんですがSetCooperativeLevelで失敗してしまいます。
デバッグビルドではあるのですが。
722 :
717 :02/06/21 05:13 ID:???
とりあえずエラーがDIERR_OTHERAPPHASPRIOだということがわかりました。 さて、どうしたらいいものか…
DISCL_NONEXCLUSIVEを指定してみてはどうか
724 :
717 :02/06/21 05:42 ID:???
とりあえずエラーを無視してGetDeviceStateの直前にもう一度Acquireしたら無事動きました。
いいのかな?これ。まあいいや、もう寝よ。
>>723 レスありがとうございます。
ヘルプのコードをそのまま使っているのでDISCL_FOREGROUND | DISCL_NONEXCLUSIVEを指定しています。
>>724 違うよ、DISCL_BACKGROUND| DISCL_NONEXCLUSIVEにしろってこったろ。
これで事実上優先レベルでの制限はなくなるから、エラーも出なくなるだろう。
726 :
名前は開発中のものです。 :02/06/21 16:39 ID:ABfUs.Fk
つーかマジでD3DXMATHって 3DNow/SSEに対応してんのな。 折れブラフかと思って、 3DNow対応に書き直してたよ。 速めに気付いて良かった。
727 :
717 :02/06/21 22:30 ID:???
>>725 >>723 あああ、そういうことですか、勘違いしてました。
そのとおりやってみたら問題なく動きました。どうもありがとうございました。
VC6だとD3DXMATRIXA16って本領発揮しないの? .net買わないとだめ?
だめ
730 :
726 :02/06/22 00:05 ID:Rtzwl2bk
>>728 プロセッサーパック入れれば
サポートされるよ。
つーか、既出だったらアレだけど
VisualC++6.0のスタンダートは
プロセッサーパックのサポート外なんだけど
無理矢理入れると、プロ並みにグレードアップする罠。
インライン展開や最適化、MFCの静的リンクも出来てしまう。w
#ifdefで区切られてるからどっちにしろダメだと思うが。 ヘッダを編集するのに抵抗がないならいいのか
732 :
726 :02/06/22 00:20 ID:???
>>731 編集が嫌なら、#undefして
新たに定義し直してやりゃいい。
つーかアライメント16バイトって
何か意味あるの?
SSEでレジスタへ直接ロード出来るようになる
ここ見て思い出して 俺も8.0の頃に作ったasmのコード外したよ
735 :
:02/06/22 17:17 ID:???
俺も自作行列ベクトルライブラリ使うのやめようかしらん。 こうしてMSの策略にはまっていく罠
736 :
名前は開発中のものです。 :02/06/22 17:46 ID:jMNDBe2Q
DirectXの画面キャプチャってどうやってんの?
TRIANGLELISTで作った物体を簡単にワイヤーフレームで表示させる方法ってありますか?
>>735 はっきり言って
ベクトルだのマトリクスだの
そういった細かいレベルで
SIMDなりなんなりで最適化しようというのは
あんまり意味ないよな。
1つの関数にする時点で多少なりともオーバーヘッドが発生するし
MMXや3DNowだとFPU切替がイタい。
戻り値としてfloatやdoubleを返そうとすると
FPU切替は避けられないからな。
741 :
736 :02/06/22 19:36 ID:jMNDBe2Q
742 :
名前は開発中のものです。 :02/06/22 19:38 ID:TTRL1PrI
尻文字で"F","A","Q"と書けば宇宙から託宣が下るよ。
>>739 SSEはEMMS命令必要ないから、切り替えのオーバーヘッドは無いよ。
MMXでfloatやdoubleの行列の計算する奴なんていないだろうよ。
実際にSSEで書いたコードとCでベタに書いたコードを比較すると1シーンで
使用する行列演算の回数によっては無視できないほどの差があるよ。
まあ、素人にとってはMMX=オナニーのネタってこった
どっちにしろD3DXが対応してるから自分で書くほどのものでもないわな。 MMXだと単純過ぎて面白くないけど、プリフェッチが絡んでくるSSEは 最高のオナニーネタだよ。
688です。 パフォーマンスオブジェクトを1つしか用意していなかったんですが、これを セグメント毎に用意してそれぞれの SetVolume() を呼出すことで、セグメント 単位にボリュームを変えることができました。他にも方法があるかもしれま せんが、一応解決しましたので報告します。 回答くださった方々ありがとうございました。
747 :
名前は開発中のものです。 :02/06/24 11:33 ID:KZTjZaw2
#define WIN32_LEAN_AND_MEAN #define INITGUID #define DIRECTDRAW_VERSION 0x0700 #include <windows.h> #include <ddraw.h> #pragma comment( lib, "ddraw.lib" ) LPDIRECTDRAW7 g_lpDD = NULL; void Hoge( void ) { HRESULT hResult; hResult = DirectDrawCreateEx( NULL, (LPVOID*)&g_lpDD, IID_IDirectDraw7, NULL ); } 上のコードを VC++ で C としてコンパイルすると次のようなエラーが出ます。 error C2115: 'function' : 互換性のない型が含まれています。 warning C4024: 'DirectDrawCreateEx' : の型が 3 の仮引数および実引数と異なります。 どうも IID_IDirectDraw7 が通らないみたいです。 ファイルの拡張子を .cpp にして C++ としてコンパイルすると問題ありません。 C で通す方法は無いのでしょうか?
GUID は、アプリケーションが C または C++ のどちらで書かれているかによって使い方が違うので注意する。 C の場合は、GUID (たとえば、&IID_IDirect3D) にポインタを渡すが、 C++ では参照を渡す (単に IID_IDirect3D)。
749 :
747 :02/06/24 15:48 ID:???
hResult = DirectDrawCreateEx( NULL, (LPVOID*)&g_lpDD, &IID_IDirectDraw7, NULL ); これで通りました。 他にも C と C++ だとこんな違いがあるみたいですね。 C IDirectDraw7_SetCooperativeLevel( g_lpDD, ... ); C++ g_lpDD->SetCooperativeLevel( ... ); レスありがとうございました。
DirectXのクラス、AppWizardが吐き出したのを使ってる? 自前で行こうかAppWizをベースにしようか今迷ってるとこ。
751 :
名前は開発中のものです。 :02/06/24 22:14 ID:28pp8cdw
>>750 吐いたのを多少参考にして
自前のを作る
DirectX8.1で初めてDirectXいじるからとりあえずAppWizardで様子見てる。
誰か・・・ヘルプ・・・ Windows 2000 DirectX8.1 ビデオカードは RADEON 7200 最新のドライバ入れたら Direct X7のDirext 3D IMでカラーキーが有効にならず、 透明色の指定をしたはずの黒い色が描画されてしまいました (板のようなポリゴンをスプライトとして使用) カラーキーは左上(0,0)の座標に指定しています しかも、このような症状が出るのは「とある一つのテクスチャ」のみです とあるクスチャの画像ファイルが壊れているのかな?と思い、 テキスチャに他の画像を読み込ませると、正常に表示されました 対策として画像エディタで壊れていると思われる画像データを読み込み、 必要な部分をコピーペーストして正常に表示される画像データに貼り付け、 その正常になったはずのデータを指定してみましたが、異常な表示のままです 逆に、正常な画像データに異常な画像データのほんの16*16ドットを カラーキーなどとは関係の無い画像の中央の領域にちょことコピーしただけで 正常なデータは異常なデータに変わってしまいました・・・ わけがわかりません、私のマシンで一体何がおこっているのでしょう 画像データ・異常な画像データともに、(0,0)の座標は完璧に真っ黒です 何度見てもRGBで0x000000のデータしか入っていません また、アルファ値はまったく使っていません いったいどうすればよいのでしょう・・・
>753 問題の画像をうぷすれ。
>753 >最新のドライバ入れたら 元に戻せw
>750 DirectX8になってから、サンプルが軒並みCD3DApplicationから 派生されて物で作られて居るけど、みんなこれをどうやって自分の プログラムに落とし込んでいるのかが気になる。 特に、動的フルスクリーン←→ウィンドウモード切り替えとかは、 ほとんどサンプルコードのままにしておくのが吉なのかな?今 自前でD3D8とD3DDevice8その他を解像度切り替え時に全て リリースして、0からインターフェースを取得し直してウィンドウ を作り直す様にしているんだけど、何故か上手く行かない。再構築 に時間はかかるけど、こっちの方が確実かつ簡単に行くと考えた んだけど・・・。
>>756 俺はサンプルなんて殆ど見ないよ。
なんか苦手みたい、他人のソース見るの。
まずね、D3D8はリリースする必要ないです。
最初から最後まで生かしっぱなしでOK。
俺なんて、自作ライブラリのDllMainが呼ばれた瞬間に作ってるよ。
んで、D3DDevice8は作った時のIDirect3D8::CreateDeviceの引数があるじゃん。
あれのDeviceTypeとhFocusWindowとBehaviorFlagsのどれか1つでも
変わる様なら、再構築の必要がある。
逆に変わらないなら、ResetでOK。
そんなん気にするより、 全部作り直すで統一した方が楽
>>758 いやいや、ライブラリの基底部分はそれなりにしっかり作っといた方がいいよ。
後々やりたいことが出来たけど、現状の仕様ではかなり厳しいちゅう状況になったりするからね。
でもまあ、ちょっとめんどくさいのは確かかもね。
デバイスを作り直すとすると、テクスチャとかリソース管理も自分でやらなきゃならなくなるから。
リセットだけにするか、全部作り直すか。 同じ事を達成できるんだから2つルーチン書くより 上位互換である全部作り直す方が楽。
761 :
名前は開発中のものです。 :02/06/29 00:47 ID:uNPXzVbU
>>760 例えば、D3Dのリソース自動管理を使えば
Resetならテクスチャとか頂点バッファとか
作り直す必要がなくなる。だからその分切り替えが速くなるメリットがあるよ。
正直、1からXFileとか読み直してると結構時間食う。経験的に。
後はゲームが起動したら切り替えはさせないっつーのがあるね。
実際やる立場からするとこれで十分だったりする。
フルスクリーンのゲームで何かあるたびにデバイスを開放するのはやめて欲しいな。 3DMark2001とかベンチが切り替わるときに解像度が変化するの嫌じゃない? メニューとゲーム中で解像度が違うのも最悪
モニタの寿命が縮みそうだな。 カチカチカチカチ…
>757 確かD3DDeviceのResetを行って、失ったリソースを再ロード すれば良いんだよね?でも、何故かそれだとフルスクリーン→ウィンドウ 時にウィンドウの枠が出てこない(altを一回押すと戻る)。 サンプルコードを読まないって事は、全部一から作ってるの? 自分はあのドキュメントだけでは到底作れないよ・・・。とりあえず サンプルで流れを掴んではいるつもりだけど、インターフェースを 全部解放して再取得するorリセット時に何が悪さをしてるのかが謎。 Resetメソッド使った時は、それまでのリソース(メッシュとか)は 明示的に解放する必要なく再ロードして良いんだよね? >761の言うとおり、動的切り替えなんて市販ゲームでも一部MSの 奴くらいしか対応してないし、別にフルスクリーンでフォーカス外した 時の対策くらいで良い筈なんだけどね。でも、何となく・・・と(悪い癖)
動的にフルスクリーン切り替えが出来るのは ほとんどエロゲくらいだろ。 枠が出てこないのならSetWindowPosでSWP_NOMOVE|SWP_NOSIZEで対処
寿命が縮むなにもモニタを実際に寿命まで使うことはない罠。
768 :
名前は開発中のものです。 :02/06/29 10:04 ID:ERmjHl2U
>>764 自分では、サンプルは殆ど見てないつもりだったけど
あらためてサンプルと自分のコードを見比べてみたら
結構パクってた。自分が忘れてただけみたいね。(笑
Resetが失敗すると、D3DDeviceはロストしたままだから
そもそも表示すら出来ない。だから原因はD3Dとは別。
>>765 の方法で直るんじゃない?
ちなみにサンプルからパクってた俺のソースでは
SWP_NOZORDER | SWP_NOMOVE | SWP_NOCOPYBITS | SWP_SHOWWINDOW
になってたね。
>Resetメソッド使った時は、それまでのリソース(メッシュとか)は
>明示的に解放する必要なく再ロードして良いんだよね?
D3DPOOLの値による。D3DPOOL_DEFAULTなら駄目、それ以外ならOK。
D3DPOOL_DEFAULTだと通常はVRAM上に確保されるから、
Reset等でレンダリングバッファの領域を変えれば
その干渉を受けてしまうからつーのが理由だね。
769 :
768 :02/06/29 10:12 ID:ERmjHl2U
>>768 は間違ってた
D3DPOOL_DEFAULTならReleaseして、再度Create。
それ以外は、Releaseも最ロードもする必要はない。
>765 >768 成る程。目から鱗。確かに最初期化の時使ってなかったよ<SetWindowPos 多謝多謝。 >768-769 こちらも納得。ちゃんとドキュメント読みながら筋道立てて考えないと 駄目だね。ありがとう。
772 :
名前は開発中のものです。 :02/06/30 09:18 ID:1AkGsz1g
貴様等、D3DPOOLはどれにしてるか? 朕は最近D3DPOOL_DEFAULTとD3DPOOL_MANAGEDは 共存出来ない知って、どっちを使うか迷っておる。
D3DXCreateTextureFromFileExで読み込んだ Textureのサイズ(x,y方向のピクセル)は 得ることは出来ないのでしょうか?
>>772 共存出来るよ、同時にフラグの設定が出来ないだけで。
じゃないと、MANAGEDを利用したプログラムじゃテクスチャへのレンダリングが行えなくなる。
>>773 IDirect3DTexture8::GetLevelDesc
776 :
名前は開発中のものです。 :02/06/30 09:32 ID:1nknoVE6
>>774 おお、そうなのか。
じゃあ、基本はMANAGED
特殊用途にはDEFAULTと使い分けるのが
ベストという訳か。
うむ、朕は満足した。下がってよいぞ。
>>775 どうもありがとうございました、
GUIクラス作っててどうしても画像のサイズが分かりませんでした。
頂点ごとに法線を持たせてるんですが、立方体を作る場合、それぞれの頂点にはどんな法線を持たせればいいのでしょうか。 その頂点を含む面の法線の平均を使うと角が丸っこく見えてしまい上手くいきません。
各頂点を複製して、面の法線と同じ値に汁
>778 簡単な方法としては、モデラー側で最初から面を切り離した立方体を作る。 これ最凶。ただ、ストリップとかを考えるとあまりよろしくない諸刃の剣。 玄人にはお勧めできない。
では立方体一個作るのに頂点24個用意しなければいけないんでしょうか?
POINTS p = MAKEPOINTS(lParam);のように DirectInputで直接マウス座標を取得する方法は無いのですか? 相対 DIMOFS_X ,Y を加減算する方法以外に思いつきません・・
マウスに絶対的な座標などありませんが
785 :
名前は開発中のものです。 :02/06/30 13:24 ID:0bTRua52
つまらないレースゲームを作るため、コース全体を一つの DXMeshで持ったXfileで不遜にも表そうとしています。 よくある自分の車を後ろから眺めるタイプのもので、視点は車より 大分後ろにおき、コースの表示は車と視点の中間位の位置でクリップ、 さらに視点と車の間を遮るものは非表示にしたいと思ったのですが…。 Cマガジンとかに載っている、BSPとかの手法を試そうとしても 単一Xfileからどう持っていけばいいのか途方に暮れていて…。 駄目を承知でお伺いしたいのですが、単一Xfileで こういう処理を上手くやる方法ってありますでしょうか?
なにいってんだ?
>785 もしかして、非常にもしかして、D3DXでLoadして、そのままD3DXMeshの DrawSubsetだけで何とかなるだろうとか考えていたりする?いや、頭の悪い 自分では考えもつかないような、素晴らしいアイディアとかあるのかもしれないけど。 領域をマテリアルで分割してみたりとか。テクスチャを貼るのが前提なら 色で分けられる・・・かな?(適当)
788 :
785 :02/06/30 16:22 ID:???
>>787 OH!!これは痛烈な…素人ですいません(´Д⊂
表示はXFileに一括してまかせて、当たり判定用のデータは別にもたせれば、
細かいこと考えずモデルに力を注げる!などと思ってたのですが…。たはは、浅知恵でした。
仰るとおりAttributeを分割用途に使えば良さそうですが、でもその辺は
本来の用途で一杯一杯なんです…。Xfileだけでは無理なんですかねぇ…。
かといって独自形式にコンバートなんて考えると気が遠くなりそうです(´・ω・`)
要するに、魂削って作った箱庭モデルを表示したいだけなのですが…。
この辺、表示分割用データとどう折り合いをつければいいのやら…。
いずれにせよ、レスありがとうございました。もすこし頑張ってみます。
コース自体と視界を遮りそうな周りのオブジェクトのメッシュをなるべく別にして 個別に判定(球で十分)、遮ってそうだったらマテリアルいじって半透明とかはどう? もの凄いポリゴン数とかじゃなければコース自体はクリッピングしなくてもかまわんと思う。 その周りのオブジェクトを視錐台クリップするとかで処理速度も上がる・・・かもしれない。 どうしても今の状態のままでやるならメッシュ読み込みの時にグリッドに分けてしまって そのグリッドの中のポリゴンを判定していく感じになると思う。 GameProgrammingGems1のオクトツリーあたりが参考になるかも。
790 :
切実 :02/06/30 16:28 ID:???
DirectX9.0SDKつかいたいよ〜〜(切実 デモつくりたいよ〜〜
791 :
785 :02/06/30 16:48 ID:???
>>789 あああ、ありがとうございますヽ(;゚∀゚)ノ=3
オブジェクト毎の視錐台クリップならば私にも出来そうです!
しかも(モデラ内で分けてある)オブジェクト毎に相対座標付きXFileをはき出す
プラグインを作れば、何の面倒もなくそのまま使えそうです(*´Д`)
後半はまだ理解できないのですが。横着せず必ず調べてみます。
3Dプログラムを始めたばかりで…本当に参考になりました。重ね重ね感謝であります。
>791 ちょっと待った。Xファイル形式って、二種類あるのを知らない? バイナリとかの話でなくて、フレーム形式とメッシュ形式。メッシュが 単一のオブジェクト、フレームがメッシュを複数持った親子構造を成す 形式。フレーム形式で作る&読む工夫をすれば、ちゃんとツリー構造 で読んでくれるから、幸せになれると思う。
って、相対座標付き云々って、フレーム形式の事かな?自滅。
794 :
名前は開発中のものです。 :02/06/30 19:57 ID:w0m4oEsQ
>>792 2種類というより、メッシュのは
フレーム付きのサブセットだね。
つーか、D3DXATTRIBUTERANGEを拡張して
メンバのIdを1個増やしてやって
そこにグリッドのNoでもいれてやりゃいいんでない。
停滞age 8.1bの変更点ってナニ?
796 :
名前は開発中のものです。 :02/07/05 02:09 ID:vl./cU5E
ところで、アクションマッピングってどう思います? なんだか全然使えない気が・・・
797 :
名前は開発中のものです。 :02/07/05 02:36 ID:3/OZFy0A
>>796 自分でコンパネ作らなくて済むので
楽といえば楽。
>>797 あのコンパネをユーザーに見せるのはちと恥ずかしいと思うのは偏見でしょうか?
>>798 いや、正常。
そもそもwinのGUIで環境設定をやらせるゲームは萎える
800 :
名前は開発中のものです。 :02/07/05 07:09 ID:a5y6mja.
>>799 あれはFULLSCREENでも出せるよ。
別にいいと思うけどね、どうせフリーでしょ?
>>800 フルスクリーンで出せるとかそういう問題じゃないだろ。
センスの問題だ。
>>796 基本的にMSのやる事は、やり方はともかくやる事は間違ってはいないので、
「なんだよこれつかえねーな」とか思ってしまったら、自分の理解が足りない
か考え方が遅れていると思った方がいいよ。
D3DXEffectは?
>>802 MSのやることは間違っていようがなんだろうが正義だから
センスもひっくるめて黙って従っておいたほうが吉。
だろ?
805 :
名前は開発中のものです。 :02/07/05 14:37 ID:vQ3tZoQI
>>803 Effectはちょっと・・。
あれ、最初どう使っていいかわからなかったよ。
すんげえ奇抜。IndexまでLPCSTRだからね。
読み込むアプリ側とEffectFileであらかじめ
つじつまを合わせてないと駄目なんだよね。
例えばテクスチャの1枚目は"TEX1"で2枚目は"TEX2"とか。
これが"Diffuse"とかにされてると、もうアプリ側で識別する術はないんだよね。
>>806 でもアンチMSと比べると
信者の方がいくらかマシ。
そういや昔、ソースにバグがあるのにコンパイラが壊れてるって言って コンパイラの所為にしてたのがいたなあ(苦笑
アクティブウィンドウのDirectXプログラムを 外部プログラムで操作することは出来ますか?
>>810 あなた自身がヤバイかも。とりあえず猫わかを勧めます
俺じゃなくて
>>809 猫わかでもなんでもいいから頑張れ
DirectInputのアクションマップ、メモリリーク起こしてないか?
突然すんません。 DX8.1 SDK Extra についてるシンボルファイルって、どこに入れたらいいの? あと、初心者向けスレあったら教えてちょ
>>812 漏れもそれ思った。
ウィザードから作ってもエラー出るしな。
816 :
名前は開発中のものです。 :02/07/08 10:28 ID:tCvK08q2
アクションマップでなくとも、 DirectInputでジョイパッドデバイスを作って Acquire()した以降、リークしてないか? SDKサンプルもそう。
柔軟な頂点データーフォーマットの先頭から 特定部分(例えば法線)までのoffset値を返す関数 作りたいんですけど、MSからは提供されてませんよね?(総サイズを返す関数はあるけど) マニュアル見てD3DXDeclaratorFromFVF って関数があるけどこれってなんでしょ?? 解説ほとんどないし 柔軟な頂点フォーマット (FVF) コードから宣言子を返す。 HRESULT D3DXDeclaratorFromFVF(DWORD FVF, DWORD Declaration[MAX_FVF_DECL_SIZE]); パラメータ FVF [in] 宣言子の配列を生成する元となる FVF を記述する、柔軟な頂点フォーマット フラグの組み合わせ。 Declaration [out] 照会されたメッシュに含まれる頂点の頂点フォーマットを記述する返された配列。この宣言子の配列の上限は MAX_FVF_DECL_SIZE で、宣言子を 15 DWORD の最大数に制限する この場合の宣言子って何??
>>818 頂点シェーダの自前シェーダを定義する時に使うやつ。
シェーダでは頂点フォーマットを定義するのにFVFではなく
そいつを定義する。
ありがと。シェーダー放置してるのでワカラナカターヨ
821 :
名前は開発中のものです。 :02/07/10 12:55 ID:Zr7aprQc
Direct3Dでプログラマブルシェーダーを使う場合、 シェーダーでも有効なレンダーステートと シェーダーでは無効になるステートはどうやって見分ければいいですか? 推測ですか?
822 :
名前は開発中のものです。 :02/07/11 01:30 ID:kjXjHXAI
はじめまして。DirectXを勉強している者です。 勉強していたんですが、一から低レベルな関数作るのがいやになってしまいました。 簡単に3Dのゲームが作れる手軽なライブラリありませんか? ・Xファイルを簡単に扱うクラスがある(アニメーションも) ・衝突判定が手軽にできる ・2Dも充実している(αブレンディングや各種アフィン変換) ・早い こんな感じでおすすめのあったら教えてください。
823 :
名前は開発中のものです。 :02/07/11 01:40 ID:kjXjHXAI
少し調べてみました。 AXISっていうライブラリが有名みたいなので、これちょっと見てみます。
822-823 ご苦労さん
このAXISっての、全然使えなかったです・・・ あー、自分でこさえるかな。 それか我慢してDirectXに付属しているユーティリティ使うか・・・
ところでここってsageにするとID消えるんですね。
827 :
名前は開発中のものです。 :02/07/11 02:57 ID:DA2y7Lzk
KIT-M キタ━━━━(゚∀゚)━━━━!!!!!!
>>828 何?
有名なの?
よく知らんで挙げちゃったけど、
俺まずいことしたかな?(汗
830 :
名前は開発中のものです。 :02/07/11 06:31 ID:eAYJVnX6
きみまずいよ! もう俺しらねえよ 責任とれよ…
masa叩きスレが立ちます
歴史は繰り返される。か・・・
>>829 Webにおいてあるもの見て察してやれよ・・・カワイソウニ
834 :
名前は開発中のものです。 :02/07/11 12:00 ID:WO9TAO.o
DirectX7 なんですが、サーフェスが明示的に作成されたものか 暗黙的に (GetAttachedSurface を使って) 作成されたものかを 知る方法はありますか?
835 :
名前は開発中のものです。 :02/07/11 13:15 ID:ASB5.U4o
DirectXのCOMの初期化で質問です。 初期化にCoInitializeEx(NULL, COINIT_MULTITHREADED)を使った場合(MTA)と CoInitialize(NULL)を使った場合(STA)の差って、パフォーマンスにペナルティが 入るぐらいで、スレッド単位でSTAかMTAか決めとけば問題ないんでしょうか? それとも「DirectPlayはMTAじゃなきゃ駄目です」とかあるんでしょうか?
DirectX-SDKのxxxxutil系の実装も相当酷い。プロが書いたものとは 思えない。
838 :
名前は開発中のものです。 :02/07/11 21:19 ID:lFJ4dkAI
>>835 結論から言えばYES、だと思う。
クライアントのスレッドモデルと
COMサーバーのスレッドモデルのアンマッチは
COMが吸収してくれるはずなので、問題が出るのは
パフォーマンス面だけと思う。
例えばクライアントをMTAで初期化し、
使用するCOMサーバーのスレッドモデルがsingleだった場合
COMは新たにSTAを作ってそこにサーバーを生成する。
そしてそのサーバーへのアクセスは、COMが勝手に作った
プロキシスタブを介して行われる。つまりアクセスは出来るが
パフォに影響が出ると。
ちなみにDirectPlayのモデルはBoth(どっちも可)なので
どちらでもいい。まあMTAを使う方が自然と思う。
STAだかMTAだかが 解らんのだと言っている!
Single Thread Architechture
>>839 過去の遺物だから、今更覚えなくていいよ。
無駄もいいとこ。COMなんてもうだめぽ。
.NETに移行しない分野ではまだまだ現役ですが、何か?
ライブラリ厨の予感sage
844 :
名前は開発中のものです。 :02/07/12 02:40 ID:CQahmC3Q
HELをCreateDirectDrawEx()でDDEMULATION_ONLYにしたらその時点で強制終了するPCがあるんだが、どうすればいいんだろう。 DELLのinspiron4000。ATI RAGEだ。他のPCならなんともないんだが、このノートPCの糞ビデオカードときたらマジでぶちきれる。 HALでやったらバグるしさー。ヤネウラオのページにもHELが速いって書いてあるし。実際HALでやったらぼやけたり色抜きが半端だったりするし。 どうすりゃいいんだよ。CoInitializeってやつでDDもらうとまた何かちがうのか?
846 :
名前は開発中のものです。 :02/07/12 03:01 ID:CQahmC3Q
DIBは面倒くさい。 RPGつくーる2000なんてすごく汎用性あるけど、どうやってんだろうな。
>>844 ドライバは最新版使ってる?
DELLのサイトから落とせるドライバは古いと思うよ。
ATIへ行ってノートPCのドライバを探しても、 ベンダーごとに配布されているものを使えと言われ、落とせない罠。 とりあえず、海外DELLのドライバが新しい場合もあるが、 それでもHALのバグは治らないことが多い罠。 やはりATIはクソ。
849 :
835 :02/07/12 10:05 ID:???
850 :
名前は開発中のものです。 :02/07/12 12:25 ID:7alQPTjQ
>>848 デバックランタイムだとどう?
DXはリテールだとすぐ落ちる脆弱野郎だが
デバックだとかなり堅固になる。
警告がデバックアウトプットされているようだと、
アプリ側でやることがまだあるかもね。
無いようだとお手上げ。
851 :
名前は開発中のものです。 :02/07/12 19:57 ID:ta2l.s0c
視錐台クリッピングを解説しているページを見ると 六面と干渉計算して・・・とかこ難しいことやってますが、 バウンディングボックスなり球なりを射影トランスフォームして x,yは-1〜1、zは0〜1でクリップするのはまずいのですか?
射影変換すると球が楕円体になる罠
854 :
851 :02/07/12 20:33 ID:???
>852 OKその言葉がほしかった。ありがとう 今さっき実験も通った。上手くいってます。 pDevice->GetTransformして、Multiply何回かして、 D3DXVec3TransformCoordするだけだもんね。
855 :
851 :02/07/12 20:34 ID:ta2l.s0c
>>853 ああ!ほんとだぁぁぁ
でも、判定自体がおかしくなることってあります?
はみ出ちゃう??
856 :
851 :02/07/12 20:40 ID:???
楕円ははまずいわな。余計にややこしくなる。 ちなみに実験したのは BBoxの8頂点を変換>見えてる? というもの。 まぁいいや。おかしくなったらすぐわかるから後回し・・・
857 :
名前は開発中のものです。 :02/07/12 21:31 ID:d4nWsxd.
858 :
:02/07/13 02:37 ID:???
>>851 わかってると思うけど一応...
バウンディングボックスでやるとして
・ -1<x<1 かつ -1<y<1 かつ 0<z<1 な頂点が一つでもある → 描画
だとダメです。
・ 全ての頂点のx<-1 または 全ての頂点のx>1 または
全ての頂点のy<-1 または 全ての頂点のy>1 または
全ての頂点のz< 0 または 全ての頂点のz>1 → 描画しない
で判定するのが吉
859 :
851 :02/07/13 08:40 ID:???
>>858 実は書いたときには解ってなかった・・・
その後オブジェクトがでかくて視錐台をまたいでしまって、キャラが宙ぶらりん
まあいいや、朝起きたら12辺で・・・
なんて思っていました。
いやあ、いいこと聞いた ありがとう
860 :
名前は開発中のものです。 :02/07/13 10:58 ID:CmHrdi.Q
DirectSoundで15音ぐらい出したところで突然ブルースクリーン になります。似たような現象を解決された方がいらしたら 教えてほしいのですが <現象> 例外 0E 0028:C16C1F95 以後、再起動するまでサウンドが使えない。 <環境> 調べたところSoundBlaster PCI128では起こるのですが MounsterSound MX300やADIでは発生しないようです。 Windows98SEで発生するけど、Windows2000やXPでは 発生しないようです。 ドライバは最新のものをインストールしています。 OS : Windows98SE CPU : Athlon(TB) 1.4GHz MEM: 128MB Video: Geforce4 Ti4200 Sound: SoundBlaster PCI128
解決策: あなたのアプリがサウンドOFFで動くようにする 不良なハード・バグがあるまま放置されたドライバ・ インストールに失敗した環境が原因で、 その尻拭いをするのが自分の仕事だと思うなら → やねうらお本を読もう 「ほんの一握りの糞な環境で動かないから○○は使わない」 という思考が正しいと思うなら → やねうらお本を読もう
どっちにせよ読むんかい(´д`;)
できないのは切り捨てるタイプなんで あてはまらいですね。
864 :
822 :02/07/13 20:51 ID:DNjNUGVA
あいかわらず勉強しています。 Xファイルのスキンメッシュについて簡単に説明してあるサイトってどこかにないですか?
うちのマシンはmidi再生時にHDアクセスが入ると完全にフリーズします スピーカOFFでのwebサーフは超危険 それに比べればたいしたことない→ やねうらお本を読もう
>>865 デフォルトのMIDIの出力先を変えておけばいいだけでは?
867 :
名前は開発中のものです。 :02/07/13 21:35 ID:JU2lSMO.
OS:Win98SE ダイレクトX8.1をダウソしてインストールしようとしても 「このバージョンのダイレクトXは現在インストールされているwindowsのバージョンとは互換性がありません」 と出てインストールできません。原因は何なんでしょうか?
ランタイムがWin98用じゃないんじゃないの?
870 :
名前は開発中のものです。 :02/07/13 23:26 ID:JU2lSMO.
PC98で開発してる人がまだいたんだね・・・
872 :
名前は開発中のものです。 :02/07/14 00:25 ID:HS8odNe2
でも来年にはあたらしいの買います〜
涙が止まりません・・・
875 :
名前は開発中のものです。 :02/07/14 00:34 ID:HS8odNe2
すいません、ゲームの開発はしていません。 ただダイレクトXスレがあったので質問してみただけです。
876 :
869 :02/07/14 00:57 ID:???
>>870 公式にはPC-98にDirectX8.xはインストールできない
877 :
名前は開発中のものです。 :02/07/14 01:10 ID:HS8odNe2
878 :
名前は開発中のものです。 :02/07/14 01:16 ID:HS8odNe2
しかし昔日経Win−PCのCDについてたDX8.0は動いたのですが、何故でしょう?
9βもチェックを回避すればインストールできるよ
880 :
名前は開発中のものです。 :02/07/14 01:22 ID:HS8odNe2
チェックを回避とは?
>>880 if ( PC-98 ) return; ←これを消すこと
882 :
名前は開発中のものです。 :02/07/14 01:41 ID:HS8odNe2
どのファイルですか?
>881 ぼくはアセンブラができないのでわかりません
884 :
822 :02/07/14 02:34 ID:VQfhQCBE
インストールできるようにするパッチがあったはず
885 :
A-Fo ◆rY8kGqzs :02/07/14 03:06 ID:VQfhQCBE
886 :
858 :02/07/14 06:37 ID:???
858の方法はちと不備があったっす。 よく考えたら、視点の裏側だと反転しちゃうんで 視点の表と裏を分ける平面と干渉するオブジェクトを余計に描画しがちです。 wが負の場合は反転させるとイイと思われ あと、完全なバウンディングボックス計算ではないので、 辺の近くの微妙な位置のを余計に描画してしまうこともありまふ。
888 :
名前は開発中のものです。 :02/07/14 19:46 ID:arzFPCgg
>>888 読んでみて、エロゲのプログラマがたかが紙芝居システムを、
とことん磨き上げようとする熱意に感激しました。
MMXがどうとかいう問題は、はっきりいって常識は通用しません。
各々のソフトハウスのプログラマ連中の認識や合意の問題です。
まあ基本的に世代交代遅いので推して氏ってください。
890 :
889 :02/07/14 21:26 ID:???
というか普段Direct3D使ってる人とは別の世界観が確固と存在する。
>>887 どうもありがとう。やっぱり英語の文献の方がいいものがありますね。
892 :
名前は開発中のものです。 :02/07/17 11:17 ID:Qrh/om0o
3DXSPRITE::Draw関数を使ってテクスチャーを2倍に拡大表示してみたところ、 ぼやけて描画されてしまい、きっちりドットが描画されません。 別のパソコンで試してみたら、なぜか、きっちりドットが描画されました。 原因は何しでしょうか?
>>892 IDirect3DDevice8::SetRenderState( ) を使って
テクスチャフィルタリングのタイプを明示的に指定する。
指定しないとHALのデフォルト設定を使うので環境が変われば
出力も変わる。場合もある。
894 :
名前は開発中のものです。 :02/07/17 12:54 ID:ZmKYpjcw
そうでもない。HALの場合ドライバーが勝手に bltにフィルターかけちゃうものがある HALが効かないような状態(SYSTEMメモリーサーフェイス)なら問題でないよ あと、事前にblt使わずに2倍しておくとかね
895 :
892 :02/07/17 20:02 ID:???
SDKでDirectX8にでウィンドウモードとフルスクリーンモードの切り替え をやってみましたが失敗してしまいます。 SetWindowLongでウインドウスタイルをセット 3DXSPRITE等のオブジェクトの解放 D3DPRESENT_PARAMETERSに値をセット LPDIRECT3DDEVICE8::Reset()の実行 と、順番にやりました。これだけではダメなのでしょか? 起動時にウインドウモード、フルスクリーンモードでの初期化には 成功しています。
Win98seでDirectX7SDKを使っているんですが、 Win2000に変えようと思っています。 2000に変えると今まで作ったプログラムやDirectX7SDKは そのまま使えるのでしょうか? 時期外れな質問だと思いますが、教えてください。
>>896 たしか、SDKのサンプルのほうは切り替えがやってるよな。
そっちのソースを見たほうが話が早いんでないの?
>>894 なんでDirect3Dの話してるときにBltが出てくるの?
それにSystemメモリサーフェスでもNVIDIA系はBltでフィルタかかるよ。
893の言っている事の方が正しい。
ただしSetRenderStateではなくて、SetTextureStageStateね。
本当はデフォルト値がD3DTEXF_POINTに決まっているんだが、ドライバに
よっては守ってないのもある。かもしれない。
D3DRS_DITHERENABLEもドライバの設定によってデフォルト値が変わる場合
があるから注意した方がいいよ。
>>895 リファレンスラスタライザなんか使う必要はないよ。
ちゃんとRenderStateを設定しろって事。設定すれば無問題。
901 :
名前は開発中のものです。 :02/07/18 00:07 ID:9hEE2xqo
>それにSystemメモリサーフェスでもNVIDIA系はBltでフィルタかかるよ。 ありえなーい。本当か? AGPメモリに作ってんじゃねぇの?
>>901 ドライバの設定って可能性が高いような気がする
(ドライバが勝手にVSYNC待ちoffにしたりするのはやめてほしい)
NVIDIAドライバがSystem→Localでもフィルタかけるのは有名な話だと思うが。 もちろんドライバでon/offの切り替えはできるが。 ATiとかIntelのだとSystemメモリに作ればバイリニアフィルタは無効になるけどね。 結局2DなのにBltやめてDrawPrimitiveに変えたよ。
904 :
名前は開発中のものです。 :02/07/18 01:42 ID:9hEE2xqo
system-> local でフィルタ掛かるのは当たり前じゃない? 転送サイズが違えばグラフィックチップが介在して処理するんだから (つか、AtiとIntelはそうなのか。MGAは途中からNVidiaコンパチになって泣けた) ドライバでon/OFF出来るようになったの? エミュレーターの多くは解決策がなくて泣いていた筈だけど (作者は技術力あるし、仲間も多いのに、見落としてるとも思えないが)
>>902 馬鹿麦価。D3DPOOL_SYSTEMMEMは更新の転送元だけ
906 :
893 :02/07/18 03:35 ID:???
>>894 俺、昔Riva128使ってたのでなんとなく思い出したよ。
DirectDraw-HALのBlt( )で拡大描画させるときに
強制的に補間フィルタがかかっちゃうアレだろ。
(あとたしか、Win32のStretchBlt( )でも同様の症状アリだったやつな)
907 :
893 :02/07/18 03:36 ID:???
ちなみに2Dゲームなら、DirectDrawだろうとWin32だろうと System Memory上のバッファに自前のソフトレンダラで描画する スタイルを使ってれば問題になる話じゃなかったよな。 つまり、Blt( )を使うのはスクリーン全体をLocal Memory上の バッファに当倍転送するときだけっていうスタイル。
908 :
893 :02/07/18 03:37 ID:???
あと、どうしてもBlt( )でスプライトを一つ一つ描画したいっていう人は System Memory → System Memory でBlt( )使って拡大描画してたらしいな。 もっとも、このときの内部処理は要するにHELデバイスでやってることと 同じなのだから速度的なメリット無し。
909 :
893 :02/07/18 03:44 ID:???
>>894 で、本題。
あのクソヘボだったRiva128でも、Direct3D-HALで板ポリなスプライトを描画する場合は
テクスチャフィルタリングの変更はしっかり反映されていたし、問題なかった。
そこで、ちょっと質問させてくだされ。
今回の話はD3DXSPRITEだろ?
上で書いたような、DirectDrawのBlt( )などで起きる強制的な補間フィルタリング問題と
同じ現象がD3DXSPRITE起きるってことなの?もし確認済みならその辺ぜひ教えてくだされ。
もうRiva128を手放しちゃってて、その辺のヘボカードの挙動を確認できないんだ。
910 :
893 :02/07/18 03:49 ID:???
>>900 >ただしSetRenderStateではなくて、SetTextureStageStateね。
うっかりしてた。スマンかった。
911 :
893 :02/07/18 03:53 ID:???
訂正 × Win32 ○ GDI
912 :
903 :02/07/18 07:46 ID:???
>>904 一部のアンオフィシャルなMAMEはDirect3D化されていて解決しています。
オフィシャルの方もDirect3D化は予定に入っているので、そのうち移行するかと。
それと、海外だとフィルタのかかったボケた画像が好きな人も結構いるんだよね。
(Cool!とかいうメールを結構貰ったけど、日本人にそんなこと言われた事ない)
ユーザがドライバの設定でフィルタのON/OFFができたのは昔の話。
Detonator2とかそのあたりだったと思う。
今でもできないかと暇なときにレジストリを眺めているけど、そういう設定
は無さそう。CoolBitsみたいに新規で追加すればできるかも?
913 :
名前は開発中のものです。 :02/07/18 18:13 ID:WWZ1jX4Q
MAXのデータをつかうには、どうしたらいいのでしょうか。
すごく初歩的な事だと思うんですが、 D3DXMATRIX構造体の各要素を扱うにはどうしたらいいんですか?
916 :
名前は開発中のものです。 :02/07/18 18:55 ID:9hEE2xqo
扱う の意味がわからん。何がしたいんだ? max のデーターはMicrosoftが提供してる Xファイルのコンバーター(不完全)がある それ以外は自分で作ってくれ(Xファイルにコンバートしたところで、読み込みの手間が減るくらいだ)
D3DXMATRIX mat; ) mat.┌───────┐ ) │■operator != │ ) │■operator () │ ) │■operator * │ ) _____________) ○ O o / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧ ∧ < メンバにアクセスできないぞゴルァ! ( ゚Д゚) \_________________ (つ_つ_____  ̄\| VC++ | \ ========= \ に2ペソ
>>917 爆笑した(笑
>>918 typedef struct D3DXMATRIX : public D3DMATRIX {
↑ここ、ここ
D3DXMATRIXじゃなくてD3DMATRIXの方をみるよろし
920 :
名前は開発中のものです。 :02/07/19 01:50 ID:iuVx658Y
D3DXで2Dゲームくみたいのですが、回転・ブレンドなどのスピードは自前+DirectDrawと比べてどうなんでしょう。
10倍以上速い場合も。
10倍どころじゃないでしょ
923 :
918 :02/07/19 15:41 ID:???
924 :
名前は開発中のものです。 :02/07/19 16:47 ID:opPBTcIU
Direct Play の鯖プログラムについて聞いてみたいです。 ズバリ、サーバープログラムっていうのはどこのゲーム でも似たようなものなんでしょうか?
>>924 ゲームのプログラムがどれも似ているのと同じくらい似ています。
>>920 ハードウェアによる。
うちの環境だとD3Dの方が圧倒的に遅い。
>>926 は紙芝居エロゲのフェードイン/アウトにDirect3Dを使おうとしたが
遅くて断念とかそんなレベル。
928 :
名前は開発中のものです。 :02/07/20 17:39 ID:LEd6YzEU
D3DXでカラーキーが表現できません。 ネットをいろいろ調べた結果、アルファテストが重要らしいのですが、どうすればよいのでしょう。 A8R8G8B8の空のテクスチャをつくり、それにビットマップをロードしたテクスチャをLoadTextureFromSurfaceで転送してからA8を設定してやれば良いのかと思ったのですが、Lockしたあと消したいピクセルのA8 を0にしてもうまくいきませんでした。 アルファブレンドはできるのですが、カラーキーのためにはSetRenderStateに何を設定すればいいのか、多すぎてわかりません。
929 :
名前は開発中のものです。 :02/07/20 17:39 ID:LEd6YzEU
ちなみにDirectX7です。
930 :
928 :02/07/20 17:54 ID:LEd6YzEU
これが描画前にしているSetRenderStateです。 SetRenderState( ( D3DRENDERSTATE_ALPHATESTENABLE), TRUE); SetRenderState( ( D3DRENDERSTATE_SRCBLEND ), TRUE); SetRenderState( D3DRENDERSTATE_CULLMODE, D3DCULL_NONE ); SetRenderState( D3DRENDERSTATE_LIGHTING, FALSE ); SetRenderState( (D3DRENDERSTATE_COLORKEYENABLE), TRUE); SetRenderState( (D3DRENDERSTATE_ALPHABLENDENABLE), TRUE); SetRenderState( D3DRENDERSTATE_ALPHATESTENABLE , TRUE ) ; SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA ); SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_ONE ); SetRenderState( D3DRENDERSTATE_ALPHATESTENABLE , TRUE ) ;
>>920 自前の場合、最適化でいろいろがんばったとしても、
アクションゲームなどの動きの激しいゲームで満足の行く速度を出すのは困難
かつ、最適化によって自由度が相当下がる場合がある
さらに、いくら最適化しても結局メモリアクセスの時間がおおきいから
ある速度以上だすのは不可能だし
で、ビデオカードはそういう問題を解決するためにつけられているんだから、
素直にビデオカードの機能を使ったほうがいいかと
しかし、ビデオカード依存だと 出力品質が保証されている物ではないからなー
1年前のノートでも動かしたい、って場合は?
一年前のノートなら既に3Dアクセラレーションはついているものがほとんどです
>>930 RenderStateがめちゃくちゃ。重複だらけな上に設定内容がトンチンカンなのもある。
括弧つけてる意味も分からんし。
ビルボードのサンプルでアルファテストを使ってたと思う。
936 :
931 :02/07/21 04:03 ID:???
>>932 ・自前
実用的な速度の場合出力品質はお粗末
・ビデオカード
カードによって異なる。出力品質はお粗末〜最高
どっちがいいかは明白かと・・・
自前派は出力品質が保証されていないことを理由にすることが多いけど、
それって本末転倒だと思う
素直に自力で弄くるのが楽しいとか言えばいいのに・・・
と、おもいまふ(正直な個人的見解)
937 :
名前は開発中のものです。 :02/07/21 04:10 ID:gMIk8lKs
>935 PFをA1R5G5B5にしてアルファ部分のビットをOFFにしてビルボードと同じにしたらできますた!胃やあああっほおーーーーーーーーーーー!!!!
>>937 D3DRENDERSTATE_ALPHAREFとD3DRENDERSTATE_ALPHAFUNCは適切に設定してる?
その2つを設定しておけばα成分さえあればA1R5G5B5以外でも問題無いし、
設定してないのなら環境によって結果が変わる可能性大。
それとアルファテスト使うなら、D3DRENDERSTATE_COLORKEYENABLEと
D3DRENDERSTATE_ALPHABLENDENABLEは設定するだけ無駄。遅くなる。
>>936 ん?3Dやるなら確かにその通りだが。
しかし、2Dならそうでもない。品質を完全にコントロール出来るんだが。
っていうか、自前の出力品質がお粗末って根拠は?
>>939 ソフトウェアレンダリングで動くゲームは倍リニア・鳥リニア等してるのは無いな。
要するに、PS1みたいな画面。
ゲームするのに支障きたさなければ、出力品質なんてどーでもいいや。 と、思うのは漏れだけなのだろうか? ゲームやりたいだけであって、絵みたいわけじゃないしなー
>>941 本当に面白ければ見た目しょぼくても売れるので頑張ってください。
ただ、見た目が「どーでもいいや」って奴は往々にして中身も・・・
>>940 いつから3D前提の話になったん?
D3DXで2Dスプライト云々って流れじゃなかったのか?
3Dをやるならハードウェアを使うことには異論ないが、
2Dなら、手抜きじゃない限りソフトレンダリングすべきだと思っている。
2DSTGもハードが良くねえ?
世の中のコンシューマチップが3DLabsとnVidiaとATIしか無いなら、 ハードでもやる気が起こるけど、S3とかMatroxとかIntelとか、 マイナーチップを使ってる香具師も居るから、やっぱり3Dじゃない限りハードはイヤだ。
>>945 香具師の意味分かって使っているのか小一時間問いつめたい
>>934 一応ついてるんだが、Direct3DCreate8が失敗するのよ・・・
NeoMagicの糞ビデオチップ
ベンダーは新しいドライバ提供してくれないし
NMはダメじゃねーの? Geforce3GO(だっけ?)とかATIのモバイルチップとか搭載している奴ならってことでしょ
DirectX7か6を使えばいいのでは? スプライト描画に使うだけなら、8よりも7の方が使いやすいと思う。 7は初期化が少し面倒なだけで、それは一度書いてしまえば済むことだし、 D3DXで初期化すればむしろ8よりも簡単。 あと、8はプライマリサーフェスに直接描画できないのがちょっと不便。
953 :
931 :02/07/21 23:31 ID:???
>>943 >>>出力品質お粗末
>>ソフトウェアレンダリングで動くゲームは倍リニア・鳥リニア等してるのは無いな
>いつから3D前提の話になったん?
回転拡大縮小のことを言っているのです
多分あなたは一部分の趣旨に過剰に反応し、全体の趣旨を見落としています
もう一度、全体に目を通していただけると助かります
954 :
931 :02/07/21 23:32 ID:???
>>952 私のゲームは元気にプライマリサーフェスにBltしてますが・・・
>>953 回転拡大縮小のことを言っているのです
あ、そう。じゃ、世間知らずなのね。
回転拡縮でニアレストネイバー法を使っているゲームってほとんど無いけど。
さすがにトリリニアはみたこと無いけど、バイリニアは普通に使ってますがなにか?
956 :
931 :02/07/21 23:52 ID:???
>>955 多分あなたは一部分の趣旨に過剰に反応し、全体の趣旨を見落としています
もう一度、全体に目を通していただけると助かります
>あ、そう。じゃ、世間知らずなのね。
このような、相手を罵倒する内容の発言は私は嫌いです
どのような意図があってこのような発言をしたのですか?
あなたを理解する(許す)ために知りたいです。
>バイリニアは普通に使ってますがなにか?
それよりもお粗末だとしてもビデオカードを使用したほうが早いと言っているのですが
>>956 許す
ハァ?許すってなんだよ。
>出力品質お粗末
あんたはこの根拠として
>ソフトウェアレンダリングで動くゲームは倍リニア・鳥リニア等してるのは無いな
こう言っているだろ?
ソフトレンダリングでバイリニアを使っていないゲームといったら、
3D(それでも最近はバイリニアくらいは使っている)くらいなもんだろ。
2Dの場合は、遙かに昔からバイリニアは使われていた。
改めて聞く。
ソフト処理の出力品質が お粗末=ハードに劣る 根拠はどこにある?
ハードの場合、出力品質が最高ってどういう事?
>お粗末だとしてもビデオカードを使用したほうが早いと
速い、早いのは同意。
しかし、俺が問題にしていたのは出力品質で、
あんたはそれもハードに劣ると書いたが、なぜに?
958 :
931 :02/07/22 00:08 ID:???
>>957 >許すってなんだよ。
あなたを理解することです
>ソフト処理の出力品質が お粗末=ハードに劣る 根拠はどこにある?
メモリアクセスのタイムラグ
そもそもこの問題を解決するために作られたのがビデオカードだから
959 :
931 :02/07/22 00:09 ID:???
>ソフトウェアレンダリングで動くゲームは倍リニア・鳥リニア等してるのは無いな これは私の発言では有りません
>多分あなたは一部分の趣旨に過剰に反応し、全体の趣旨を見落としています 全体の趣旨ってなんだ? ハード任せるか、ソフト処理にするかで選択の基準になるのは以下の4つほどだろう ・速度 ・早さ(手軽さ) ・出力品質 ・動作保証 前2者は明らかにハードに軍配が上がるのは認める。 しかし、最後の出力品質については、見た目の綺麗汚いも重要だけど、 「品質の保証」要するに、意図した出力を得られる事が重要だと考える。 ハードに任せると、基本的にドライバ、ハードウェアの制限、仕様が つきまとい、それはハードの種類によって様々で、 利用者(プログラマ)が制御できるたぐいの物ではない。 動作保証はそのまま、ドライバのバグに左右されずに適切な処理が出来るという点。 プログラマの技術によって、速度の点が必要十分なレベルにまでクリア出来るのであれば、 管理コストを考えた上でも、ソフト処理がベストな選択だと考えるんだが。
>>958 メモリアクセスのタイムラグ
タイムラグのどこが出力品質なんだよ?
output image qualityとでも言い換えようか?
>>959 これは私の発言では有りません
んじゃぁ、
>>953 でレスするなよ。
俺は940にレス入れたんだ。
>>954 それは直接アクセスとは言わないと思うが。。。
963 :
931 :02/07/22 00:24 ID:???
>>960 >「品質の保証」
失礼しました、今までの発言はこの点の議論は抜きにしての発言です
出力品質の意味を広義と狭義で取り違えていたようです
私は品質の保証は推奨動作環境で取るものだと考えております
ソフトウェア処理は「ドライバのバグ」に対する究極の解ではありますが、
「開発」コストと表現の幅という意味での出力品質において、
本末転倒な結果となると思うからです
そもそも、PC上で品質の保証を行うには限界がありますので、
どこかで妥協しなければなりません。
当然その妥協点を議論しているわけですが
そうなるのならば、動作環境という方法を用いることで、
コストを軽減した方がより効果的だと述べるまでです
実際、ほとんどの開発でこの方法が取り入れられてはいませんか?
とりあえず、俺が考える931の問題点を挙げるか。 >アクションゲームなどの動きの激しいゲームで満足の行く速度を出すのは困難 >かつ、最適化によって自由度が相当下がる場合がある 勝手にアクションゲームでは十分な速度が出せないと結論づけている 最適化で自由度が下がるのは、最適化をやり慣れていないだけ。 必要な部分のみ小さいスコープでピンポイントで最適化すれば構造に大幅な変更は生じない。 >実用的な速度の場合 際限なく速度を求める場合の勘違いか? 実用的の定義ってなんだ? 要するに、トレードオフによる最適な手法の選択というのが出来ない人間だと思える。 俺だって自分の力で解決できない部分はハードに頼る部分はあるが、 あんたの文章を見る限り、あんたはハードウェア至上主義としか見えないんだが。
ソフトウェアレンダリングのための、速度追及のための研究開発コストって 誰が払うの?
>>965 964の給料。そのために彼は雇われているのです。
>>963 一つ聞きたいんだが、ソフトレンダラだと開発コストがかかるってどういうことだ?
もしかして、毎回毎回1からレンダラを書くとでも思っているのか?
ソフトレンダラは言ってしまえば仮想ハードウェア。
一度必要な範囲で高性能な物を書けば、利用側の手間ははハードを使うのと大して変わらない。
自分たちの管理基準の範囲内で、ソフトウェア自体の品質も保証されているので、
その範囲内では無条件に信じてアプリケーションプログラムを書くことも出来る。
> ソフトレンダラだと開発コストがかかるってどういうことだ そんなDQN仕事を好んでやる奴なんてそうそう見つからないからでは?
PixelShaderなんてお粗末な物じゃなくて、 FullProgrammableShaderを搭載したらすべて ビデオカードに処理を任せても良いと思うが、 そうでないならやっぱりどこかで妥協せにゃならん。
ハードによる差異って、今現在どれくらいあるんだろ。 以前に比べればカナリ淘汰されてるから、 ソフトレンダ至上主義の彼が思ってるよりは小さいと思うんだけど。
>>968 そこら辺に転がってる最適化された転送コードをパクって来て検証するだけじゃん
最近の「ソフトウェアレンダラー」な市販PCゲームって 例えばどんなのがあるんですか?
エ ロ ゲ ー に き ま っ て る だ ろ う が ! ! ! い わ せ る ん じ ゃ ね え よ
2Dで四角形の衝突判定ならバウンディングボックスを使うのはわかるのですが、 その四角形が360度回転する場合、どういう判定方法がありますか?
バウンディングボックス
976 :
974 :02/07/22 18:51 ID:???
>>975 その場合、座標の単純な大小関係じゃないと思いますが何か参考文献ありませんか?
検索しても大小関係での判断か、それ以外だと3Dの判定しか見つかりません。
>>976 1 バウンディングボックスで判定
2 でかい方の四角形を4つの直角三角形に分割
2 小さい方の四角形の各頂点が、分割した各三角形の内部にあるか判定
だけじゃないのん?
回転出来てる時点でそんなこと聞くまでもないと思うが・・・ また算数から教えなきゃならないのか?
>>977 それでは駄目。例えば全く同じ大きさの正方形を2つ完全に重ねた
状態で片方を45度回転させると、どの頂点も相手の正方形の外に出る。
>>978 こういう質問に答えてやらないから、デブ板は中身が無いんだと思う。
974の質問は結構良い質問だと思うが。世の中には疑問にすら思わずに
AABBしか使わない(使えない)人間も多いんだから。
ただ、DirectXの質問ではないからスレ違いではあるが。
>>979 頂点じゃなくて、線分の交差にすればいいんでない?
>>979 スレ違いかなぁ?他に妥当なスレも無いと思うが。
Collision Detectionというそのまんまなスレがあるな
>>980 線分の交差だけだと、完全に内包される場合に判定できない。
回←こんな感じ
じゃあどうすんの?
次スレたてますか?
早っ
989getaa
沙羅曼蛇の1面後半に出てくるピンク色の細胞壁ってどうやって実現してるん だろう? データ的には、ミサイルやレーザーが当たった座標をバッファに 保存して、最も古く破壊された所から順に復活(再生)させているのだろうけど、 グラフィック的な処理が分からない。
埋め立て
>>990 壁全体を8x8ピクセル四方に区切って、1つずつ処理してるんじゃないの?
993 :
名前は開発中のものです。 :02/07/23 22:39 ID:BMDBV8mo
1000GETイクゾー
994 :
:02/07/23 22:40 ID:???
ほも
995 :
:02/07/23 22:40 ID:???
勝丸ホモ
996 :
:02/07/23 22:41 ID:???
池○ほも
997 :
:02/07/23 22:41 ID:???
安心して ほもほもほも
998 :
:02/07/23 22:41 ID:???
〈 ドモッ、スミマセン....。 〈 スミマセンスミマセン...。 〈 コノトオリデス! ∨ ̄ ̄ ̄ ̄ ̄ ̄ ∨ ̄ ̄ ̄ ̄ ̄ ̄ ∨ ̄ ̄ ̄ ̄ ̄ (´Д`;)ヾ (;´Д`) ヾ ∨) ( 八) (´Д`;)、 (( 〉 〉 ノノZ乙
999 :
:02/07/23 22:41 ID:???
ひぃひぃ
1000 :
:02/07/23 22:42 ID:???
はい1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。