1 :
◆4/ZtI/qiqk :
03/11/21 10:09 DirectXについて、にいさま達がマターリと 技術情報交換&雑談するためのスレッド。 初心者用相談室では扱わないような少し高度な話題も受け持つ。 ちなみに、言語はC++がメイン。 C# / VB.NET 使いは、専用スレの方が話がスムーズに進むと思われ。
2 :
◆4/ZtI/qiqk :03/11/21 10:11
3 :
◆4/ZtI/qiqk :03/11/21 10:12
過去ログの Part1 は発見できたんだが、 Part 5, 6 が、どうも見つからない… 消えちまったかねぇ?
6 :
デフォルトの名無しさん :03/11/21 20:49
>>955 >フィルターがかからないオーバーレイが…
フィルターがかからないオーバーレイの実装なんて見たことありませんが?
だいたいこの人、「こうしてみたら」みたいな解決策をひとつも提示しないで、他人の発言の
あら捜しばかりしてて、すごく気分悪い。そもそもの質問が bltfast でパフォーマンスでないよ!
ってことなんだから、bltfast 以外でパフォーマンスの出る方法を提案しないと意味無いじゃん。
あんたが頭いいのはよくわかったから、次からは何か具体的な解決策を思いつけないときは
黙ってなよ。
スレ汚してすみませんでした>その辺の人たち この後 955 が勝利宣言するんでしょうから、先に敗北宣言しときます。 負けた負けた〜。
>フィルターがかからないオーバーレイの実装なんて見たことありませんが? オーバーレイでジャギーをとるフィルターなんて無いが、 今度は色調補正の話でもするつもりなの? それともフィルターを自作すればあるとか言い出すの? >bltfast 以外でパフォーマンスの出る方法を提案しないと意味無いじゃん。 前提条件を自分で勝手に変えて、原形をとどめていない条件で提案することに意味があるの? DirectDraw使用時の話をしているのに、突然テクスチャの話をし出すし、 パフォーマンス的に劣ると言っても認めようとしないで、さらに勝手な条件を付ける。 >具体的な解決策 処理が追いつかなければフレームスキップと既に書いているが、 本当に自分の都合のいいようにしか読み取らない人だな。 >負けた負けた〜。 あきれ果てたよ。
何の話か分からないので前スレの955を見てみたが、やっぱり分からなかった
最初に質問した人間がトンズラこいたので、既にどうでもいい話。
[質問] デスマも終わり時間ができたのでDirectXを少し勉強しようと思うのですが 皆さんが参考になった書籍やお勧めの本がありましたらお教えください
本当に初心者なら工学社の本 初心者じゃないならSDKヘルプ&サンプルプログラム らしい…オレはヘタレなんで前者+たまにSDK日本語ヘルプ読むぐらい。
13 :
デフォルトの名無しさん :03/11/23 02:52
って本の名前書くの忘れてたな 「I/O別冊DirectX7.0実践プログラミング」 「I/O別冊DirectX8.0実践プログラミング」 「I/O別冊DirectX9.0実践プログラミング」 これ以外の本も一通り目を通してみたけどどうも分かりづらかった
14 :
デフォルトの名無しさん :03/11/23 03:37
VooDoo3でDirectX9.0コンポーネントで3Dゲーム開発してるんだけど(今だ初期化しかできない)、 なんかアダプターの使用できるサーフェイスフォーマットが変 これはVooDoo3の仕様?
I/Oの本は出るのは早いけど間違いや勘違いが多いと思う。 とりあえず分からなくてもいいからSDKのヘルプには全て目を通しておいた 方がいいかと。
16 :
デフォルトの名無しさん :03/11/23 03:51
俺みたいに古いビデオカード使ってるとサンプルプログラムが動かないから、 何処からか落ちてるソースを拾ってきて日本語ドキュメント見ながら適当にソースの編集・追加していけばいいんじゃないか
>>11 お疲れさんです。お茶ドゾドゾドゾー。
旦~
旦~ 旦~
ヽ )ノ
旦~ ⌒(゚д゚)ノ 旦~
/. ( ヽ
旦~ 旦~
旦~
まずは工学者の本片手にチュートリアルを読むのが手っ取り早いと思う。
あとはSDKのサンプルの中から興味湧いたのを摘んでいく。
工学者の本は教科書ではなく参考書みたいな位置付けだと思う。
初心者を脱したら3Dグラフィックス数学(出版社は忘れたスマソ)なんかも見てみるといいかも。
18 :
デフォルトの名無しさん :03/11/23 09:19
工学者の本はDirectXのヘルプの丸写しが多々見られるが それがなかなかいいという現実。
ヘルプだと、初心者が必要なところを探すのはなかなか大変だからな。
>3Dグラフィックス数学 ボーンデジタル社だね。 Game Programming Gemsなんかも出してる所。 あそこの本はウルトラ高くて・・・(涙
I/Oの本はヘルプ丸写しっちゃ丸写しなのだが、 必要なところだけ抜粋して読みやすくしてあるので、 実は入門には大変良いと思ってる。
たまにえらいケチョンケチョンに叩く人いるよね、 「最近はあぁいう詐欺本ばかりだ」とか云って、 まぁヘルプが楽に読める人にとってはそうなのかな。
工学社本は、ライターによって当たり外れが大きい。
8のアクションなんとかは外れだった
25 :
デフォルトの名無しさん :03/11/23 15:19
>>22 ヘルプ写して金もらってるのが許せないんだろうね。
だけど
>>19 がいうように初心者が自分の必要なことを
ヘルプから探すのは結構大変だよね。
だからああいう本っていつまでも需要あると思うんだよね。
それがわからないのかなぁ。
やね本ってどうなんだ。読んだこと無いから知らんが、 DirectX系の話じゃなくてゲーム開発一般の話なんかね。
そういやこのスレ見てるおまいらのPCスペックてどんなもんなんだ?
自分は Ath2500+ 512MB Gefo5600
漏れは P4 2.4CGHz 1GB Radeon9600Pro
P4 2.4BG、512MB、RADEON 9500Pro まあDX9世代なわけだがPixelShader2とかをソフトに導入したことは一度もない 単発ネタで遊んだことはあるけど 結局今の世間的スペックで作るとするとDX8くらいが限界なんだな
今の情勢だと VertexShaderが使えるかどうかってところかな…ソフト処理もまぁ実用になるし。 Ys6とかも使ってたみたいだし。 最近のあたらしいビデオチップではHardwareT&Lがサポートされてないって聞いたけど本当? まぁVertexShaderがあればHWTLがあんま意味がないってのは分かるけど…
Pentium4 2.4CGHz
1GBRAM
GeForce4Ti4200
>>31 と近いけど、
これだけあれば3Dゲーム作るのに不自由しないよね。
DirectX9対応と未対応の差は大きい
Duron750 512MB GF2MX みんないいスペックやな〜
2500+ 512MB GF4Ti4200 いくら金がないからってFX5200なんぞ買う必要はないよ・・・な?
最新ゲームをプレイするのに高性能VGA持っててもいいとは思うが 開発に使うにはマジでDX8ベースのVGAでちょうどいいね
>>38 まあ、2Dの話にもなるから全て当てはまる訳じゃないが、
それってDX9時代にDX7の開発してるレベルになるよ?
次世代DXが出ても、DX9はおろかDX8でしか組めませんって。
開発だからこそ、変わり目、節目で最新のグラボで最新の機能、処理をやるのでは?
例えば、shader ver2が一般的になっても
ver1.4の機能しか知らない使えないじゃ環境普及と開発レベルが合わないでしょ?
自分は今、2年位前のPCだけどグラボだけradeon9700pro載せてるよ?
CPUでスキニングアニメーション処理とかを大量にやるとキツイが
グラボの性能、機能、DX9の機能等は問題なく動いてる。
勉強でなく、開発と言うなら金銭面はある程度無視して、最新を使うべきかと…
>>39 すまん、俺の中では開発用と勉強用は別物なんで。
そらもちろん勉強用にはDX9ベースのほうがいい、
シェーダはVer2になると途端にやれること増えるしなー。
だけど開発用には動作環境に近い(と思われる)DX8ベース。
そこそこ新しい環境で開発を始めれば、 プロジェクトが終了したころにはかなり普及している という法則があるのをご存知か
開発には最新の環境と型落ち環境の両方が必要になる。
どう見たって、DX9はDX10でフルにプログラマブルシェーダ化するまでの 繋ぎなんだから、実働するロジックが書けたら スペックオタみたいな環境構築なんかどうでもいいよ。
俺は.NETでまともにDirectXを扱えるようになったんで C# + DX9で開発をしてるが、DX9の新機能は使ってない・・・。
繋ぎはDX8で、DX9はしばらくスタンダードとして続くと思うよ。 Intelの次のチップセットもShader2.0対応だし。 WindowsFXは標準でDX9に対応しているし。 そもそもMSが、次のOS出すまでDirectXのコアには手をつけないって言ってる くらいだから、DX10なんて当分出ないかと。
シェーダの醍醐味は2.0からだと思うので 2.0に触れるためにもDX9世代のボードはあるといいかもしれない ホントに色んなことが出来て面白い
47 :
デフォルトの名無しさん :03/11/28 01:45
>>46 具体的にはどんなことができるの?
俺がシェーダをやりはじめたころ、
バンプマップや環境マップで受けた衝撃ぐらいのものはある?
秋葉原にソフマップの店舗がいたる所にあっる衝撃ぐらいのものはある?
サンプルコード(チュートリアル1〜6)のコードで メッシュ読み込みの奴にライティングのコードを足すと、とたんにモデルが真っ黒になるんですが、 これはなぜでしょーか。
法線がどうなっているのか述べよ。
>>50 ハァハァ やっと分かりました。
ヒントThxです。
DirectPlay Voiceを使ったソフトを作っているのですが、 ある日突然DirectPlayVoiceClientの取得ができなくなりました。 サウンドハードウェアテストウィザードを実行すると エラーコード: 0x80004005 を返して来てうまくいきません。 ソフトを作る前はテストがうまくいったので何か原因があると思うのですがよくわかりません。 ソフトの開発環境は VC.NET 2003(MFC使用) + DirectX 9.0 SDK です。 それから工学社の本についてくるサンプルプログラムPeerVoiceを実行しても同じようなエラーがでます。
パイプ上の絵のテクスチャの上を沿って光のラインが走る表現 (PS2のアヌビスの機体みたいな物) これを行う方法をご存じの方おられませんか? シェーダ無しでも可能な物だとは思うのですが・・・。
>>53 テクスチャアニメだったりして・・・。(勘だけど)
すまん、よくわからない。
if (!filename.EndsWith(@"\")) 今Xファイルのアニメーションのサンプルいじってるんですが、ユーリティクラス内にある ファイル読み込みのところにこんな奴があるんですが。 "\"とfilenameの語尾が同じかどうか判断するのは分かるんですが、@はなんなんでしょうか。 C#にこんなのあったっけと思ってリファレンスの演算子とか調べたんですが載ってません。 どなたか教えてください。お願いします。
"c:\\windows\\system\\" == @"c:\windows\system\" \nや\tなどのエスケープシーケンスを無効にしてそのまま文字として扱う。 DirectXと関係ないが。
ありがd
そんなの、しらなかった・・・
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/csref/html/vclrfString.htm ここに載ってるやん。
DirectPlay Voiceについて詳しい人はいませんかね? 聞きたいことがあるのですが
漏れは全然知らないけどとりあえず書いてみたらいいんでないか?
実物見てないけど、ZOEはテクスチャαチャンネルを透過光指定ということにして ポストプロセスで透過光処理してるらしいから そこらへんにパレットアニメーション的なテク絡めてるんちゃう?
>>62 溝が一方向なら、
1.縞になってるテクスチャ(光用)
2.モデルのテクスチャにα値0で溝を描いたもの
を用意して、1をずらしつつ合成するとか。
DirectPlay Voiceを使って音声通信をするときに録音をしたいのですが DirectX9 開発者向けFAQを読んでも詳しくわからなかったので教えて欲しいです。 サンプルプログラムがあればうれしいです。
宇治社中改 web.archive.org に無い講座があるんですが、 誰か保存とかしてませんか?保存してたらどっかにageてください。
67 :
デフォルトの名無しさん :03/12/04 01:43
iyada
68 :
デフォルトの名無しさん :03/12/04 22:25
9.0sumerを使っています。 基礎的な(C言語的な)問題かと思われますが、どなたか 分かる方がいらしたら教えてください。 Xファイルからメッシュをロードした時、頂点情報にディフューズ色が ない場合は追加しようと思っています。 それでGetFVF()を使えば、「D3DFVF_DIFFUSE」があるかどうか分かると 思ったのですが、GetFVFの返り血はDWORDです。 そのDWORDからどのように情報を得ればD3DFVF_DIFFUSEを含むかどうか 判断がつくのでしょうか?
返り血は病気がうつるかもしれないから、すぐに洗い流した方がいいよ。 &洗剤とか付ければ汚い部分は落とせるから。
勉強もかねて、ドロー系のソフトをDirectXで組みたいけど、 そこそこ人に使ってもらうためには、7くらいにしといた方がよさそう、 でも、9でスキル投資した方がいい気もする。 1つのソフトを両方で組んでるヤツとかいる?さすがにいないかな。
3DSMAXはDirectX8.1と9、OpenGLに対応してますが何か?
>>72 そこに送っても業者は困らずhotmailのサーバーが困ると思うがどうか。
>>71 いえ何も。
9で組んで、GDI互換でリリースというのはどうだろう。
自前でソフトエミュ用意するのと同じ労力だが、
勉強できて、多数に使ってもらえる。最強。
どうでもいいや。
もう、めんどくさいから全部やめる。
まんまとひっかかるとこだったよ。
DirectX8.1から9.0bにアップデートしようと、DirectX 9.0b End-User Runtimeを落として 実行してみたんですが、d3d9.libなどのファイルが入ってませんでした。 これって一体なんでなんでしょう…(;´Д`)
>>68 D3DFVF_DIFFUSEとANDを取れ
>>76 End-User Runtimeだから。
SDKが必要。
たった3語の英語くらい読めっつうの。
>>69 >>77 ありがとうございました。お陰さまで出来ました。
はじめ、69が解答だと気がつきませんでした(汗。
おお、
>>69 は解答だったのか。俺も気づかなかった。
82 :
デフォルトの名無しさん :03/12/05 14:53
初心者の質問ですみませんが DirectXを使っての3Dプログラムをやってます。質問ですが 体と腕を階層構造でつなげてアニメーションさせてるんですが 体を移動したときの腕の座標ってどうやって求めるんですか?
>>82 別スレで(けっこー不親切な)回答を貰ってるのに無視するのか…
84 :
デフォルトの名無しさん :03/12/05 16:09
>>83 煽りは無視します。相手するとつけあがりますから。
>>84 あれを質問と全く関係ないことだと思っているなら、答えてくれた人に失礼。
少なくとも回答にはなってる。
っていうか、俺はその質問を読んで、アニメーションは既にできていると
思っていたんだけど……だったらそんな質問しないか。
つけあがってるのはだれかと 漏れは釣り上げられたようだが(鬱
DirectXのゲームプログラミングキター(工学社)1・2 これにそれ系統のネタかかれているようだよ。 2冊で5千円とリーズナブル。 例のいんたぶーに答えてた人が書いた奴読みたいが和訳した奴ってないんすよね?
DirectX9.のスプライト機能ってただ単に3D機能を応用した擬似スプライト機能だ、 と日本語ドキュメントに書いてたと思うんだけど、 これってスプライト機能のついてた下位のバージョンだとどうなるの? スプライト機能を無視して3Dでの擬似スプライト機能つかうの?
>>これってスプライト機能のついてた下位のバージョンだとどうなるの? これってスプライト機能のついてたDirectXの下位のバージョンだとどうなるの?
下位のDirectXってスプライト機能ついてたっけ? ついてたとしても、関係ないよ。 上位バージョンで定義したデバイスでの新しい機能を使うには、新しいバージョンの DirectXが必要になるし。 上位バージョンのDirectXに対応しているけども、使っているのが下位バージョンの スプライトなら、下位バージョンでもその方式で実装されるけど。 要するに、DirectX5でDirectX9の機能を使ったらどうなるかって話でしょ? そういうこと。使えません。
>これってスプライト機能のついてた下位のバージョンだとどうなるの? その下位バージョンとはMSXとかX68Kとかのことか? そういえば付いてたなスプライト。
あれ? directXの下位バージョンに2D描画関連載ってなかったっけ? とりあえず、directX9.で開発したものはver9.以上じゃないと正しく動かないっと さんくす、デフォルテの名無しさん達
本物のスプライトを体験した世代は、単なるブロック転送をスプライトと 呼ぶのはなんか許せないよね。
DirectDrawのことかな? あれはスプライトというか、単なるBit転送だし・・・
>>94 それはオヤジになってる証拠。
本物本物というが、セガなんかはかなり早い時期からフレームバッファ方式だったし。
デフォルト形状のマウスは、大概の場合スプライトで描かれている。
オーバーレイサーフェイスのことだろか?
99 :
デフォルトの名無しさん :03/12/07 22:16
今日初めてDirectXをさわってみたのですが、MSのサンプルプログラムをコンパイルして実行しようとすると CreateDeviceで失敗してしまいます。これは何がいけないんでしょうか? ディスプレイ、それともビデオカードでしょうか?
おまえの頭
D3DERR_INVALIDCALLが返ってきてました。もうちょっと勉強してきます。 スレ汚しすみません。
視点の移動と目の前のキャラクターの移動を同時にしたい のですが微妙にラグがあってキャラクターの残影が残ります。 普通はどうやってるのでしょうか? 以下は描画部分のソースです。 D3DXVECTOR3 vEyePt( eye_x, eye_y , eye_z ); D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 1000.0f ); D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f ); D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec ); D3DXMatrixIdentity( &matW ); cx_char->DrawMesh(m_pd3dDevice, &matWsol); スムーズに視点とキャラクターの移動を行うには根本的 に違う方法があるのではないだろうかと思っています。 SDKはDirectX9です。
1ループ内で A キャラクターの位置にもとづいて、カメラの位置を決定 B キャラクターが移動する。 C Aのときに求めたカメラで、Bのキャラクターを表示 とか?
>>103 > 1ループ内で
> A キャラクターの位置にもとづいて、カメラの位置を決定
> B キャラクターが移動する。
> C Aのときに求めたカメラで、Bのキャラクターを表示
> とか?
なるほどちょっと試してみます。
>>103 のようにやったから微妙なラグがでてしまったのでは?
ということで、
>>103 のようにやってみろという事ではありません。
描画の処理と移動とかゲームシステムとかの処理って分けてた方がいいと思いますよ とりあえず移動関連の処理が終わってから描画に移るようにした方が無難だと思ふ。 レンダリングは垂れ流し。移動処理等は時間毎に決めれた量の処理しかしないように するってーのは結構でふぉるとなパターンではないの? カメラ・キャラ移動処理ー>レンダリング
普通は計算と描画はしっかり分ける。 ループ始め、計算1、描画1、計算2、描画2、戻る、みたいなのはダメ中のダメ。
108 :
デフォルトの名無しさん :03/12/08 20:13
行列というものを勉強したにも関わらず struct{ D3DXVECTOR3 position; CUSTUM_VERTEX vertex[4]; };とまでしておいて 行列にpositionをぶちこまず、 SetPos()とかで頂点構造体の座標を毎回ずらしてた漏れはアフォですか?
移動しかしないのなら、行列を使うより計算量が減るので、それもまたよし。
トランスフォームの設定を視点の移動と描画の間に入れたら スムーズに描画されるようになりました。たくさんのご意見ありがとうございました。
>>109 移動しかしなくても行列使ったほうが計算量すくないだろ。
C++6.0でDirectXの勉強してるのですがwin32APIみたいに(←をつけると引数が全部表示される方法ってありませんか?
一頂点辺り 単純移動 加算3回 行列 乗算9回、加算6回
ヘッダファイル加えりゃいいじゃん
115 :
デフォルトの名無しさん :03/12/09 00:05
ちょっと詰まってしまってヘルプをお願いします。 質問:プログラマブル頂点シェーダから頂点ブレンド用のマトリックスパレットっ て使えるんですか? 説明とかは固定機能頂点シェーダの場合だけで、もし使えるとするとどんな感じの データがVertexShaderに渡されるのか教えてください。
すみません補足です。 やりたいことは 「重み付頂点ブレンドをプログラマブル頂点シェーダでやりたい」 です。
定数にカキコしとくんじゃなかったっけ?
>>117 定数にカキコしとくんじゃなかったっけ?
回答どうもです。
どの定数を使うかをアドレスすることはできるんですか?
各頂点毎に影響する変換行列は最大でも2つ程度なんですが、
関節がいっぱい有るので、変換行列自体は50個ぐらい有って
マトリックスパレットからインデックスで選択したいのです。
>>115 ここで聞くよりt-potあたりのサンプル見るのが早いと思うが。
どの行列を使うかは頂点データの中に入っている。
行列を定数に設定したらシェーダーで頂点から行列のインデックスをゲットして、
それをアドレスレジスタに突っ込んで行列を引っ張ってくる。
>>119 レスどうもです。
試してみたら D3DRS_INDEXEDVERTEXBLENDENABLE が最新のGeforceでも使えないみた
いなのでインデックス付頂点ブレンディングは未だ使えるものではないみたいです。
t-pot のサンプル見てみます。
>>113 >一頂点辺り
>単純移動 加算3回
>行列 乗算9回、加算6回
いやだから行列のみの方が加算3回分計算量すくないでしょ。
未トランスフォーム頂点はどっちみち行列かけるわけだし。
123 :
デフォルトの名無しさん :03/12/10 08:09
UPnPの機能を使いたいが為(楽もしたい)にDirectPlayでP2Pなファイル転送が出来れば嬉しいのですが 可能でしょうか? ちなみに当方C#で開発してます、念のため・・・
3D機能を使って2D描画をしようと思っています 元絵を1枚のテクスチャとして読み込みその1部をテクスチャ座標を指定して 描画させているのですが浮動少数の所為なのか1ドットずれてしまう場合があります。 回転、拡大縮小などの機能を使いたいのですが この問題を解決する方法はありませんでしょうか?
まずヘルプをよく読みます。
126 :
デフォルトの名無しさん :03/12/11 09:10
>>124 「三角形ラスタ化ルール」でヘルプを検索
127 :
デフォルトの名無しさん :03/12/11 22:44
深度バッファだけ描画する方法ってどうやるんですか?
完全透明にして描画
D3DRS_COLORWRITEENABLE
>>130 それ調べたら結構サポートやばいね…
ちょっとマイナーカードになるとアウトだ。
例えばMatroxMilleniumG450,Geforce2Pro,Geforce2GTX,TNT2
このへんでダメってのはちょっと厳しいかもしれないな
ALPHABLENDでSRC_ZEROとかDSET_ONEとかそんな感じの設定にするほうが安全だろうね。
遅そうでやだけど
漏れはいつもALPHABLENDでSRC_ZEROとかDSET_ONEで透明化 してるがやばいんすか? SDKでも使われてるみたいだけど、、、
そっちは問題ないゆーとるやん。
やばくはないけど遅くなる可能性が高い。アルファブレンドは完全に透明でも 描画しないわけじゃなくて、計算の結果描画前とピクセルの値が変わっていない だけで、描画はしているからね。 アルファテストにD3DCMP_NEVERを指定した方が速くなる可能性は高い。 ただ、最近のATIのビデオカードなんかは、完全に透明に近いピクセルは描画 しないなんていう小細工をしているから変わらないかもしれないが。
アルファテストが不可なら深度バッファにも書き込みがなされませぬが… それを分かっていってるのかな、いや俺が思い込みしてるだけという説もあるが。
136 :
デフォルトの名無しさん :03/12/13 16:53
DirectX9.0を導入していたんですが8.1に戻す必要が出てきたので、 DirectX Eradicator 1.09を使用してアンインスコしました。 で、8.1のパッケージをインストールして再起動、 dxdiagでちゃんと8.1になってるかどうか確認したところ、「見つかりません」の表記が どうやらインスコに失敗していたみたいで、何度かインスコして再起動かけてみたけど無駄。 DirectX 8.1 Software Development Kitもインスコしてみたけど相変わらず「見つかりません」 誰かタスケテください(つA`) OSはwinXP homeです。 ↓がdxdiagの情報をコピペしてみたやつです Time of this report: 12/13/2003, 16:50:14 Machine name: B08H10AMDLI5XPP Operating System: Microsoft Windows XP Home Edition (5.1, Build 2600) Service Pack 1 (2600.xpsp2.030422-1633) Language: Japanese (Regional Setting: Japanese) System Manufacturer: GBT___ System Model: GA-7VAXP BIOS: GBT - 42302e31 Processor: AMD Athlon(tm) XP 2600+, MMX, 3DNow, ~2088MHz Memory: 512MB RAM Page File: 239MB used, 1010MB available Primary File System: n/a DirectX Version: DX Setup Parameters: Not found DxDiag Version: 5.01.2600.1106 32bit Unicode
137 :
デフォルトの名無しさん :03/12/13 17:31
DirectX9.のスプライト機能の事なんだけど、 当たり判定等のメソッドって無いのでしょうか? つーかこのスプライト機能自体メリットってあるの?
>当たり判定等のメソッドって無いのでしょうか? 当たり判定と言っても判定基準が目的とする物によって異なるわけだが、 その程度のことも考えられないのか? どうしようもないから、プログラムはすっぱりと諦めた方がいい。
>>136 ネットで答えを待つより、OSごとクリーンインストールしたほうが早い
ON SPRITE GOSUBだっけ んなもんあるか!
141 :
デフォルトの名無しさん :03/12/13 18:36
>>138 俺の聞きたいのはそういう基本的な事じゃなくて、
なんのためにスプライト機能がついてるのかって事なんだけど
>俺の聞きたいのはそういう基本的な事じゃなくて、 って 137 で思いっきり聞いてるだろ。 >当たり判定等のメソッドって無いのでしょうか? >つーかこのスプライト機能自体メリットってあるの? メリットを感じられなければ使わなければいいだけ。
>>141 オマエみたいな能無しの馬鹿でも扱えるように、お情けで用意されているだけ。
>141 2Dのスプライトが必要な時。 Summner Update後なら、ビルボードにも使える。
Summnerってなんだ、Summerだろ。
146 :
デフォルトの名無しさん :03/12/13 19:18
Microsoft DirectX 9.0 SDK Update (Summer 2003)をインストールしたのですが VS.netでプロジェクト->参照の追加としてもMicrosoft.DirectX.dllなどが見つかりません やったこと ・まず最初はdx90updatesdk.exeをダウンロード、インストールしましたがだめでした ・つぎに元からあったSDKが邪魔をしてるのだと思い、コントロールパネル->プログラムの追加と削除で アンインストールしてからもう一度dx90updatesdk.exeでインストールしましたがだめでした dx90updatesdk.exeは Date: October 3, 2003 のものをダウンロードしました VS.netは2002です よろしくおねがいします
147 :
デフォルトの名無しさん :03/12/13 19:31
>>Summner おまえメガテン信者だろ
146です 追加で申し訳ないのですがGotDotNetの掲示板に 「開発者ランタイムをダウンロードしてDebug\mdxredist.msi を実行しインストールする。 dxsetup.exe ではインストールできないことがあるようです」 とあったので手動でmdxredist.msiを実行しましたがだめでした
DrawPrimitiveで普通に描けるだろ。 なんでそんな分かりきったことをいちいち聞くんだ?
HelpのID3DXLineでも見れ。
ただ線引きたいなら
>>150 でOKだが。
ほうほう。 それは知らんかった! どもです!
すいません。 DirectX5までDirectDrawは使っていたのですが DirectX8.0や9.0になってDirectXGraphicsになって 3Dを勉強している物ですが・・・ DirectXが書いてあるHPを初期化と2D(スプライト)までは 理解出来たのですが・・ ワールド座標、ビュー座標の所で躓いてます。 2Dの時は座標は(0,0)〜(640,480)でドット単位で指定すれば 良かったと思うのですが 3Dの時は-0.1〜1.0までを指定する所までは理解してのですが 物体やワールド座標の値はなんなんでしょうか? 値はドット単位じゃなく何の単位なんでしょうか。 意味不明な事を言ってるかもしれませんが どうも単ワールド座標の単位(サンプルでは0.5とかの数値が入ってます) が解りません。 どうか宜しくお願いします。
>153 μでもmでもAUでも、表示したいモデルに合わせて、 好きな単位を選べばいいのでは?
>2Dの時は座標は(0,0)〜(640,480)でドット単位で指定すれば そもそも2Dでさえ、そんな限定的なサイズはない。
>>154 >>155 >>156 レスありがとうございます。
>>154 単位が自由ですか・・・
基準の単位という物がないのでしょうか?
>>153 -1〜1の間ということでしょうか?
その範囲しか指定できないと言うことですね。
つまり広大なマップを想定しようが小さなマップを
想定しようが全て-1〜1の範囲ということですか・・・?
大きさの違いはどうなるんでしょか・・
>>156 すいません。。これは例えで800,600や1024,768等もありますね。
>>157 大きさなんて相対的なもの。
与えられた空間を自分の好きなように使える。
ある人体モデルが人間か巨人かは、座標ではなく、
他のオブジェクトの相対的な大きさで決まる。
>-1〜1の間ということでしょうか? そんな間はない。 行列で変換する計算が入るだけで、計算結果の座標は2Dと同じ。 計算に用いる行列が自由に変えられるから、変換規則を自分で作るだけの話。
どうせどんな単位を使っていようと、拡大縮小をかければ同じになるんだから。 1mmも百万倍の拡大をかければ1kmになるのだよ。 オングストロームから光年まで好きな単位を使えばいい。
暗号化したX-Fileを読み込みたいと思っています。現状はバイナリではなく テキスト形式で読み込んでいます。 どなたか暗号化をご存知の方はおられますでしょうか?よろしくお願いします。
スレ違いだしそんくらい自分で考えろよ……
暗号化したけりゃすりゃいいだろ。 そんなものXに限った話ではない。 何を聞きたいのかさっぱり分からん。
>>163 > 暗号化したけりゃすりゃいいだろ。
> そんなものXに限った話ではない。
> 何を聞きたいのかさっぱり分からん。
復号処理の結果をファイルとしてではなくプログラム内で処理したい
のです。LoadXfileは既に復号されたファイルを読み込むメソッドなので
完全な暗号化ができないのです。LoadXfileメソッド内で復号処理が
可能なら問題ないのですが...
>>165 メモリ上に復号してそっから読めばいいじゃん。
ほんとに考えてる?
>>166 ヘルプすら見てないんじゃね?
てかすれ違いって言われてんのにまだ質問してるし
>>166 やはりその方法なのですね。メモリダンプも想定していたので
少し極端な例だったかもしれません。
>>167 Xファイルを復号と同時に読み込む機能があるのではないかと
思っているからこのスレに投稿しているわけで特にスレ違いでは
ないかと思いますね。そんなケンカごしになる理由が理解でき
ないです。
169 :
デフォルトの名無しさん :03/12/14 02:10
質問です。 色々な参考文献よんでも、DirectPlayの ロビーサーバーと普通のホストに多数の蔵が接続する形態との差がわからないのですが・・・・ ロビーサーバーとは、通常のホストと何が違うんでしょうか?
>>168 マイクロソフトのXfileに公式な暗号化処理があるならばともかく
どんな暗号化をプログラマがするか分らないのに
>Xファイルを復号と同時に読み込む機能があるのではないかと
DirectX以前にプログラム分る?ってレベルかと…
>>168 あのな、
>>161 読んだら誰だってスレ違いと思うし
そもそもヘルプみたらすぐ真下に載ってるじゃん。
叩かれて当たり前なのに
>ケンカごしになる理由が理解でき ないです。
とはいかに。
>>168 > やはりその方法なのですね。メモリダンプも想定していたので
>少し極端な例だったかもしれません。
やはりその方法?? メモリダンプ?? 極端な例??
わけわからん。
>メモリダンプも想定 結局漏れら全員釣られていたわけだが……
スレ違いなんで放置推奨
>>169 MMO RPGが普通のサーバーで
PSOや対戦格闘みたいにユーザーが集まって
ゲームの準備をするだけでゲーム中は関係ないのが
ロビーサーバーっていうんじゃない?
176 :
デフォルトの名無しさん :03/12/14 09:25
DirectX9日本語ヘルプのmsiを実行しインストールしたのですが 開発環境から参照できません(ヘルプ→目次の中に英語ヘルプしかなくF1を押してもダメ) なにかコツとかあれば教えてください
DX9SDKのupdate を入れようと思ったんだが、 旧DX9SDKがアンインストール中に致命的なエラーとやらで 実行できずに、困っています。 旧SDKの Modify -> X 旧SDKの Remove -> X 新SDKの Install-> X いずれもダメなのですが、こりゃあもしかして OS再インスコせねばならんのですか?
>>177 解決しました
MSDN再インストール後、教えてもらった通りにしてうまくいきました
ありがとうございます
180 :
デフォルトの名無しさん :03/12/14 22:52
D3DXLoadMeshFromXで読み込んでLPD3DXMESHに格納したメッシュから 各面ごとの頂点を取り出し、その面と 直線との当たり判定をとったりしたいんですが、どうしたらよいのでしょうか。 サンプルのPICKとか見ても難しくてよくわからないです。 むかしWinAPIで立方体を描画して遊んでた時は 各頂点のXYZを入れた配列と、頂点番号を三つ並べて面定義した配列を 弄ってただけなので分りやすく簡単にいろいろできたんですけど、 DirectXはどうも難しい・・・ ちなみにVC++6とDX8.1です。
CMyD3DApplication::Pick()はちゃんと見た?
182 :
デフォルトの名無しさん :03/12/15 03:31
四角形と三角形のポリゴンが混在しているオブジェクトを表示するにはどうしたらいいんでしょうか。 ファイルから読み込んだデータを表示しようと思ってるんですが、どこ探しても三角ポリゴンが 前提の表示しかしてないので詰まってます・・・・。
なんか良く分かんないけど四角形も三角形×2じゃん。 DXは三角形しか扱わないし
184 :
デフォルトの名無しさん :03/12/15 12:01
内田 死のう
>>183 △しか扱わないって記述は自分も見たんですが、Xファイルにも□面の
データが入ってるんです。だからもしかして4頂点の面を処理する方法が
あるのかなと。
そんな方法はない。
VisualStdio.net2002+DirectX9.0Summerを使っています。 プログラミング初心者です。 デバッグに関して質問させてください。 アプリケーション終了後出力ウインドウに、 Direct3D9: (ERROR) :Memory still allocated! Alloc count = 169 Direct3D9: (ERROR) :Current Process (pid) = 00000d30 Direct3D9: (ERROR) :Memory Address: 003c6014 lAllocID=1 dwSize=000047f8, ReturnAddr=040b3796 (pid=00000d30) Direct3D9: (ERROR) :Memory Address: 003cc644 lAllocID=9 dwSize=00000f9c, ReturnAddr=040ae1e9 (pid=00000d30) 以下続く・・ Direct3D9: (ERROR) :Total Memory Unfreed From Current Process = 48524 bytes というように表示されます。 メモリリークだと思うのですが、ここからどのよに情報を読み取って デバッグすれば良いのでしょうか?
>>187 とりあえず情報は読み取らずにテクスチャ等を
ちゃんとリリースしてるかソースを確認してみては?
>>185 多角形は三角形に分解してTRIANGLELISTで一回で描画。
>>188 慣れないC++を使ってプログラムをしています(Cも慣れていないけど)。
プログラムがぐちゃぐちゃになりすぎていて、コードの流れが追いにくい
のは、まだいいんですが、問題なのは、コードの流れが追えていてもそれが
意味することが良く分からないということです。
例えば、ポインタやオブジェクトのコピー時にどのような事が起こるのか・・
等です。
こういうことを理解するには、文法の本を読むというのも一つの手段かと
思いますが、できれば今問題となっているメモリリークの原因を突き止める
ことで、実習的に勉強して行きたいと考えています。(自分が何が
分かっていて何が分からないのかも怪しいので。)
しかし思うに・・あのエラー出力から分かるのは
アセンブラのようなアドレスだけであり、それをVisialStdioで追って
行くのは・・・無理ですか?
デバッガで「混合モード」とか眺めていても一生分かる気がしないのですが・・。
>>190 おそらく君はポインタを何も理解していないな
まずはポインタを勉強汁!!
>>190 >アセンブラのようなアドレスだけであり、それをVisialStdioで追って
>行くのは・・・無理ですか?
普通のメモリリークならデバッガで追っかけたほうが早いけど
DirectXリソースのリークをこのアドレスを元にデバッガで
追っかけるのは無理じゃないけど大変だよ。
リリースしてる部分のソースを見て追っかけたほうが早いと思うけど
自分の書いたソースの意味がわからないとなると...
DirectX やるまえに C++ の勉強したほうがいいと思うよ。
>>194 貴重な意見をありがとうございます。
しかしデバッガを使うかどうかは、もう少し検討したいと思います。
つきましてはアドレスを元にデバッガでおいかける場合の一般的な手順の
ようなものを説明して下さると有難いです。
(あつかましいかとは思いますが、簡単にでもいいので
よろしくお願いします。m(..)m)
196 :
デフォルトの名無しさん :03/12/16 02:52
>>187 おお!俺もそっくりさんな場面に出くわしたことあるぞ。
そのときはなあ、
LPDIRECT3DBASETEXTURE9 temp_tex = NULL;
device->GetTexture(i,&temp_tex);
って取得したあと
temp_tex->Release();
をやってなかったためにメモリリークになってた。
はじめは「なんでtemp_texをRelease()せなあかんの?」って思ったんだけど。
どうやらGetTextureをしたときになにやら小細工をしているらしい。
ヘルプみたら
注 このメソッドを呼び出すと、IDirect3DTexture8 インターフェイスについての内部参照カウントが増加する。
この IDirect3DTexture8 インターフェイスの使用を終了したときに IUnknown::Release の呼び出しが失敗すると、
メモリ リークが発生する。
って書いてあった。
要はGetした回数分だけきっちりRelease()を呼ばないといけないとかいうオチだった。
なのでよくわからないメモリリークに当たったらGet系の関数のまわりを疑ってみるといいかも。
>>195 あれはメモリアドレスにしろリターンアドレスにしろ
DirectX内部で使用しているアドレスなんで
普通はあの情報を元にデバッグなんぞしない。
だからソース見たほうがはやいって!
>>197 なるほど。良く分かりました。ありがとうございます。
どう考えても私には無理なようですねw。
おっしゃるように自分のソースを見ながら改めることにします。
>>192 勉強します。
>>196 詳細な説明ありがとうございました。
そりゃCOMの仕様だな。 Get関数とか使うと参照カウンタが上昇するようになってる。 まあ、俺もDirectXから入って、そういうこと知ったんだけどな。
DirectX9で、ライトの数っていくつまで使えるんでしょうか…?
デバイス依存だから、その都度問い合わせろ。
202 :
デフォルトの名無しさん :03/12/18 14:22
>>201 シェーダ使うと一つしか使えないのでしょうか?
シェーダ次第
204 :
デフォルトの名無しさん :03/12/18 15:46
>>203 命令数が多くなるとエラーが出るので今のところライト一つが限界と
自分なりに予想してみたりしましたがどうでしょうか?
はぁ
デバイスの能力を一切問い合わせずに3D使ってるのか…? 開発機以外で動かす気が全くないなら好きにすれば、としか。
>>204 シェーダ使っても普通に複数のライト使えるだろ。
1つだけなんてありえない。
おれの場合、全部頂点シェーダだからライトのデバイス能力なんざ調べんよ。 頂点シェーダそれぞれにライトなし版〜4個版まで作ってるよ。 総数150
211 :
デフォルトの名無しさん :03/12/18 21:38
>>209-210 PS_OUTPUT o = (PS_OUTPUT)0;
//ライトの取得
float3 light = 2.0 * (v.color0.xyz - 0.5);
//法線の取得
float3 normal = 2.0 * (tex2D(s_bumpNormalMap,v.texCoord0) - 0.5);
//色の取得
float3 color = tex2D(s_bumpDiffuseMap,v.texCoord1);
//アンビエント項の計算
float3 ambient = globalAmbient.xyz;
//ディフューズ項の計算
float3 diffuse = lightColor.xyz * saturate(dot(normal,light));
//ハーフベクトルの取得
float3 half_vector = 2.0 * (v.color1.xyz - 0.5);
//スペキュラー
float specular = saturate(dot(normal,half_vector));
float specular2 = specular * specular;
float specular4 = specular2 * specular2;
float specular8 = specular4 * specular4;
//色
o.color.xyz = color * (ambient + diffuse) + lightColor.xyz * specular8;
o.color.w = 1.0;
return o;
ピクセルシェーダでこれ以上命令を増やすとエラーが出るんですけど
みなさんどうやっているのでしょうか?ちなみにバンプマップです。
グラフィックボードはGeForceTi4200です。
みなさんはたぶんバンプマップの時は ライト1個でスペキュラーの計算もしてないと思うよ。 というかピクセルシェーダーでこんなの走らせたら重過ぎない? VSとPSそれぞれにうまく処理を割りあてたほうがいいと思う。 重くてもなんとかしたいというなら アセンブラでカリカリに書いて命令数節約するぐらいしか無いんじゃ。
213 :
デフォルトの名無しさん :03/12/19 00:24
>>212 これって処理重い方なんですか?
nVidiaのCgBrowserでもっと処理の重めのものがたくさんあったので軽いほうだと思ってました。
バンプマップって処理の軽めなシェーダみたいな印象があったんですけどそうでもないのですね。
>>213 バンプマップは処理軽いです。
重いのはあくまで
>>211 のシェーダ。
これ動かしてみました?
このシェーダで普通にモデル表示して
どのくらいの FPS でるのか知りたいです。
それとも今どきのボードはこれくらい
さくさくこなしちゃうんでしょうか?
うちのはVS,PSがやっとハード処理されるように
なった頃のやつなんで。
215 :
デフォルトの名無しさん :03/12/19 02:53
>>214 調べてみました。
比較の対象として
>>211 のハーフベクトルの計算とスペキュラーの計算を抜いたものと比べて見ました。
(スペキュラ無しの方では頂点シェーダの方でしているハーフベクトルの計算も抜いています。)
ちなみに環境は
Pentium4 1.8GB
GeForce4Ti4200
です。
ポリ数は672のモデルと176のモデルをそれぞれ表示していて
総数は848個です。(共にバンプマップです)
結果は
スペキュラ有り 180fps
スペキュラ無し 183fps
でした。
スペキュラの計算を抜いても大して差がでませんでした。
スレと関係なくて悪いが、せっかくGeForce4Ti4200使ってるのにPen4の1ギガバイトを使ってるのはもったいないな
>>215 ピクセルシェーダーはかなりの回数呼ばれるので
命令数の差が速度に響くと思っていて
>ハーフベクトルの計算とスペキュラーの計算を抜いたものと比べて見ました。
をやったら算術命令数が半分ぐらいまで減るはずなんですが
FPS の差はほとんど誤差みたいなものですね。
全然重く無かったですね。スンマソン。
コンパイルしてみてみたのですが 211 に少しでも追加すると
エラーが出るということは GeForce4Ti4200 のPSの算術命令スロット数は
8だと思われるのでこれにもう一個ライトついかは無理だと思われ。
218 :
デフォルトの名無しさん :03/12/20 00:55
>>216 _| ̄|○
>>217 もうしわけございません_| ̄|○
測り方にミスがありました。
D3DXFONTの文字列描画の処理が激重で差を縮めてしまっていました。
文字列描画をはずして再度計測したところ
スペキュラ有り 660fps
スペキュラ無し 700fps
でした。
ちなみに解像度は640x480(32Bit)です。
∧||∧
( ⌒ ヽ 逝ってきまつ
∪ ノ
∪∪
C#, DX9, DPlayにて質問。 peer.SendTo((int)PlayerID.AllPlayers, packet, 0, 0); とした所、'int'にAllPlayersの定義が無いとかいうコンパイルエラーが出ました。 チュートリアルでは普通に使用しているのですが、なぜ...
220 :
デフォルトの名無しさん :03/12/22 00:52
DrawIndexedPrimitivesでレンダリングする場合法線情報っているんでしょうか? メッシュに法線つける方法ならぐぐって出てくるんですが、VertexBufferとIndexBufferでレンダリングする場合の ライティングの方法についての情報が見つかりません。 どなたか教えてください。
・各頂点に法線のっける(頂点データのタイプを法線を含むものにする) ・ライトの設定を行う でいいんじゃネーノ?つかサンプルに載ってると思うんだけど・・・
>>220 の言いたいことはきっと
「三角形の法線の求め方はわかるけど、頂点法線の求め方がわからない」
と勝手に予想してみる。(俺の勝手な予想、違ってたら無視してくれ。)
223 :
デフォルトの名無しさん :03/12/22 01:13
ああ、C#です・・書き忘れてました。すいません。 ライティングの設定はしてるんですが、モデルが真っ黒なままで・・・。 後は法線の設定なのかなと思ったんですが、どこでそれをやればいいのやら。。と。 カリングは出来てるので法線情報はもうついてると思うんですが、他に思い当たる事もなくて。
> カリングは出来てるので法線情報はもうついてると思うんですが うーん、法線情報を勘違いしていると思われる。 それらは全然関係ないよ。
面の裏表は頂点ストリームにおける頂点の並びで判別してるのよ。
>>220 頂点の位置座標と頂点インデックスから自分で法線を計算したいってわけか?
そうだとしたら、面ごとに法線を求めてその面が含む頂点に加算していく。単位化してな。
最後に頂点全ての法線を単位化して終了。
ライトの設定してて真っ黒なのは法線が0ベクトルになってるからだろう。
文章からして頂点に法線が含むのにその計算してないのだろうから当たり前だが。
違ってたらスマソ。
>>224 >>225 >>226 レスありがとうございます。
面の法線データを「加算」していけばいいわけですか・・・・
共有してる頂点はどうすりゃいいんだろうとか思ってました。
余談ですがDirectXよりもJava系でぐぐった方が3次元処理の情報は出てきますね。
こっちでも非常に助かりました。
DirectXでGDIのような描画をするにはどうすればいいでしょうか?
意味が分からないんで具体例を示してください。
Roundrectみたいな描画をしたい
やっぱりテクスチャにGDIで書き込んだりという方法になるんでしょうか。 具体的にはどのようなやり方になるんでしょうか。
DirectX7? それとも8か9?
8で宜しくお願いします
8だとHDC取ってこれないからGDIで描画は無理。 どーしてもGDI使いたければDIB作って、そこにRoundRectなり何なりで描画。 んで、テクスチャをロックしてDIBの内容を自力で転送。
ははぁ。やっぱりそうなりますか。 7だとDCが取れるみたいですね。 7でやったほうが良いかなあ。
ありがとうございました
9でやれば?
ペイントで書いた絵(31×31ピクセル)をテクスチャにしてからスプライトのDrawメソッドで描画してみたら、描画範囲を31×31に指定したのに 幅,高さともに3/4くらいの範囲しか出てきませんでした。 原因と解決法分かりますか?
テクスチャ読み込む時にフィルタかけてないか?
描画範囲をNULL(矩形全体)に指定するとビットマップ全部が普通に表示されるのでビットマップ読み込みの問題ではないと思います。 ペイントとDirectXGraphicsの1ピクセルの大きさが違うのかもしれません。
>描画範囲をNULL(矩形全体)に指定するとビットマップ全部が普通に表示されるので それじゃ明らかにフィルターのせいじゃん。 効果も分からないでD3DX系のライブラリを使うくらいなら、 テクスチャの読み込みと表示くらい自前で作れ。
>>238 3/4 くらい、というのはもしかすると 31/52 くらいの範囲?
まあ、ヘルプをきちんと読んで普通に実装すれば 何の問題も起こらないわけだが、このあたりは。
だから引き伸ばされたくなければフィルターを切れよ
>>244 32 * 32 / 64 = 1024 / 64 = 16
32 * (32 / 64) = 32 * 0 = 0
デバッグくらいしろよって話だな
StretchRectではアルファブレンド(透過処理)できないって事実 なんでしょうか?
>>246 どうもです。
やはりそういうことでしたか。
ちなみに今試しに31*(float)(desc.Height/info.Height)とやってみましたが
(float)無しと変わらないようです。
どうでもいいけど。
(float)(0)が0以外の意味を持つのなら教えて欲しいところだ。
>>249 どうやら藻前は一から勉強し直した方がよさそうだな
既にDirectXの問題じゃないしな。C/C++の教本じっくり読み直しなさい。
DirectX8.1で DirectMusicを使ってOGGファイルの再生をすることが できたんですが、全ての音源をメモリに読み込んで再生しているので、 メモリをたくさん使ってしまいます。 DirectMusicではストリーム再生が自動的に使っているようですが、 OGGファイルの場合はどのようにすればいいんでしょうか? 分かる方教えてください
>>253 確かにストリーム再生できるのだが、メモリに読み込んだほうがいいかも…。
ディスクアクセスの所為らしく、時々再生がプッツンとまるんですよ。
2度目の再生以降は止まらないからやはりディスクアクセスと推測。
全く酷い話ですね。だから俺は全く逆のことをしようとしてるわけで。
で、誰かこの辺も上手く解決したストリーム再生に成功した人は居ませんかネェ。
waveなら読み込みならが再生してもプッツンするなんて事なかったけどねぇ… っていうかogg容量小さいからメモリに全読みも意外とアリかも!?
>>254 よかったら、ソースいただけないでしょうか?
全然やり方わからずとまってしまってます><;
メモリに読み込むと1つのOGGだけで20MBぐらいいってしまうので、
やっぱりストリームの方がいいかなぁと思ってます
そんなに難しくないんでヒントだけ上げるから頑張ってちょうだい。
http://www.google.com/search?num=50&lr=lang_ja&q=DirectMusic%20IStream 要するにDirectMusicのカスタムローディング系のお話なのね。
まずはIStreamでWaveのストリーム再生を自力実装してみると参考になる。
OggはOggライブラリにFILEストリームを使う奴があるのでそれを使う。
これでWaveに逐次変換していけばWaveと一緒だしね。
ちなみにDirectMusicLoaderなどはカスタム化する必要はありませ〜ん。
要するにOggに対応したIStreamの派生クラス、IVorbisStreamを実装すればよいのです。
んでDMUS_なんたら構造体のとこにそのストリーム突っ込めばできあがり。
ありがとうございます。 とりあえず、WAVEで一度ストリーム作ってみることにしますね。
DirectDrawでクォータービュー描画する方法がわからん。 googleで探ってたらサンプルがあったにはあったけどDirectX8だった。 菱型でない、正方形のマップチップをひし形に変換してBlt関数か、BltFast関数で表示方法 だれか教えてくだちい。
マップチップは正方形で作る。 余分な部分はカラーキーね。 後は下から重ねて描画していくだけ。
ひし形に変換した画像をDDrawサーフェイスに書き込むしかない というかもとからひし形画像用意すれば問題なし または変換して用意しとけばいいがな。 ちなみにDDrawでは画像を単純拡大縮小以外の変形はできない。 (VRAMアクセスすれば別だが)
>>259 チミ、こっちでも聞いてたのか。
やっぱりDirectGraphics使うのがいいかと思うが。
DirectDrawは資料も減ってるし、 初心者のやるものではない。 あれは自前描画に狂ったプログラマーしか 手を出してはならんのじゃ・・・
そういう人はそういう人でDibsectionに逝きます…
DIB+DirectDrawでVSYNC同期フルスクリーンが、自前描画最強説
自前描画オヤジの皆様、お元気でいらっしゃいますでしょうか。
う〜ん IStreamでWAVEの再生すらわからない><; どこにもサンプルとか置いてないのでホントさっぱりです 誰かHELP
269 :
デフォルトの名無しさん :03/12/27 16:14
Firewireのカメラからリアルタイムに画像取得(WEB CAMのような)し、 その動画をエフェクト処理してフルスクリーン表示したいのですが。 それらに近いサンプルないでしょうか?ダイレクトショウを使うのでしょうか?
270 :
nokai :03/12/27 16:16
素直に3Dで・・・って言ったらまずいのだろうか?
昔DirectX5時代にDirectDrawベースで作った拙作をDirectX8のD3Dベースに移植したい んだけど、俺D3Dについてはサパーリ。で、質問。 D3Dの座標系は色々マンドクサイけど、「最終的に」画面のドット単位の座標や矩形に合わせて 描画する事は可能でしょうか?(説明ムズいな…) 例えばDirectDrawだと描画位置を整数(RECT)で指定するけど、これを最低限の 手間で丸々D3Dに置き換えたいんですが… 以前作った2Dベースの奴は既に内部的な座標や矩形の処理は既に完成されてて あまり触りたくないもんで。
>>272 透視変換前の座標系と考えて従来のシステムを組込むのは難しいと思うが、
従来の部分を「透視変換後の座標」として組込めば何の問題もないのでは。
>従来の部分を「透視変換後の座標」として組込めば何の問題もないのでは。 ええ、ズバリそれそのものなんですがそれってのは技術的に無理が無いものなんでしょうか? そこいら辺の具合が判らず… 既に計算済みのRECT座標内にD3Dで画を貼り付けるラッパー書いて終わりてのが理想…
別に無理はないでしょ。 どうせ3Dで描画したって、どこかのステップで透視変換しなければいけないんだし、 そこに組込まれればいいんでしょ。 理想も何も、今のDirectXで何もせずいけるよ。 頂点座標をフレキシブルに決められるので、X,Y,Zの他に、RHWというパラメータを 設定するフォーマットにしておけば、DirectXはそれを自動的に変換済みの座標と見なす ので、そのままレンダリングできる。
>>272 2D画像をDirectX Graphicsで指定位置に貼り付けたい、
というのなら、散々既出のネタなので、
ヘルプなり過去スレなり読んでください。
マリガトウ 取り敢えずヘルプから読んでみます
ポイントフィルタならピクセル単位できっちり描画できる。 リニアフィルタかけるとRGB各成分±いくつかずれるが、目に見えるほどではない。 気になるなら回転拡縮の類なしのときだけポイントフィルタにすればいいか。 やるときはヘルプの「ラスタ化ルール」「テクスチャ座標」を熟読されたし。
ドット絵の場合はリニアフィルタかけると 意外とボケて見えたりして気になると思うぞ。
>>279 0.5ポイント補正してもボケて見えるん?
DX8.1SDK入れて以前のをビルドしようと思ったらddraw.libにアクセスできないとか ほざきやがる。どうも未だにVC++4.0なのがマズイらしい。 いきなり挫折煤i・∀・)ズガーン
そこでBCCですよ VC4はサポート害でねーか?
DirectPlayのCapsって何? セッタメソッド無いし直に代入しても変化無いしぐぐると55件(日本語のみで3件)だし。 ConnectRetriesとかConnectTimeoutとか設定したいのに、どうしろと。
IDirectPlay8Client::SetCaps IDirectPlay8Server::SetCaps とかじゃ無くて?
>>284 ああ、言語はC#なんだ。
SetSPCapsはちゃんとあるんだけどなぁ…
IDirectPlay8Peer::SendToの第4引数のTimeOutの時間を0にして 第7引数にDPNSEND_SYNCを指定すれば確実にデータは届くのでしょうか?
SendToで DPNSEND_SYNC | DPNSEND_COMPLETEONPROCESS | DPNSEND_GUARANTEED を指定して置くとメッセージを受けた側がメッセージを処理する (プロシージャを抜ける)までSendToから処理が返ってきません。
288 :
デフォルトの名無しさん :03/12/29 11:35
高速な文字表示にもDirectXは有効だと聞いたのですが 本当でしょうか?
289 :
デフォルトの名無しさん :03/12/29 11:49
DirectXを使って3Dの地形を作りたいときはどうすれば楽なんでしょう? 前にやり方を解説してるホームページを見たような気がするんですが、どこか分からなくなってしまった…
簡単なのならSDKのBillboardにもある
>>291-292 お2人ともサンクス。参考にしてみるよ。
ただ、292はやっぱり前見たことのあるところじゃないんだよね…
んー、そんなページをみたという夢でも見たのかしら。
294 :
290じゃないけど :04/01/01 02:00
>>292 のやり方で実際に作業を進めようとしたとき
どうやってデータを設定すればいいのでしょうか?
いままでモデリングツールで見えない三角形をおいて
それを当たり判定に設定してたのですが、
これの場合って思い通りの地形を作りたいときって
何でどうやって地形データを作ればいいのでしょうか?
HeightFieldの当たり判定は単純明快じゃろう。 地形データそのものを用意するのも簡単。 Photoshopの雲模様フィルタを駆使して作るなり、 Terragenで生成したビットマップを使うなり、 自力でプログラムで生成してみたり。
Billboard みたいに x, z の関数にして高さ設定するだけでも結構使えるぞ
297 :
デフォルトの名無しさん :04/01/02 04:59
>>295-296 >地形データそのものを用意するのも簡単。
>Photoshopの雲模様フィルタを駆使して作るなり、
>Terragenで生成したビットマップを使うなり、
>自力でプログラムで生成してみたり。
>Billboard みたいに x, z の関数にして高さ設定するだけでも結構使えるぞ
こんな大雑把な感じでいいんですか?
でもこうやっちゃうとモデリングツールの恩恵をうけにくいですね。
生成した地形にモデルとか(モデルで作った建物とか山とか滝とか湖とか)おくときって
どうやって地形と合わせているのでしょうか?
Kさん 好循環 Aさん 悪循環 (健康体) (喘息) 1.(神が喘息であるかないかを決める) 2.K 喘息でない人 A 喘息の人は は体力がある 体力がなくなる 3.K A 行動力、 五感(嗅覚)が鈍り感性が変化する 4.K&A 神は異常な感性の人間は本来人に迷惑をかけ るから外に出てはいけないと思っている。 5.K 変化なし A アトピーになる 6.K 正常な感性 A 外に出なくなりさらに異常な感性になる 7.K 正常な人間 A 異常な人間(レッテル) 8.K&A 死 9.K&A 来世 10.K&A 神は異常な人間は人に迷惑をかけるので行動 を抑制する必要があると思っている。 11.K&A 神が喘息であるかないかを決める 12.K 喘息でない A 喘息である 13.K&A 1.に戻る これは事実。広めようぜ 解決法:寝て起きて、やな気分でも、続けるけること。 体力をつけると感覚が正常に戻り、 アトピーも快癒に向かう。 目安としてグランドを10週くらい。 あとはウォーキング 2.3時間を目安にウインドーショッピングや本屋めぐり
>>297 君の場合は、やり方を知らない以前にプログラマに向いてないんじゃないかな…
xzの展開時に、そのモデルに合わせた頂点セットでも用意していて
これまた任意でもランダムでもいいから、そのモデルにあわせた頂点群を散りばめればいいだけじゃん。
…もはや、3D技術でもなんでもないような普通の発想の部分じゃないのかな…
>>299 >xzの展開時に、そのモデルに合わせた頂点セットでも用意していて
>これまた任意でもランダムでもいいから、そのモデルにあわせた頂点群を散りばめればいいだけじゃん。
よろしかったらもう少し詳しくおねがいします。
ちょっとよくわからないです。
「モデルに合わせた頂点セット」と「モデルに合わせた頂点群」って具体的にどういうものでしょうか?
>>300 モデルの下方(地面と接する)頂点と同じ座標の頂点をtableでも何でも良いから用意しておいて
プログラム中にモデルをおきたい場所に展開すればいいじゃんよ。
モデルが複数で地形を為してるなら、その頂点のtableでも何でも用意した頂点をまとめた物を展開すればいいだろって。
もうさ、そこまで分ってないなら質問や書き込みはしない方がいいレベルなんじゃない?
具体的に言うと、整数同士の掛け算も理解してないのに、ベクトルと行列の掛け算について語って質問してるレベルじゃないの?
ううむ・・・ もしかしたら、299さんのほうこそ、 俗に言う『問題ない症候群』なんじゃないかという 気もしないでもないのだが・・・ 答えるのが嫌なら答えなきゃいいじゃん。
「3Dネットワークゲームプログラミングガイド」っていう本にこの手のマップの作り方が出てたよ。 ただ、この本のサンプルプログラムはなぜかうちのPCだと画面が真っ暗で文字以外なんも描画されん… なんでだろ〜なんでだろ〜
例えだけど、 掛け算も理解してない奴に、ベクトルと行列の掛け算や、行列と行列の掛け算を 教えても意味ないじゃん。 それを指摘してるのに >俗に言う『問題ない症候群』なんじゃないかという >答えるのが嫌なら答えなきゃいいじゃん。 どんな房な発言や質問もまかり通るのか? どんな質問も書き込むのが自由なのに、書き込む内容を諌める書き込みは 書き込まなきゃいいじゃん、なのか?
まあ、基礎能力が無いのに応用やっても理解しづらいってのは分かるけどね。 この程度の問題分からないんじゃ今後大変だよって親心なのかな? 3Dをやらないプログラムの場合、 文系プログラムでも簡単にできるけど、 3Dの場合はそうは行かないからね。 今までちゃんと組めてたゲームプログラマでも3Dになったとたんにダメになった人、何人も見てるよ。
(´・ω・`)∩ 3D難しいよぅ…
>何人も見てるよ。 >何人も見てるよ。 >何人も見てるよ。 リア中かよ……
必死なヤツがいるな
DirectXSDKについているサンプルをいじって遊んでるんですが… _malloc_dbgを使うと、 error LNK2001: 外部シンボル "__malloc_dbg" は未解決です。 となってしまってコンパイルできません。 なんかプロジェクトの設定が間違ってるんでしょうか?
誰か、DirectXで良く出てくる行列についておすすめのサイトか本を教えてください 市販のものを適当に買ってきて読んだら余計に意味がわからなくなってしまって凄く困ってます そもそも行列って何に役立つのですか? どういう所が便利なんですか?
DirectXの話題じゃないが #define CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> 上の三つを追加したあとで普通にmalloc/freeを使うと デバッグビルドでは_malloc_dbg/_free_dbgに置き換えられる。
ここってDirectDrawの質問をしてもOK? 矩形領域を指定したサーフェスのLockが動作しないという話を聞いたんだけど 7.0以降のDirectDrawでも改善されてなかったりしますか?
高一以上なら行列が分からないじゃなくて勝手に本買って勉強出来るだろうに。
久しぶりに学歴ネタする?
というか、DirectXのサンプルは、 #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> を追加するだけでデバッグモードではビルドできなくなる様子… 何が原因でしょう?
>>314 されて無かった気がするぞ。
ちゅーか、ドライバ依存だと思う。
そうですか。ドライバ依存となると厄介ですね…。
NULL指定で全域Lockでええやん 何か困るか?
324 :
デフォルトの名無しさん :04/01/04 18:06
320*240のBMPからテクスチャをつくって描画したのですが、どうも幅だけが伸びてしまいます。みたかんじ500くらいになってるようです。高さは問題ないのですが、どうしてこのような現象がおきてしまうのでしょうか?
ver9.0の日本語ドキュメントのID3DXSpriteのDrawTransformの説明なんですけど >>指定した行列によってトランスフォームしたスプライトを描画するためのしくみを提供する。 この文を単純に読んだだけで理解した人いますか?
「ためのしくみを提供する」自体はその文だけじゃ何の事か分からないが、 その前の部分は単純に読むだけで理解できる。
単語を日本語に置き換えて並べてみましたよ、って感じの説明が多いよね。
DrawTransform って関数名だけで分かるだろ、普通
>>324 恐らく、512*256になってるんじゃないの?
"2^n"の話って聞いた事ない?
>>325 普通のDrawにスケール、回転、平行移動があるのだから
それらを一つの行列で表してるんじゃないの?
って普通は考えるような。
まあ英語もDirectXも初めてなら気付かなくて当然な罠 これから勉強していけばよろし
>>329 そのようです。お忙しいなか質問に答えてくださってありがとうございます。
まだまだ勉強がたりないようです。
>>DrawTransform で、最新のSDK付属ドキュメントを今見たんだけど 翻訳云々というより存在すらなかったんだけど
>>332 ID3DXSprite::DrawTransform
でも無かった?
一応、バージョンアップじゃないマイナーな改善( *.1 *.1a *.1b )
なら無くなるクラスやメソットなんて無いと思うけど…
イメージしてみた 描画する( スプライト->トランスフォーム( 指定した行列 ) );
どうやら完全に存在を抹消されたらしい 今確認してきた
ID3DXSprite::DrawTransform はSummer Update 2003で Drawと統合されました。 DrawがDrawTransform に統合されたと言う方が正しいかも。
>>DrawがDrawTransform に統合されたと言う方が正しいかも。 統合されたんじゃなくて描画とトランスフォームにきっちり分けただけかと DrawメソッドとSetTransformメソッドとに。
DirectX8.1bをInstallしてVusialC++5.0でサンプルを コンパイルしたらUINT_PTRが定義されてないと出て 調べたらunsignd intだってのでSDKのファイル全部 置換してコンパイルしたら容量が足りませんで出た・・・ HDDにまだ14GBくらい残ってる筈なのに・・・ SDKをInstallした時も容量が足りないとでたんですが そのまま進めた出来たのでどこかおかしいのでしょうか ちなみにWin32APIでDirectXの使わないプログラムでしたら コンパイルできるのですが・・・
前半、中盤、後半の文を読んで誰もが思うであろうこと お ま い は プ ロ グ ラ ム や め れ
>どこかおかしいのでしょうか 頭 >容量が足りないとでたんですが 脳みそ >SDKのファイル全部置換してコンパイルしたら えっちなのはいけないと思います >SDKをInstallした時も容量が足りないとでたんですが システムフォルダがあるドライブ(通常C:)にも空き容量は充分ありましたか? >VusialC++5.0 やはりネタでしたか、新年あけましておめでとうございます
わざわざトラブルを複雑にするなんて、凄い考え方の持ち主ですね。
非常に低レベルな話ですが、XFile の欠点を教えて下さい。 その他、自前のソフトにXFile形式を採用したが、 こんな問題があった、なんて経験談があれば、 聞かせてください。
バカそうに見られる
344 :
デフォルトの名無しさん :04/01/05 13:36
>>342 その前にXFileの利点を教えてほしいよ。
>>344 初心者がD3DXを使ってXファイルの
読み込み&表示ついでにモーション再生までしちゃって
オレって凄いと勘違いできる。
で、欠点は?
>>344 利点が見出せないみたいだが、
欠点くらい言えないの?
>>344 某3Dエロゲーメーカーの昔の作品は
Xファイル形式を採用していたので
ユーザーが自由に閲覧&改造することができた。
>>347 利点がないのにどうして使うんだよ。
利点がないのが欠点ってことでいいだろ。
>>349 利点、欠点の具体的な何かを挙げたらどうだい?
知識がないのに、口をはさむのは、やめたほうがよいです。
>>342 Xファイルは利点ばっかり(
>>345 ,
>>348 など他多数あり)なのでマジおすすめです。
ついでにグラフィックは.BMP形式を採用するとさらにいいかも。
利点 D3DXを使えば馬鹿でも使える。 テキスト形式もあるので、データをチェックしやすい。 参考資料が多い。 欠点 RIFF等と同じで、データ表現は統一されているが、 出力ツールによってはき出されるデータ内容はバラバラでありその都度調整がいる。 モーションブレンドを前提とした複数のアニメーションセットを有用に吐き出すツールが無い。 それを独自で作るのであれば、Xファイルを利用する意味はない。 どういったプログラムを作るかによって、この利点と欠点の比重が変わる。 初歩的なものであれば、Xファイルで十分だし、 踏み込んで色々やろうとすると、結局独自形式の道へ進むことになる。 2Dのイメージと違って、付随するデータが単純な形状の記録だけではないので、 最終的にはデータを利用するだけではなく、出力側も自分で作る必要が出てくる場合がある。 どうするかは何を作るかによりけり。
てっきり帰省してる間にネタスレになったのかと思った。
DirectPlayで自分のメッセージハンドラにメッセージを送る事って出来ますか? やり方が判らなくて困ってます。 (Win32のSendMessageとかPostMessage見たいな感じで) 使ってるのはIDirectPlay8Peerです。
>>356 自分のIDを指定して送れば良いんでない?
えーと、どこに質問していいやらわからずここにきました。 私のやりたいゲームがDirectX9.0以降を推奨動作環境としていまして そのゲームのインストーラーにDirectX9.0bのインストーラーもついていました。 さて、これをインストールして今まで動いてたゲームなどが動かなくなる危険などはございませんか? 自分はPC全般の仕組みが全然わかっていないため むやみやたらにインストしていいものかどうか判断が全くつけられないんです。 ビデオカードとかグラフィックカードとかとの関連性などございますでしょうか。 (例えばDirectX9を使うにはそういった周辺も強化?しないといけない、とか) また、もし万が一インストして不都合があって元に戻したいと思った場合 元に戻せるのでしょうか。今自分は8.01です。 長文すみませんが今日一日あちこちのサイトで調べてみたけどわからなかったので どなたか親切な方教えていただけないでしょうか。お願いします><; おまけ:推奨動作環境にPentiumV800MHz以上とかかれてるのですが うちのPCの仕様を調べるとCPU:AND Duronプロセッサ1100MHzと書かれてますが 800MHz以上だからこれはOKなんでしょうか? こちらはスレ違いなのでここできくなとおっしゃられるならどこにいけと教えてください><;; ほんと教えてちゃんでごめんなさい… 一応やりたいゲームの名前かいとくと…温泉もいっしょです…… トロと遊びたいよぅ(つд`) 温泉もいっしょのスレもみつからないしtt
そのゲームについては知らないけど、 DirectXはランタイムの後方互換は常にあるので9を入れて8のものが 動かなくなる可能性はない、はず。 あと簡単には元に戻せない、はず。XPだと復元ポイント作れば大丈夫かも? あとこういう話しは初心者板いくと親切な人がいるかも。
うああ、3pしてしまった。
みんなタイミングよすぎw
このスレが珍しく親切すぎてて笑った。
>>358 一応、名目上はDirectXのバージョン上げても下位バージョンの互換はうたっている。
それと、DirectXは複数インストール出来ないので、前バージョンのアンインストールを忘れずに。
それから、そのソフトで何をしてるか分らんが、
DirectX9を求めるアプリならDirectX9対応のボードが良いのは当り前。
変にDirectX9対応ボードのハード機能を使ってるアプリだと
ソフトウェア機能を使う事になったりして遅くなる可能性がある。
つーか、ボードの推奨位は記述してあるだろ?必要VRAMだとか。
特殊なアプリでも無い限り、パッケージ商品でIntelとAMDの違いを意識する必要はないかと思うが
キャッシュの違いも、スピードが少し遅い程度に考えていいんじゃないのかな。
しかもかなりスレ違い…というか板違いの内容なのに。 普段だった「板違い氏ね」で終わってるところだった。
>>358 DirectXはCOMとかだし、新しいバージョンを入れても古いバージョンの機能はそのまま
使えるよ。
書き漏れが…(連続カキコごめです;) ビデオカードの種類(といえばいいんでしょうか)を書けよといわれそうなのですが 自分のPCのビデオカードの種類がわかりません…… どこを調べたらビデオカードの種類がわかるのでしょうか。 一つのことを調べようとしたらその説明の中の一つの事がわからずまたその一つのことを調べようとして さらにわからないことがでてきて収拾つかなくなってます…tt もしかしたら情報あるかもなので 自分のPCの仕様を下に書いておきます。 NECVL100/3D CPU AMD Duronプロセッサ1100MHz チップセットVIA社製ApolloKL133AChipset ビデオRAM 16Mバイト グラフィックアクセラレータ VIA社製VT8364Aに内蔵 解像度 1024X768ドット
あああああっ 書き込んでる間に いっぱいレスついてました>< みなさんありがとうございますtt 369のカキコは忘れて下さい・・・ やっぱり板違いなんですね;;; それすらわからなくってどうもすみませんでした。 ほんと親切に感謝します!!!!!! いざ挑戦してみますーーーーー><
結果報告きました; 結局体験版はDirectX9をDLしてないとプレイできない為 製品版をDLしました。 DirectX自体は大丈夫みたいです。 でも3Dグラフィックボードとやらがだめでした>< とりあえずゲーム自体は大丈夫なので これ以降は別のスレで質問してきます。 板違いのイタイ質問なのに本当にどうもありがとうございましたっ。 感謝感謝ですtt あと、今後は書き込むときは一度新着きてないかどうか 確認してから書き込みます;; 逝ってくるので許してくだしゃあ(つд`)
グラフィックボードじゃなくてグラフィックカードでした… どっちでもいいって?ごめんなさい…tt
ちょっと排便してくる・・・。 いや、用便だっけ。脱糞?エクソダス? ウンチング? どっちでもいいって?ごめんなさい…)*(
うんちは女子供のするものだ。
376 :
デフォルトの名無しさん :04/01/07 03:06
ブリイッ!ブボッ!ブリブリブリィィィィッッッッ!!!! いやぁぁっ!あたし、こんなにいっぱいウンチ出してるゥゥッ! ぶびびびびびびびぃぃぃぃぃぃぃっっっっ!!!!ボトボトボトォォッッ!!! ぁあ…ウンチ出るっ、ウンチ出ますうっ!! ビッ、ブリュッ、ブリュブリュブリュゥゥゥーーーーーッッッ!!! いやああああっっっ!!見ないで、お願いぃぃぃっっっ!!! ブジュッ!ジャアアアアーーーーーーッッッ…ブシャッ! ブババババババアアアアアアッッッッ!!!! んはああーーーーっっっ!!!ウッ、ウンッ、ウンコォォォッッ!!! ムリムリイッッ!!ブチュブチュッッ、ミチミチミチィィッッ!!! おおっ!ウンコッ!!ウッ、ウンッ、ウンコッッ!!!
377 :
デフォルトの名無しさん :04/01/07 03:48
ttp://www.microsoft.com/japan/msdn/directx/downloads.asp 上記からダウンロードしたMicrosoft DirectX9.0日本語ドキュメントをインストールしたのですが、
VisualStudio.NETでC#でプログラミング中にMSDNライブラリ経由で読めません。
日本語ドキュメントをインストールしたらMSDNに統合されるという
予想だったのですが勘違いしているのでしょうか?
「インストールすると、Visual Studio .NET ドキュメントとして読むことができます」
と書いてあるのですが。。
みなさんどうしているのでしょうか?
インストールしたなら、ここに無い? ms-help://MS.MSDNQTR.2003OCT.1041/directx9_m/directx/legalinformation.htm
>>378 いや、ないです。
そもそもF1キーとかでMSDNの該当場所にジャンプ
っていう風にはならないのでしょうか?
ヘルプを統合していないからであろう。
>>380 おおお、いけましたありがとうございます。
感動。
トロにDirectX9+VRAM16Mを要求されるとは思わなんだ さて、自分のPCはDirectX9を入れて 8のDirect3Dのサンプルが全部動かなくなったんだが 9の3Dのサンプルも全部動かんし 嗚呼昔に戻りたい
全部動かんの意味が分かんね
>さて、自分のPCはDirectX9を入れて これをみて分かるとおり、根本的に日本語が不自由な外国人が書き込んでいるだけだから、 意味が分からなくても気にするな。 わざわざ日本の掲示板を使わず、自分の国の掲示板に書き込めばいいのにね。
>>382 それはSDKの話じゃなくて?
こういうのはみっちり詳細を書いてもらわないと実はまともなコメントはできない。
SDKの場合は少し説明がいる。
下位互換は所詮名目上ということ?
また下位互換と上位互換を混同している馬鹿がいる。
>>386 そもそもバージョンごとに使うdllが違うので動かないなんてことは滅多にないはず。
(この滅多にってのはたしかにそういう報告する奴いるんだけど俺はみたことない。
もし動かないことがあるとしてもそれぐらいの頻度ってことで・・・。)
SDKを入れたときはInstall DirectX Runtime Retailを実行しないと確かに変な動作をするときがあった。
下位互換であれば、上位のバージョン用に作ったプログラムが、 旧バージョンのDirectX上で動くことになる。 誰がそんなことを保証したんだか。
自演臭がする・・・
桶るーぷ 次の方どうぞ
自演臭がする・・・ループ2
396 :
デフォルトの名無しさん :04/01/08 00:46
サンプルを少し改良して、 IDirect3DVertexBuffer9 IDirect3DIndexBuffer9 使って DrawIndexedPrimitive(D3DPT_TRIANGLELIST 〜 で、16*16の頂点の正方形の面 を描画してるんですが 全ての面の光の量がすべて同じなのです 回転させると、全体がいっしょに黒くなったり明るくなったりするわけです。 DrawIndexPrimitiveじゃ、全部の面は、同じ光の量になるんですか? 対応策があったら教えてください
ポイント光源にして Aなんとか012を変更したら いけました。 おじゃましました
根本的に分かってないと思われ
法線だな…
法線が全部0.0fとか、頂点フォーマットが変とか
法線が全部0だとどっち向いても真っ黒だろうから、 全ての頂点の法線が同じ方向を向いてんだろ。
法線は、ちゃんとやってるよ。
ちゃんと暗く〜明るくなってるって書いてるだrお。
ポイント光源にしてAttenuation1をちゃんと設定すると
一部の人だけ明るくなったのさ。
ディレクショナル光源がこんなに大まかにやるとは、
わからんかった。
>>398 うるせー馬鹿
色んなことが根本的に理解出来てないだけかと思われ
法線も回転させているのかと聞いているんだが…
点光源は明るさが光源からの距離にも依存するから、法線が変でも一部の 人だけ明るくなったりするぞ。
こんばんわ。 DirectX9を使用して、フルスクリーンでダイアログを表示しようとしています。 ダイアログのプロパティで、Styleに"ポップアップ"を指定すると問題ないのですが "子"を指定すると、描画が上書きされてダイアログが正常に描画されません。 "子"を指定しても正しく描画する方法をご存じの方、解決法をお教え下さい。 (またはメインウインドウに貼ったコントロールをフルスクリーン時に正常に 描画する方法でも構いません、よろしくお願いします)
試してないけど、親にWS_CLIPCHILDRENとか指定してみたら?
409 :
デフォルトの名無しさん :04/01/10 15:31
こんにちわ。 VS.NET pro で DirectX9.0b を使用してスプライトの描画をしようとすると error C2660: 'ID3DXSprite::Begin' : 関数に 0 個の引数を指定できません。 error C2660: 'ID3DXSprite::Draw' : 関数に 7 個の引数を指定できません。 というエラーがでてしまいます。 二日ほどググったりしたんですが、回避できません。 どなたかアドバイスお願いできませんか? インクルードはd3dx9.h、dxerr9.h ライブラリはdxguid.lib d3dx9.lib dxerr9.lib d3d9.lib ツール→オプション→プロジェクト→VC++ディレクトリでのインクルードとライブラリの パスはDirectX9のものを最上位で指定しています。 if (SUCCEEDED(g_pD3DDevice->BeginScene())) { /*** スプライトの描画 ***/ static int alpha=0; g_pD3DXSprite->Begin(); g_pD3DXSprite->Draw(g_pD3DTexture, NULL, NULL, NULL, 0.0f, NULL, D3DCOLOR_ARGB(alpha>255?511-alpha:alpha,255,255,255));
DirectX云々する前に、もうちょっとプログラミングの勉強を したほうがいいと思う。角度とか。
412 :
デフォルトの名無しさん :04/01/10 16:02
>>411 はい、I/Oのサンプルです。
>>410 えぇ。PGの内容でないことはわかってるんですが、
どうしてよいのかがわからない・・。
I/Oのサンプルなんて使うな。 糸冬了
_| ̄|○
というより定義をみようとせずにgoogleで検索なんかしてる時点でどうかと思うが
static int alpha=0; g_pD3DXSprite->Begin(NULL); g_pD3DXSprite->Draw(g_pD3DTexture, NULL, NULL, NULL, D3DCOLOR_ARGB(alpha>255?511-alpha:alpha,255,255,255));
>>416 ありがとうございます。
d3dx9core.h を見てなんとなくわかってきました。
Unix Cでカチンコチンの頭なオレには、感覚がなかなかつかめない・・・
普通にヘルプ見ればいいじゃん。 Cでも引数の個数が違えばエラーになるのは同じでしょ。
>409 お前は何でSDKのドキュメントを見ようとしないんだ
ヘルプみたら ID3DXSprite::Begin メソッド HRESULT Begin(VOID); ってのしかひっかからないから・・・。
違うバージョンのヘルプ見てるんじゃない? ID3DXSprite::Begin Method HRESULT Begin(DWORD Flags);
>>420 で、何でヘッダやサンプルを見ずにgoogleで検索なんかしたのかね
BeginにフラグがいるようになったのはSummer Updateからだよね。 情報が少ない少ない。
日本語Docだと、まだBegin(Void)になってるね・・ 英語はちゃんと更新されてるの?
根本的にD3DXSprite自体が必要ないと思うのだが。
どうやら違うHelp見てたようです・・・。
http://www.microsoft.com/japan/msdn/directx/downloads.asp のMicrosoft DirectX 9.0 日本語ドキュメントでDLできるMicrosoft DirectX 9.0のヘルプをみてました。
VSのヘルプで検索したらDirectX9.0が引っかかって
HRESULT Begin( DWORD Flags);
がでてきました・・・。
>>422 一応ヘルプどおり(と思い込ん)だから、意味が解らなくておんなじ風になってるひと
いないかなとググってみました。
で、解らないから思考停止してしまいました。
以後気をつけます_| ̄|○
日本語版ドキュメントを当てにしているようではだめぽ。 英語読め。
コンパイルが出来ないとか、その詳細を書かないような香具師はどうしようもないな
>>428 答えは直前のレスにあるような気がする。
こんなエラーが出ます。d3dx9core.hを見たけどよくわかんない C:\dx92\dxutil.cpp(17) : error C2660: 'D3DXCreateFontA' : 関数が不正な 3 個の実引数をともなって呼び出されました。 C:\dx92\dxutil.cpp(193) : error C2039: 'Begin' : 'ID3DXFont' のメンバではありません。 c:\dx90sdk\include\d3dx9core.h(296) : 'ID3DXFont' の宣言を確認してください。 C:\dx92\dxutil.cpp(194) : error C2660: 'DrawTextA' : 関数が不正な 5 個の実引数をともなって呼び出されました。 C:\dx92\dxutil.cpp(195) : error C2039: 'End' : 'ID3DXFont' のメンバではありません。 c:\dx90sdk\include\d3dx9core.h(296) : 'ID3DXFont' の宣言を確認してください。 cl.exe の実行エラー dxutil.obj - エラー 4、警告 0
なんか同じ話題が続くな。 9.0用のD3DXつかったソースは 9.0(Summer) ではコンパイルできないよ。 というかD3DXってビギナー向けなんだからマイクロソフトも マイナーバージョンアップでこんな大胆に仕様変えないでよ...
ビギナーにドキュメントを読む習慣をつけるための 親心だったりして
パラメーターの数変わるのもアレだけど メソッド自体が無くなっちゃうてどうよ?
APIなんか容赦なく変えりゃいいべ。 C++版もC#みたくハンガリアンでなくなってくれたら最高。
単体のアルファや輝度をテクスチャで現すために、 A8R8G8B8使っているのですが、 1要素しか使わないのに4バイトも使ってメモリの無駄です。 A8やL8を使えれば良いのですが、 ビデオカードで対応がまちまちすぎて結構分けるのが面倒。 こういうのは一般的にどうやってるんでしょうか? やっぱりちゃんと分けてるの?
ターゲットPCに依存するんじゃネーノ? ビデオカードのCapsをイチイチ調べて、最適なものを選ぶようにするのが 親切といえば親切なんだが、それをやる手間とその効果(メモリ節約?) については天秤にかけたほうがいいと思う
A8フォーマットって対応してないVGA多いんかね? もしそうだったら…それはそれで驚き
で実際にメモリはどうなってるのかプログラムでどうこう出来るのかな? アライメントの関係でパディングされてたり、VRAMへの転送スピードが遅くなっていたり。 目先の数Kバイトしか見てないのなら、別に今時はどれでも同じかと…
1024x1024を4枚取ってるので結構違いが・・・。
444 :
デフォルトの名無しさん :04/01/13 22:26
最近頂点ストリームの使い方がやっとわかった。 本当にあってるかどうかちょっと確認。 例えばバンプなら float x,y,z; float nx,ny,nz; float u0,v0; float u1,v1; float tan_x,tan_y,tan_z; float bin_x,bin_y,bin_z; とかいっきに送ってたところを float x,y,z; float nx,ny,nz; float u0,v0; float u1,v1; float tan_x,tan_y,tan_z; float bin_x,bin_y,bin_z; とか別々に送れるようにするしくみってことでOKですか?
うん
446 :
デフォルトの名無しさん :04/01/13 22:56
>>445 カンシャ!!ヽ( ・∀・)ノ┌┛Σ)Д`)ノ・゚・。
ひょっとして SetRenderTarget した後って 勝手にサーフェス幅で SetViewport されてない? すっかり忘れとったのに上手く動いとる
448 :
デフォルトの名無しさん :04/01/14 09:53
エフェクトのテクニックとパスってどうやって使い分ければいいのでしょうか?
例え話だけど、こんな話。 テクニックとは、WMV 1pass mode、WMV 2pass mode、DivX 1pass mode、…、MotionJPEGなどのこと。 パスってのは、各テクニック中での1パス目、2パス目と言われるようなもの。 WMV 1pass modeなら、1テクニックに1パスで済む。 WMV 2pass modeなら、1テクニックに2パス用意して、1パス目の次に2パス目も実行しないといけない。 こんなんでok?
>>449 レスありがとうございます。
テクニックがいくつかのパスをもつというところまではわかるのですが
テクニックやパスのそれぞれがどこまでの作業を受け持つのかというところが理解できていません。
現在はかなり極端な組み方をしていてプログラム中テクニック1つでパスをたくさん作って
パスを切り替えることでシェーダを切り替えていますがなんか使い方をまちがえている気がします。
間違えてます
2パス処理ってのは、2回処理を施して、やっとトータルとしての処理が完成するものを言います。 全てのパスをあわせて、1つの処理なのです。
453 :
デフォルトの名無しさん :04/01/14 22:58
>>451-452 レスありがとうございます。
1つの処理に2パス必要なときというのはどういう状況なのでしょうか?
ライトが複数あるとかそういう状況でしょうか?
エフェクトを切り替えてもテクニックを切り替えてもパスを切り替えても
同じようなことが実現できてしまうので一体どう使ってほしいのか
理解できないでいる状態です。
454 :
デフォルトの名無しさん :04/01/15 00:53
みなさんに質問です。 現在、DirectShowを使っているソフトウェアにてDirectXGraphicsで3Dを描画しようとしています。 ですが、メディアサンプルの獲得にサンプルグラバを使っていますので、 DirectXGraphicsとの併用ができないそうなのです。 "qedit.h"と"d3d9.h"及び"d3dx9.h"をインクルードするとコンパイルエラーになります。 エラーの詳細は(こちらの過去ログにもありましたが)以下のような感じです。 should not include d3dtypes.h when compiling for DX8 or newer interfaces c:\DXSDK\Include\d3drmobj.h(46) : warning C4005: 'WIN_TYPES' : マクロが再定義されました。 c:\DXSDK\Include\dxfile.h(48) : 'WIN_TYPES' の前の定義を確認してください c:\DXSDK\Include\d3drmobj.h(274) : error C2061: 構文エラー : 識別子 'LPDIRECT3D' c:\DXSDK\Include\d3drmobj.h(299) : error C2061: 構文エラー : 識別子 'LPDIRECT3DDEVICE' . . ここでお伺いしたいのですが、 このソフトウェアの仕様で3D描写を行うのに 何かしらの手段によってDirectXGraphicsを用いることが出来るのか否か、ということです。 過去ログ及び他サイト様でも同様な質問を拝見しましたが、確証が持てなかったので質問いたしました。 宜しくお願い致します。
455 :
デフォルトの名無しさん :04/01/15 02:59
グラバage
>>453 例えばシャドウマップによる影の表現は1つの処理に2回の描画が必要。
1度目の描画はライトの方向からオブジェクトのZ深度をテクスチャに描画。
2度目の描画で通常視点から描画するときに、その情報を用いて描画すると、影が描画できる。
具体的な方法はWebに散々ちらばってますから参照してみてくだしぃ。
確かにパス切り替えだけでも出来るのは事実なんだけど…
なんつーか、エレガントじゃない。(笑)
>>454 サンプルグラバなんてやめて、DirectShow の Texture3D みたいにやれば?
458 :
デフォルトの名無しさん :04/01/15 15:26
>>456 レスありがとうございます。
なるほどそういうときに使うのですね。
私はその場合はレンダリングターゲットの設定などもはさむので
別オブジェクトの描画扱いでやってしまっていました。
なんとなくパスの切り替えの意味がわかりました。
将来性も考えてシェーダの切り替えはできるだけテクニックを切り替えて使う方がよさそうですね。
ツールとかできてきたときあんまり特殊な方法でやっていると対応に苦労しそうですし。
どうもありがとうございました。
>457 レス頂きましてありがとうございました。 サンプルグラバを用いたアプリの仕様を変えることが許されていない状態なのです。 「サンプルグラバなんてやめて」と仰るということは、 やはりサンプルグラバとDirectXGraphicsは併用が不可能という意味なのでしょうか。 レス頂けたら嬉しいです。
>>459 そんなことないよ。qedit.h を include するのをやめれば良いだけ。
>>459 以前、同じ問題ではまりました
確かqedit.hで古いバージョンのDirectXを使用しているということで
そのためにおかしなことになるという話を伺いました
立方体を作りたいと思ってますが8頂点で作ることは可能でしょうか? ちなみに6面全部違うテクスチャを使いたいです(サイコロと同じイメージ) 立方体を作る関数というのはあったのですがテクスチャの張り方がわかりません。 どなたか教えていただけないでしょうか。
463 :
デフォルトの名無しさん :04/01/16 19:11
(・ω・)ノ■タベマセンカ
今日本屋行ったら前に並んでる奴がシェーダプログラミング買ってたぞ。 レポしる!
8頂点では不可能ということでしょうか。 普通に四角形6つを隣り合わせに作るしかありませんか… ご解答ありがとうございます!
>>466 4頂点の板にピクセルシェーダで立方体描くってのは?
>>462 可能。キューブテクスチャを使う。
あれだよね?スカイボックス作るんだよね?違う?
DirectXで言われているコールバック関数って何? 用語集に載ってないって事は常識なのこれ?
>>469 じゃあ検索してみようとは思わないのか。
検索しても過去に検索して出てきたサイトが見つかるだけ そして愛も変わらずコールバック関数は理解不能 ここで詳細キボンヌ ググれと指摘される 始めに戻る 完
>>471 「コールバック関数とは」というように検索しる。
上位10サイト以上は最低でも読んで、それでも解らなければ、ここで訊いてもムダ。
さんくす がんばってみるよ
よっぽど特殊な場面でも無い限りコールバック関数なんて使いたくないが DirectXやWin32API使っていると強制される場面がたびたびあるな。 気にいらねー。
DirectXにコールバック関数なんてあったっけ...
462と似てるけどskinnedmeshのtiny.xは一枚の テクスチャを貼り付けてるけど作り方解説してるサイト ありますか?
>>477 普通、3Dソフトでモデルを作って、
その頂点とUV値を出力して利用するんじゃないの?
別段特殊な事はやってない。
>>476 DirectInputのEnumなんちゃらとかかな…。
>>460-461 レスありがとうございます。
なぜエラーが起こるのか、及び対策について考えることができました。
おかげでそれなりに良い代案が思い浮かびました。ありがとうございました!
DirectXをインストールして、DirectX Sample Browser内のプログラムをビルドすると C:\Dx90sdk\Samples\C++\Common\dxstdafx.h(22) : fatal error C1083: インクルード ファイルがオープンできません。'D3DX9.h': No such file or directory ってエラーがでるんですけど、これってインストールに失敗してる?
インストール後の作業をしていない。 パスを通しなされ。
ディレクトリを登録して無いだけとか・・・そんなわけないか!アハハ・・・
>>481 こういう写実的なテクスチャじゃなくて、
ゲーム向けエフェクト系のテクスチャやアニメについて解説している
書籍、サイトって無いでしょうか?
「DirectXゲームグラフィックスプログラミング」 基礎しか書いて無いから、実際に使おうとすると努力が必要だが。
487 :
デフォルトの名無しさん :04/01/17 13:26
>>485 そういうのはないけど、俺が会社でみたのは
高いモデリングソフトでレンダリング結果をそのままゲームで出してしまうことが多い。
ムービーだったりテクスチャアニメにしたりして貼るだけ。(早いときは5分でできる)
なので俺は高いモデリングソフトでのやり方とかAfterEffects使ったやり方しか知らない。
でもテクスチャの作り方だけならコレ↓なんか参考になるかも。
http://www.amazon.co.jp/exec/obidos/ASIN/483990894X/250-0323931-2989837 でもやっぱりモデリングソフトの性能の方がウエイトが大きいことはたしか。
あんまりこれみて頑張ると損するかも。(金がないと派手なものは作れないな)
(エフェクトなんか中小の会社じゃ作業時間なんかとってもらえないし。)
基本はアニメーションしたモデルなりテクスチャなりを垂れ流すだけ。
こんな程度ですまん。
あ、あと、写実じゃないっていっても魔法で出てくる炎や岩とか水なんかは
結構リアルでしょ?アレもテクスチャは写真貼ってる奴とかモデリングの出力結果が多いと思うよ。
CG板とかチェックするよろ。 プログラマも最低限のCG知識が必要になってきたからな。吾輩もいろいろいぢくってる。 せめて2Dで仮ドット絵自分で描いてたのと同程度のことが3Dでもできんと。
490 :
デフォルトの名無しさん :04/01/17 17:35
∧,,∧ @
ミ,,゚Д゚彡. //
⊂ミ S⊂) //
*〜ミ ,,,,,゙,,づζ
し′
_∧__________
/
.|
http://homepage2.nifty.com/natupaji/DxLib/dxuse2.html#R2 \__________
∧,,∧ @
ミ,,゚Д゚彡. //
⊂ミ S⊂) //
*〜ミ ,,,,,゙,,づζ
し′
_∧__________
/
.| Spheremap Generator
.|
ttp://www.unwrap3d.com ここからsmgv10.zipさがせ
\__________
>>490 それどっちもキューブマップを元に作ったものだよ。
上はDual-Paraboloid Environment Mapping用のテクスチャで、1枚のテクスチャに
180度分の背景が描かれていて、2枚1セットで使う。
下はSphere Mapping用のテクスチャで1枚に360度分の背景が描かれている。
Dual-Paraboloidは放物面を、Sphereは球を完全鏡面として正射影で描画したもの。
Dual-Paraboloidの方が歪みが少ないし、その背景は幾何学的な部分がないから
分かりにくいけど、同じとこにあるnvとかmsのを見れば歪んでいるのが分かるかと。
上の画像から下を作ることも可能だけど
>>492 のやつでキューブマップから作った
方がいいんでないの?
>>489 インクルードファイルがどのディレクトリにあるかコンパイラに分かるように、
パスを通すと言うこと。
Zバッファ対応してないビデオカード存在しますか?
まー実際のところはそんなVGAは切り捨てていいけどね。
3Dゲーム遊ぶつもりなく買った人のPCでしょ。
500 :
デフォルトの名無しさん :04/01/18 00:42
>>492 おお!ありがとうございます!
>>493 丁寧な説明ありがとうございます。
そういうものだったのですね。
全く知りませんでした。
ところでスフィアマップってどういう理由で使うのですか?
キューブマップが使える環境ならキューブマップを使った方がいいのですか?
遠くの背景や空なんかはキューブマップみたいに作っているのですが。
>>500 キューブマップが使えるようになったのはGeForce/Radeon世代になってから
だから、RivaTNTやRageだと使えないのよ。あとintelの815も駄目かな?
スフィアマップは法線をほとんどそのままテクスチャ座標として使うだけだから
実装が物凄く簡単で、TnLHALならハードウェアの支援も受けられる。
ただし、視点を動かすことができないという致命的な欠点がある。
Dual-Paraboloidはスフィアマップの欠点を克服したもので、視点を自由に動かせる。
これも実装は簡単でハードウェアの支援が受けられる。
キューブマップが使えるならキューブマップの方がほとんどの面で優れているから
無理に使う必要はないよ。
透過用のアルファ値を反転させて表示させようと思い、 単純に pDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); pDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); ↓ pDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_INVSRCALPHA); pDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCALPHA); としてみたのですが、上手くいかず、 pDev->SetRenderState( D3DRS_ALPHATESTENABLE, FALSE ); を追加したら上手くいきました。 D3DRS_ALPHATESTENABLEがTRUEの時にブレンド処理がされる物とばかり 思っていたのですが、実は違うのでしょうか?
503 :
デフォルトの名無しさん :04/01/19 00:57
>>501 レスありがとうございます。
スフィアマップやDual-Paraboloidは
キューブマップが使えない環境で環境マップを使うための技術なのですね。
このままキューブマップを使おうと思います。
丁寧な説明ありがとうございました。
>>502 D3DRS_ALPHATESTENABLE はアルファテストで
D3DRS_ALPHABLENDENABLE がアルファブレンド
>>504 確かによく見ると・・・。
アルファが0の所は先にアルファテストで抜かれて、
アルファが255の所はD3DBLEND_INVSRCALPHAでさらに抜かれて、
全部透明になってたんですね・・・。失礼しました。
自分で3DCG書こうと思ったら結構大変ですが、皆さんどうしてます? Xファイル素材集みたいな物は無いのでしょうか? メタセコイヤで作ろうと思ったんだけど予想以上に面倒で挫折しそうです・・・
同士発見。 パッケージ買おうかと考えたこともあるけど、 3Dの素材集だけやたら高いんですよね・・・
まともなモデルを利用する3Dは、貧乏人には向かない。
>>506-507 かっこいいもの作ろうと頑張るなよ。
○とか■でも適当に組み合わせてそれっぽくみえりゃいいじゃん。
手間をかけずにそれっぽく見えるようにする技術を身につけろ。
会社でも役に立つぞ。
510 :
デフォルトの名無しさん :04/01/19 22:11
スプライトっぽい機能のものを作ろうとして四角形の形のメッシュを 作ったまではよかったがこれってもしかして移動するにも シェーダにそういうしくみを作っとかなきゃいけないのか・・・。 2Dだから3X3の行列を渡せばいいのかな?
>>509 おっしゃる通りなんですよね。
それっぽいものでまったく問題ないのですが。
最後の行には同意なんで、がんがって精進します。
素材集ってほとんどがプリレンダにしか使えないよ。
データとして素材が抽出できるような使い方は駄目っていうライセンスが普通。
>>510 どう組んだのか知らないが、スプライト使うならトランスフォーム済みの頂点
フォーマット使えばそのままスクリーン座標で指定できるから楽だよ。
513 :
デフォルトの名無しさん :04/01/20 01:05
>>512 つか、この場合って頂点バッファ作らないでやっちゃってもいいんですかね?
>>513 そんなんどっちでもいいよ。頂点バッファの方がちょっと速いだけだし。
むしろ頂点バッファは扱い方を間違えると遅くなるから、初心者はUPの方が
いいかもしれない。
515 :
デフォルトの名無しさん :04/01/20 01:24
>>514 UPの制限が気にいらないっす。
ストリーム0だけっすか・・・。
516 :
デフォルトの名無しさん :04/01/20 18:04
>>515 DX8ドライバならXYZRHW頂点は結局ストリーム0オンリー
517 :
デフォルトの名無しさん :04/01/20 22:16
プレビューにモデルも出せません。
わかりました 私の使っているグラボがps2.0をサポートしていないため 何も出なかったみたいです。 ∧||∧ ( ⌒ ヽ 逝ってきまつ ∪ ノ ∪∪
>>517 普通に動いたが使い方がわからん。
ちょっと誰かこれの使い方教えて。
ちなみにエラーが90個も出る。例えば c:\DX90SDK\INCLUDE\d3dvec.inl(20) : error C2511: '_D3DVECTOR::_D3DVECTOR' : オーバーロードされたメンバ関数が '<Unknown>' にありません。 とか。
>>522 dd_lib.hを書き換え、dsound.hより先にd3d.hをインクルードするようにすればいい
そんな糞古いサンプル捨てろよ
>>523 ありがとうございました。
>そんな糞古いサンプル捨てろよ
3D空間を動き回るサンプルがこれ以外見つけられなかったのもので・・・。
>>525 これ.NETですよね。VC++6.0でも出来ます?ビルドしたら
c:\libsrc\afld3dobject.h(17) : fatal error C1083: インクルード ファイルがオープンできません。'boost/shared_ptr.hpp': No such file or directorycl.exe の実行エラー
って出るんですが。
どこかにboostフォルダを作ってその中にshared_ptr.hppを入れるのですか?
ホントにこのスレはインクルード ファイルがオープンできないスレだな
boostって言ったらあれしかないだろ googleで検索汁
529 :
デフォルトの名無しさん :04/01/22 14:46
3Dのサイコロが転がって目を決めるプログラムを作ってけろ! これが出来ねえと留年だ俺! 誰か出来たらどっかにUPしてけろけろw
留年しろけろ。けろけろ!
>けろけろw まだ余裕がありそうだな。
533 :
デフォルトの名無しさん :04/01/22 19:30
サイコロをマジでやるなら剛体力学を扱うプロムラモになるな。 平面以外の床も扱うなら衝突チェックもエライ免独裁。 そこまでやるなら空気抵抗も考慮せねばなるまい。 ここはおとなしく留年してけろ
モーションを6パターン作(ryけろけろ
誰かドミノシミュレーション作って100万枚くらい置ける奴
サンプルのビルドにすら難儀するレベルだからな。ここの住人
>>536 え?苦労するでしょ、っていうか面倒であることはたしかでしょ。
俺の感覚からすると「どうしてVC使っててビルド一発で動かないの?」って思うけど。
はっきりいってすっげー下手糞だろサンプル組んだ奴って。
マイクロソフトのページににおいてあるDirectX8のサンプルも
バージョンが変わったせいか古いSDKとってこないとビルドできないしね。
っていうか同じファイル名のバージョン違い作るなよ。ド級のアホだろ?
世の中下をみるとそれなりに下っているもんだねって安心するよ。マジで。
ちなみにnVidiaのサンプルも一発では動かない。
対してATiは一発で動いたりする。
>「どうしてVC使っててビルド一発で動かないの?」 普通にヘルプを読めば一発で通るが……。
サンプルの出来は別として一応動くかな。
頂点シェーダを使っていろいろ実験してみたいんだけど、 D3DXLoadMeshFromXで読み込んだメッシュを DrawSubset()と用いる代わりに、頂点シェーダ使って描画することってできんの?
DX9ならシェーダ使っててもDrawSubset()でいけるよ。 DX8の場合はGetVertexBuffer,GetAttributeTable等を使って自力で DrawPrimitiveすればできる。
>>541 情報ありがとう。DX9なら直にできんのですか…バージョンアップしたい
とりあえずは後者の、テーブル属性値を自前で確保する方法に挑戦してみます。
543 :
デフォルトの名無しさん :04/01/24 20:27
DirectXってまだほとんど仕様が固まっていないな・・・ 勉強はもうちょっと後にしよう。
>>543 お前の寿命が来る前に固まるといいな。
どうせ何もできない言い訳にしているだけだろうけどな。
>>543 固まっていないのではなく、MSがDirectXに関しては容赦なくAPIを刷新するポリシーなだけ。
大多数のゲーム開発者はちゃんとそれについて行っている。
まあ Longhorn がリリースされるまでは大きな変更はないと思うから今のうちにやっとけ
LonghornでDirectX8時代のゲーム動くの?
固まるもなにも、技術の進歩に合わせて常に変化しているんだから、グラフィック アクセラレータの進歩が止まらない限り、ずっと変わり続けるよ。 逆にDirect3D以外は既に更新が止まってるが。そういう意味では固まってる。 新しいバージョンが出てもDirectX7を使い続けたって構わないんだから、自分の 要求を満たすバージョンで覚えてそれを使ってりゃいいんだよ。 今からやるなら、2D系なら7、3D系なら9がいいかと。
今からやるならなおのことDX9一本に絞っていいだろw
DX10が出るのは2年は先のことだしな
>>551 2年ででるのかな?
とりあえずLonghornを様子見。
2Dアクション作ってる方に質問です 2Dやろうと思ってるんですがDx9でも問題ないのでしょうか? 友人からは2D(DirectDraw)ならDx7といわれましたが、 Dx9でテクスチャ貼るような感じで無理やり3D→2Dでやった方が色々と楽なような気もしますが(回転とか拡大とか半透明とか)
その通り
>>553 ノートPCなんかだとDirectDraw+ソフトウェア処理の方が軽くない?
や、もちろん品質にも差がでるだろうから3D使える環境なら3D使ったほうがいいと思うけど。
>>553 DX7とDX9を両方使って、DX7と言うなら分らないでもないが…
恐らく、DX7派ってDX9を使ってない、理解出来ないとかなんじゃないかな。
あ、DX9は理解出来ないからDX7ってなら納得。
派とかどうでもいい話すんな。 各々の案件に適したバージョンを採用せよ。 終わり。
そうそう。 2chってすぐ対立論争させようとするよな。くだらねえことで。 自分の優位性をそういうところに見出そうとしてるんだろうな。
相槌打つなら無言にしてくれ
ノートを守備範囲にいれるならDX7しかないよね。 3Dで640x480描くだけで60FPS絶対でない。 でも、実は座標変換済み頂点だけを使用したらそうでも無いの? 実は試したことないので。
>>562 ノートもいろいろあるからそうとも言えんでしょ。
でも今どきDirectDrawの方が軽いってのは
かなりしょぼいノートだと思うぞ。
Dx9でも特に問題はないということですね ノートの人はごめんなさいということで、Dx9でいくことにします
>>562 自分のノートでは変換済み頂点だけでも話にならなかった。
エロゲくらいは動くがなー。
ま、ノートPCは切るってのが一番かも
830Mとか、最近のCentrinoノートPCならIntel Extreme Graphics 2が載ってるから、
廉価デスクトップPCと同程度の3D性能はある。
2Dゲーや軽い3Dゲー程度なら楽々60fpsで動くってこった。
A4ノートならMOBILITY RADEON 9000以上やGeForce Go搭載はもう珍しくもない。
全体的にノートPCでもちゃんと3Dをサポートしようという方向に向かってる。
FF11くらい動かないとまずいでしょって雰囲気。
Longhornのこともあるし、今からDirectX 7で頑張るのは正直おすすめできないな。
目前に迫るDirectX 9統合チップセットラッシュ
http://pc.watch.impress.co.jp/docs/2004/0123/kaigai057.htm とのことだし。あと、このサイトが参考になると思う。
http://www.kettya.com/
α付きテクスチャ*αカラー をターゲットに対しαブレンド ぐらいができれば、 Zバッファはなくても2D的用途には問題ないように思うがどうか。
Bltだけで用が済むようなのなら、DX7の方が圧倒的に良いと思うが。 半透明・回転が必要ならDX9の方がいいけど。 ただ、ウィンドウモードを実装しようとすると、DirectDrawは面倒。 Direct3Dはフォーマット変換もやってくれるから楽なんだけどね。 俺は今でも用途にあわせて、3,7,9を使い分けてるよ。 NT4でも動かしたいときだけ3で、基本的には7か9だな。
>569 そう考えるとx8以降は便利だよね いい世の中になったもんだ ガッ ガッ ガッ
571 :
デフォルトの名無しさん :04/01/27 00:46
VB+Win2kで2Dスプライトの高速描画をやろうと思っています。 いにしえのDirectDrawを使おうと思っています。 最近のVGAドライバは余裕でDirectDrawに完全対応しているのでしょうか? DirectDrawは枯れた技術なので、どんなマシンでもOS並に動作が安定する ことを期待しています。実際にはどうなのでしょうか?
DirectDrawに対応してないVGAって… そんなのもううんこVGAだよ
>>572 流石に最近になってDirectDraw非対応のVGAは見ないけど、
DirectDrawに中途半端に対応していてBltが変な動作して、
ビットマップ表示が欠けるというのは見たことがあります。
皆様、最近のVGAでのDirectDrawの動作不安定報告もしていただけると嬉しいです。
俺のTrio64ですらDirectDrawは使えるぞ。 7とかは試してないから怪しいけど。
OS並に安定させたいならGDI使うしかないだろう。
>>571 DirectDrawとか言う括りじゃなくて、capsで個々の機能を調べないの?
577 :
デフォルトの名無しさん :04/01/27 20:51
質問 お金がなく、今年のVisualStudioのメジャーVerUpまでVC5を使わざるを得ない者 です。DX8の勉強をしているのですが、dx8dx.hを使うサンプルをコンパイルすると UINT_PTRが定義されていない、というメッセージを発し終了してしまいます。 #include "basetsd.h"を加えれば無事コンパイルできるのですが、どうも DX8SDKを使うに当たって根本的な設定を間違えている気がしてなりません。 VC6以降を使われている方はソースでどのようにUINT_PTRが定義されているのか 教えていただけると幸いです。
悩んでる暇があったらバイトして金ためろ
UINT_PTRを検索して全て(unsigned int)にすればして セーブすればいいだけ・・・。
Platform SDKをUpdateするって選択肢はないのか…
>580 過去ログネタですか?
おい、迅鉄が金ゴキ持ってるらしいが借り物だよな?
誤爆
586 :
デフォルトの名無しさん :04/01/30 00:58
Xファイル読み込んでテクスチャ貼り付けたのはいいんだけど、 なんか影がついてないように見える。 ちなみにテクスチャを貼り付ける前は(生の状態)ちゃんと影っぽいのできてた。 こういう時に何がありえる?
>>587 わかんない人は無理してレスしなくていいです・・・(^_^;)
>>586 キチンと説明出来ない人もレスしなくていいです・・・(^_^;)
キチンと説明できる人はそんなことで悩まないかもしれない。
こんなことで悩む香具師はまあいないだろうな
マジレス 影ではなくて陰では? SetTextureStageStateで適切な設定がされているか確認汁 特にD3DTSS_COLOROPがD3DTOP_MODULATEになってるか確認汁
593 :
デフォルトの名無しさん :04/01/30 13:50
3Dアクションゲームを作成しているのですが、 Xファイルを読み込んで、Xファイルに事前にツールで入れておいたアニメーションデータを 使用して、アニメーションさせるやり方をしてゲームを作成しています。 最近、あるサイトで親子関係のアニメーションを計算でやっているものを見つけました。 こちらの方が、アニメーションを計算で行うため自由度が高いと思うのですが、どうなんでしょうか? 3Dアクションゲームの場合、どちらがむいているのでしょうか? レベルの低い質問ですが、アドバイスの方お願いします。
>>593 真面目な話、普通のアクション物なら、事前に作ったモーションを再生するのが一番でそ。
アニメーションを計算でやるって…もしかしてKanekoさんとこのIK格闘の奴?
あれは割とネタっぽいところがあるんでそこまでせんでいいかとw
>>593 参考までに、私の例を紹介しておきます。
私が作り中のFPSでは、人体モデルの各ボーンを物理法則に従って計算させてます。
1体あたり21ポーンの人体モデルを5体配置するとフレームレートが30位になって
しまいます。ちなみにCPUはPen4 1.5GHzです。
銃身を微妙に動かしたり、自然な足さばきができるのでいいのですが、
キャラが少ししか出せないのでは仕方ないので、主役キャラ以外は、
素直にモーションデータ使おうかなと考えたりもします。
一応、計算量を減らせないかと思案中ですが。
レスありがとうございます。参考になりました。
>>594 氏
Kaneko氏のところではないのですが、やってることは同じようです。
>>595 氏
体験談非常に参考になります。
597 :
デフォルトの名無しさん :04/01/30 18:25
DirectInputのキーボードの入力処理で使うDIK〜をアスキーコードに変換するにはひたすら分岐書くしかないでしょうか?
どうせ連番で定義されてるだろうから値調べて計算で変換したら? 定義変わったらアウトだけどまずないだろ つかそいつはDirectInputが必要な処理なのか?
>597 もしくはテーブルを作るか。 >598 だいたいキーボードの配列順だから、計算では無理。
>>593 市販ゲームの多くは、その両方を組み合わせているよ。
基本的にアニメーション再生で、手足はIKで地形に適応させて、服や髪を
物理シムで計算して、首はターゲットの方を向かせる…といった感じ。
アニメーション再生するかしないかと択一的に考えずに、柔軟に組み
合わせて使うのが良いかと。
上に書いたように1つのモーションに両方を組み込むのが面倒なら、
例えばパンチやキックは事前に作成したアニメーション再生だけど、
吹っ飛んだりダウンしたりするときは計算で求めるとか。
タイピングのゲームつくってるんですが 文字列の現在位置と同じキーが押されたら〜みたいなことをやりたいのです。 DirectInputいらないと言われたらいらないですね・・・
普通にいらんでしょ DI使う意味がわからん
きっとジョイパッドでカーソル操作してミスったら振動とかやりたいんだよ多分。
ああ、なるほどな タイプミスったらチンコマシーンが作動すると
人類の英知がまた1ページ
人類のエッチがまた1ページ
またBBXdj
DirectX 9.0 SDK Update (Summer 2004) Beta 1が出た。 というわけで、今年もコアの更新はないようだ。
そりゃないだろうよ
DirectX9を使ってアクションゲームを作っています。 手元の参考書にキーフレームアニメーションという項目があるのですが、 モーションなどを、キーフレームで考えるというのは納得できるのですが その参考書には移動もキーフレームで行っています。 長い距離を違う動作環境で移動させた場合、PCスペックによって移動距離に 差がでるので、キーフレームを使用するというのには納得がいくのですが キーを押した時だけ移動するような、短距離を移動させる場合に キーフレームが必要なのか疑問です。 みなさんは、キャラクターを移動させるときどのように考えてますか? 長文ですいません。
>>610 お前がサンプルよりいいやり方を思いついたなら、それをやればいいんだよ。
ただ、これは間違い。本質的に別問題。
>長い距離を違う動作環境で移動させた場合、PCスペックによって移動距離に
>差がでるので、キーフレームを使用するというのには納得がいくのですが
なんかその阿呆な質問の内容にデジャブーを感じるのだが。 どこかのコピペ?
>>611 >長い距離を違う動作環境で移動させた場合、PCスペックによって移動距離に
>差がでるので、キーフレームを使用するというのには納得がいくのですが
これは、同じ時間移動処理をさせると、PCのスペックにより移動距離に差が出るという
意味でした。記述ミスすいません。↑でも本質的に別問題なのでしょうか?
DirectX ゲームグラフィックスプログラミングという本にそういう事が書かれていました。
別問題
>>614 どのように別問題なのでしょうか?
何度も読み返したのですが、別問題というのがまだ理解できません。
アドバイスをお願いします。
キーフレームと時間って無関係じゃないのかね。
>>615 その参考書の名前をさらせよ!
つか、もう、その参考書捨てた方がいいよ!マジで!
理解の仕方間違えてるだけかもしれないけどね。
>>616 うぇええ!
無・・無関係ですか・・・。
通常のアニメーション=1コマごとに指定
キーフレームアニメーション=時間単位で動きを指定
って書いてますね><。
>>618 図で書くと
<キーフレーム無しのアニメーション>
----------------------4コマで1m移動--------------------
PCが早い場合 ○→○→○→○→●
1秒間に4コマ処理
PCが遅い場合 ○→○→●|-------| ←1秒間の移動量が違う
1秒間に2コマ処理
<キーフレームのアニメーション>
----------------------4コマで1m移動--------------------
PCが早い場合 ○→○→○→○→●
1秒間に4コマ処理
PCが遅い場合 ○→→→○→→→● ←1秒間の移動量が違う
1秒間に2コマ処理 それでも1秒間の移動量は1m
こういう図が説明のところに載ってますね。
遅いPCの時は50cmずつ移動させればいいだけ。 キーフレームの使用とは全く関係ない。
>>620 時間を考慮しないで移動させれば、速度が変わってしまうのは当たり前。
それとキーフレームにどういう関係があると思ったのか、具体的に説明せよ。
・普通のアニメ
10コマ分のフレームを用意する。
・キーフレームアニメ
キーとなるフレームを3枚だけ用意し、途中のフレーム(残り7枚)は計算で求める。
ということでまず、上のどちらかでアニメの素材を完成させたところで、
次に、
>>620 のように、単位時間でどれだけ移動させるとか、
単位時間で何コマ動かすという話になるんでしょ?
624 :
デフォルトの名無しさん :04/01/31 20:58
ポリゴンの裏面というのはどう作ればよろしいのでしょうか。 普通に三角形を描いたとして、表が白・裏が黒みたいにしたいのですが。
そういうのは点ABCを結ぶポリゴンと点ACBを結ぶポリゴンの2枚を使えばOK 最近は一発でいける方法があるらしいねぇ
626 :
デフォルトの名無しさん :04/01/31 21:34
ありがとうございます。 ポイントリストの順番を変えたものをもう一個用意すればよろしいのですね
法線とかいらなければ、CULLMODEを逆にすれば同じ頂点データでいけるが。 色とかを変える必要すらないなら、D3DCULL_NONEで1回で描画できる。
>>627 表が白で裏が黒って書いてあるから
わざわざ625みたいに書いたわけでそ
んなこたあ
>>627 も分かってるだろ。わざわざいらんツッコミするヤツだな。
俺から見たら627が要らん発言なのだが… だって色を変えたいんで質問してるのに 色とかを変える必要すらないなら、 って全く逆の前提の話の解答してるんだもん あーもうこんなどうでもいいことで突っかかって俺も馬鹿だな
ワケの分からん屁理屈ツッコミが多いな。このスレ
633 :
デフォルトの名無しさん :04/02/01 19:30
>>625 行列はどのようにすればよろしいのでしょうか
ABC,ACBの二つを用意し、
同じ回転行列で描いたところうまくいきませんでした。
>>633 発想を変えてみれば?
平行移動成分は同じで
回転成分はABCのポリゴンを原点で180℃回転した物を、ACBに使うとか。
もっと良い方法があるかも知れんが…
x,y,zからディスプレイの座標(x,y)に変換 するにはどうすればよいでしょうか?
Pick...
サンプルくらいは見ろよ
まじこういう質問する人って 3Dグラフィクスがどうして表示されるのかとか勉強してからのほうがいいと思う
どうやって勉強するのでしょうか?
勉強のしかたを知らない人が増えています
勉強やめますか?それとも人間やめますか?
藻前ら,635ごときに熱くなるようじゃ 2流から抜け出せないぞ。
人間をやめて吸血鬼になれば超一流
DirectXを使ってRealOnePlayerのファイルを再生したいんですが、 どうしたらいいんでしょうか。フィルタに何かを指定したり するんでしょうか。
sage書く場所間違えた_| ̄|○
>>638 そう馬鹿にしたもんでもないよ。
俺、rhwを使わないで自力でシェーダ使って
ディスプレイ座標に変換しようとしたとき本当に迷ったもん。
648 :
デフォルトの名無しさん :04/02/02 07:02
>>634 やはりどうもうまくいかないみたいです
表と裏を0.013f離すとそれっぽくは見えますが。
それより短いと筋が入ったように変な表示になってしまいました。
座標変換でもシェーダ使いとD3DX使いじゃ、差がありすぎじゃんw
>>648 なぁ?カリングって知ってる?
これがわからないと解決できない問題なんだけどなぁ・・・。
例えばDirectXはどうやって三角形の裏表を判断しているのかなぁ・・・って話なんだけど。
筋が入ったような変な表示になるのってのは要するに
白と黒のポリゴンが同時に描画されてしまっているわけよ。
でも、望んでいる結果は白か黒のどちらかが描画されてほしいわけよ。
いま、君は白と黒の2枚のポリゴンを使って書いているわけよ。
いうまでもなくこのそれぞれに裏と表が存在しているわけよ。
問題は裏を向いているポリゴンが描画されてしまっていることなのよ。
白だけを描画してほしいのに黒も描画されてしまっていて、
黒だけを描画してほしいのに白も描画されてしまっている。
つまりだな・・・。
カリングの設定をきっちりやらないと未来はないぞってことなのよ。
device->SetRenderState(D3DRS_CULLMODE,D3DCULL_CW);
とか
device->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW);
とか
とりあえず突っ込んでみろボケ。
651 :
デフォルトの名無しさん :04/02/02 08:52
652 :
デフォルトの名無しさん :04/02/02 08:54
>>651 __ __
\ \./■ヽ/■ヽ/■\ / /
\ ( ´∀( ´∀( ´∀`/ /
>>650 環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。
ん?誤爆だなw
DirectX7 ですが、サーフェスロストのリストアが非常に面倒くさい。 本当にみんな、Blt系メソッドを呼び出すたびに DDERR_SURFACELOST をチェックして、リストア処理しているの? ヘルプには、多くのメソッドはロスト状態を検出すると DDERR_SURFACELOST を 返してあとは何もしない、てなことをと書いているから、ロストしていようが 何だろうが、描画処理を全て終えてから IsLost() を呼び出してチェック しているけど、こんなので問題ないんだろうか…。 DirectX8(DirectGraphics)以降では、ロストをどう処理しているのだろう。
>>658 そんなことしてねーよ。
俺は、ロストしたらフリップが失敗するからそれでロストしたと判断してるけど。
そのときにとりあえずデバイスまわりはすべて破棄する。
それで復帰したとき(Windowsのメッセージがなにかくるはず)にまたすべてを作り直してるけど。
>>659 さんくすです。
ついでに、Blt〜 が DDERR_SURFACELOST を返すのは、転送先
(つまり dstsurf->Blt の dstsurf) がロストしたときだけ?それとも
転送元のサーフェスがロストした場合にも Blt は DDERR_SURFACELOST を
返すの?
>>660 知らん。つか昔は多分知ってた。
俺は、その辺ひっくるめて考えるのが面倒臭くなったから
一括破棄して一括復帰にしている。
DX7に関する知識を一括破棄してDX9で復帰したのかと思った。w
663 :
デフォルトの名無しさん :04/02/03 13:56
頂点情報をいじらずRenderStateをいじるだけでアルファを 変えられるというのを昔見た気がしたのですがどのようにやればよろしいでしょうか
664 :
デフォルトの名無しさん :04/02/03 14:20
>>663 そんなのあったっけ?
アルファってテクスチャのアルファと頂点色のアルファと他なんかあったっけか?
665 :
デフォルトの名無しさん :04/02/03 14:29
あー、あとマテリアルのアルファがあるのか・・・。 でもRenderStateだけでできたっけ?
普通はマテリアルのアルファで調節すると思われ 他にもSetTextureStageStateのD3DTSS_ALPHAOPで三項演算を指定して D3DTSS_ALPHAARG0で調節できるかも... でも三項演算は対応してないグラフィックカードが多そうだし オイラ使ったコト無いからワカンネ
667 :
デフォルトの名無しさん :04/02/03 15:08
>>666 マテリアルってシェーダ使ったときに無視されなかったっけ?
そう考えると頂点色のアルファの方がいいような気が・・・。
DirectX9.0 update(Summer)を使って作成しています。 // Direct3D フォント生成 hr = D3DXCreateFontIndirect( lpD3DDevice, &logfont, &m_lpD3DXFont ); ここで、 error C2664: 'D3DXCreateFontIndirectA' : 2 番目の引数を 'LOGFONT *__w64 ' から 'const D3DXFONT_DESCA *' に変換できません。 というコンパイルエラーでます。 DirectX9.0 SDKの時は出なかったのですが、何か回避法をご存知の方いますか?
>>668 D3DXが一部変更されています
詳しくはヘルプで
>>669 書き込む前にヘルプを見たのですが、DirectX9.0 SDKの仕様しか書かれていませんでした。
公式に新しいのがあると思い、行ったのですがSummerのヘルプはないようです。
どこか他にあるのでしょうか?
671 :
デフォルトの名無しさん :04/02/03 15:59
>>670 Microsoft DirectX 9.0 日本語ドキュメント
DirectX 9.0 日本語ドキュメント
このダウンロードには、完全に日本語化された DirectX 9.0 のドキュメントとリリースノートが含まれています。
directx9_c.chm はダブルクリックすれば読むことができる C/C++ のドキュメントです。DirectX9JpnDoc.msi には
C/C++ に加えて Managed (C#、Visual Basic .NET) の日本語ドキュメントが含まれています。
Visual StudioR .NET をお使いの場合は、このファイルをダブルクリックしてインストールすると、
Visual Studio .NET ドキュメントとして読むことができます。DirectX 9.0 Update (Summer 2003) の
英語ドキュメントの更新には対応していません。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Date: December 20, 2002
しかも、何も考えずにインストールしているなら英語ドキュメントも 一緒にインストールされてるはずだし
676 :
デフォルトの名無しさん :04/02/03 16:29
>>673 TFACTOR DirectX をキーワードにしてググルと結構ピンポイントで当たるね。
前から気になってたけど、Summerと9.0ってどっちのほうがいいのかな? まぁ、使い方にもよると思うけど。 ちなみに俺は、9.0派。なんか使いやすい。
新しいほう使ってた方がいいんでない?
>>677 8.0か9.0で迷ってるなら勝手にすりゃいいと思うけど。
コンパイルも通るし、まあ、どうでもいいっちゃどうでもいい。
9.0とsummerじゃsummerにしちまったらコンパイルすらできないわけだが・・・。
多くの人にやって貰いたいなら8.0ですかねぇ〜。 でも8.0(8.1a)とかってどこで手にいれれば いいんですか?
ぶっちゃけ、D3DXしか変わってないからどっちでもいい>2003Summer
TFACTORは何気に新しめなボードでも不具合があったりするから注意 確かTFACTORとのMODULATEかなんかで出来ないことがあったような? GeForce3クラスなら大丈夫だったと思うけど…
683 :
デフォルトの名無しさん :04/02/03 18:58
マテリアルのアルファはフォグ係数。 ロストは、Dirext3D8以降はPresent(Direct3D7でいうFlip)が失敗するので それで判断。
684 :
デフォルトの名無しさん :04/02/03 19:27
DX8SDKは米国からどーぞ
685 :
デフォルトの名無しさん :04/02/03 20:27
>>683 >マテリアルのアルファはフォグ係数。
何?
勘違い君だろ
ロスト判定は普通TestCooperativeLevelかBeginSceneの失敗じゃねーの?
688 :
デフォルトの名無しさん :04/02/03 21:22
頂点のアルファいじるのはフェードイン・アウトの時にきつくね? そんなことはないかなぁ。 なんか頂点を毎フレームいじるのは重いと教わったんだが
689 :
デフォルトの名無しさん :04/02/03 21:27
>>688 そっか、シェーダ使ってない人は
ロックとかアンロックとかしなきゃならねぇな。
690 :
デフォルトの名無しさん :04/02/03 21:37
>>688 でも、さすがにフェードイン・アウトぐらいで何がどうにかなるってことはないべ。
ただ、LockしてUnLockして頂点1つ1ついじるよりはマテリアルのアルファを設定した方がいいのかな。
ちなみにシェーダ使ってる人はピクセルシェーダにそんな感じのレジスタがあるんだっけ?
俺、最近HLSLやり始めたばっかりだから知らないや。
まっとうなパーティクルシステムを作っていれば、動的頂点バッファでLock/Unlockしてるだろ。 必要な場所でなら恐れることもないと思うけど。
692 :
デフォルトの名無しさん :04/02/03 22:06
ああ、ピクセルシェーダだとr0.aなのかな? ところで今思い出したんだけど マテリアルって光源の影響受けるものだけじゃなかったっけ? あれ?頂点色以外のアルファブレンドってどうやってたっけ? 年かのー。なんだか全く思いだせん。 誰かアルファブレンドの方法を整理してくれんかのー。 頂点シェーダだけの場合と 頂点シェーダとピクセルシェーダを両方使った場合と そのHLSLバージョンの場合と マテリアルを使った場合と 頂点色を使った場合と TFACTORを使った場合。 で全部かのー。
ヘルプに書いてありますよ。
>>693 キーワードぐらいおいてってくれんかのー。
普通に知らないだけじゃ…?
696 :
デフォルトの名無しさん :04/02/03 23:42
>>695 いや、正直こんなにレパートリーがあると思わなかったし、
知らない(やったことない)やり方も結構あるかも。
以前は頂点色とマテリアルとテクスチャのアルファでやってた気がする。
ところで以前はテクスチャのアルファを考慮する必要があるときは確か
カラーオペレーションだかアルファオペレーションだかのレンダリングステータス
使ってなにやらやってた気がするけど
HLSLを使った場合ってどうやるようになったの?
ピクセルシェーダのところでテクスチャのアルファ値を取得して突っ込む必要があるのかなぁ。
t-potさんの出した本に書いてあるかとおもったけどその辺はどうやらのってねーみたいな感じ。
一度にそんなに大量に質問されたら誰も答えないと思うが。 D3DRENDERSTATETYPEとD3DTEXTURESTAGESTATETYPEを調べるだけで解決するし。 シェーダ使った場合なんて聞くまでもないし…
法線テクスチャから基底ベクトルを求める、D3DXComputeTangent関数の 使い方を易しく説明しているHPとかってないですか?
D:\DX90SDK\Samples\C++\Direct3D\BumpMapping\BumpSelfShadow\bumpselfshadow.cpp D:\DX90SDK\Samples\C++\Direct3D\EffectEdit\RenderView.cpp サンプルくらい嫁
700 :
デフォルトの名無しさん :04/02/04 10:08
>>697 >シェーダ使った場合なんて聞くまでもないし…
どうやるの?
聞く前に調べろ
702 :
デフォルトの名無しさん :04/02/04 14:36
教えて君っているよな。本や検索してすれば解る事を一々質問してくる奴
>>699 ありがトン。 任意のXファイルを読み込んで、バンプとスペキュラー
をシェーダでつけられるように一応なりますた。
うーん、やはりモデル表面に凹凸がつくとリアリティが違いますな。
705 :
デフォルトの名無しさん :04/02/04 20:45
>>700 とりあえず俺が調べた感じだと日本の資料は無いね。
みつからなかっただけかもしれんけど。
HLSLのpsだと出力のwの値に入れた値でαがかかる。
もちろんαはSetValueなどの関数でプログラムから渡してやる必要がある。
このときテクスチャのαが使いたいときはサンプラからもってこないと駄目。
テクスチャを作るときにすでにαを入れておいたときはtex2Dから取得するときにwにα値が入ってる。
プログラムからもってきたαとテクスチャのαを両方使いたいときは掛けて使えばいい。
α値がどういうふうに計算されるかはいつも通りSetRenderStateまかせになる。
調べりゃわかるというがこれがわかるまで結構苦労したぞ。
つってもこれしか方法ないからどっかに書いてあるかもしれんけどね。
フレームアニメーションとボーンアニメーションの違いは フレーム・・・ロボットのようなアニメーション ボーン・・・人間のように皮膚が伸びるように変形するアニメーション こういう解釈でいいのでしょうか?
訂正→ボーンアニメーションじゃなくスキンアニメーションでした。
DirectX9 で、 FSAAを有効にしたいのですが、今はこんな感じで やっています。 m_pD3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_D3DPP.BackBufferFormat, TRUE, D3DMULTISAMPLE_2_SAMPLES, &dwQ)); m_D3DPP.MultiSampleType = D3DMULTISAMPLE_2_SAMPLES; m_D3DPP.MultiSampleQuality = dwQ - 1; m_pD3DDevice->Reset(&m_D3DPP); とりあえずこれでエラーにならずに動いているようなのですが、 nVIDIAの設定メニューから選べる "6xS" や "8x" に相当するものが うまくできません。 根本的に方法が違うのでしょうか? どなたかご教授お願いいたします。
>>706-707 スキンアニメーションのほうは正解。
フレームアニメーションつったら普通は2Dの絵のパラパラ漫画を想像する。
補足です。 D3DMULTISAMPLE_2_SAMPLES や D3DMULTISAMPLE_4_SAMPLES は有効になりますが、 D3DMULTISAMPLE_6_SAMPLESと D3DMULTISAMPLE_8_SAMPLES が駄目なのです。 カラーバッファやZバッファの設定によるのかな?と思い、 デバッガでどういったデバイスが作成されているか、 ディスプレイ設定の強制的に 8xモードにさせる場合と アプリケーションにゆだねる場合とで 比較してみましたが、変わりはありませんでした。
>>709 ロボットのような皮膚が伸びないアニメーションはなんというのでしょうか?
検索してみたいので・・。
フレームアニメーションだろ モーションを数パターンに分けてパラパラ表示 たとえば歩く動作を4枚でやるのか16枚でやるのか。 とうぜん16枚の方が滑らか スキンアニメーションの皮膚が伸びる動作を フレームアニメーションで再現するには、数枚〜数十枚の絵を用意してパラパラと表示 どっちが大変かはわかるよな?
3Dモーションにおけるフレームの意味が分かっていない重傷者が一名釣れた模様。
フレームというのはな こっから ここまで 動かすという命令のことなんだよ わかったかこのボケ 泣かすぞゴルア 死ね!
フレームはローカル座標で構成されるデータの単位。 時間軸に伸びるキーフレームとは別物。
>>711 >ロボットのような皮膚が伸びないアニメーションはなんというのでしょうか?
間接部分のジオメトリ(スキン)がスムージングされなければいいんだろ。
スケルトン+スキンでやるのか、それともスケルトン無しで親子関連付けのみでやるのか。
前者の場合、ウエイトマップの中の値が1.0と0.0のみの状態のこと。バインドの方法というか、ウエイト付けの話。
後者の場合、ウエイトという概念が無い。だからスムージングは無い。
で、どっちの話?
後者の場合ってのは、ツールでいえば親子付けとかペアレントの話ね。
>>709 スケルトン=ボーンっていうことでいいんでしょうか?
ボーン無しで、生の状態のオブジェクトを親子関連付けでやろうと思っています。
その場合は、読み込むデータ(Xファイル)をパーツ分けしたほうがいいんでしょうか?
ほんとはMIKOTOでボーンを付けたいんですけどね(泣)。
ボーンを使っても、結局はボーン自体がフレームの階層構造を持つことに変わらないのだが、 何故ボーンなしの場合だけ、パーツ分けをしようとするのか、その理由を明確に述べよ。
ボーン(骨)の組み合わせでスケルトン(骨格)が出来るってことね。 けっこう普通に「ボーンを入れる」「骨を入れる」とか言うし、同じような意味合いで使われてるかもね。
>>709 ボーン=階層構造情報を持つ物(骨)
スケルトン=ボーンが集まったもの(骨格)
この認識でよろしいのでしょうか?
>>721 誤認してました。
>>709 の言うとおりボーン=スケルトンではないのですね。
パーツ分けの理由として、
@スケルトン(ボーン)を入れるツールを持っていない。
A1つのXファイルでロボットを構成させていたが、ボーンが入っていないため
階層構造を付けることが困難。というか、読み込んだたくさんのメッシュが
どのパーツのメッシュか見分けることができない(2ヶ月ほど悩んでいます)。
Bよって、1つのファイルからどのパーツかわからないので、単体で読み込んだ方がいいと思いました。
意味を取り違えていましたら、指摘の方お願いします。
☆結論☆ まともなモデリングソフトを買え
>>723 >この認識でよろしいのでしょうか?
いいんでねいの。
>どのパーツのメッシュか見分けることができない
それは命名規則の問題とか、管理がずぼらとか、そういう話ではないか。
えーと、ちなみにMikotoのことはよく知らないです。メタセコとの組み合わせがマンセーらしいね。
googleってみたら、ちゃんと出来るみたいな事書いてるtipsがゴロゴロ出てくるぞ。
オブジェクト名「bone:●●●●」とかすればアンカー付けずに親子関連付けできるとかさ。これじゃダメか。
オブジェクト単位で別ファイルにする必要もないみたいだぞ。(こんなんで解決するレベルの話だったらぬっ頃す)
乳首が見えそうで見えない
>>709 私のPCではMIKOTOが動かないんです><。
なので、プログラム内部で親子関連させないとダメなのです。
>>それは命名規則の問題とか、管理がずぼらとか、そういう話ではないか
ということは、管理さえしっかりやれば、可能ということでしょうか?
せめて、どこにそれぞれのメッシュ名が格納されているかわかれば・・・><。
>>709 ありがとうございます。
2時間かけてヘルプを見ました。見ました。見ましたけど・・・・。
ラストチャンスでラストアドバイスをお願いしますm(_ _)m。
XFileってテンプレート名の後に識別名が付いてるんじゃないの? template Frame 識別名 { : } template Mesh 識別名 { : }
サンプルとか一切見る気ないんだろうなぁ。 正直これだけ教える気が萎える教えて君は初めてだ。
732 :
デフォルトの名無しさん :04/02/05 22:52
なんだ、みんな会社でやってるんから そんなにいろいろ知ってるんだ 仕事でこんなことやってる人いたんだ へーへーへー
リアル工房ですが何か。
こんなん今時リア厨でもやるぞ 漏れは厨1のときからだがな。今工2 てゆーか会社でもやるんだ。こんなん遊びで使うものかとおもってたよ
CG関連やゲームの会社ならやるだろ。
嫉妬に狂った734が拝めるスレはここですか?
最近の高校生は早熟だからね。性交経験率見て鬱になったよ。
漏れの初体験は小5の頃妹とだけどな
Σ( ゚Д゚)
741 :
デフォルトの名無しさん :04/02/06 15:17
アルファテストってどっちのやり方がいいんですか? これ↓と device->SetRenderState(D3DRS_ALPHATESTENABLE,TRUE); device->SetRenderState(D3DRS_ALPHAREF,(DWORD)0x00000001); device->SetRenderState(D3DRS_ALPHAFUNC,D3DCMP_GREATEREQUAL); これ↓なんですけど device->SetRenderState(D3DRS_ALPHATESTENABLE,TRUE); device->SetRenderState(D3DRS_ALPHAREF,0); device->SetRenderState(D3DRS_ALPHAFUNC,D3DCMP_GREATER);
741と同じような質問、前にあったような気が・・・。
どっちにしても16bitカラーモードで不具合が出る。 アルファチャンネルの精度を理解しないで使うからそういうことをするんだろうな。
744 :
デフォルトの名無しさん :04/02/06 15:47
ビルボードのサンプルを見てDrawPrimitiveは3D座標が使える のは分かったのですが、DrawPrimitiveUPって3D座標で描画 出来ないんですか?
言ってる意味がよくわからん
>746-747 DrawPrimitiveUPでD3DFVF_XYZが使える かどうかってことよ。
DrawPrimitiveが3D表示用 ならDrawPrimitiveUPは2D用?3D用? みたいなアホな質問だと思われる
>>745 マジレスすっと、UPがつくのは、頂点(バーテックス)を直接指定している。
ちょっとした図形を表示するなら、こっちが楽。
UPがつかないのは、頂点を番号(インデックス)で指定している。
同じ頂点を参照するポリゴンがたくさんあるとか、複雑なモデルならこっちの方が効率がいい。
>>750 お前は知ったかしていい加減なことを言う前にヘルプぐらい読め。
DrawIndexedPrimitive系と混同するな。
それはメソッド名にIndexedが付くかどうかの話ね。
俺も
>>750 だと思ってた。今までバグらんかったのは小さな奇跡だ。
ヘルプ嫁YO!
頂点バッファを使うのがUP無し、 自前で用意した適当なメモリ空間で頂点を指定するのがUP。 UPはUser memory Pointerの略だと思われ。
ぬるぽ
UPはユーザメモリポインタの略で、プログラマ側で確保した領域(システムメモリ上)のアドレスを
直接指定する方法。頂点データ・インデックス情報をVRAMに動的に転送する必要があるので
お薦めできない。
UPがつかないものは、あらかじめ頂点バッファとしてD3Dに管理された領域を指定する。
VRAM上に作成されていれば即座に処理が適用される。
・・・・って
>>756 がもう回答しちゃってるよ (´・ω・`)ショボーン
ありがとうございますた。これからはヘルプ読んでから 質問します。
>>745 俺みたくヘルプの内容全てが頭に入るまでがんばれ。超がんばれ。
762 :
デフォルトの名無しさん :04/02/07 00:31
アフォな質問します Summer Updateで追加されたDirect3Dのサンプルを 走らせてみたらBlobsとかFX5200じゃ まともに動かなかったんでFX5700 Ultraに 変えたんですけど、起動したときに Could not find any compatible Direct3D devices なんていうダイアログが出てきて強制終了されてしまいます。 ぐぐったら何かビデオカードが対応してないなんて 不吉な文章が目に入ったんですけど・・・ ・・・そういうことでしょうか?
>>762 Summer Updateで追加されたDirect3Dのサンプルってなんですか?
いつものサンプルブラウザから見れますか?
サンプルブラウザから見れるものだったらGeForce4Ti4200でだいたい見れますけど。
え〜 エラーでるサンプルは少なくとも Blobs, HDRCubeMap, PixelMotionBlur, HDRLighting です。 DXSDK9.0 から Update( Summer 2003 ) をインストールすると 追加される連中です、サー。
PixelShader2.0がハードウェアサポートされてないんじゃない? > FX5700
Support DX9.0 Pixel & Shader 2.0+ とか書いてあるんですけど、だめですか?
ごめん、Summer Update入れてもいないのにテキトウな事書いちゃった。 調べてきます。
デ馬鹿つかえよ・・
すいませんアホでした。 ∧||∧ ( ⌒ ヽ 逝ってきまつ ∪ ノ ∪∪ summer入れたと思ったら9.0bの方が入ったままでsummerの方を実行したことありませんでした。 GeForce4Ti4200じゃほとんど動きません。 というわけでこの機会にグラボでも買い換えようかと思ってますが Fx5200やFx5700じゃ駄目なんですか?
ゲームしたいんだったらどっちも駄目だな それにFX5200、5700はCPがかなり悪いし
>どうやら、(少なくとも僕の環境では)4TiとFXの間で、 >DX8,DX9に限らず頂点シェーダにおける >テクスチャ座標生成方法が異なるようです。 >4Tiの場合、oTx.wは常に射影テクスチャにおける >RHW相当として扱われ、ピクセルのサンプリングは >(u,v) = (oTx.x / oTx.w, oTx.y / oTx.w)に対して行われます。 >ところが FX の場合、(u, v) = (oTx.x, oTx.y) と、 >oTx.wの値に関係なくサンプリングされます。 >(逆に言うとシャドウマップのような射影テクスチャを扱う場合、 >シェーダコードでx/w, y/wをやっておく必要があります)
773 :
デフォルトの名無しさん :04/02/07 15:42
>>770 とりあえずps2.0(DirectX9Summerのサンプル)が動いてくれさえすればいいんですけど。
この2つでは駄目なのでしょうか。
>>773 CPが悪いのを知ってて買うんならいいんじゃなかろうか
低価格帯にはそれとあと5600くらいしかないしな、仕方ないといえる
>>774 ありがとうございます。
さっそく買ってきます。
これしかないですよね。
もう1ランク上の価格といったら手がでないですし。
5700だったらあと5000円ほど出して5900XTがいい気もする まあ64-bit地雷や青ペン等に気をつけて買いなされ
おのれ青筆 一度ならず二度までも・・・!
?
779 :
デフォルトの名無しさん :04/02/07 19:08
1回目:ママンが不良品でした 2回目:先に述べたようにDXのサンプルが一部動きません まあ画質もそれなりにいいしこれ以外に不具合は特にないんですけど
780 :
デフォルトの名無しさん :04/02/07 19:17
根本的なところの質問なんですが、 D3DXMatrixLookAtLH って何をやっているのでしょうか? ヘルプを見るとビュー行列を作成するって 書いてありますけどカメラの行列じゃないですよね? いままで world * view * projは 頂点座標(ローカル座標)->ワールド座標に直す(world) ->カメラの座標に直す(view)->射影空間の座標に直す(proj) と思っていたので、viewはカメラの行列の逆行列になるのかなぁと考えていましたが、 ヘルプに載っている計算式をみるとなんだかよくわからないことになっているので 違うのかなぁと思って質問しました。
サンプルが動かんのは青ペンのせいじゃないだろうに・・・
>>780 D3DXMATRIX* D3DXMatrixLookAtLH(
D3DXMATRIX *pOut,
CONST D3DXVECTOR3 *pEye,
CONST D3DXVECTOR3 *pAt,
CONST D3DXVECTOR3 *pUp
);
pEyeの位置からpAtの位置を向くような行列を作成してる。
pUpは上方ベクトルだ。pUpを指定しないと姿勢が一意に決まらん。
カメラとして使っても構わん。
↑up = n(↑at -↑eye );になった場合の動作はシラネ
783 :
デフォルトの名無しさん :04/02/07 20:22
>>782 >pEyeの位置からpAtの位置を向くような行列を作成してる。
それがですね。
私もそう思っていたのですが、そういうわけでもないみたいです。
例えばですね。以下のような設定をすると
D3DXMATRIX matView;
D3DXVECTOR3 viewPos(0.0f,10.0f,-20.0f);
D3DXMatrixLookAtLH(&matView,&viewPos,&D3DXVECTOR3(0.0f,0.0f,0.0f),&D3DXVECTOR3(0.0f,1.0f,0.0f));
返ってくる行列の_41,_42,_43の要素が
(0.0f,0.0f,22.360680f)とかなっていますのでどうやらpEyeの位置からpAtの位置を向くような行列では
ないっぽいです。
ヘルプをみるとD3DXMatrixLookAtLHの内部でしている計算式は以下のようなものなのですが
zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
xaxis.x yaxis.x zaxis.x 0
xaxis.y yaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
-dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) 1
これがまたさっぱりわけがわからない式で困っています。
すみません。解決しました。 ためしにD3DXMatrixInverseでひっくり返してみたら pEyeの位置からpAtの位置を向くような行列が出てきました。 のでD3DXMatrixLookAtLH関数は pEyeの位置からpAtの位置を向くような行列の逆行列を作る関数 っぽいです。 お付き合いいただきありがとうございました。
「カメラの姿勢をあらわす行列」と 「カメラ空間へ変換する行列」は違うよ LookAt は「カメラ空間へ変換する行列」を求める関数だから カメラの姿勢を単位行列へ戻すような逆行列が返ってくるはずだよ (カメラが左回転すると世界は右に回転するでしょ) おれもこれ昔ハマったんだわw リファレンスの プログラミングガイド→固定機能パイプライン→トランスオフォーム→ビュートランスフォーム も読んどけ
で、そのわけの分からない行列だが 3行目までで pEye から pAt を向いている物体の各軸ベクトルを求めている DirectX では座標変換時にベクトルを行列の左から掛けるので xaxis.x xaxis.y xaxis.z yaxis.x yaxis.y yaxis.z zaxis.x zaxis.y zaxis.z がこの回転に載せるための行列 回転のみを行う正規直行行列の場合、逆行列=転置行列なので リファレンスにのっている行列の3x3成分はこのカメラの回転成分の逆行列 (これでカメラが回転した分だけ世界を逆に回す行列を求めている) で最後の移動成分だけど、 -dot(xaxis,eye) ということは dot(xaxis,-eye) ということだが ベクトルの内積というのはあるベクトルをあるベクトルへ投影したときのスカラー量をさすので これはつまりワールド座標の -eye を (xaxis,yaxis,axis) のローカル座標へ変換したことになる つまり傾いたカメラから見た原点へのベクトルを移動量として与えたということ。 内積を取るのがローカル変換になるというのは2次元の図を書いて考えてみてください。 「ゲームプログラミングのための3Dグラフィックス数学」という本読むと分かりやすい あと DirectX ではベクトルを左から掛けるということを知らないと 3x3成分が回転の転置ではなく回転そのものに見えてしまい、 ビュー行列ではなくカメラ行列を求めているように勘違いしてしまうので注意
787 :
デフォルトの名無しさん :04/02/08 09:20
>>785-786 うお、めちゃくちゃわかりやすい解説ありがとうございます。
ヘルプもここまでわかりやすい説明あるとうれしいんですけど。
-dot(xaxis,eye)ってそういう計算だったんですね。
転置をしてるのはなんとなくわかったんですけど。
実は環境マップの実装でカメラの座標取得したら
アレおかしーなーってことになりまして調べてみたら
逆行列だったりしたわけですよ。(リリースしちゃったよ前のプログラム( ´∀`)アハハハハ)
こういう基本的なところの理解がボコボコ抜けてたりするので
しっかり勉強したいです。
レスありがとうございました。
3Dやるなら線形代数くらいは知っておかないとね
789 :
デフォルトの名無しさん :04/02/08 14:38
いまどきの ID3DXCompressedAnimationSetと ID3DXKeyframedAnimationSetと ID3DXAnimationCallbackHandlerと ID3DXFontと ID3DXSpriteにつ いて教えてくださいおながいします
と、いうわけでFx5200を買ってきました。 商品は ELSA GLADIAC FX534 256MB 価格14400円 です。 それでsummerのサンプルですけどどれも見事にREFモードで動いてます。 つまり、summerのサンプルにいたってはGeForce4Ti4200となんら状況は変わりません。 しかし、Cg Tutorial Examplesが動くようになりました。 ShaderWorksも物体が見えるようになりました。(動作は激重ですけど) 3DMark03はGeForce4Ti4200とあんまり結果が変わらないような気がします。 Fpsは平均的にはGeForce4Ti4200よりちょっと速いぐらいです。 (場合によってはもしかして遅いときもあるのかな?) ということでした。 私は地雷を踏んだのでしょうか?
fx5200自体が地ら(ry
>>791 GeForce系のDirectXのドライバは浮動少数点バッファを
サポートしてないんで、それを使ったサンプルは動かないよ。
>>791 その値段出すなら 5700 買えばいいのに…
機能的に 5200 でいいならもう6千円ぐらいのボードでいいじゃん。
やっぱりGFはうんこ
>>792 やっぱり地雷?
>>793 なんと!そうだったんですか。
でも9700proになると30000円ぐらいになっちゃうので私が購入するのは
まだまだ先になりそうです。
>>794 いや、これでもフンパツしたほうなんですよ。
>>795 異論無しです。
いや、メーカーにこだわらなければ その値段で 5700 が買えるじゃないって事。 どっちみちこの価格帯のボードはどのメーカーの物も 画質には期待できないと思うけど。 9700 って今なら 9800 だよね? たしかに 9800 は高いけど 9600XT なら 15,000 ぐらいで買えるんじゃない?128Mだけど。
メモリ256MBなんているの? 5200レベルでこの容量要求しても無駄な気がするけど。
799 :
デフォルトの名無しさん :04/02/08 22:19
>>797 なんと!9600XTなら動くんですか?
店頭だと9600XTだと20000越えてた気がしますが(というかradeonは全部高い気がした)
検索かけてみたら20000以下ぐらいで買えるんですねぇ。
もったいないことをしました。
というわけでこれから買う人は9600XTですね。
>>798 いや、店頭で128MBと1000円ぐらいしか変わらなかったんでつい・・・。
フルスクリーンで起動させて、ウィンドウキーを押したときに きちんとタスクバーに収まるようにするにはどうしたらいいんでせう? LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { 省略 case WM_KEYDOWN: switch(wParam){ case ウィンドウキーが押されたら 何か処理させる } default: return DefWindowProc(hWnd, msg, wParam, lParam); } } って感じになるのでせうか
あー、Direct3Dの描画処理をやめればいいだけの話ですた ついでにタスクバーに収まった後、クリックしたらフルスクリーンにするようにするだけと
ニュートンの法則なんですが、 第1 外部の力が作用しない限り,物体は静止し続けるか,一定の速度でまっすぐに運動を続けようとします。これが慣性の法則です。 第2 物体の加速度は物体に最終的に作用する力に比例し,その方向は作用する力と同じ方向になります。 第3 物体に作用する力(作用)それぞれについて,反対の作用をする力(反作用)があります。反作用の大きさは作用と同じで,方向は正反対です。 主にこの3つが重要だとは思うのですが、「よりリアルなゲーム」を作る際に重要と思う概念はどれになるんでしょうか? どなたか是非とも教えてください。
>>802 どれも古典力学の基本法則であり、優先順位を以て語る理由が分からない。
どれが欠けても駄目だろw 物理勉強しなさい
3DCGプログラマのためのクォータニン入門(?)って本よさげだったけど買った人いないのかな? DX3Dやる前に読んでおきたい本っぽかったけど。
クォータニオン、今更感がなぁ… 色んな本に記述あるしWebにもあるしね どんな内容なんだろ。
頭の体操にはなる、以上
全然知らん、という人なら読めばいいかと。
その本手に取ってパラパラ見た。 ベクトル、行列、クォータニオンは確かに今更感があったけど テンソルとか最後の方のトピックは中々だったような… でもそれだけの為に買うのもなんだし、ネットで調べれば言いと思ったから買う気は起きなかった。
TmpgEncやmp2aviがうまく動作せず、なにやらDirectXがおかしいのかと思い、アンインストはできないようなので すでに入ってるけどもう一度9.0bをダウソしてインスト試そうとしたらファイルのコピーのときに 毎回d3dpmesh.dllの所で止まってしまい、「DirectXが必要なファイルをコピーしませんでした」 といわれインストに失敗してしまいます。 また、dxdiagすると途中で「前回このプログラムが使用されたときDirectShowでへのアクセスに問題が あったことを検出しました。今回、DirectShowの使用を回避しますか?」と警告がでます。 上記のツールがうまく動作しないのがDirectX1が直接の原因かどうかは分からないにしろ、 このような警告が出た場合にはどう対処したらよいのでしょうか。 よろしくお願いします。
たぶんHDフォーマット&OS再インストールが 一番手っ取り早いと思います。
>>802 どれも不要。ジャンプの放物線はSIN曲線で近似。
ただし素人にはおすすめできない
813 :
デフォルトの名無しさん :04/02/10 06:02
ジャンプの売上高推移はSIN曲線で近似。 ただしヤンジャンはおすすめできない
なんかテンプレになりそうだな>SIN曲線で近似
ジャンプの売上高推移はSIN曲線で近似。 ただし月刊ジャンプはおすすめできない しかしネコマジンZはいちぢるしくおすすめる。
>>812 ジャンプの放物線はSIN曲線で近似せよ
彼の本には、ボールの運動は円運動であり・・・とかマジで書かれていたので俺は
思わずのけぞってしまい後ろにいたお姉さんの上半身に接触しお姉さんは、つまず
いてしまいました。すぐごめんなさいって謝ったんだけど、そのときお姉さんも
微笑んでくれたので嬉しかったです。以上。でも今思うとDirectX関連のムックを
熱心に読んでいたので、すごくかわいかったけどヤバイ人だったのかもしれません。
ジャンプ運動がsin曲線で近似出来るとかマジで書いてある本あるの?
>>802 > 「よりリアルなゲーム」を作る際に重要と思う概念はどれになるんでしょうか?
ややウケ(w
まあ、どれが欠けても駄目だな(笑)。
面白いのは偉そうな口を叩く人間がたくさんいるのに フリーを含めた日本のPC3Dゲーは皆無に近いところだろう。
いや流石に放物運動くらいは…(;´Д`)
>>819 きっとみんな仕事か同人でやってるんだよ。
>>817 あるよw。
当時は俺もアホだったから信じたもんだよw。
でも、近似ってのがどれくらいの誤差まで許されるかで話は変わるのかなw。
キャラクターのアニメーションで首だけ回転させたいのですが、どうやって 指定していいのかわかりません。 歩行アニメーションなど、Xファイルに入ってあるアニメーションはできるようになりました。 アドバイスお願いします。
>>823 ノード(もしくはボーン)ごと名前かIDでもつけておいてツリー構造に検索でもかけてみるとか。
697 :通の間では定番[sage] :02/08/16 01:48 ID:??? ■『ゲームプログラマになる本』\2548(税込) 山崎 由喜憲【CQ出版社】ISBN4-7898-3564-2 ■『めざせゲームプログラマ』\2625(税込) 山崎 由喜憲【CQ出版社】ISBN4-7898-3575-8 ■『Visual Basic DirectXプログラミング』\3200(税別) 山崎 由喜憲【ソフトバンク】ISBN 4-7973-1054-5 698 :名前は開発中のものです。[sage] :02/08/16 01:57 ID:??? 著者が提唱する山崎式正弦跳躍法などが目玉。 rad2sincosルックアップテーブルを用いた 不思議ジャンプ処理は世間の度肝を抜いた。
>>825 実は調節しやすいからいまでも使ってたりする罠。
>>824 やってみると、あっさり検索に成功したのですが、そのパーツだけ回転が不可能です。
D3DXMatrixRotationY()でなにをどう指定していいのかわかりません。
>804 :デフォルトの名無しさん :04/02/09 21:02 >どれが欠けても駄目だろw >物理勉強しなさい でた。質問者相手に「〜なさい」とか言って偉くなったつもりのバカ。
×質問者 ○オレ様
>>827 そうかそれなら俺には解決は難しそうだ。
すまん。
>>826 山崎式跳躍法を今でも使ってるの?だとしたら凄いな。
放物線運動は数値的解法だけでなく
数学的解法で解けることを知らないわけではないよね?
832 :
デフォルトの名無しさん :04/02/10 20:44
>>831 あ、そういう難しい言葉を並べられると苦しいレベル。
ちなみに何言ってるかわからない(
>>831 の内容)
>>832 勉強しなさい。googleがこの世にある幸福に感謝しなきゃ。
>>833 速さや距離は式から求めることができる。
求めている「ふんわり感」が放物線運動にないなら、
まずは式のことは忘れて古典力学を一通り勉強するといいよ。
ふんわり感の正体を探して形にすることこそがプログラマの本質。
つかスレ違いすまん
マジすか…そんな面倒な事態になってるとは…
多分831さんが言いたい用語の意味はこういうことだよ ・数学的解法 放物運動(=等加速度運動)は x = at^2 + bt + c だから時間を与えれば位置がわかります ・数値的解法 等加速度運動は、位置、速度、加速度に微分方程式の関係がある a(t) = dv(t)/dt v(t) = dx(t)/dt 最も簡単な方法で差分方程式化してプログラム化してしまうと要するにこういうこと v += a * dt; x += v * dt; 時間を与えたら、時間/dt回だけ上の2行を実行すればxの値はその時間を表します そこらに流れてるソースは大体下の方法が使われてる気がしますね 最近はCatmullRom曲線みたいなのを使うこともあるみたいで それだと数学的解法で曲線の位置を求める方法になるわけです っていうか山崎式跳躍法が一体どんな内容なのか知りたいぞ・・・w
自分で書いといて訂正(´・ω・`) CatmullRomも所詮3次曲線だから数値解法も行けるはずですね 俺がやったことないだけでした
今ぐぐって山崎氏の本の評判を見てきた。凄いらしいね。 某「やさしいCプログラミング」クラスの出来だと予想…w
>>836 ありがとうございます。
山崎式跳躍法はそのまま「ジャンプの挙動はサインカーブで近似できる」というもので、
これを真に受けてる
>>826 は放物運動の式すら知らないんじゃないか、と思って
>>831 を書いた次第です。
しつこいですね。名無しに戻ります
>時間を与えたら、時間/dt回だけ上の2行を実行すればxの値はその時間を表します →時間を与えたら、時間/dt回だけ上の2行を実行すればxの値はその時間での位置を表します おいらも名無しに戻ります 間違ってばかりで凹_| ̄|○
>>834 ,836
難しいところがですね。
あっちをいじるとこっちがおかしくなるみたいなところがあるんですよ。
x = v0t - 0.5*g*t^2 + x0
の式で
v0を調節するとジャンプの速さ(はじめの勢い)が調節できて
gを調節するとジャンプのふんわり感が調節できて
tの増加値を調節するとジャンプの速さ(踏み込みから着地までの時間)が調節できる
と思って調節しようとしたのですが、
それぞれが微妙に関係してて調節が非常にしにくいです。
距離(ジャンプの高さ)を固定にしながら
かつ、ふんわり感やら速度(はじめの勢い)やら調節するのは私の技術では至難の業と判断しました。
ここまでが私の考えたことです。
解きたいものについて式変形しる! 初速度v0を求めたいなら「v0=なんたらかんたら」という感じ。 数学的解法で最も便利な部分だよ。
>>842 いえ、問題があっちをいじるとこっちがおかしくなってという感じでですね。
例えば1つの変数が必ず1つの効果(結果)をもっているという具合の式なら調節もできるのですが
1つの変数が複数の効果(結果)をもってしまっていてですねなんというか非常にやりにくいんです。
いじるのは v0 と g だけでいいよ。tの増加率は固定で構わない。
>>距離(ジャンプの高さ)を固定にしながら >>かつ、ふんわり感やら速度(はじめの勢い)やら調節するのは私の技術では至難の業と判断しました。 中3の数学で求まるよ。 y = v0t - 0.5*g*t^2 + x0 の極大値(ジャンプの高さ)は x0 + 0.5 * v0^2 / g (計算間違ってたらすまん) だから これが一定になるように v0と gを いじればいいんでは?
>>844 それだとジャンプの速度(踏み込みから着地までの時間)が調節しにくいんですよ。
>>846 tの増加率は弄っちゃ駄目だよ。例えば836の方法を借りて
v += a * dt;
x += v * dt;
とするなら、dtっていうのは、1フレームの長さ(=60fpsで16.6ms)ってことだから。
踏み込みから着地までの時間を調節しにくいなら、それを最初に決めればいい。
その後に、ふんわり度としてgの値を決める。
そうすれば必然的にv0が求まる。
コレじゃ駄目なんかね?
ごめん、ジャンプの高さも決めないとv0は求まらないね。 まあとにかく、1つずつ値を決定していけば、最後の値は自動的に決まるよ。 どういう要素が重要なのかを考えて、順序よく決めていけば問題ない。
>>848 いや、時間、高さ、ふんわり度、初速度のうち
どれか2つさえ決まれば、すべてが決まってしまうっしょ。
放物線運動で、自由に決定できるのは
できるのはこれらのうちの2つだけじゃないかな?
>>847 gの値をいじると重力がきつくなるのではじめの勢いがなくなります。(これは高さも変えます)
そこでv0をいじると今度は距離(高さ)が変わってしまうので・・・。
という感じで調節がしにくいです。
というわけでこれで調節するよりは他の方法を探した方がなんぼかマシだろ
ってことで例の式を使っています。
たった2つの変数で色々なものを調節することが苦しい感じです。
>>850 そりゃ、ただ闇雲に数値を変えていくんじゃ駄目だて。
絶対に譲れない値を定数とするんですよ。
そしてそれに合うように他の定数を弄る。
それでも期待した動きをしないのであれば、それは、
単に貴方が期待した曲線が放物曲線ではないということですな。
>単に貴方が期待した曲線が放物曲線ではないということですな。
に帰結するかと。
#
>>834 にてそう書いたつもりなんだけどね...
>>851 >単に貴方が期待した曲線が放物曲線ではないということですな。
やっぱりそこですよね。
私もその結論にいたりました。
パーティクルやらエフェクトまわりのものになら確かにこの式でいいんですけど
ゲームとなるとこの式は調節しずらいです。
企画のいうとおりの動きはなかなかしてくれません。
まあ、ゲームなんて騙してなんぼだからねぇ。w
ま、たしかに物理シミュレータ作ってるわけじゃないからな。 ほとんどのゲームはそれっぽく見えれば十分だよな。 明らかに嘘っぽいのはともかく。
「もっと、ぴょ〜んと飛び跳ねた感じにしてくれ。 放物線の頂上あたりにとどまる時間を倍に」 とか言われたな。適当に式でっちあげた。
それは悪手の例としての話だよな勿論。
ていうか、重力加速度を変えてふんわり感ってのは何か違わないか? いや、調整するべきパラメータの一つではあるけど。 空気抵抗を強めにかけるよろし。スーパーマリオなんかはこれ。
スーパーマリオのような動きはこれで出来るというのなら分かるが、 >スーパーマリオなんかはこれ。 と断定できるのは、つまり開発者? ソースをみることの出来る立場にいる人間? それともただの知ったか?
>>858 簡単な式で
R = krv
で考えたとしてまた速度が絡んでくるので複雑さがいっそう増すだけですよ。
まあ、色々あがいているときにやりましたけどこの式で調節するのは人間業じゃないですよ。
>>859 そのへんは話の主旨とはそれるのでこだわらないでおきましょう。
スーパーマリオってテーブルじゃないの?
山崎氏もテーブルを用いたを演算高速化の例を紹介したいだけなら はじめからx^2のテーブル使って説明すればよかったのに… 本気で落下運動は円運動と同じであると思い込んでいる可能性もあるけど
>>859 言葉足らずで申し訳ない。
>スーパーマリオのような動きはこれで出来る
これで解釈して下さい。
そもそもよくわからないのだが、貴殿は何を調整したいのであろう?
>>862 >本気で落下運動は円運動と同じであると思い込んでいる可能性もあるけど
そう思っている可能性は低いでしょう。
放物線のあの丸みをsinでやってみたってだけの話でしょうあれは。
実際、sinでやると便利ですよ。(別にそれっぽく見えればなんでもいいですけど)
使い方によっては高さと距離が確実に固定できるのがいいですよ。
パズル要素の強いアクションゲームに向いています。
これだけ
>>812 からずっとsinジャンプが否定され罵倒され続けてるのに
未だ理解できない
>>865 は逆に凄いと思うよ。いやマジで。
随分と低レベルな話をしてますねおまいら
>>866 だからといって物理の式を使って思考停止している人は嫌です。
実質、この式じゃなんの調節もできないじゃないですか。
否定するにも罵倒するにもしっかりとした理由を添えない人が多いです。
>>868 どこにも式をそのまま使えって言ってる奴はいないと思うが?
そもそも数学的解法でジャンプの計算してる時点で違和感を感じなければ
ゲームプログラマとしてはアウトだっつの。全く
グーニーズでもやっとれ馬鹿 ジャンプ中にパンチ連打してみろ
調節が出来ないんじゃなくて 調節の仕方を知らないだけではないかと思われめ
>>871 それはやってみてもらわないと実感できないでしょう。
式の変数のほとんどが調節したい要素のほとんどに影響を与えてしまうような場合は
そう簡単に調節はできませんよ。
DirectXと何の関係があるというのだ。
知るかそんなこと!
>872 それを「調節の仕方を知らない」と言う
失敗は成功の元 無知は創造の元 味噌汁は味の素
無知なのはとりあえず良いとしても、 なんで勉強しようとしないのだろうか。それが分からない。
>>877 勉強してどうにかなる問題なかぁ。
なんか必要もねーのに物理シミュ的動きをするゲームって例外なくつまんねー感じするけどな。
別に物理の型にはまった動きをしろとは誰も言ってない 「そう簡単に調節できない」なんてアホ発言にお前はアホだと言ってるだけなんだが もう本当に低レベルすぎ
>>834 ,
>>851 ,
>>852 ,
>>853 ,
>>854 ,
>>855 ,
>>865 比較的同感。
>>866 バカかと。ケースによって調整しやすい、編集しやすい曲線は変わるってことさ。
ぶっちゃけて云うと、それを判断するのはプログラマの仕事じゃないと。(選択肢を提示するのが仕事だ)
ケースに応じて“調整する人間が”選択すりゃいい。必要ならGUIなエディタでパラメリック曲線の
制御点チクチク入れればいい。市販ツール+プラグインなり何なり好きにしる。
>>831 ,
>>836 ,
>>842 スルーしてたんだが一応ツッコミを入れておくと
数学的解法とは何ぞや。解析的な解法のことを云ってるんだと思うが
「解析的解法(解析解法)と数値解法」は共に【数学的】解法なので、その辺よろ。
>>882 俺も書いた後で気づいたんでご容赦ください
何度も修正するとウザイとおもったので…
この場合は微分方程式を解析的に積分して解くのが解析的解法。
微分の部分を適当に差分化して求めた差分方程式をコンピュータなり使って解くのが数値的解法。
ってことで一つヨロシク
>>879 俺の前言と重複するんだが、
プログラマが調整を担う割合が非常に小さくなっている状況下においては
「そう簡単に調節できない」とうったえている主体は非プログラマなわけで。
この想定の下で調整ににくい/しやすいの話をしていると解釈するほうが
極めてリアルなんだが。その辺どうよ。
非プログラマとか関係ないじゃん。 簡単に調整出来ないって奴は無能だろ。
>>886 そこまでいうならやってもらおうか。
式かけ馬鹿。
1+2*3=9
それこの前のテレビ番組で似たようなのみたぞ。w
>>886 これしきの問答でファビョってどうする。しっかりせい。
ドカタプログラマでもない限り、調整作業(単純作業)を非プログラマに委ねることを恐れる必要はないのだが。
プログラマにしかできない、ロジカルな仕組みを作り上げたら、あとは感覚的なアプローチで調整をする人間のために
それなりのインタフェースを提供すればいい。それだけよ。
891 :
デフォルトの名無しさん :04/02/11 21:24
>>890 てか、具体的な式と明確な問題が出てんだからどうにかしてけよ。
レスよくよめば感覚的なアプローチなんて用意できそうにないだろ。
>>891 話の流れを読んでいて、人によって目的が(着目する長所が)違うようなので
下に記す内容が常に最良とは云えないと思うが、まぁ書いてみると
このスレの場合3Dに詳しい(or興味がある)奴が多いようなので
それに則して書くと、ジャンプのアニメーションデータ(既定)の再生時に
プログラム側で操作・修正を施すという話に帰着できるよな。この基本的実装方法は
当然知っていることとして話を進める。さて、ここからが本題だと思うが、どこから
どこまでを制御可能にするか、そしてどういうインタフェースでこれを実現するか。
これは事案によって変わる。格闘ゲーム・アクションゲーム・パズルゲーム・etc。
望む事案とそれに付随する条件が提示されるならば話が前に進むんでねーの。
ちなみに、パズルゲームの場合に、例えばジャンプの種類が3通りだとすれば 何の工夫も要らない。ジャンプモーションを3つ作ってオシマイ。2Dでも同じさ。 アニメーションツールの補間式を選択。再生プログラムを用意する。それだけ。
>プログラマにしかできない、ロジカルな仕組みを作り上げたら それができないアホがsinジャンプなんて使ってるから ここまで盛り上がってるんだと思うが
>>894 そんなことはない私はsinジャンプの有効性に一縷の望みが残っていると信じている(棒読み)
いや、というか便利な事案もあるのだろう。知らんけど。そう言ってる奴がいるのだから。
それを否定する根拠は俺には無い。
上のほうで、パズル性のあるケースで有効だという話があった。そのとおりだと思う。 選択肢のひとつとしてコンボボックスに入っていても俺は良いと思う。
だから、DirectXに関係あるのかよ。
知るかそんなこと!
そんなことはあるぞDirect3D使いでアニメーション使う初心者にとっては 初歩的一般論として有用な内容だと私は信じている(棒読み)
>>895 ある意味で残酷ですね。
ところで山崎式跳躍法を使ってジャンプさせる場合、
そのキャラが天井に頭をぶつけたりした場合等にその時点での速度を求めると思うんだけど
これはやっぱりコサインを使うんでしょうか?(わらい)
DirectX9.0でDDSか知らんが、別にBMPでもいいんだが RPGの立ち状態を2枚の絵でアニメーションさせる場合 サーフェスつかった方が良いのかスプライト機能使った方が良いのか さああなたならどっち?
すぷらいと
コカ・コーラ
>>900 そりゃアニメーションの補間式を使う場合も同じだでよ。
天井に頭をぶつけたら「ジャンプ」アクションから
「落ちる」もしくは「天井にぶつかって痛い落ちる」アクションに変えるってだけの話だろ。
アクションを切り替えちまった後の動きには補間式もsinも関係ないってのはわかるでしょ。
スプライトを使うのと矩形ポリゴンを使うのに本質的な違いはありません
907 :
デフォルトの名無しさん :04/02/11 23:33
>>901 自分で両方使ってみて、
使い心地、パフォーマンスは自分で吐かれ。
何に関してもそれだけ。
そもそもスプライト機能などMSXやX68K、コンシューマー機等のものであって、 DirectXにはそんな機能は存在しない。
ポリゴンとかを使わずに表示する機能をスプライト機能と定義してますが? 言葉は常に変化するものです。昔のスプライトを現在に持ってきても原始人扱いされるだけです
言葉は変化するかもしれないが、 >ポリゴンとかを使わずに表示する機能をスプライト機能 そんな滅茶苦茶な定義は過去、現在、そして未来でも存在しないだろう。
ID3DXSpriteはポリゴン使ってますね ハードウェア層とソフトウェア層をごっちゃにすると この議論を理解するのは難しい
D3DXの開発者がそういう名前を付けただけの話しだし、 内部で思いっきりポリゴンが使われている。
そもそもスプライトは、 >ポリゴンとかを使わずに表示する機能をスプライト機能 ではなく、キャラクター単位でのレイヤーを構築する機能。 ID3DXSpriteだけでは機能として不完全。 だからWindows上では、それをエミュレートして似たような状態を作り出す必要がある。 それをソフトウェアスプライトと呼ぶ。
ん?直接使うか使わないかの問題じゃないのか? それがD3DXにおける現在のスプライトということででFA?
機能的に不完全なのでスプライトとは呼べない。 別の機能と組み合わせながらスプライトを構成するための部品でしかない。 タイヤを指差して車と呼ばないのと同じこと。
スプライトじゃなくてスプライト機能 機能とは機構であり部品である でFA?
>>916 スプライトと呼ぶのに最低限必要な機能ってどれ?
少なくともID3DXSpriteに足りない機能を挙げてくれ
背景や別キャラクタとは別レイヤーで排他的に動くことが必要。 ソフトウェアスプライトを構成するためには、背景等の復元処理を含める必要がある。 単体ではただの描画機能でしかない。
それはハードウェアでもおなじこと
MSがスプライトと定義したのならそれはスプライト。 でいいじゃねぇか。 俺はオブジェクトと言う呼び方が好きだがw
つまりもともとDirectXには、スプライト機能など存在しないので、 自分でそれらしきものを作らなければならないということ。
結局どっちがはやいんでしょ? ビデオカードに対応してるかしてないかで違ってくるだろーし まあスプライト機能使った方がもろくそ速いっていうけどな
DX8以降は ・自分でサーフェス作ってスプライトを作る か ・ID3DXSpriteを使ってスプライトを作る の違いなわけでしょ? 何故か後者をスプライト機能っていってる人がわらわらと存在するだけでさ
名前に騙される馬鹿が多い
じゃどう違うの?わかるようにキチンと説明して
正確には、 ・自分で直接ポリゴン使ってスプライトを作る ・ID3DXSpriteが内部でポリゴンを使ってスプライトを作る
うーん、いかにも祝日らしい展開だな。休みのある人はええのう。
>>908 フレームバッファに描画してからDACに流し込むという点で昔の業務用orコンシュマハードとは仕組みが違うが
昨今のPCビデオチップではpoint sprite機能がアレに最も近い機能といえるのではなかろうか。
チップ間の機能(描画サイズの限界)がだいぶ離れてるけどな。あと拡縮できても回転できないな。
>>910 同意
>>909 ,
>>911 まったくどうでもいい話だが、
>>909 =
>>911 ならばおかしな話になるな。
D3DXSpriteが内部でポリゴン使ってないとでもいうのかと。
山崎式正弦ジャンプ復活祭だっただろ。
スレの流れが早くて置いてきぼりを食らってしまった。932の後半部分は無しで。
何蒸し返してんだこの野郎
>>933 ウブな俺としては、山崎式ジャンプがあれだけ支持されてることが今日一番の収穫だった
HWポイントスプライトって最大サイズがやけに小さくて使いものにならない気がしたが 最近はどうなの?
珍しくスレ伸びてるなと思って覗いてみたら なんじゃこの流れは!! 鬱で氏にそうなテンションで以後ヨロシク!
ウホッ!いいケツ・・・
では、お約束ということで ☆ チン マチクタビレタ〜 マチクタビレタ〜 ☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < 次スレまだ〜? \_/⊂ ⊂_ ) \_____________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | 愛媛みかん |/
>>916 ,
>>919 まぁまぁ同意。
>>920 一応違うな。
ハードウェアのスプライト機能はフレームバッファに一度描画するというプロセスが無いのがメリット。
H-SYNC毎にBG、スプライトのプライオリティ(深度値)を比較して描画すべき色情報を決定する。
RAMが高価だった頃の苦し紛れの仕組みだよ。
>>918 ,
>>928 えーと、上で説明したとおりです。分からないなら調べて。ゲームボーイ関連の資料なら合法的に手に入るだろ。
各自テンプレ修正案を提出のこと
なければ
>>950 が頃合いをみて次スレよろ
>>942 アベさんを呼ぶな。
ああ、ちなみに俺の入ってるプロバイダ永久に2ちゃんでスレが立てられないところだから。
ぷらら やしw。
自分で書いてて思ったのだが、 >フレームバッファに一度描画するというプロセスが無い こういう意味では昨今のPCビデオチップのオーバーレイ機能が 非常に似ているな。まぁあれはレイヤー単位ということになるが。
スレで出てきた話題をFAQとして
>>3 -あたりにまとめるというのはどうだろうか?
>>939 手元のラデ9500だと256x256までイケるみたいだな。
上の会話読んでたら頭痛くなってきた 最近の物知らずエセプログラマーというのはこわい
>3-10くらいでFAQをまとめてくれる勇者キボンヌ
個人的には
>>952 に期待
初心者から上級者までいるからな 現役高校生どもにそんな知識あるとは思えないし だからこそ現場にいる人達がFAQとしてきちんとした情報をまとめてくれることが大切だとおもう
>>952 (´Д`)山崎式ジャンプが気に入らないの?
あ、ゲハ板の例のスレ(莫迦ゲーム業界人スレ)で誰か暴れてきたでしょ? あんなこと思いつくのどうせ業界人じゃPG職の人しかいないし。
∧_∧ / ̄ ̄ ̄ ̄ ( ^^ )< ぬるぽ(^^)。 ( ) \____ | | | (__)_) ||||||||| 山崎式ジャンプ
>>953 理由はあえて言わないでおくが、ム板とゲ製作板にスレがある状態が一番望ましかったと
個人的には思う。そういう状態に戻るならテンプレに協力する気になる。
まあ、ラインバッファとフレームバッファの違いなわけだが。 原理上、ライン表示数に制限があるのが真のハードウェアスプライト てーかそんなことどうでもいいんですけどね。絵さえ出ればなんだっていいと思わんか。
>>957 そうきたか。
とにかく山崎式ジャンプはネタになるということは確かなようだ
>>960 ネタじゃないよ。実用性もバッチリだろ。
山崎式ガッ ( ^^ ) | | と ) | | ガッ Y /ノ 人 / ) < >__Λ∩ _/し' //. V ^^ )/ (_フ彡 / ←>957
フォグ色を指定しても反映されない(常に黒いフォグ)のですが、 何が原因として考えられますか?
>>964 どうやってる?
フォグまわりで使ってるレンダリングステータスすべてさらしてみ?
>>965 つーか900過ぎて埋めに入ってるから許されるだけで
900前でやったらさすがに荒らし扱いだろなw。
float fStart = 1.0f; float fEnd = 100.0f; pDevice->SetRenderState( D3DRS_FOGENABLE, TRUE ); pDevice->SetRenderState( D3DRS_FOGCOLOR, D3DCOLOR_XRGB(255,255,255) ); pDevice->SetRenderState( D3DRS_FOGVERTEXMODE, D3DFOG_LINEAR ); pDevice->SetRenderState( D3DRS_FOGSTART, *((DWORD*)&fStart) ); pDevice->SetRenderState( D3DRS_FOGEND, *(DWORD*)&fEnd ); スタート位置エンド位置やフォグのかかり具合は正常に描画されてます。 DirectXサンプルにあったMFCフォグはちゃんと色ついてるので、 色だけおかしいのは何が原因なのか…。
>>965 全く理解できない。放置しろ。煽られた池沼がファビョって暴れているだけであり調子付かせるな。
>>967 これで黒いフォグが出ることはありえないだろ。それ背景色の黒が出てるだけでは。
あるいはライト無しでなおかつ物体の深度(Z値)がD3DRS_FOGSTARTより小さいので黒色。
そういう凡ミスでなければ、ビデオカードとそのドライバのバージョンを晒して。
s/D3DRS_FOGSTART/fStart/
2chの楽しみ方は人それぞれ。 指図していいのは唯一ひろゆきだけ。
>>970 >>968 はあきらかに挑発だろ。
この話題が嫌いなら黙ってれば過ぎていくのに煽ってるし。
おそらくエロ画像が目的だな。
>>968 そうだね。MFCフォグが問題なく動作しているという話だからアプリ側のバグかな。
964がソース全部晒すのが手っ取り早いというか。
>煽られた池沼がファビョって暴れている
まぁ、池沼というのは話題に付いていけなくなると暴れますから。彼等はROMることを知らんのです。
>>970 ハァ?
>>971 なーる!空気読めてないのはオレだったか
>>964 そのコードで無事に動いたよ。
特別な事はしてない。SDK中の適当なサンプルに放り込んだだけ。
例えばこれ↓
Samples\C++\Direct3D\Tutorials\Tut04_Lights
に放り込んで試すと良いのでは。
>>973 粘着ウザ
ここは楽しい恥笑のいるインターネットですね
すみません。 フォグ設定部分のコードは多分誰が見ても問題ないと思うので、 多分他に問題があるんだと思います。 それで、他にフォグの色が黒くなってしまう原因として何があるのかな、 と思って質問したわけなんです。
>>974 おまえがウゼーよ
フォグくらいでグダグダと
池沼が話題に付いていけないからって暴れてんじゃねーぞこら だまってROMってろぼけ
>>978 放置しろ。煽られた池沼がファビョって暴れているだけだ。
あまり調子付かせるな。
そうだな、すまない。
981 :
デフォルトの名無しさん :04/02/13 04:54
DirectSound で(ループしない)ストリーミング再生をする時、 WAV を全て読み込んだ後のバッファの「余り部分」を再生させない 方法を教えてください。 「ここで再生を止めたい」と思うバッファの位置が分かっていても、 Stop() では止められません (;_;
982 :
デフォルトの名無しさん :04/02/13 05:41
directxのフルスクリーン画面で変数に代入されている数字を表示させるにはどうしたらいいのですか?
>981 美しい方法が思いつかなかった俺は、 念のため後ろに無音を詰めて、 データ書き込みスレッドがGetCurrentPosition()ポーリングループ、 終了位置を越えたらStop()としてる。 まあバッファ全部無音で埋め尽くせば、止める必要など無い。 などと暴言を吐けんこともない。
>>983 やっぱりそれしかないんですかねぇ・・・
>>981 DirectSoundのStreamDataサンプルを参照すれば良いのでは。
LoopのON/OFF出来るみたいだし。
986 :
デフォルトの名無しさん :04/02/13 07:37
directxでマウスを扱うにはどうしたらいいのでしょうか?
987 :
デフォルトの名無しさん :04/02/13 08:37
LINK : fatal error LNK1181: 入力ファイル 'd3drm.lib' を開けません。 というエラーがでてきましたdirectx9SDKをインストールしてあるのですが ファイル検索でd3drm.libをさがしても存在しませんでした どうすればいいのでしょうか?
殺伐としたスレに救世主が! ヽ)∵)ノ ( ( くねくねマン ) )
989 :
デフォルトの名無しさん :04/02/13 13:04
>>987 前のバージョンのsdkからlibだけとってきて適当にリンクすればいいんちゃう?
990 :
デフォルトの名無しさん :04/02/13 13:16
>>989 前のバージョンのlibだったんですか…
ありがとうございました
991 :
デフォルトの名無しさん :04/02/13 13:22
>>990 調べてみたらDirectX7SDKにあるらしい。
DirectX8SDKですでに消えてるw
>>988 負けない。
∧ ∧∧ ∧
(゚Д゚≡゚Д゚) プルプル
|し |つ
⊂__ |
し'
(( ∩ )) プルプルプル
γ'⌒ヽ∧ ∧
し'ゝつ( ゚Д゚)つ
993 :
デフォルトの名無しさん :04/02/13 14:22
もうテンプレはいいから誰か次スレだけでも立ててくれ。 俺のホストでは駄目だ。
埋めレス >984 それしかないかは分からないけど、 Bufferをぴったり停止させる必要が、そもそもあるのかどうか?と >985 結局これもnotifyイベントで待つだけで同じような方法ですな。 >995 乙
∧ ∧∧ ∧ (゚Д゚≡゚Д゚) 999!? |し |つ ⊂__ | し'
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。