鬱だ氏のう DirectX (Part 6)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものでス
02/10/07 01:00ID:???初心者用相談室では扱わないような少し高度な話題も受け持つ。
■旧スレ(プログラム板)
http://piza.2ch.net/tech/kako/966/966655286.html (Part 1)
http://pc.2ch.net/test/read.cgi/tech/997101556/ (Part 2)
http://game.2ch.net/test/read.cgi/gamedev/1005119775/ (Part 3)
http://game.2ch.net/test/read.cgi/gamedev/1016276254/ (Part 4)
コピペスマソ
明るい部分を明るくするのでなく
暗い部分を暗くすればいい
0016名前は開発中のものです。
02/10/08 08:13ID:???0017名前は開発中のものです。
02/10/08 08:15ID:???0018名前は開発中のものです。
02/10/08 09:20ID:???フォグ使え
0019名前は開発中のものです。
02/10/08 12:14ID:y4cJqFJsドキュメントのTestマクロをそのまま打ち込んでも、
エラーがでるんですけど・・・
0020名前は開発中のものです。
02/10/08 12:53ID:???エラーの内容をよく読みましょう。
0021名前は開発中のものです。
02/10/08 14:37ID:???それならピクセルごとにα値を持たせたイメージを使えばOKじゃん。
並みのビデオカードじゃうごかんだろうけどサ(藁
0022名前は開発中のものです。
02/10/08 17:15ID:???0023名前は開発中のものです。
02/10/08 19:52ID:???3D機能を使うことにはもはや何の躊躇も要らなくなったしな。
0024名前は開発中のものです。
02/10/08 20:32ID:???0025名前は開発中のものです。
02/10/08 20:58ID:???0026名前は開発中のものです。
02/10/08 21:00ID:???0027名前は開発中のものです。
02/10/08 21:12ID:???+αの部分(つまりDirect3D周り)だけ
自分で付け加えればいいだけだと思われ。
0028名前は開発中のものです。
02/10/08 21:28ID:???0029名前は開発中のものです。
02/10/08 21:38ID:???IDirect3D8::CreateDeviceを行う直前の
バックバッファの縦横、サーフェイスフォーマット等が既知の状態で
本当にその設定でCreateDeviceできるか調べる事ってできますか?
調べたところEnumAdapterModeでとりあえず対応している解像度とか調べて
それに照らし合わせてみるしか方法が無いようなのですが
上記の方法か、実際にCreateDeviceしてみるしかないんでしょうか?
要求としては、例えば10x500とか無茶な解像度でCreateDeviceしようとしてたら
事前に察知して警告したいんです
0030名前は開発中のものです。
02/10/08 21:58ID:???ディスプレイモードのwidth,heightを自由に入力させてるのか。
EnumAdapterModesで列挙されたディスプレイモードの中から
ユーザに選択させればいいと思うが。
あとはIDirect3D8::CheckDeviceType()
CreateDeviceの戻り値をチェックするのと意味は同じ。
0031名前は開発中のものです。
02/10/08 22:21ID:???iniファイルに設定を保存しているので
好奇心旺盛な方がいじくっちゃった場合を想定してます
一番の関心事は「ビデオカードが対応している解像度であるか」なんですが
それはやっぱりEnumAdapterModesを検索するしかないみたいですね
どうもありがとう
0032名前は開発中のものです。
02/10/09 02:51ID:0hZguT0J>スレッド 0xFFE2FAC9 終了、終了コード -1 (0xFFFFFFFF)。
>DINPUT8: unloaded before all objects released. (cRef:1)
SDKサンプルのjoystickでも出ます。
joystickデバイス、DInputデバイス共にリリースしてrefカウントも0が返るのですが
Acquire()せずにリリースすると正常終了する模様。誰かわかりませんか?
0033名前は開発中のものです。
02/10/09 11:27ID:dZsv+OW70034名前は開発中のものです。
02/10/09 12:30ID:???他人の成果を横取りしてコード盗用でもなさるのですか?
そもそも水面関連は頻出の話題です。
http://game.2ch.net/test/read.cgi/gamedev/1007549292/l50
http://game.2ch.net/test/read.cgi/gamedev/1005459713/l50
なぜこのような問題が繰り返されるのか。
それは「疑問を持った人が自分で解決しようとしない」、
「解決できた人がいたとしても誰にも教えない」、
「自分が他人の知識を奪うことが重要で、ノウハウの積み上げをするつもりが無い」
というところに問題があります。
黄身は自分でどれだけ努力をしましたか?
そしてその努力を伝え、ノウハウを積み上げる努力をしましたか?
してないんでしょうね。
まったくなにも。
そしてまた一ヶ月もすると誰かが
「水面の作り方を(以下略)」という話題を持ち込むのでしょうね。
0035名前は開発中のものです。
02/10/09 12:50ID:???視点移動なのですが
HRESULT CMyD3DApplication::FrameMove()
{
・・・
D3DXMATRIX matView;
D3DXMatrixLookAtLH( &matView, &D3DXVECTOR3( 0, 0, -2*m_fObjectRadius ),
&D3DXVECTOR3( 0, 0, 0 ),
&D3DXVECTOR3( 0, 1, 0 ) );
D3DXMatrixMultiply(&matView,&matView,m_ArcBall.GetTranslationMatrix());
D3DXMatrixMultiply(&matView,&matView,m_ArcBall.GetRotationMatrix());
D3DXMatrixMultiply(&matView,&matView,
m_ArcBall.GetTranslationDeltaMatrix());
m_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
・・・
}
0036名前は開発中のものです。
02/10/09 12:52ID:???WPARAM wParam,LPARAM lParam)
{
・・・
case WM_RBUTTONDOWN:
iCurMouseXR = iMouseX;
iCurMouseYR = iMouseY;
s_bRB=TRUE;
return TRUE;
case WM_LBUTTONDOWN:
iCurMouseX = iMouseX;
iCurMouseY = iMouseY;
return TRUE;
0037名前は開発中のものです。
02/10/09 12:52ID:???//回転
if( MK_RBUTTON&wParam )
{
//移動行列に今回移動した分を保存
if(s_bRB&&!D3DXMatrixIsIdentity(&m_matTranslationDelta))
{
D3DXMatrixMultiply(&m_matTranslationDelta,&m_matTranslationDelta, &m_matRotation);
D3DXMatrixMultiply(&m_matTranslation,&m_matTranslation, &m_matTranslationDelta);
D3DXMatrixIdentity(&m_matTranslationDelta);
s_bRB=FALSE;
}
FLOAT fDeltaX=(iCurMouseXR-iMouseX)*RAITO;
FLOAT fDeltaY=(iCurMouseYR-iMouseY)*RAITO;
m_vYPR.x+=D3DXToRadian(fDeltaX);
m_vYPR.y+=D3DXToRadian(fDeltaY);
D3DXMatrixRotationYawPitchRoll(&m_matRotation,m_vYPR.x,m_vYPR.y,m_vYPR.z);
iCurMouseXR = iMouseX;
iCurMouseYR = iMouseY;
}
0038名前は開発中のものです。
02/10/09 12:54ID:???else if(MK_LBUTTON&wParam)
{
FLOAT fDeltaX=(iCurMouseX-iMouseX)*RAITO;
FLOAT fDeltaY=(iCurMouseY-iMouseY)*RAITO;
D3DXMATRIX matT;
D3DXMatrixTranslation(&matT,0.0f,0.0f,8*fDeltaY);
D3DXMatrixMultiply(&m_matTranslationDelta,&m_matTranslationDelta,&matT);
iCurMouseX = iMouseX;
iCurMouseY = iMouseY;
}
return TRUE;
・・・
}
これだと移動した後に回転をすると視点が飛びます
>移動行列に今回移動した分を保存
の部分が間違ってる気がするのですがどうすれば改善されますか?
0039名前は開発中のものです。
02/10/09 13:03ID:???まあ落ち着け(w
0040名前は開発中のものです。
02/10/09 15:13ID:???0041名前は開発中のものです。
02/10/09 16:06ID:DaJCh7ixundefind symbol 'UINT_PTR'
と出てコンパイルできません。
0042名前は開発中のものです。
02/10/09 16:08ID:???/\⌒ヽペタン
/ /⌒)ノ ペタン
∧_∧ \ (( ∧_∧
(; ´Д`))' ))(・∀・ ;) <おまいら、もちつけ
/ ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O ノ ) ̄ ̄ ̄()__ )
)_)_) (;;;;;;;;;;;;;;;;;;;)(_(
0043名前は開発中のものです。
02/10/09 16:13ID:???0044名前は開発中のものです。
02/10/09 16:13ID:H4uBHT3u0045名前は開発中のものです。
02/10/09 16:20ID:s4kqpcbZ今までのDirectXと全く違う仕組みなのでビデオカード業界が各社発売しているとかで・・・
0046名前は開発中のものです。
02/10/09 16:48ID:???0047名前は開発中のものです。
02/10/09 17:27ID:???0048名前は開発中のものです。
02/10/09 17:45ID:???http://game.2ch.net/test/read.cgi/gamedev/1027351925/702-707
0049名前は開発中のものです。
02/10/09 19:05ID:???君なんか激しく勘違いしてないか?
0050名前は開発中のものです。
02/10/09 19:42ID:???Direct 3D9∈Direct X9∋Direct X8∋Direct X7....
0051名前は開発中のものです。
02/10/09 21:06ID:DaJCh7ixありがとうございます。もうひとつ質問させてください。UINT_PTRは解決できたの
ですが、
d3dx8math.h undefind symbol '_11'
d3dx8math.h undefind symbol '_13'
d3dx8math.h undefind symbol '_14'
と出ていまだに、コンパイルできてません。
これらについても教えてください。
グラフィックカードの構造が大幅に変わったからといってAPI仕様も大幅に変わるとは限らないです。
DirectX9ではシェーダー部分の機能拡張は大きいですが
基本的な部分の使い方はほとんど変わらないです。
DirectX9はまだ正式リリースもしてないし、使用方法の情報についても少ないので
「今」始めるならDirectX8がいいと思います。
DirectX9をインストールしたマシンでも当然DirecX8のプログラムは動きますし、
後からDirectX9特有の機能を使いたくなった時に移行しても手間はあまりないと思います。
とか言ってしまいましたが、オレもDirectX9βに実際触ったわけではないので
なんかまちがってたら識者の方修正キボン
0053名前は開発中のものです。
02/10/09 21:33ID:???まあそうあせらずに・・・
こないだβを触ったので漏らしてあげよう。
インターフェースの見た目はあんまりDirectX8とかわらん。
8用のコード(directx部分だけで数千行)を9用に書き直したが、
4時間もかからなかったよ。
7→8もそうだったけど、コンパチ度は意外に高いと思う。
9の機能(シェーダー2.0だけじゃないぞ)を生かそうと思ったら
いろいろ実験が必要だろうねえ。やる時間がほしい・・・
0054名前は開発中のものです。
02/10/09 21:37ID:???DirectX9で作っても誰も遊んでくれない罠
まぁ3年越しのプロジェクトとかならわからんけど
0055名前は開発中のものです。
02/10/09 23:37ID:/K9cQ5sfあったら教えてもらえたらうれしいです
初心者まるだしの質問ですいません
005651
02/10/09 23:42ID:???問題点がわかりました。
VC++じゃないとコンパイルできないのですね。bccでがんばってましたよ。
答えてくださったかた、ありがとうございました。
0057名前は開発中のものです。
02/10/09 23:43ID:???X8にはない。X9にはある。
0058名前は開発中のものです。
02/10/09 23:44ID:???あるの?!
0059名前は開発中のものです。
02/10/09 23:45ID:???俺もずっとまえから同じ。
dx9待つのがよかろ
0060名前は開発中のものです。
02/10/09 23:46ID:???0061名前は開発中のものです。
02/10/09 23:54ID:???さんきゅ。
今の DirectDraw を使ったライブラリの保守は止めて
DirectX9 SDK の配布まで待とう。
しかし大きな仕様変更があったら嫌だな。
またあのヘルプやら妙なサンプルやらを読む日々が続くのか…。
0062名前は開発中のものです。
02/10/09 23:58ID:???この辺のpptに関連情報があったような気がする。
http://www.microsoft.com/japan/msdn/directx/techarts.asp
http://www.microsoft.com/corpevents/gdc2002/
0063名前は開発中のものです。
02/10/10 01:14ID:8ADA7E3+0064名前は開発中のものです。
02/10/10 01:53ID:???0065名前は開発中のものです。
02/10/10 02:41ID:???0066名前は開発中のものです。
02/10/10 02:42ID:???はやく寝ろよ
0067名前は開発中のものです。
02/10/10 07:47ID:???参考になりますた。9がまちどおしいです。
0068名前は開発中のものです。
02/10/10 20:24ID:pMa8asNtCreateDeviceの引数のBackBufferFormatに
D3DFMT_R5G6B5を設定して初期化した場合
D3DFMT_X8R8G8B8やD3DFMT_A8R8G8B8フォーマットのテクスチャを正常に扱うことが出来ますか?
0069名前は開発中のものです。
02/10/10 20:53ID:???あらゆることに何の保証も無い
0070名前は開発中のものです。
02/10/10 21:11ID:???0071名前は開発中のものです。
02/10/10 21:54ID:LV4wwsC0例えば、俺が確認した範囲では
nVidia Geforce4Tiでは使えた。しかしMatrox G400では駄目だった。
結局、DirectXを使うなら何をするにも必ずDeviceCapsをチェック。
環境毎に使えるものを選択していく以外に方法はないのさー。
0072名前は開発中のものです。
02/10/10 23:15ID:???>DirectX8を使って、DirectDrawがどれだけクソだったのかを知った
何の機能を見てクソだといっているのかはよくわからないが、
GDIオブジェクトを取得できないDirect X8もけっこうクソだとおもうよ
将来君は「DirectX9を使って、DirectX8がどれだけクソだったのかを知った」
とか言うんだろうね。まあいいけどさ。
時代にあわせたAPIだったんだよ。うん。
0073名前は開発中のものです。
02/10/11 00:24ID:???大した手間でもないしその程度で糞呼ばわりでは底が知れる
0074名前は開発中のものです。
02/10/11 01:09ID:???どんな方法?
0075名前は開発中のものです。
02/10/11 01:38ID:???0076名前は開発中のものです。
02/10/11 02:34ID:???DX5-7
Drawしか使えねーよ、3Dわけわかんねーよ、初期化ってなんだよ意味わかんねーよ。
つかWIN32APIだけで画像転送できるじゃねーか、それでいいや。
DX8
半透明と加算、拡大縮小回転が楽に出来る関数あるじゃねーか、頑張ってみるか(このときネットに繋がったのでネット漁りで何とかDX8導入できた)
便利じゃん、楽じゃん、簡単に派手になるじゃん。げっ、文字の描画おせー。WIN32APIのTEXTOUTつかえねーのかな?
3D案外らくじゃん、物体出すだけで戸惑ってたのに一応フィールドを360歩くジャンプ攻撃、の簡易アクションゲーまでできるようになった。
漏れはDX8が無ければc++使う気になりませんでした。
ていうか、クラス継承とNEWDELETEくらいしか使ってねーけど。
糞って言う前にもっと使って楽しみたいね。漏れは。糞って言ったら過去否定みたいでションボリ
0077名前は開発中のものです。
02/10/11 03:15ID:8aFpC2Gcビルボードを複数描画する場合にテクスチャフィルタを使うとエッジの部分が
ぼやけてしまい、奥から描画しないとエッジの部分がきちんと描画できません。
エッジをぼかさないようにテクスチャにだけフィルタをかける方法はないのでしょうか?
0078名前は開発中のものです。
02/10/11 03:56ID:???1 でかい値のAlphaRefで(0xf8とか)AlphaTest。微妙なフィルタを使わない
2 奥から描画する。
3 放置。
どれも、市販ゲームで使われてる選択支。
0079名前は開発中のものです。
02/10/11 10:33ID:???includeのパスが通っているか。など、調べまくったが原因が不明。
なんとなく、"DirectPlay8Create"で検索してみたら以下の文が・・・
>This function is no longer supported. It is recommended that CoCreateInstance be used to create
>DirectPlay8 objects.
>
>extern HRESULT WINAPI DirectPlay8Create( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown);
だったらわかりやすいところに書いてくれよぉ!
俺の六時間を返せ!鬱だ氏のう・・・
0080名前は開発中のものです。
02/10/11 11:02ID:???日本は開発者とユーザーを繋ぐ存在が皆無だと
008177
02/10/11 11:24ID:???ありがとうございました。1でテクスチャ内部にだけフィルタ処理できました。
奥から描画はなるべく行いますが、モデルで組んだときにできないので。
0082名前は開発中のものです。
02/10/11 17:56ID:???0083名前は開発中のものです。
02/10/11 18:53ID:a1gnR+r60084名前は開発中のものです。
02/10/11 18:56ID:???そんなものは無い
知ったか馬鹿は引っ込んでろ
0085名前は開発中のものです。
02/10/11 18:57ID:???0086名前は開発中のものです。
02/10/11 19:02ID:???何でそんな不必要なものに頼るんだ?
0087名前は開発中のものです。
02/10/11 19:40ID:???文字遅いので取った手段。
つか全部画像で呼び出せば良いんだけどね。
数文字程度ならいいんだけどサウンドノベルみたいに表示するとやたら重い。
チュートリアル作ってたときに表示されてる解説文字増えるほどスローになってびびった。
0088名前は開発中のものです。
02/10/11 20:07ID:???サンクス。なるほど・・・なんかメッセージ表示したとたん重くなるとおもったらこういうわけだたのか。
0089名前は開発中のものです。
02/10/11 20:39ID:???最初からDIB経由でTextureに転送してやれば
DIB -> Texture -> D3DDevice
だけですむところをD3DXFontでテクスチャにレンダリングなんかしたら
DIB -> Texture -> D3DDevice -> Texture -> D3DDevice
なんて無駄が発生する
何も知らない初心者を騙すページを作るのはやめとけ
0090名前は開発中のものです。
02/10/11 22:58ID:???まあ、>>87はだますつもりなんてないんだろうし。
せっかく善意でTips公開してるんだからあたたかく見守ってやろうじゃぁないか。
しかしその他の内容が( ´д`)
0091名前は開発中のものです。
02/10/12 03:23ID:C17IsShu半透明で丸状の影を落としたいのですが、最初アルファ付きテクスチャでやったのですが、
ボードによってはできませんでした。
丸影の中心は半透明レートが高く端に行くにつれ薄くなる感じです。
丸の中心を白にして端に行くに従って黒になるテクスチャを作り
フレームバッファからの減算になるのを期待して
SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SUBTRACT );
この設定で表示してみたのですがうまく表示できません。
なにか設定がたりないのでしょうか?
それ以外の方法でもなにか良い方法あれば教えてください。
0092名前は開発中のものです。
02/10/12 09:17ID:???D3DRS_BLENDOP
ただし、GeForce3やRideOn8500より古いと使えないことが多いのに注意。
0093名前は開発中のものです。
02/10/12 19:04ID:???オオバカがいるんだな・・・気をつけないと馬鹿が写される!!!
0094名前は開発中のものです。
02/10/12 21:22ID:???0095名前は開発中のものです。
02/10/12 21:30ID:???○厨房サイト
0096名前は開発中のものです。
02/10/12 21:32ID:???正解
0097名前は開発中のものです。
02/10/12 22:49ID:???ようするに表示する文字は先にBMPにしておけってことですか?
結構あの講座は判りやすかったんで良かったのですが。
009891
02/10/12 22:52ID:???D3DRS_BLENDOP
試しましたが出来ませんでした。うちのマシンはラデ7200なので無理っぽいです。
結局この設定で出来ました。中心が黒で外に行くに従って白になるテクスチャを使用してます。
SetRenderState(D3DRS_SRCBLEND,D3DBLEND_ZERO);
SetRenderState(D3DRS_DESTBLEND,D3DBLEND_SRCCOLOR);
0099名前は開発中のものです。
02/10/13 08:44ID:???BMPではなくDIBにDC経由で描いてテクスチャに転送
回りくどくD3DXFontを使って速度を落とす必要がないだけ
それからCD3DFontの方は9x系で日本語が使えない
010097
02/10/13 12:20ID:???ttp://macosx2.ncs.gr.jp/~masa/jpn/program/dx8_font.html
こういうことですね、ありがとうございます。
早速試行してきます。
0101_
02/10/13 20:00ID:???その方法で描画すると、ビデオカードによっては文字がぼやけてしまいます。
TNT2、G450等では文字がくっきりしているのですが、
Geforce2、RADEON等は、文字がぼやけた感じになってしまいます。
表現しにくいですが、アンチエイリアスがかかったかんじです。
これはどのようにすれば改善されるでしょうか…?
0102名前は開発中のものです。
02/10/14 01:10ID:???そうなるのは仕方ないような。
GetGlyphOutlineは駄目?
0103101
02/10/14 02:20ID:???SetTextureStageState(0,D3DTSS_MINFILTER,D3DTEXF_LINEAR);
SetTextureStageState(0,D3DTSS_MAGFILTER,D3DTEXF_LINEAR);
が、かかっているような状態になります。
0104名前は開発中のものです。
02/10/14 02:33ID:???俺は99ではないが同様の方法を取っている。
社内の複数のマシンで動かしているが特に>>101のような
問題はでていない。
座標-0.5の話が過去ログにあるが、それではない?
0105名前は開発中のものです。
02/10/14 09:55ID:???0106101
02/10/14 19:39ID:???ということは、私のコードが悪いということですね。
過去ログ読んだりして、もう少しいろいろいじってみます。
>>102>>104>>105
レスありがとうございました。
0107名前は開発中のものです。
02/10/15 00:01ID:394UiHGE光の残像ってどうやって表現しますか?
例えば、蛍が暗闇を飛び回る姿を想像してください。
蛍が光っているのを描くのは簡単ですが、その残像がうっすらと残るように
したいのです。
思いつくのは、光の球を、αブレンドで何度も直線状に描画することくらいですが…
みなさんはどうやっていますか?
0108名前は開発中のものです。
02/10/15 00:09ID:???0109名前は開発中のものです。
02/10/15 00:28ID:???蛇状の半透明ポリゴンを軌跡にそって動かす。
0110109
02/10/15 00:30ID:???光の部分を別サーフェースに書いて加算合成。
次のフレームにはそのサーフェースは暗くして(クリアはしないで)重ねて光を描画。
そーすりゃスーーッて光が伸びると思う
...まあオレもやってみてはいないんだけどね。イロイロやってみてくだせい...
0112名前は開発中のものです。
02/10/15 02:44ID:???Geforce2GTSで使えないのです。
これ以外のビデオボードでは今の所使えています。
0113名前は開発中のものです。
02/10/15 04:02ID:???2GTSでの IDirect3DDevice8::GetDeviceCaps() の結果のほうはどうなってる。
D3DPRASTERCAPS_ZBIAS のフラグは立ってるのに動作がおかしいという状態か。
0114名前は開発中のものです。
02/10/15 05:43ID:???GeForce2GTSのみならず
GeForce2 or 3 も正しく機能しません。
したがってZBIASは「使えない」ものと認識してしまったほうがいいと思われます。
■ このスレッドは過去ログ倉庫に格納されています