トップページ⇒tech
996コメント274KB

鬱だ氏のう DirectX 2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
どんどんバージョンが上がる DirectX について
マターリと技術情報交換しましょう。

前スレ「鬱だ氏のうDirectX」
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=966655286

関連スレ「初心者はここで聞け!DirectX相談室」
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=991795568
0652デフォルトの名無しさんNGNG
>>651
RPGの自動戦闘やSTGの自動連射を避けるために
連射パッドでの連射を無効にしたいってのじゃない?
0653650NGNG
>>652
その通りです。
ソフト連射を作るのではなく、連射パッドを無効にしたいんです。
0654デフォルトの名無しさんNGNG
連射パッド無効というか、一定時間一定間隔の連射を無効ということですよね。
そもそもこの場合、ハードウェアの機能を無効にするということは現実的ではないですし。
目的が自動連射を避けるということは、
ツールを使っての連射も防ぐ必要があるので、
(つまり連射付きのジョイパッドかどうかは問題でない)
入力された値から見るしかないですね。
0655デフォルトの名無しさんNGNG
連射パッドを使ってるヤシよりも、ソフトウェアで連射やってるヤシの方が多そうだな。
0656650NGNG
>入力された値から見るしかないですね。
はい。
それで入力される間隔が一定ならば良いのですが、>>650にもあります通り
一定とならない(しかも時折100msec近い間隔になることもある)ので
苦労しています。ツールの場合は一定となるかもしれませんが…。

現在は、
連射の間隔時間を一定数分保存しておき、同一の間隔時間が一定の割合を超えれば
連射パッドまたはツールを使用している。
以上のような案を考えているのですが…。
0657デフォルトの名無しさんNGNG
まぁ、人間はどんなにがんばっても1発の打鍵に70〜200ms程度はかかるんで、
それ以下の連射が続くようなら無効化するのが良いんじゃないの
0658650NGNG
>>657
特定の連射パッドしか無ければそれでも良いのですが、他の方のご意見にも
あります通り、PCでは時間間隔を自由に設定できる連射ツールがありますので
無理なようです。
自分でも手動で連射して統計を取ったりしてみましたが、結局のところ
時間の間隔を調べてはじく方法は使えないようです。
残念ですがこの機能は実装できそうにないです。
ありがとうございました。
0659647NGNG
>>649
ヘルプ読んで見たんですが良く分かりませんでした
できれば具体的な方法とかを教えて頂きたいのですが・・・
0660デフォルトの名無しさんNGNG
>>659
教えて君か?
SetRenderTargetを使ったサンプルを見た?
0661デフォルトの名無しさんNGNG
SetRenderTargetをヘルプみて理解できないっつー事は

IDirect3DDevice8::Clear
IDirect3DDevice8::BeginScene
IDirect3DDevice8::EndScene
IDirect3DDevice8::Present

を理解してねーっつー事だよな。
0662デフォルトの名無しさんNGNG
^キーのDIK_は何ですか?
0663デフォルトの名無しさんNGNG
DIK_~
0664デフォルトの名無しさんNGNG
>662
DIKは「キー」に割り当てられているんだぞ。
0665デフォルトの名無しさんNGNG
>>650
遅いかもしれないけど、
別に設定画面みたいなものを作って、
『Xms以内の連続押下無効(もっと分かりやすくする必要があるが)』
として、デフォルトを{しない}にすれば?
0666デフォルトの名無しさんNGNG
>>662
^キー押してみてどこに押されたフラッグが立ってるか調べたら?
0667デフォルトの名無しさんNGNG
DirectDraw7のBltは透過処理できるのでしょうか?
ちなみにBltFastでは出来ました。ヘルプ見ても載ってなかったからできないのかな
教えてくんですまそ
0668デフォルトの名無しさんNGNG
ヘルプに無いことやっても動くものなのか・・・

「透過処理」はアルファブレンドとカラーキーの
どちらを指して言っているのか不明
0669デフォルトの名無しさんNGNG
BltFastでできたんだからカラーキーの方だと思うんだけど、
それだとBltでもヘルプにちゃんと出てるしなぁ・・・。
0670デフォルトの名無しさんNGNG
DirectX9, GDI+になったらどうなるんやろ。
0671デフォルトの名無しさんNGNG
オナニーライブラリ野郎が調子に乗るだけだからGDI対応いらない。
0672デフォルトの名無しさんNGNG
意味がわからない
0673デフォルトの名無しさんNGNG
DirectXスレは相変わらずのびねーな age
0674デフォルトの名無しさんNGNG
2D描画だけなら俺的にはGDIで十分
ウィンドウで動かしたいし、ウィンドウモードでDirectDraw使う意義あんまりないだろうし。
0675デフォルトの名無しさんNGNG
・誰も使ってない
・単純な使い方しかしていない
・MSのヘルプ&サンプルがすげえ分りやすい

同人や個人でやってるのって思ったより少ないネ
0676デフォルトの名無しさんNGNG
ていうか、みんなゲ製板のスレに行ってるんでしょ。
0677デフォルトの名無しさんNGNG
Visual C#とDXVBLib(Direct X 7.0 for Visual Basic)で簡単なチャットをつくろうと思っています。
DirectPlayのReceiveでDirectPlay4のQueryInterfaceに失敗しました。
というエラーメッセージが出ます。
エラーメッセージの意味がわかりません。
解決方法とかってあるんでしょうか。
0678ageNGNG
age
0679デフォルトの名無しさんNGNG
DirectPlay4が入っていないとか?
0680デフォルトの名無しさんNGNG
レスありがとうございます

DirectPlay4が入っていないとはどういう意味でしょうか
DirectX EventのCallBack時にエラーが出ます。

directPlay.Receive(fromPlayerId,toPlayerId,DxVBLib.CONST_DPRECEIVEFLAGS.DPRECEIVE_PEEK);
↑でエラーがでます。
参考URLはhttp://www.microsoft.com/japan/msdn/directx/japan/dxvb/dxvbdplay.asp
上記サイトのプログラムをC#に移植してみようという試みです。
ちなみにdirectPlay(DirectPlay4)はすでに作成されています。

0681デフォルトの名無しさんNGNG
ゲ製だとDirectX7以前やVBは嫌われます
0682デフォルトの名無しさんNGNG
680です

ちなみに、DirectPlayにてCreatePlayerをクライアント側が行ったとき、
サーバー側でDirectX Eventが起こり、そのときに起こるエラーです。

自分でメッセージを送るわけではなく、SYSMSGとして送信されるものです。
インターネットなどいろいろ調べてはいるのですが、
まったく理由がわからずじまいです。

たぶん、ReceiveするときにDirectPlay4が入っていないというのは
いい線行っていると思うのですが、どのようにすればDirectPlay4が
入るのかわかりません。

解決策とかあるのでしょうか。お願いします。
0683デフォルトの名無しさんNGNG
>>681
ツール作るときにgetDCできないとつらいんだよ。
どうすんだYO!!(´д`;)
0684680NGNG
未だに解決できません。。。
今は趣味でやってるので特に困ることも無いのですが
やってること自体邪道なのでしょうか・・・

COMについてもっと知らないとならないのだおろうか・・・
鬱だな。。。
0685デフォルトの名無しさんNGNG
鬱だ氏のう
0686デフォルトの名無しさんNGNG
DirectXなんか最初から使わなきゃいいんだよ。
0687OpenGL!NGNG
どうぞ。
某糞会社の技術に飽き々した方はこちらです。

http://www.opengl.org/
0688680NGNG
OpenGL使うか・・・
Networkには関係ないが(藁

Socketで自作するのが一番なのだろうか。。。
DirectPlayもなかなかよさげだったのに( ´・ω・)


0689680NGNG
かぶっちまった(藁

今やりたいのはチャットなわけで・・・
某糞会社もDirectPlayのドキュメントをもっと公開してほすぃ
0690デフォルトの名無しさんNGNG
>>689
チャットならDirectorで(^-^*)ニコッ
0691680NGNG
ちゃっとから後々大規模MMORPを作れたらとか
無謀なこと考えてたりするので

今回はChat
んで上手くいったら、グラフィックをのせて簡単な対戦オセロとかで
いいから作ってみようかと。

趣味は気楽で(゚∀゚)イイ!!

0692 NGNG
>>691
MMO作るならWinsockがオススメ。
MOだったらDirectPlayがオススメ。

オイラ今MMORPG作ってるけど、
ネットワーク部分はチャットからハジメタYO!
0693692NGNG
漏れの環境(Visual C#アカデミック)ではなぜか
Winsockが使えないんです(泣

Winsockも使おうと試みましたが、
ライセンスがたんねぇよとかってエラーになってしまった。

だからC#のSystem.NET.Socketまわりで一回チャット作ってみますた。
でもこれだと、セッションとかグループとか、プレイヤー周りが弱い
つか自分で作ることになるので、DirectPlayとかだと簡単なのではないか
と考え試行錯誤していた次第でありまする。
0694デフォルトの名無しさんNGNG
>>692
どっかのソフトハウスでMMO開発やってるの?
それにしてはなぜにVC#アカデミック?
0695692NGNG
訂正
Visual C#→Visual Studio.NET アカデミック
まぁあんまりかわらんが。。。

アカデミックだとWinsock使えないのかも
教育機関の一趣味プログラマーですた
0696DirectX9!!NGNG
DirectX9!!
0697デフォルトの名無しさんNGNG
>>695
趣味でMMO作ろうとしているのか・・壮大な計画だな。
とりあえずMOくらいから始めれば?
0698_NGNG
MMOの設計考えるだけでも楽しいよ
0699デフォルトの名無しさんNGNG
DirectX9まだかいな・・・
NV30待ちか?
0700デフォルトの名無しさんNGNG
趣味でMMORPG
http://robrob.tripod.co.jp/mmo/index.html
0701デフォルトの名無しさんNGNG
>>700
すご
0702デフォルトの名無しさんNGNG
Xファイルをオリジナルフォーマットにコンバートしたいのですが
IDirectXFileEnumObject::GetNextDataObject()が
DXFILEERR_PARSEERRORを返してwhileループから抜けてしまいます
↑はヘルプを見る限り返さないはずですが・・・
あとIDirectXFileData::GetType()でGUID拾ってくるのですが
これはCOMオブジェクトを作れと言ってるのですか?
ヘルプの
DirectXGraphics->高度なトピック->Xファイル->使い方->ロード
だけだと情報が少なすぎます
どうかご教授お願いします
0703デフォルトの名無しさんNGNG
>702
移動したならその旨報告しような
まさかこっちでも引き続きとか言うんじゃないよね?
0704デフォルトの名無しさんNGNG
初歩的な質問なんですが、VC++.netとdirectx8sdkでdirectdrawのフルスクリーンを表示する
サンプルを新規のプロジェクトに張り付けてビルドしてみたのですがリンカが
エラーをだすんですが対応策がわからなくて困っています。

Test2 error LNK2019: 未解決の外部シンボル _DirectDrawCreateEx@16 が関数
"public: long __thiscall CDisplay::CreateFullScreenDisplay(struct HWND__ *,
unsigned long,unsigned long,unsigned long)" (?CreateFullScreenDisplay@
CDisplay@@QAEJPAUHWND__@@KKK@Z) で参照されました。

などのエラーがでます。

どう設定すればいいのでしょうか?
0705デフォルトの名無しさんNGNG
>>704
ddraw.lib がリンクされてない
0706デフォルトの名無しさんNGNG
>>705

メニューのツール、オプションのプロジェクトからVc++ディレクトリではライブラリのパスを
記述したんですけどだめなのでしょうか?

0707デフォルトの名無しさんNGNG
libのあるディレクトリの指定をしているのはオッケー。
lib自体をリンクする指示がないんじゃない?
0708デフォルトの名無しさんNGNG
そっか、そういうことね。
わかりました。
ddraw.libを追加したら動きました。

ありがとうございます。
0709デフォルトの名無しさんNGNG
トゥーンレンダリングのやり方とか載っているHPとかないでしょうか?
MSDN Online のHPのをみたんですけどいまいちわからなくて...。(;´д`)
0710デフォルトの名無しさんNGNG
>>709
http://isweb42.infoseek.co.jp/computer/t_tail/program/vsdx8/d3d/010/index.htm
http://isweb42.infoseek.co.jp/computer/t_tail/program/vsdx8/d3d/011/index.htm
0711デフォルトの名無しさんNGNG
http://www.t-pot.com/program/prog19.html
http://www.t-pot.com/program/prog21.html
0712709NGNG
>>710-711
ありがとぉー♥
0713デフォルトの名無しさんNGNG
シューティング作り始めましたあげ。
っていうかね、ゲーム作る面倒くささがわかった。
でもまぁ頑張るよ。
ライブラリいっぱいある分楽だし。
2Dだけどね。
0714デフォルトの名無しさんNGNG
>>713
ゲーム製作技術板というのがあるのはご存知?
あんまり参考にならんかもしれんけど
0715デフォルトの名無しさんNGNG
あそこは90%が妬み野郎の巣だから行かないほうがいい
0716デフォルトの名無しさんNGNG
>>715
キミもそのオーラをプンプン発してるぞ。
0717デフォルトの名無しさんNGNG
テクスチャの指定した位置(X,Y)に指定した色のドットを書くやり方を教えてください
買ってきた本とかには載ってませんでした
UDPでX,Yの情報と値が送られてくるのでそれを書き込みたいのですが
どうかよろしくお願いします
0718デフォルトの名無しさんNGNG
>>717
テクスチャをロック!!
↓
サーフェイスメモリへのポインタをゲッツ!
↓
ポインタを書きこみたい位置(y*(x*[ピクセルの大きさ])に移動!!
↓
そこに打ちたい点の色を書きこみ!!
↓
テクスチャをアンロック!!

ミッションコンプリート!!!
0719デフォルトの名無しさんNGNG
微妙にスレ違いかもしれないけど。
「今フルスクリーンで稼動しているアプリがあるかどうか」って、
どうやって調べたらよいんでしょう?
SetCooperativeLevelでDDSCL_FULLSCREEN指定して
フルスクリーンにする方法はいろんなところで紹介されてるのだけど、
そうやって動いているアプリがあるかどうかを調べたいのです。
0720デフォルトの名無しさんNGNG
フルスクリーンのゲームやってる最中に別のフルスクリーンアプリを立ち上げる人はあんあmりいないとおもうのですが。
0721デフォルトの名無しさんNGNG
>>719
他のアプリケーションがフルスクリーンモードを使用中に切り替えようとすると、
SetCooperativeLevelがDDERR_EXCLUSIVEMODEALREADYSETを返す。
0722719NGNG
>>720
検査する側のアプリはフルスクリーンにしたいわけではないのです。

>>721
ということは、
SetCooperativeLevelでDDSCL_EXCLUSIVEだけ指定してみて
DDERR_EXCLUSIVEMODEALREADYSETが返ってきたら起動中、
DD_OKだったら起動してないと判断してすぐにNORMALに戻す、
てな感じでいいのかな。
ありがとう、試してみます。
0723デフォルトの名無しさんNGNG
>>718
ありがとうございます

>テクスチャをロック!!
>サーフェイスメモリへのポインタをゲッツ!

って言うのはどうやってやるんですか?
0724 NGNG
>>723
IDirect3DTexture8::LockRectを見れ。VBは知らん

「ゲッツ」で思ったのだが、ダンディ坂野のAAって無いの?
ダンディ坂野マイナーすぎですか?
0725デフォルトの名無しさんNGNG
>>724
STDMETHOD(LockRect)(THIS_ UINT Level,D3DLOCKED_RECT* pLockedRect,CONST RECT* pRect,DWORD Flags) PURE;
見てもわからないす
サンプルプログラムとかある場所教えてもらえないですか?
0726デフォルトの名無しさんNGNG
そのAPI名とかキーワードでgoogleすればいいのに
0727デフォルトの名無しさんNGNG
>>726
http://www.microsoft.com/japan/developer/library/jpdx8_c/_dx_idirect3dtexture8_lockrect_graphics.htm
やっぱわからん
0728デフォルトの名無しさんNGNG
最初に買うならGemsしかないよね?
0729デフォルトの名無しさんNGNG
あきらめたほうがいいと思う
0730 NGNG
>>728
最初ってのがなんだかわからんが、DirectXの入門書/使い方の本が必要ならば
Gemsは役に立たないと思われ。Gemsはアルゴリズムとか手法の本なので。

「DirectXなりの使い方はほぼわかっていてゲームも簡単なのを何個か作った。」
程度以上の知識・技術がある人にはカナリ参考になると思う。
ただやっぱり高いよね。
お金が余って困ってる/会社の金で買える。とかゆーんなら買って損はない。
内容は(・∀・)イイ!ですが、金額分の価値を感じるかどーかは人によってちがうと思う。
持ってる友達とか探すとかして、ざっと内容見てから買ったほうがイイと思う...
0731DirectX9!!NGNG
DirectX9!!
0732デフォルトの名無しさんNGNG
出たの?
0733デフォルトの名無しさんNGNG
今まで、DIRECT7のDirectDrawで2Dグラフィックやってたんですが
最近になって3Dの必要が出てきたので、DIRECTX8をはじめました。

で、本題なのですが、今、あるプログラムを組んでまして、
それは基本的には2Dグラフィックなんですが、一部3D(Y軸回転)を使いたいんです。
それで、そのためには当然RHWではダメなわけで、ワールドを用意しないといけないですよね。
そうすると、画面(今回は640×480)全体をちょうど2Dになるようにするには
視野角や、2D画面のポリゴンの位置を調整して擬似2Dにするしかないんでしょうか?
ズレが怖いんですが、きちっと座標をあわせれば大丈夫なんですかね?
また、その場合、各ポリゴン優先順位はどうすればいいんでしょう?
Z座標を0.000001とかの単位でズラすしかないんでしょうか?
0734デフォルトの名無しさんNGNG
Y軸回転とは微妙なものを使うな。
回転するのは画面全体?それとも一部のキャラだけ?
一部のキャラだけなら回転してるアニメーションパターンで十分。
0735デフォルトの名無しさんNGNG
一部ですけど、数が多いと思うのでパターンは厳しいです。
拡大縮小もあるし、やはい3Dで処理したいところです。
0736デフォルトの名無しさんNGNG
重ね合わせについては、既に優先順位付きの描画ルーチンになってるなら
Zバッファを使わないという手があるね
0737デフォルトの名無しさんNGNG
ビルボードの回転くらい自分で作れば。
背景を3Dで作って、Y軸回転させたいつうことかな。Gダラみたいな。
0738デフォルトの名無しさんNGNG
>>736
そんなことできるんですか?
DirectDrawではあとから描画する方が自動的に手前になっていたので・・・・・・
考えたのは、画面をクリアするときに Z=0 と初期化して、
描画の際に Z-=0.00001 などとして、ちょっと手前にもってくるという方法なんですが。

>>737
えっと、本当なら背景もスプライトも全部2Dでいいはずなのに
一部、画像の回転(Y軸回転)、拡大縮小を使いたいために
3Dにしなければいけないって状況です。
なので、RHWは使わずに、3D空間上で640×480の2D空間を表現したいのですが
それには、たとえば40×30のポリゴンをつくって、
それがちょうご640×480に投影されるように調整するしかないんでしょうか?
0739デフォルトの名無しさんNGNG
???
2Dで拡大縮小するにも、絵の上下左右の幅を計算するだろ。
それと同じことを RHWでもできるのでは?
0740デフォルトの名無しさんNGNG
>>739
拡大は問題ないんですが、回転が問題なんです。
しかも、Y軸回転ですし・・・・・・
0741デフォルトの名無しさんNGNG
正射影行列 → D3DXMatrixOrthoのことか?

ハッタリとしての奥行きが欲しいのかな。
昔、スーパーファミコンのRPGで、半透明のポリゴン1〜2枚程度
くるくる回る魔法エフェクトのあっただろ。
XYを適当な値で除算して、それなりに奥行きを出したものだ。

まあ、君はまだ勘違いしてる感じがするよ。
今のまま進めて無駄な苦労をしないことを祈る。
0742デフォルトの名無しさんNGNG
いきなり目的のものを作らずに3Dでいろいろ試してみるのがいいと思うよ...
0743デフォルトの名無しさんNGNG
>>741
つまり、2Dでポリゴンの変形によって擬似的に回転を表現する、ってことですか?

>>742
そうですね。
でも、今どうしてもこれが必要で・・・・・・
0744デフォルトの名無しさんNGNG
回転が必要なキャラだけ3Dで描けばすむじゃん。
もしくは場合分けで。
0745デフォルトの名無しさんNGNG
>>744
どうやってやるんでしょう?
RHWモードにすると3Dモデルは作れなくなってしまう、
RHWでなくなると、全部をワールドにおかなくてはならない。
0746デフォルトの名無しさんNGNG
>745
何がわからんの?
ワールドに置いて回転させればいいだけやん。
0747デフォルトの名無しさんNGNG
自分の知識の及ばないことには手を出すなと。
基礎から積み重ねていけと。
0748デフォルトの名無しさんNGNG
DirectXでMIDIを再生する方法ってありますか?
0749デフォルトの名無しさんNGNG
DirectMusic
0750デフォルトの名無しさんNGNG
>>748
ありますよ。
0751デフォルトの名無しさんNGNG
>>748
DirectXにはMIDIの再生はできません。
■ このスレッドは過去ログ倉庫に格納されています