鬱だ氏のう DirectX (Part 7)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
02/12/10 17:34ID:tkEwMMYm初心者用相談室では扱わないような少し高度な話題も受け持つ。
■ 過去スレ
Part 1 http://piza.2ch.net/tech/kako/966/966655286.html (プログラム板)
Part 2 http://pc3.2ch.net/test/read.cgi/tech/997101556/ (プログラム板)
Part 3 http://game.2ch.net/gamedev/kako/1005/10051/1005119775.html
Part 4 http://game.2ch.net/gamedev/kako/1016/10162/1016276254.html
Part 5 http://game.2ch.net/test/read.cgi/gamedev/1027351925/
Part 6 http://game.2ch.net/test/read.cgi/gamedev/1033920036/
0124名前は開発中のものです。
02/12/24 20:51ID:8FHlCXa70125名前は開発中のものです。
02/12/24 22:14ID:sve9Duu3DX8から部分的にサポートされてるよ
ただし利用方法が激しく制限されてるので
2^nの一部を使ったほうがまだマシ
0126名前は開発中のものです。
02/12/24 23:39ID:wBChHQUXどこが激しいのか疑問。
ミップマップ以外は制限とは言えない程度のささいな事じゃん。
2^nであってもCLAMPにしたらテクスチャラッピングは使えないから、
実質的に制限は2つだけ。
0127名前は開発中のものです。
02/12/24 23:54ID:sve9Duu3使ったことないのに無理しないで。
あとサポートしてる環境を把握してる?
0128名前は開発中のものです。
02/12/24 23:58ID:nM8z+tpm痛い香具師ハケーン
0129名前は開発中のものです。
02/12/25 00:28ID:5yYW1Zioそういう自分こそ使ったことない&把握してないのでは?
あの制限のどこが問題になるのか説明してくれる?
0130名前は開発中のものです。
02/12/25 00:41ID:o5sX+mEC戻らないのですが、元に戻すには何かしなければいけないのですか?
0131名前は開発中のものです。
02/12/25 00:56ID:C+V8gp8bResetが必要なんではないか。
詳しくはサンプルを参照。
0132名前は開発中のものです。
02/12/25 01:06ID:loF3ndqX0133名前は開発中のものです。
02/12/25 01:23ID:MT7gu6YF0134名前は開発中のものです。
02/12/25 03:30ID:PtOPqJI+D3Ddevice 作り直さないとだめなのよ〜ん(タブン)
0135名前は開発中のものです。
02/12/25 03:44ID:Km2eVg0y0136あぼーん
NGNG0137名前は開発中のものです。
02/12/25 07:41ID:BoDn9JVh10 DEFINT A-Z:SCREEN 3,0,0,1WIDTH 80,25:CONSOLE 0,25,0,1:CLS 3
20 device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
30 RELEASE(device);
0138あぼーん
NGNG0139名前は開発中のものです。
02/12/25 10:23ID:vBfJXHZbBBXも野郎BBSも閉鎖だし、ここはこんな風だし…
日本のアマチュアゲーム開発は終了だな。(´・ω・`)ショボーン
0140名前は開発中のものです。
02/12/25 10:45ID:N0hSeH2R0141名前は開発中のものです。
02/12/25 11:55ID:ztzHsFBr0142名前は開発中のものです。
02/12/25 11:58ID:srbFeJO+http://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi
教えて欲しかっただけだろ?
0143名前は開発中のものです。
02/12/25 11:58ID:cEvsDgEI0144名前は開発中のものです。
02/12/25 12:06ID:6xTmGeBz調べることができない人間ほどBBSに頼りたがる
BBSに頼りたがる人間ほど移転しただけで閉鎖したと勘違いする
勘違いする人間ほど自分が頼るものを失った時点で全てのアマチュアプログラマが開発を終了したと思いこむ
0145あぼーん
NGNG0146あぼーん
NGNG0147名前は開発中のものです。
02/12/25 16:10ID:o5sX+mEC自分のプログラムでは、MIDIを再生すると、リバーブ等のエフェクトが
最大になってしまいます。一度再生すると、全てのMIDIとWAVがこうなってしまいます。
そこで、エフェクトを削除する方法がわかったので、SetFX(0, NULL, NULL)で
エフェクトを削除したら、すでに再生しているMIDIがとまってしまいました。
で、もう一度MIDIを再生しようとすると、またエフェクトがかかってしまうのです。
エフェクトを削除したら、再生しているMIDIがとまったというのは、
工学社のサンプルでもそうだったので(コードも同じでした)、そういうもんなのだと思ったのですが、
では、どうすればいいのでしょう。
そもそもMIDIを再生した時点でエフェクトがかかるのが間違いですか?
0148あぼーん
NGNG0149名前は開発中のものです。
02/12/25 18:50ID:srbFeJO+0150名前は開発中のものです。
02/12/25 20:54ID:PzwC4Farメッシュにxファイルを読み込みたいのですが、
そのファイルはどこら辺に入れておいたらよいのでしょうか?
本を買って勉強しているのですが、その辺がどうもわからなくて、つい。
0151名前は開発中のものです。
02/12/25 21:16ID:NnnYhCf/カレントデレクトリ
0152あぼーん
NGNG0153あぼーん
NGNG0154名前は開発中のものです。
02/12/25 22:05ID:PzwC4Farお返事ありがとう!
…つまり、プロジェクトが入っているフォルダ?
0155名前は開発中のものです。
02/12/25 22:09ID:NnnYhCf/VisualStudioから実行した場合はたぶんそうだけど
普通はexeファイルがあるところ、
カレントディレクトリをゲットする関数(Win32)とかもあるんで
調べてみたらいいかも?
0156名前は開発中のものです。
02/12/25 23:29ID:/fn3aOJDSPRITEで半透明ってできませんか?
0157名前は開発中のものです。
02/12/25 23:29ID:lmj/8fOxカレントディレクトリはプログラムの実行の仕方や、実行中の操作で変化
するから、できればフルパスで指定した方がいいよ。
でも、大抵の場合はカレントディレクトリから読み込んで問題無い。
VisualStudioから実行した場合は、デフォルト設定のままならプロジェクト
のある場所がカレントディレクトリになるけど、プロジェクトの設定の
作業用のディレクトリで変更できる。
ちなみに、実行中にファイル選択ダイアログを使う場合は、このダイアログ
がカレントディレクトリを変更してしまうので要注意。
0158_
02/12/25 23:34ID:7ccBlzyEどうやるのが一般的か知りませんが、自分は
char path[_MAX_PATH];
GetModuleFileName(hInst,path,_MAX_PATH);
で、exeファイルフルパスを取得したあと、邪魔なファイル名を削ってカレントディレクトリを取得しています。
実行ファイル名の削り方は、
char pDrive[_MAX_DRIVE+1];
char pDir[_MAX_DIR+1];
char pFname[_MAX_FNAME+1];
char pExt[_MAX_EXT+1];
_splitpath(path,pDrive,pDir,pFname,pExt);
でフルパスを分解してから、
string currentDirectory=pDrive+pDir;
currentDirectory+="\\";
くらいでいいのでは。
例えば、
Text.xというxファイルを、exeのあるフォルダにいれたとしたら、
ファイルを読み込むときに、
string filename=currentDirectory;
filename+="Test.x";
のようにかいて、それをファイルを読み込むメソッドの引数に入れるとか。
う〜ん、わかりずらいですね…。
0159158
02/12/25 23:37ID:7ccBlzyEcurrentDirectory+="\\";
は必要なかった。
0160名前は開発中のものです。
02/12/26 00:15ID:IJOtQDAyぜぇっっってぇーフルパスにしとけ。
なにがなんでもフルパスを使うくせをつけろ。
0161名前は開発中のものです。
02/12/26 00:18ID:hDb5j8vTテクスチャのα値をいじれば?
0162名前は開発中のものです。
02/12/26 00:49ID:ZW5MFsfxDirectX8のスプライトはあまり良くないので、ポリゴンでスプライトの代用した方が
自由度が高いよ。
0163_
02/12/26 00:52ID:p7bBeRQyID3DXSprite使ったこと無いけど、たぶん
ID3DXSprite::Drawの引数D3DCOLORのα値を指定するのかと。
例えば50%半透明なら、
D3DCOLORにD3DCOLOR_ARGB(128,255,255,255)を入れればいいと思う。
>>162
同意。ID3DXSpriteには、あまりいい噂はききませんね。
0164名前は開発中のものです。
02/12/26 02:43ID:8elQi3d2exeのある場所を最初にカレントにして、そこから相対パスってのが基本だろ。
0165名前は開発中のものです。
02/12/26 02:49ID:u+QTkfIN開発中はdebug\hoge.exeとかになってるぽ
0166名前は開発中のものです。
02/12/26 03:48ID:9RUwBm5sコモンダイアログのファイル選択ダイアログを使ったことがあれば
フルパスマンセーになるぞ。
ゲームならあまり使わないかもしれないがツールだとまず確実に使う。
0167名前は開発中のものです。
02/12/26 05:51ID:AGlHM0EQファイル選択ダイアログのフラグにOFN_NOCHANGEDIRつけとけばカレントディレクトリかわらないよ。
まあ、毎回元のディレクトリから始まるようになるので、
遠くのファイルを何回も選ぶ場合には面倒だけど。
嫌なら毎回ディレクトリ保存しておいて復元してもいいし。
0168あぼーん
NGNG0169名前は開発中のものです。
02/12/26 07:04ID:ePwyo9mVってのが一番面倒、ぶんなぐれ。
でかいツール作ってるときは誰がなにやってくれるかわからない。
ゲーム本体でもユーザーに保存場所を選ばせる場合だと必要になるから、いっそフルパスマンセーのが楽に逝ける。
0170名前は開発中のものです。
02/12/26 07:08ID:oxPiSeR20171156
02/12/26 07:10ID:h8wBSWcJお、ちゃんとα描画できました。
SPRITEの方が簡単に作れると思ったのですが、やはり普通に
ポリゴンで扱ったほうがいいみたいですね…。
ありがとうございました(・∀・)
0172あぼーん
NGNG0173名前は開発中のものです。
02/12/26 07:52ID:f4uAG8OsXファイルのテクスチャをフルパスで吐き出すのが困りものなのよね。
ところで、フルパスからカレントパスを作るのも意外とめんどい
んだけどなんか良い関数ないもんですかね?
0174150
02/12/26 09:15ID:ik1sR7sqこんなにレスがつくとは思いもよりませんでした。
本当にありがとうございます!!
では引き続き作業を頑張ります。
0175名前は開発中のものです。
02/12/26 09:53ID:8elQi3d2どっか他にない?
0176名前は開発中のものです。
02/12/26 11:22ID:8ZNjq3avftpからはおとせたYO!
ftp://download1.nvidia.com/developer/cg/
0177名前は開発中のものです。
02/12/26 11:34ID:AGlHM0EQPathRelativePathToあたりどう?
環境(IEのバージョン?)によっては動かないかもしれないけど。
0178名前は開発中のものです。
02/12/26 11:46ID:Tz6MkjNI現在.hackの様な視点の3Dゲームを作ろうとしているのですが、
周りの物体が妙に傾いたように描画されてしまいます。
プロジェクションマトリックスのセットはこんな感じです、
D3DXMatrixPerspectiveFovLH(&mProj, 60*PI/180 , 1.0f , 0.5f , 640.0f);
何か解決策は無いでしょうか。
0179名前は開発中のものです。
02/12/26 12:12ID:u+QTkfIN画面の縦横比をいれなきゃダメよ。
0180名前は開発中のものです。
02/12/26 12:19ID:Tz6MkjNI早速アスペクト比をWIDTH/HEIGHTで入れたのですが、
やっぱり画面端に行くにつれ、木などが傾いてしまいます。
0181名前は開発中のものです。
02/12/26 12:34ID:j+J1+fQKってか、連書き規制きびしすぎねえ?1時間以上経つのにかけなかったよ
0182名前は開発中のものです。
02/12/26 12:40ID:W0NkvfZI640*480の解像度で1.33333fとか入ってるの。
0.75だろうが!って突っ込みたかった。
0183名前は開発中のものです。
02/12/26 12:47ID:+a+DZGj70184名前は開発中のものです。
02/12/26 13:18ID:u+QTkfINあとはfloatにキャストしてないとか
int W = 320;
int H = 240;
D3DX...( ... , W/H, ...);
じゃあダメよ。
0185あぼーん
NGNG0186名前は開発中のものです。
02/12/26 16:50ID:rNK9GIomありがちだな
0187名前は開発中のものです。
02/12/26 17:30ID:Tz6MkjNID3DXMatrixPerspectiveFovLH(&mProj , 35.0f*PI/180 ,(float)WIDTH/(float)HEIGHT , 1.0f ,640.0f);
と、してみたところ結構マシになりました。
ありがとうございました。
0188名前は開発中のものです。
02/12/26 17:39ID:u+QTkfINおめでとう。
あと、WとHが逆だったかもしれん。
0189名前は開発中のものです。
02/12/26 18:25ID:SuFqab0rがあるそうですがどの関数で切り替えられれますか?
0190189
02/12/26 18:38ID:SuFqab0rでは処理速度はフラットの方が速いでしょうか?
0191名前は開発中のものです。
02/12/26 20:39ID:bqU4KP+U試してみるのが一番だ。
0192名前は開発中のものです。
02/12/27 07:45ID:md1EDfNJ激しく環境依存ってことも忘れずにね
0193あぼーん
NGNG0194名前は開発中のものです。
02/12/27 12:24ID:7dHzV0a8スプライトのDraw「だけ」なんですか?
ポリゴンを描画しようとすると、自分の環境では表示がおかしくなるのですが、
ほかにおかしそうなところが見当たらないので、そういうもんと認識しても
いいのでしょうか。
0195名前は開発中のものです。
02/12/27 13:20ID:vFPVFOouパフォーマンスの初期化のところでデフォルトのオーディオパス・タイプをみて
DMUS_APATH_SHARED_STEREOPLUSREVERBになってませんか?
DMUS_APATH_DYNAMIC_STEREOにすればエコーがなくなります。
0196195
02/12/27 13:22ID:vFPVFOouhr = g_pPerformance->InitAudio(
NULL, // IDirectMusicインターフェイスは不要
NULL, // IDirectSoundインターフェイスは不要
NULL, // ウィンドウのハンドル
/*DMUS_APATH_SHARED_STEREOPLUSREVERB*/DMUS_APATH_DYNAMIC_STEREO , // デフォルトのオーディオパス・タイプ
64,// パフォーマンス・チャンネルの数
/*DMUS_AUDIOF_ALL*/NULL, // シンセサイザの機能
NULL); // オーディオ・パラメータにはデフォルトを使用
if (FAILED(hr))
{
DXTRACE_ERR("DirectMusicPerformance8の初期化に失敗", hr);
return FALSE;
}
参考書コードの修正後ソース・・・この方が分かりやすいかと・・・
0197あぼーん
NGNG0198名前は開発中のものです。
02/12/28 18:56ID:pcScEEbX終了
おまえら首吊れ
0199名前は開発中のものです。
02/12/28 21:55ID:EVvwHmrD0200名前は開発中のものです。
02/12/28 23:48ID:KFOt0L7zうわぁ〜。すごいすごい。
その通りやったら見事直りました。
ありがとうございました。
0201あぼーん
NGNG0202名前は開発中のものです。
02/12/29 04:51ID:mxtUttMfまともな製品作るならシェーダで突っ走るに決まってる。
糞ユーザーのためにシェーダ使わない選択するのは愚挙。
そういうときはソフトウェアで頂点シェーダ動かしてピクセルシェーダは放置
0203名前は開発中のものです。
02/12/29 05:46ID:YZiM0Z3Wそれは別として、DirectX 9の日本語HTMLヘルプがウィンドウサイズ記憶してくれない……。
どうなっとるんでしょうかこれわ。8のはちゃんと覚えてくれるのに。
0204あぼーん
NGNG0205名前は開発中のものです。
02/12/29 09:23ID:UWWAc8w/まあ、大手でサポートバッチリならいいけど、
それ以外なら駄目よ。
だってグラボを自分でつけかえないかぎりピクセルシェーダなんてついてこねーだろ?
ドライバだってとってくるとは思えない。
バンプだってまともに動くもんがすくないぞ
0206名前は開発中のものです。
02/12/29 10:39ID:mxtUttMfはいはい
別に使わなくていいよ
君はドライバ由来の不具合も自分の責任の範囲とする立派な方だ。
NECの98時代から受け継がれた日本の美徳だね。
0207名前は開発中のものです。
02/12/29 11:25ID:BImKIoRD理想はそうかもしれんが、ユーザーにドライバの不具合がどうたら言ってもなあ。
0208名前は開発中のものです。
02/12/29 11:45ID:Yj/SuFlV日本にどのくらいいるんだろ…?
10万人いるのかな?
FF効果で結構増えたと思うが…。
0209名前は開発中のものです。
02/12/29 12:02ID:Rd+l9s3FうちもなぜかDirectX9のヘルプがウィンドウサイズ記憶しないので、仕方なく
MSDNに統合して使ってるよ。
http://www.sofarts.com/computer/env-soft/windows/app_programming/vs/vs-dx-msdn2.htm
0210_
02/12/29 12:14ID:WzbQdq3yhttp://freeweb2.kakiko.com/dengeki/indexe.htm
0211名前は開発中のものです。
02/12/29 12:48ID:mFB76vnS一般ユーザーはPCでゲームなんてやらない(特に洋ゲーなんて)から、
シェーダー使いまくっても問題ないんじゃね
0212名前は開発中のものです。
02/12/29 13:46ID:XzXpe3S+どの程度買い換えると思うんだい。
ゲームだけのために何万円も出せるやつぁなかなかいないよ。
今ならGeForce2MXか4MXあたりで満足してるだろうな。
0213名前は開発中のものです。
02/12/29 15:23ID:ZUUThS54> D3DX8.CreateTextureFromFileInMemory メモリ内のファイルからテクスチャを作成する。
>
> object.CreateTextureFromFileInMemory( _
> Device As Direct3DDevice8, _
> SrcData As Any, _
> LengthInBytes As Long) As Direct3DTexture8
>
> SrcData
> テクスチャの作成に使用するメモリ内のファイル。
このメモリ内のファイルとは、どうやって作成するのですか?
0214名前は開発中のものです。
02/12/29 15:36ID:ZUUThS54これのC++バージョンでお願いします。
0215名前は開発中のものです。
02/12/29 15:42ID:Z7eWPCRpグラボがどういうものかなんてちゃんと認識してかってるやつなんていないんだよ。
大抵は知ったか野郎の馬鹿ばっかと考えて、まず間違いない、
GForce4MX買ってきて動きませんとかいう質問が何百件ときてその一人一人に説明すんだぞおめ。
サポートがしっかりしてればべつね。
0216213
02/12/29 17:08ID:ZUUThS540217名前は開発中のものです。
02/12/29 17:09ID:d5AOLlrAゲーム自体が動かないようには作らない
0218名前は開発中のものです。
02/12/29 17:30ID:+snDuV4eもし、その機能がなかったらこの機能を代わりに使うということを逐一考えて作るのか?
判定をミスると透過やフォグの類は最悪だぞ、
ラデオン7000ではフォグがきかずユーザーの画面には白い板がでてたそうな。笑
ピクセルシェーダはどうなるんだ?
透過が入ってくると無ければ使いませんとはいかないだろ
0219名前は開発中のものです。
02/12/29 17:41ID:kj0kwrPh手間はかかりますが有り無しを別々に作れば問題ありません
実際市販ゲームでは最低スペックの条件はあるにしても
最新機能の有り無しは速度と画質にしか影響してません
0220名前は開発中のものです。
02/12/29 17:55ID:YfCnAzDbサイト知ってる人いますか?
0221名前は開発中のものです。
02/12/29 18:11ID:UWWAc8w/でもそれなら、いっそ上はみないで低機能マシンでも動く範囲内で作りこんだほうが綺麗になるかも。
という結論になっちゃうよ。
だってモデルやテクスチャも動かないマシンむけと本物むけを用意しなくちゃいけないこともでてきそうだし。
0222あぼーん
NGNG0223名前は開発中のものです。
02/12/29 23:58ID:fsGk3LPm言ってることが極端すぎないか?ようは低機能のマシン(といっても
限度があるだろうな。さすがにVirgeって事は無いはず)でちゃんと動く
ように作り、プラスアルファの部分として、ピクセルシェーダーのある
マシンなら使う部分がある、みたいにするんじゃないの?判定はできるんだし。
ピクセルシェーダーの無いハードは、細かい機能の有無なんかチェック
しないで、低機能マシン汎用ルーチンで処理しちゃえばいいでしょ(もちろんこの
部分をちゃんと作る必要はあるんだが)。
ちなみに頂点シェーダは、8.1までの機能なら、ノープロブレムで使えると
思ってる(CPUがちゃんとエミュしてくれる)けど、実際は問題があることも
あるのかな?個人レベルでは、そういう経験は無いんだけど。
■ このスレッドは過去ログ倉庫に格納されています