鬱だ氏のう DirectX (Part 5)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものですた。
02/07/23 00:32ID:DsnWt/i.初心者用相談室では扱わないような少し高度な話題も受け持つ。
■旧スレ(プログラム板)
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)
コピペスマソ
0131名前は開発中のものです。
02/08/02 20:26ID:???GetDCしたいんじゃなくて、常にGDI面にしたいって話だろ?
0132名前は開発中のものです。
02/08/02 20:38ID:???0133名前は開発中のものです。
02/08/02 21:11ID:???だから、それがDX9では関数一つ呼ぶだけで出来るんだってば。
PresentがBltになってClipper使用状態。
動的に切り替えられるから、GDIが必要なくなれば再びFlipに戻せる。
0134名前は開発中のものです。
02/08/02 22:37ID:???>PresentがBltになってClipper使用状態。
>動的に切り替えられるから、GDIが必要なくなれば再びFlipに戻せる。
そうか・・・・また激烈に仕様が変わるのか・・・・・・・・鬱氏のう
0135naya
02/08/03 01:09ID:???0136名前は開発中のものです。
02/08/03 01:18ID:???0137名前は開発中のものです。
02/08/03 01:23ID:???首の部分の基本姿勢行列によるのでは?
ワールドに対して任意の方向(この場合ならワールド座標系で右)
になるような行列をかけてやればよいのではないかと。
>>135
アークサイン、アークコサインではダメなの?
(asin, acos)
そういう意味ではなくて?
0138naya
02/08/03 02:26ID:???スティックを傾けた方向にプレイヤーを向かせるようにしたいのですが
D3DXMatrixRotationYの第2引数はラジアンなんだけど、DirectInputで
得られる軸の2つの数字からそれを求めるにはどうすればいいのかなって
思いまして。
asin,acosを使ってやってみようと思います。
atan,atan2では無理でしょうか?
0139naya
02/08/03 03:01ID:???double SinCosToAngle(double sinval, double cosval)
{
double asinval = asin(sinval);
double acosval = acos(cosval);
if(asinval > 0.0) return acosval;
else return PI2 - acosval;
}
いろいろ調べたらソースが出てきたのですが、これでいいんですよね?
この値を直接RotationYにつっこめばいいのですか?
0140名前は開発中のものです。
02/08/03 03:28ID:3vnUJh66asin,acosは(多分)内部でatan,atan2を呼び出しています
っていうか、三角関数同士は密接な関係があるです
(sin x)^2=1 - (cos x)^2 と同じように
asin,acosとatanは関係しています
具体的な式はめんどくさいので省略
0141名前は開発中のものです。
02/08/03 03:30ID:3vnUJh66atan2の方が(級数展開の関係上)計算が早く、誤差も少ないので
そちらを使うことをお勧めします
0142naya
02/08/03 04:08ID:???cosとsinの2引数を入れたらラジアンで戻ってくるような関数があったらいいんですけどね。
0143名前は開発中のものです。
02/08/03 04:09ID:3vnUJh66あのぉ・・・
それ、atan2なんですけどぉ・・・
0144naya
02/08/03 04:21ID:???atan2ってそういう関数なんですかかって聞くと恥ずかしいから
遠回しな聞き方してしまったのですが、やっぱどっちにしろ恥ずかしいですね。
大学受験時は偏差値70近くあった数学もやらないとさびてしまう物ですね。
まして、複雑な三角関数や偏微分とかはやらなかったし。
0145名前は開発中のものです。
02/08/03 04:34ID:???数学の基礎中の基礎でこれが出来ないと何も出来ないと思うんですが。
0146名前は開発中のものです。
02/08/03 04:43ID:???0147naya
02/08/03 04:59ID:???への変換や積分とか三角関数をもちいた複雑な問題が大変だったということです。
高校ではそこまでつっこんでやりませんでしたからね。
0148名前は開発中のものです。
02/08/03 05:20ID:3vnUJh66むしろ、大学受験までの勉強が「基礎中の基礎」なだけであって
意味が無いとは思わない
ただ、ゲーム製作に必要な知識はもうちょっと上のほうだと思う
nayaさんは、基礎がしっかり出来てるみたいだから、
ちょっと勉強すればぜんぜん出来るようになるでしょう
重要なのは、今勉強するかですからね
0149名前は開発中のものです。
02/08/03 05:29ID:???基礎が出来ているならむしろ>>135や>>142のような発言は無いと思うけど…。
まぁ慣れというか、何事も何回も使っていくうちに頭に刷り込まれていくものだと
思うんで、がんばってください。
0150名前は開発中のものです。
02/08/03 06:14ID:???sin,cosが分かってるなら、そのまま行列に代入するだけだし。
高校レベルの数学だけど今の高校って行列やらないんだっけ?
>>149
誰に言ってるの?
0151名前は開発中のものです。
02/08/03 09:27ID:???人それぞれですな。
0152名前は開発中のものです。
02/08/03 19:45ID:4pHFWPGk理系である程度のレベルの学校ならやる。数Cで。
だけどベクトルとの関連性を無視して、単なる計算で終わっているので使い物にならない。
大学に入ってからやる線形代数の授業もそう。単なる計算で終わっている。
ちなみに自分はコンピュータグラフィックスの特別講義ではじめて、行列と幾何の結びつきを知った。
0153名前は開発中のものです。
02/08/03 21:25ID:???現行課程への移行時に一次変換が削除されたのが痛かったね。
来年度から施行される新課程では、数学Cに、行列の応用として
「点の移動」という単元が加わっているみたいだよ。
ttp://nierdb.nier.go.jp/db/cofs/h10h/chap2-4.htm
0154naya
02/08/03 21:28ID:???しかも、数学Cは受験時には選択制だったり、このジャンルが出題されないため、数学Vの方を重点的に勉強してしまい、ほとんど勉強しませんね。
また、最近は数学を受験科目に選択しなくても理系学科に入れる試験制度が
ある大学が増えてきたようですね。
0155名前は開発中のものです。
02/08/03 22:28ID:???0156名前は開発中のものです。
02/08/04 01:58ID:5a7Xd0hgGetVertexBuffer()で頂点バッファのポインタが取得できるみたいなんですが、
その頂点を格納しているIDirect3DVertexBuffer8がいまいちわからないのです。
フレキシブルな頂点フォーマットというのが8で導入されたみたいなんですが、
その頂点フォーマットのタイプとサイズはどこで得られるんだか、わけがわかんないのです。
チュートリアルでこのあたりまで解説してくれるとありがたいんだけどなあ>MSさん
んー、というより本当はD3DX使いたくないんですけどね。
Xファイル読み込むにはこれが一番お手軽なもので・・・
どこかにXファイル簡単に読んでくれるクラス転がってないですかねえ。
0157名前は開発中のものです。
02/08/04 02:02ID:???0158名前は開発中のものです。
02/08/04 02:06ID:5a7Xd0hgどうもありがとう・・・余分なものを一切書かないとこに貴方のセンスを感じる。
んで、IDirect3DVertexBuffer8::GetPrivateData()で得られるポインタに
データの本体が入っている、と。
でもこれは単なる配列なので、頂点フォーマットの構造体が無いとデータ取り出せませんよね?
GetFVF()で得られたフォーマットから頂点フォーマットの構造を得るには
どうすりゃいいんでしょうか。
0159名前は開発中のものです。
02/08/04 02:19ID:???IDirect3DVertexBuffer8::GetDesc
初心者程度の知識しかないくせに、なめた口を利いてんなよ。
「ヘルプ読め厨房!」がお似合いだ。
知識がないのは誰でも最初はそうだが、お前は必要な情報を探す気もろくにないだろ。
ふだんは2chで個人叩きと荒らしばかりやってるだろ。
0160名前は開発中のものです。
02/08/04 02:19ID:???0161名前は開発中のものです。
02/08/04 02:22ID:5a7Xd0hg誰かこういうの作って!!
・1つのクラスが1つのXファイルを扱う
・格納される情報は、頂点、インデックス、マテリアル、テクスチャ(のファイルの名前)
・アニメーションは、パターンに番号が付いていて、1とか2とか指定すると
"変換済みの"頂点を返してくれる(自分で行列の演算とかしなくていい)
0162名前は開発中のものです。
02/08/04 02:35ID:???今は、就職活動中ですが、周りの皆が良く言うのは
”この業種での業界の求人が少ない”って話です。
僕的には???です。その辺の会社のHPに
”3DPG急募”って沢山在ります。
でも161読んで、何か解ったような気がします。
…それをPGが言うな!自分で作れ!
今時のゲー専生徒でも、自分で作ってるわ!(クラスじゃ無いけど)
0163名前は開発中のものです。
02/08/04 03:27ID:5a7Xd0hg調べるより聞く方が早いから聞いてんだろうがヴォケ!
それが許されないなら掲示板は何の為にあるんだ言ってみろ!
ゲー専生徒でも自分で作ってるだ?てめーらは学校の実習とかでやってんだろうが。
こっちはプログラムなんか夏休みぐれーしかできねえんだよ!
その夏休みの間にDirectXマスターしようとしてるんだ。
てめーら俺に協力してくれたっていいじゃねえかよ。なんでそんな風に言うんだよ。
何にもやる気なくなっちまうよ。
0164162
02/08/04 03:36ID:???どっちも、元から関数用意されていますので。
そもそもDirectXの授業なんて、殆ど無いに等しいです。
自分で必要だったら、自分でやってるだけです。
実習とバイトの合間を縫って。
0165名前は開発中のものです。
02/08/04 03:45ID:???もう少し簡潔に質問してくれ。
それとどれとどれが163の発言が分からないからどれに返答していいか分からん。
0166名前は開発中のものです。
02/08/04 03:47ID:y/qD5Xb2>みんなして俺をバカにしやがって!!
ワロタ
0167名前は開発中のものです。
02/08/04 03:51ID:y/qD5Xb2>"変換済みの"頂点を返してくれる(自分で行列の演算とかしなくていい)
どういう事?
頂点のワールド行列て事?
モーフィングとかやりたいの?
0168名前は開発中のものです。
02/08/04 04:05ID:???そういう風に言われると教えたくなくなる…というか係り合いたくなくなるが…
少なくともヘルプ読んでくれよ。
DirectX AppWizardが吐き出すCD3DFileクラスをちょっといじればそれくらいできるぞ。
0169名前は開発中のものです。
02/08/04 04:08ID:???>調べるより聞く方が早いから聞いてんだろうがヴォケ!
激しくワラタ
多分、自分で調べたほうが早いよ。
俺たちはアナタの辞書じゃない。
おまえこのスレの1だろ
ttp://game.2ch.net/test/read.cgi/gamedev/1028396250/l50
0170名前は開発中のものです。
02/08/04 04:17ID:???テンプレにできそうな予感
0171名前は開発中のものです。
02/08/04 04:42ID:???これだけしっかりしたドキュメントが用意されているんだし。
ID3DXMeshのメンバを一通り調べるのに30分もかからんだろ。
GetFVFの使い方が分からないならサンプルのフォルダでGetFVFで検索すれば
すぐに見つかる。
0172名前は開発中のものです。
02/08/04 04:51ID:???0173あぼーん
NGNG0174名前は開発中のものです。
02/08/04 05:57ID:???0175名前は開発中のものです。
02/08/04 06:56ID:???いやぁ、世界は広いねぇ。
0176名前は開発中のものです。
02/08/04 12:12ID:???まぁスレが賑わうのはいいことじゃ(・∀・)
0177名前は開発中のものです。
02/08/04 16:31ID:???0178名前は開発中のものです。
02/08/04 16:39ID:???0179名前は開発中のものです。
02/08/04 16:44ID:???「うちは学歴にこだわらずちゃんとみてます!」なんて建前だよ。
いいかげん気づけよ、未来がある(といいな)厨房ども。
同じできる人なら大卒から取るさ。
0180名前は開発中のものです。
02/08/04 16:47ID:???0181名前は開発中のものです。
02/08/04 18:39ID:???ペーパー試験で差になって現れるのは知識とか知性じゃなく、
「他者の意図を読んで想定された解答を出せるか」なのよ。
そういうのって馬鹿にされがちだけど、実際極めて重要なわけで。
また卒業のために論文書いたりプレゼンテーションをすることになるわけだけど、
その経験は、曲がりなりにも
「他人に自分の考えを理解してもらうための説明ができる」一助になるわけだし。
大卒である方が有利、っていうのは「技術・知識」一辺倒ではなく
そういう部分も含めての話だと思いますよ。
偏差値70切ってる方については憶測しか出来ませんが…。
0182名前は開発中のものです。
02/08/04 19:02ID:???はげ同。
0183名前は開発中のものです。
02/08/04 19:51ID:???残り97.7%のヤシは使えません。
0184名前は開発中のものです。
02/08/04 20:18ID:???まともな話ができるスレをつぶす気なんだな?
0185名前は開発中のものです。
02/08/04 20:27ID:???はげ同。
とりあえず場の空気を読むことを学んで欲しい、若者たちよ。
「その話はもういいよ」という無言の声が聞こえないか?
0186名前は開発中のものです。
02/08/04 20:29ID:???はげ同、これは巧妙な罠ね
偏差値70以上の国立大(文系だけど)卒で、今だプーたろうですが何か?(´Д⊂
激しく同意するが、気がついてみればここ何のスレだよ。
0188名前は開発中のものです。
02/08/04 21:02ID:???文系は偏差値が何であってもクソということは定説です。およびじゃない。
0189あぼーん
NGNG0190名前は開発中のものです。
02/08/04 21:49ID:???0191名前は開発中のものです。
02/08/04 22:19ID:???宣言したのはうちの校長でした・・・・・・
欧米のゲームプログラマーはほとんど大卒だったのを知ったのはその1年後でした。
0192名前は開発中のものです。
02/08/04 22:43ID:???もうやめろって馬鹿
0193名前は開発中のものです。
02/08/05 00:03ID:???空気読め阿呆
0194名前は開発中のものです。
02/08/05 00:29ID:???>>188 ( ´,_ゝ`)プッ
>>191 ( ´_ゝ`)フーン
0195名前は開発中のものです。
02/08/05 02:57ID:???(゚∀゚ ) アヒャ!
0196名前は開発中のものです。
02/08/05 04:28ID:???2ちゃんねる式の掲示板で、DirectXのみに的をしぼったのを誰か用意してはくれまいか。
0197名前は開発中のものです。
02/08/05 06:46ID:???(゚∀゚ ) アヒャ アヒャヒャ!
0198名前は開発中のものです。
02/08/05 10:44ID:???BBXとか、他にもイロイロあるじゃん。
0199名前は開発中のものです。
02/08/05 13:32ID:???0200127
02/08/05 18:52ID:???>>129
ステンシルって使った事ないんだけど、マスクするエリアがたくさんあっても重くならない?
まぁ実験してみればいいんだけど、時間がない…(T_T)
>>130
このD3DPRESENT_PARAMETERSでの方法って、
・SwapEffectにD3DSWAPEFFECT_COPY
・FullScreen_PresentationIntervalにD3DPRESENT_INTERVAL_IMMEDIATE
を設定するってやつ?これやってみても駄目だったんだけど、何か足りないのかな…。
ちなみに実験環境は「RIVATNT2/DX8.1/Win98」「GeForce3/DX8.1/Win2k」です。
0201名前は開発中のものです。
02/08/05 21:38ID:???一応説明しておくけど、D3DPRESENT_PARAMETERSで設定する方法ではGDI使用中は
Presentは呼んじゃ駄目だよ。ようするに画面は更新できないって事。
それとステンシルは使えないよ。ステンシルでマスクできるのはバックバッファ。
ダイアログやコントロールをマスクしないといけないのはフロントバッファ。
0202名前は開発中のものです。
02/08/05 22:33ID:WmYu1GTw1.DX AppWizardでアプリを新規作成(急須のヤツ)する
2.変更ナシでビルドする
3.そのまま実行する
4.ALT+ENTERでフルスクリーンモードにする
5.ALT+ENTERでウィンドウモードにする
6.ESCで終了
7.エラーメッセージのダイアログが出てVCごと落ちる
ヽ(`Д´)ノなぜじゃああああああああああああああああああ
0203名前は開発中のものです。
02/08/05 22:58ID:???同じ構成でも俺の環境だと落ちなかったが。
ドライバ最新にしてみたら?
0204名無しサソ
02/08/06 01:11ID:???Detonatorを変えてやってみることをお勧め。気休めだけど、
最新のよりもWHQL認定ドライバを使うと良いかも。当方Ti4200
のWin98、Detonator30.82(最新β)を使ってるけど、このドライバ
では、D3Dを使ったプログラムのデバッグモードに入れない。
途端に落ちる。
0205名前は開発中のものです。
02/08/06 02:53ID:PAyNJocwメインループで
HRESULT hr;
LPDIRECT3DTEXTURE8 texture;
hr = D3DXCreateTextureFromFileEx(lpD3DDEV,"gazou.bmp",0,0,0,0,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,D3DX_FILTER_LINEAR,D3DX_FILTER_LINEAR,D3DCOLOR_XRGB(0,255,0),NULL,NULL,&texture);
if(hr != D3D_OK){
return false;
}
texture->Release();
texture = NULL;
と、実行させたのですが
タスクマネージャを見ていると、メモリの使用量がどんどん増えていってしまう
texture->Release();
texture = NULL;
を入れているのでメモリは増えないと思ったの出すが、何ででしょうか?
0206名前は開発中のものです。
02/08/06 03:24ID:???OutputDebugString("最適化ばかりしててコミケ落とさないでください!\r\n");
GameMain();
Test_205();
}
0207名前は開発中のものです。
02/08/06 03:55ID:???マジでそこが原因なの?
コメントアウトしてみた?
ついでに蛇足だけど、SAFE_RELEASE(dxutil.h)や
if( texture != NULL )
{
texture->Release();
texture = NULL;
}
したほうがよさげ。
0208205
02/08/06 04:44ID:A065mayA問題のところをコメントアウトにして実行させるとメモリが増えるようなことは起きませんでした。
ためしに、別に小さいプログラムを作って同じ事をさせても同じ現象が起きなかったので
なにか、別のところが間接的に影響を与えているのかな、もう少し調べてみます。
0209205
02/08/06 05:09ID:???↓こいつが原因でした、何であーなのかわからんが、やっと寝れる。
/*
* デバッグ ヒープのフラグを設定して、ヒープのリンク リストに解放
* したブロックを保持します。これにより、解放したメモリの不注意な
* 使用を検出できます。
*/
int tmpDbgFlag;
tmpDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmpDbgFlag |= _CRTDBG_DELAY_FREE_MEM_DF;
tmpDbgFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(tmpDbgFlag);
0210名前は開発中のものです。
02/08/06 05:25ID:???メインループで確保と解放を繰り返してんのか!?Σ( ̄▽ ̄;)
0211202
02/08/06 06:26ID:???>>203-204
そう思ってドライバ更新したにもかかわらず>>202の状況なわけですよ。
ウィンドウモードなら何の問題もないので当面フルスクリーンナシでいくかぁ…
#フルスクリーンで遊ぶユーザーが多いと聞いたが…
0212名前は開発中のものです。
02/08/06 06:29ID:gQhH5TM60213名前は開発中のものです。
02/08/06 08:21ID:mY.DofG6DirectXには直接関係ないけど、ここお気に入り〜
0214名前は開発中のものです。
02/08/06 09:47ID:???_CRTDBG_DELAY_FREE_MEM_DFのフラグがあると、メモリ領域は解放フラグをつける
だけで、実際には解放しません。この場合、解放するのはプログラム終了時。
メモリ不足の状態を再現するのに使えるらしいです。
MSDNにもちゃんと書いてあるので読もうね。
ちなみに、_CRTDBG_LEAK_CHECK_DFはプログラム終了時にリークがないかチェックします。
0215◆KeJ3pYYQ
02/08/06 09:51ID:HhMbK2lEそれをxfile書き出しして表示させてるんですが、ぴったり二つくっつけてもまん丸
に見えません(少し縦に細く見えて、つなぎ目が目立ちます)。
最初から球状のオブジェクトなら、ちゃんと丸く見えます。
半球状の物を二つくっつけて、ちゃんと球状のオブジェクトとして見せるにはどうすれば
ヨイのですか
0216127
02/08/06 09:54ID:???ぐぁ。という事は、Dx8でフルスクリーンで画面更新しつつ
GDIを使うのは不可能ってことですか。
どうしても必要なら、DX7でやるかDX9を待つしかないのね…(;_;)
またはそれぞれ自前で実装するってのもあるか。
0217名前は開発中のものです。
02/08/06 11:52ID:???境界の法線をなんとかしる
メタセコにその機能がなければどうしようもないんじゃない?
もしくは法泉のつじつまが合うように工夫しる<だめかも
0218名前は開発中のものです。
02/08/06 11:54ID:???0219◆KeJ3pYYQ
02/08/06 14:16ID:HhMbK2lE>メタセコにその機能がなければどうしようもないんじゃない?
なんて事を言うんですか!じゃあどうしろと言うのですか!!!
ところで、xfileをロードした後にプログラムで球を二つに割るというのはどうでしょう
0220名前は開発中のものです。
02/08/06 15:15ID:???0222名前は開発中のものです。
02/08/06 18:52ID:???割れてない状態のXファイルと割れた状態のXファイルを2つ用意するとか。
0223名前は開発中のものです。
02/08/06 19:00ID:???0225◆KeJ3pYYQ
02/08/06 20:44ID:w4Cz3L1Qすんません、そこは失笑するところなんです
あとポリゴンを細かーくするとかっすかね・・・
0226名前は開発中のものです。
02/08/07 02:58ID:???0227名前は開発中のものです。
02/08/07 04:32ID:???そういう例外的なことが出来るほどプログラムが抽象化されてないんです
0229名前は開発中のものです。
02/08/07 11:39ID:???まあどっちにしても変則的になるが
0230名無しサソ
02/08/07 13:00ID:???中心点と円の表面の点を通るベクトルを法線にすれば、継ぎ目は見えないのでは?多分。
0231名前は開発中のものです。
02/08/07 13:38ID:???法線はポリゴンの三頂点の内積とは限らんの?
法線をxfileに持たせるとか持たせないとか。その辺がよくわかんないズラ
■ このスレッドは過去ログ倉庫に格納されています