【C++】 DirectX初心者質問スレ Part3【C++】
※回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する香具師 】
・ どんな事で躓いているのか明確にしる。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。
よくわからんけど、即死阻止で2get。
本日、「DirectX9 実践プログラミング」買って来ますた。
これからマターリと勉強します。
乙カレーライス
>>2 あれ意外とやくにたたない部分あるから注意
WEBサイトと比較しながらやったほうがいいかも
5 :
デフォルトの名無しさん:05/02/22 00:57:11
皆さんのようなDirectXによる3Dプログラミングマスターになりたいのですが
どれくらいの時間をかけてどのような勉強をすれば、皆さんのような凄腕になれるのでしょうか?
こんな質問する奴いねーよ。あやしい奴め。
視錐台の近平面までの距離って0にしてもいいんですか?
なんでサンプルなどでは大抵1など0より大きくしているのは
何か理由があるんですか?
俺妖しいっスカね
>>7 駄目だよ。射影行列の式を睨んでりゃわかるけど、
頂点のwを正規化するとzの情報が死んじゃうの。
不特定多数の匿名相手に「皆さんのような凄腕」とか言うか?
ageて言うから怪しさ爆発。
マジレスするならプログラム作るのもいいが情報収集も重要。
海外も含めてニュース系、ブログなどで新技術の情報も毎日チェック。
それを続けて会社に入って3Dの仕事して10年も経てばそこそこの腕前。
参考書片手にプログラムしかしない奴はだいたい技術力低い。
ここはプロプログラマが来るとこだったのか
全員趣味プログラマかと思ってたorz
有能なゲームプログラマは忙しいからこんなとこにはこれんな。
>>最近DirectXを始めたばかり
これってそれなりに理解してるヤツは自力でなんとかしろ
ってことか?
Xファイル(テキスト形式)についての質問。
Mesh なんとか {
12;
-319.000000;251.000000;546.000000;,
..(.略)
2;
3;2,1,0;,←ここ
3;5,4,3;;
..(略)
}
面の頂点の保存される順番って、モデリングツールによって様々なんでしょうか?
ツールで書き込んだ順番に保存されるということでしょうか
直線と平面の交点 と 面の3頂点それぞれの外積によって向きを取得したいんですが。
カリング判定も同様。
XFileはあくまでコンテナ。
中の座標系もカリングもこうしなければならないという規約はない。
描画エンジンについて質問です。
DirectXを使ったシステムで、ゲーム進行処理と描画処理を平行に行うには
どのような方法が一般的なのでしょうか?
>>21 レスありがとうございます
Windows嬢でなら、やはりスレッド作るしかないですよね
リンク先を熟読し、熟考してみます
ありがとうございました
24 :
デフォルトの名無しさん:05/02/24 03:39:32
gccでDirectXは使えるの?borlandの無料コンパイラでもいいのですが、最適化機能が弱そうなので、gccを使いたいのですが。
cygwinならどう?
26 :
デフォルトの名無しさん:05/02/24 07:29:46
可能です
mingwでも可
DirectX学ぶなら先にWin32APIをマスターしたほうがよさげ?
マスターの意味するところによる
実際にはDirectXAPI+Win32APIでプログラミングするので
Win32APIを知らないと話にならない
>>30 そんなわけねぇだろアホ。
実際はいらない。
SDKのサンプルに必要なものがすべてのってるので知らなくてもとりあえず
ゲームを作ることはできるはず。
後は、時間が解決してくれる。
お前、時間が解決してくれる言いたいだけちゃうんかと。
33 :
デフォルトの名無しさん:05/02/26 16:55:07
>>31 時間が解決してくれるわけねぇだろアホ。
ということも、時間が解決してくれるさ。
アホとか言う厨房がいるスレは荒れる。
>>31 そのサンプルでWin32APIを使ってるんだが
>>28 まあ、会話読んでてわかると思うけどマスターする必要は無い。
特に本腰いれて勉強する必要も無い。
でも、ちょっとだけ出てくる。
そんな感じ。
38 :
デフォルトの名無しさん:05/02/26 20:51:44
はっきりいってwin32はウィンドウ作ることぐらいしか使わない
一度骨格作ればあとはすべてDirectXだからはっきりいって
win32勉強する必要なし
もし必要になってもMSDN見れば分かる程度のことだけ
win32必要だおりゃ~とかいってるやつ 本当にDirectXやってるのかw?
釣りにしては、
ちょっと威力が足りない気がする…
しかしそうかー、
ファイルの読み書きもしないのかー。
SaveDataとかどーすんだろー。
こうやって不勉強の言い訳しかしないからスレッド一つまともに使えなくなるわけだ。
AdvancedWindows くらいは読んどけ
>>40 スレッド使うときにMSND見ればいいだけの話
そもそも別スレッドたててうんぬんなんか普通のゲームプログラムじゃやらん
わざわざ最初に勉強する必要なんかまったくないぞ
ストリーミングやるときに勉強しなはれ
>>42 MSDNを見ただけで、スレッドを使う場合の注意点や危険性ががわかるあなたは天才ですね。
>>43 MSDNでわからなければネットで調べればいい
俺が思うのはDirectXでゲームを作りたいのに、なぜ余分な勉強をしなければならないのか
別にスレッドなんか知らなくてもDirectXでゲーム組むことできるんだけどさぁ?
そうやっていろんなこと沢山取り入れようとすると、時間ばかりかかってしまって
全然効率的ではない
そのぐらいのことはわかるだろう
関係ないが、ゲームで意味もなくマルチスレッド使いたがるヤツは勘弁
言い忘れたけど、win32勉強するにしても、DirectX勉強するにしても
どこまで勉強したいのか明確にしなければ時間ばかり費やす結果になる
つまり、自分が実現したいシステム上で何が必要で、今何が足りなくて
何の勉強をする必要があるのか を把握する必要がある
今使わないけどいつか使いそうな機能なんだよなーと勉強してると
いつまでたっても先へすすめない
>>45 > MSDNでわからなければネットで調べればいい
無知なら無知で構わないが、こういういい加減な発言を垂れ流すのはやめるべき。
スレッドを使ったプログラムでどこに不具合が出るか、ネットで調べるだけで分かったら苦労しない。
これは実際にやってみて経験を積むしかない。
で、この程度のことも分かっていないということは、まともにスレッドを使ったことが無く、
使った場合の利点と欠点を知らず、必要に応じて使い分けることも出来ないということになる。
つまり非効率なプログラムを組んでいることも認識できていない。
なぜ自分が無知なのを大声で叫び続けるのか、さっぱり理由が分からない。
>>45は、とりあえず動くものは作れるってことが
言いたいだけなんじゃないの?バカに変わりないけど
そんなことだからCPU使用率100%でも恥ずかしくないんだろうな。
45は、そこまで非道いこと言ってないと思うんだが、
誰かの触れてはいけない所に触れたのか?
余分な勉強は必要ないと学校の勉強をおろそかにして、
初歩的な高校数学で出来るような計算が出来ずに
途方に暮れている奴が3Dをやっているような状態。
コンシューマ機をメインでやっているから
CPU使用率100%使っちゃう俺は恥ずかしいヤツだな…orz
他アプリとの共存めんどくせー
>>48 スレッドの利点、欠点をしらずにっつーか
そんなこと 必要なければ勉強する必要ないんだよ
そこんとこ理解しろやw
あんたら無駄に勉強して知識付けすぎで、話がわけわからなくなってるぞ
自分にとって必要なものだけ勉強すればいいんだよ
そんなに時間無駄にしたいのかorz
つまり、ゲーム作りたいってやつにスレッドどうこうのいってる時点でおかしいってことにきづけ
>>52 3Dの勉強と 学校の数学は 似てるようで違う
3Dの勉強はそれでまたやればいいだけ
学校の数学やってれば3D組めるわけがないだろ
>>52 学校の数学やってれば >> 学校の数学やっているだけで
>>54 使ったことがないのに勝手に必要ないと判断している時点で終わっている。
自分が使うかどうかはそれこを勝手だが、
自分が理解していない物に関して、他人に必要ないと説くのは有害でしかない。
>>53 他アプリ関係なし。あなたまだ問題を理解してないね。
>>54 知らないけど必要ないことは知っている、なんて滅茶苦茶だよ。話にならない。
あんたプログラムの知識がゼロだった時に必要な知識がどれだかわかったのかい?
わかったならいいや。あんたエスパーだよ。
>>57 スレッドが有効な場面を説明してみなさいよ。
ないなら無駄な知識といわれても仕方ないね。
生かせない程度の知識だってことだから。
Windows上でのゲームプログラミングにWin32の知識は必要ですか?
必要です。
62 :
デフォルトの名無しさん:05/02/27 02:39:34
>>60 ほとんど必要ない。
DirectXSDKのサンプルをコピーして終了で十分と言えます。
なんか誰か必死になってるみたいだけど
基本的には
>>45に書いてあることは正しいと思っていいと思うよ。(俺は
>>45じゃないけど)
必要ならそのつどMSDNでも調べればOKだよ。
>>63に同意
初心者スレだし、まずは何か作りたいと思う人ならそれでいいんじゃないかな
とりあえず小さなものを一度作れば自分に足りないものが見えてくるんでは?
その上で改めて勉強した方がきっと頭に入りやすいと思うよ。
で、足りないものを補って次を作って、また足りないものを補って・・・と繰り返すことで
徐々に身についていくと思う。
そういう意味で、WinAPIの知識がいずれ必要になってくることはあるんじゃないかな?
まっ、こんなところで油売ってる暇があったら何かしらさっさと取り組むべきだね>ヲレモナー
なんだか少し前からこのスレ、精神論とかマナー論議とか
誰でも参加できる簡単な話題でばかり盛り上がるのな
昔は新規のレスが多いと嬉しかったのに…
すまん、鬱だスレと間違えてた、こっちじゃしょうがない
>>58 >知らないけど必要ないことは知っている、なんて滅茶苦茶だよ。話にならない。
>あんたプログラムの知識がゼロだった時に必要な知識がどれだかわかったのかい?
>わかったならいいや。あんたエスパーだよ。
確かに勉強しはじめたころ何が必要かなど分からないことがたくさんあるが
その状態でwin32すべて理解しろというのか
ごくわずかな人を除くほとんどの人はwin32を理解することを目的とするのではなく、
ソフトウェアを作る過程においてwin32を利用したいのだろう(あるいは利用せざるおえない)
ならば、そのソフトウェアでどういったことを実現したいのかを明確にして
それにはどういった機能が必要なのかを調べ、それの勉強したほうが
いいにきまっている
なぜなら、それは自分にとって必要だと判断した情報であり、必要だと判断した勉強だからだ
勘違いしているようだが、スレッドはまったく必要ないといいたいのではない
俺がいいたいのは、スレッドがなくてもソフトウェアは作れるということだ
普通はスレッドを勉強することを目的とするのではなく、自分が達成したい目的のために
スレッドを勉強するのだろう
必要ないと自分で判断すれば利用する必要はない
自分で勝手に判断して使わないのは勝手だが、
自分は無能のままでいいから、他人も無能のままでいても問題ないというのは間違っている。
少なくとも他人に対して馬鹿のままでいいと触れ回るのはやめるべき。
>>68 君の発言はまるで中身がない。
一番不要なのは君だ。
>>68 > 俺がいいたいのは、スレッドがなくてもソフトウェアは作れるということだ
残念ながらスレッドがなかったらWindows上でプログラムが動かせませんよ。
その書き込みは敗北宣言に等しい
つまり勝つとか負けるとかいうことに意味を見いだしている人なのか。
で、DirectXの質問はどこ?
75 :
デフォルトの名無しさん:05/02/27 11:29:57
>>71 残念ながらWindows上でプログラムのメインの処理自体がスレッドだというのは後から分かるので最初は意識しなくても動かせますよ。
そして分かっていない人がCPUを無意味に使い切ったりするわけだが。
CPU使用率100%が嫌われるのはそれが空ループかそれに近い形で実装されているから。
>>68 ここでいうスレッドというのはマルチスレッドのことを言っている
>>77 CPU100%とかそういう程度の低い内容やめてくれよ
話している内容はそういうことではないだろう?
SetRenderStateメソッドはペナルティが大きいようですが、
SetVertexShaderConstantFメソッドのペナルティはどれくらいですか?
>>81 マニュアルの[Direct3D API 呼び出しの正確なプロファイル]に
平均サイクル表とか載ってるよ。
>>82 ヘルプのバージョンが古かったようでした。
最新のヘルプを入れたら載っていますね。
ありがとうございました。
84 :
デフォルトの名無しさん:05/02/27 14:28:51
フリーのものだけで、DirectXプログラミングをやりたいのですが、何をそろえればよいのでしょうか?
85 :
デフォルトの名無しさん:05/02/27 14:33:32
フリーのものだけで、DirectXプログラミングをやりたいのですが、何をそろえればよいのでしょうか?
86 :
デフォルトの名無しさん:05/02/27 15:47:28
質問です。環境は XP、VC++6.0 です。
LPDIRECTSOUNDBUFFER 型 buffer、
LPDIRECTSOUNDNOTIFY 型 notify を用いて、
HRESULT result = buffer->QueryInterface(IID_IDirectSoundNotify, (LPVOID *)¬ify);
if (FAILED(result)){
return false;
}
とすると、result に E_NOINTERFACE が返され、失敗してしまいます。
マニュアルには、QueryInterface は
「オブジェクトが特定のコンポーネント オブジェクト モデル (COM) インターフェイスをサポートしているかどうかを判別する」
とあるのですが、これをサポートしていないということでしょうか?
また、サポーしていない理由として、何が考えられるでしょうか?
よろしくお願いいたします。
>>85 とりあえず初めてならHSPをやってみて
本格的に作りたいと思っているのであれば
visual studio .net spoke(学生割引 定価4980ぐらい アマゾン価格3980)を
買ってC++でやったほうがいい
>>85 この世界ただより高い物は無いよ。
VC(5000円ぐらいのある)とDirectXの入門書ぐらいは買わないと一歩進むたびに
誰かに頼らなければ前へ進めないので非常に効率が悪い。
89 :
デフォルトの名無しさん:05/02/27 16:35:04
91 :
デフォルトの名無しさん:05/02/27 17:08:26
ハード系の板で聞くよりこちらの方がご存知の方がいそうなので伺いたいのですが、
ビデオカードのスペックとかのデータベースがかなり充実してる
MSDNっぽい見た目のサイトってなかったでしたっけ?
知ってる人いたらURL教えて下さい。お願いします。
>>92 ああ!ここです。ありがとうございました。
94 :
デフォルトの名無しさん:05/02/27 19:49:27
DirectXってDebugモードとRetailモードを切り替えたときに
再起動しなきゃ適用されないと聞いたのですが、本当ですか?
再起動する間の時間が手持ち無沙汰であまり好きではないのですが。
環境:
SDK: DirectXSDK 9.0 (Update October 2004)
OS: WindowsXP Home (SP none)
Compiler: Borland C++ Builder 5.5
どなたかお願いできないでしょうか……。
ストリーミング再生を行なうため、再生の途中の通知が必要となってます。
>>95 SoundBuffer作成時にDSBCAPS_CTRLPOSITIONNOTIFY指定してないなんて
間抜けなオチだったら死ね。
>>96 お前みたいなやつが一番むかつくんだよ
簡単にシネとか口にしてんじゃねーよ
>>95 とりあえず
>>86 の bufferがどのように作られたか書いてくれないと
サポートの使用がないよ
ここは大した実力も無いヤツが、初心者を罵倒して優越感に浸るスレだよ
99 :
デフォルトの名無しさん:05/02/28 10:21:14
1から98まで読んできたけど俺もそう思った。
誰でも返信できそうな話題では盛り上がる。
でも技術的な話には、触れない。
俺も初心者だから楽しみにしてたのに。。。
100 :
デフォルトの名無しさん:05/02/28 10:27:39
確かにな、こんなに初心者に罵倒するんだったらこんなスレを立てるん
じゃねーよって感じだね。
101 :
デフォルトの名無しさん:05/02/28 10:28:50
2chも終わったな。 結局どこでもこんな感じになってる。
なんというか、住人の若年化してるんじゃなかろうか。
漏れももうオサーンだしなあ。
誰でも返信できそうな話題では盛り上がる。
104 :
デフォルトの名無しさん:05/02/28 11:24:13
2Dの場合、ポリゴンを使うよりスプライトの方が高速に処理されるのですか?
>>104 単純にスプライトを転送するだけならDirectDrawの方が高速
しかしスプライトをアルファ値を使って綺麗に抜きたい場合、及びスプライトを
拡大縮小したり、任意の角度へ回転する場合は、ポリゴンを使った方が一般的に速い
・丁寧に答える
・くだらなすぎる質問なのでスルーする(催促されても一切無視)
この二択でいいね
>>101 早く終わってくれればいいがそんな感じでもう6年目じゃないのか・・・?
音関係は気合入れてやってる人が少ないんでないのか?
ここにいる人たちがヘタレとか関係なしに
>>106 下段は自分がそうしたいならすればいいけど、
「下らない質問だからスルーね」とかいうやつは性質が悪い。
お前がスルーするのは勝手だが周りを誘うなと。
答えたい人だけ答えてくれりゃよし。答えたくなきゃ黙っとけと。
>>109 いや、だからそれが
>>106の下段の話だろ。
どんな受け取り方をしたのかいまいちわからんな。お前。
いや分かる分かる。確かに分かりづらいが。
つまり言うなれば「スルー対象指定厨」が出てこないように釘を刺しているんだよね?
113 :
86:05/03/01 00:09:30
ええと……
>>96 回線吊って首切って死んできます ∧ ||∧
114 :
デフォルトの名無しさん:05/03/01 05:29:45
2Dで尾を引くようなミサイルの表現の仕方を教えてください
115 :
デフォルトの名無しさん:05/03/01 10:39:31
>>114 尾を引けばよい。
ミサイルの過去の軌道を数点記憶しておいて、その情報を利用して描画。
DirectXにWin32は必要か?って必要に決まってるんだが、どの程度って
問題はあるよな。最低限のWin32関数10個もあればDirectXのフレームワークは
作れるし、それ以上のことをしたければ「猫でも~」を参考にしつつMSDNを
読む程度でもそれなりに作れると思う。
スレッド話が出たところでついでに聞きたいのだが、ファイバの使いどころって
どういうところにあるんだろう。
>>114 マイクロソフトのアカデミックなんちゃらってページにある
ゲーム制作のチュートリアルで、
花火みたいなののサンプルがあった。たしか。
そこでのサンプルは、
軌跡の進行方向のベクトルを計算して、それに直行する方向ベクトルで「幅」を作って
その連続でポリゴンのリボンを「尾」を作成していくみたいな方法だったと思う。
117 :
デフォルトの名無しさん:05/03/01 12:01:19
ボリュームレンダリングの仕方を教えてください
>>115 ないんじゃないの? ファイバーの使いどころなんて。
ちっこいFSMなら独自で書いたタスク、経路探索なんかはスレッド使った方が
スッキリ書ける場合がほとんどでしょう。
>>119 釣れましたね(棒読み)
タスクもスレッドも独立性を保つためなら結構いい感じに動くが
他との関連があるととたんに糞一色に染まるな(笑)
俺はどっちも使ってねぇけど。
そういう奴っている?
それって自分が使いこなせないと
なんでもクソ扱いにしちゃう奴って事?
わざわざなんでもかんでもスレッドにしたり、クソって言ったことを、使いこなせないことにしたりするのは、やめて
もらえませんかね。
自分がスレッドを使いこなせていて他者を卑下したい気持ちは、
わかります。
だからといってちょっとクソって言っただけで、
>>121がスレッドをスレッドを使いこなせていない
とか考えているんでしょうが、
そういう馬鹿げた事はやらないでもらえませんかね。
貴方の思考回路は一体どうなってるんですか?ほんと障害児の見本と言っ
ても、過言では無いですよね。
スレッドを読む側としても、何のためのスレッドなのかよくわからなくなってしまったりするの
でやめて頂けませんか?
とりあえず個別ぼ~んさせて頂きましたので、これ以上続くような
ら「ひろゆき」とかいう引き篭もりキモヲタに、通報して、
アクセス制限という厳重な処置を取らせて頂きますので。では。
>>121がスレッドをスレッドを使いこなせていない
なんで二回言うんだ
>>121 とりあえずどういう理由でスレッドがクソなのか書いてくれ。
悪魔の証明ってわけじゃないがスレッドの有用性を主張してるほうもプレゼンして欲しいぞ。
「俺はどっちも使ってねぇけど。 」で知れてるんじゃない?
>121が不勉強っていうことでDirectXの話題キボンヌ。
128 :
デフォルトの名無しさん:05/03/01 23:35:39
>個別ぼ~ん
>>115 ファイバはUnixからの移植用に用意されたもので、
新規のアプリケーションがこれを利用する意味は
ほとんど無いよ。
ファイバとスレッドって、どっちが細かいですか?
なんとなくファイバが細かそう。
よこやり失礼。
.NET2003にて、DirectX9SDKをインストールし、ヘルプファイルをインストールしました。
directx9_c.chmファイルは日本語なのですが、.NET上から閲覧できるDirectX9JpnDoc.msiが、
どうも日本語じゃないのです。.NET上からも日本語ヘルプが見れたほうが便利なのですが、
日本語化されているのは独立したdirectx9_c.chmファイルだけなのでしょうか?
SDKはDirectX 9.0 Summer 2004、ヘルプファイルは2002/12/19公開版です。
132 :
デフォルトの名無しさん:05/03/02 01:39:23
日本語のほうが読みやすいけど、日本語のヘルプは
随所に間違いや昔のままの記述が残っていて、結局
英語のヘルプを読まざるを得ないところが困りもの。
>とりあえず個別ぼ~んさせて頂きましたので、
>とりあえず個別ぼ~んさせて頂きましたので、
>とりあえず個別ぼ~んさせて頂きましたので、
こいつスレッドの前に日本語勉強したほうがいいな
結局スレッド使ってもCPU100%のままってこと?
>>133 ㌧。日本語㍉なわけやね・・・(´・ω・`)
>>137 無能な奴がマルチスレッドを使っても、状況が悪化するだけ。
ある意味使わない(使えない)という判断は正しい。
ところでもまいらスレッドはどうしてる?
直で_beginthread?boost::threadとか?
漏れはboost::threadだけどJavaに比べて激しく使いにくい感じだ
メッシュと四角形プリミティブのアルファブレンドの仕方教えてください。
メッシュを半透明にし、四角形は不透明にしたい。
四角形の4頂点の色のアルファ値を0xffにして
SRCを1.0そのままで、
DESTをINVSRC(1.0-SRC)にしたんですけど、ダメでした
リフレッシュレート60Hzのとき更新される間隔って
1000ms/60 =
A: 16.6666... ms
B: 16.0 ms
C: 17.0 ms
D: その他( ms)
どれ?
何でこの馬鹿はmsになおすんだ?
msで教えて欲しかったら円周率を最後まで出してから出直してこい。
整数じゃないならPresentで待つしかないからマルチスレッド必要じゃん
閏年は何のためにあるのかを問うているのか?
そう
グランドクロスがなければ閏年もないわけだが。
解決しました。
>>144 ハードウェアメーカーに聞いたら?
プログラマとしては次の更新までに描画が終わってれば無問題だから
そこまで細かく考えなくていい
と漏れは思っているが
>144
答えでてるじゃん
1000ms/60
なんでわざわざmsにしたいの?
無限小数点知ってるか?
どうせアレだろ
タイマー使ってフレームレート固定にしたいけどタイマーがmsで返すからってことだろ
それならそういう質問しろよ
なんでわざわざ遠回りな聞き方するわけ?
てかゲ製作池
"無限小数点" の検索結果のうち 日本語 と 英語のページ 約 9 件中 1 - 8 件目 (0.38 秒)
循環小数 の検索結果のうち 日本語のページ 約 6,830 件中 1 - 10 件目 (0.30 秒)
循環小数かどうかは全然関係ないことだが
1000ms/60 なんて表現はコンピュータの内部で表現できないんだから
実際はもっとキリのいい数字なんじゃないの?
>>158 お前のビデオカードのRAMDACはマルチメディアタイマで動いているのか?
キリのいいとかワケのワカランことを言ってる異常者は
プログラムやめて小学生レベルの勉強からしなおしたら?
普通の脳ミソだったらそんな意味不明なことは言わないんだけどな。
最近はなんでこういう頭の弱いキチガイが多いのかね。
これがム板のレベルか?
釣りだろ、釣りじゃなかったらヤバいぞこれは。
だってこの思考回路で高校行って弧度法習っても、
テストのときにπ/2[rad]とか出てきたら必死で計算するんだぜw
1.57075・・・・・・・・・・
友達「問5の答えって何だった?」
>>158「いや、分からない、ずっと割り切れなくて・・・」
友達「え?そうか?俺はπ/2だったけどな」
>>158「テストなんだからもっとキリのいい数字なんじゃないの?」
友達「・・・?」
>>161 面白くない
笑いのセンスがないことを自覚しなよ。
リフレッシュレートが円周率ってのはなんとなくわかったけど
でもコンピュータが処理するんだから最終的にはデジタルになるんじゃないの?
円周率だってコンピュータだと無限じゃないじゃん
頭が頭痛で痛む。
>>162 自覚ならしてるがそれがどうかしたのか?
今面白いかどうかの話題なの?
だったら面白いコピペいっぱい貼ってやるが。
ちょっくら探してくる。
200レス分もあれば十分か?
>>163 だからコンピュータ関係じゃなくて学校の勉強してから出直せつってんだよ。
166 :
デフォルトの名無しさん:05/03/04 17:16:09
廊下のカーテンを開け閉めする時に何となく包まってみる。
で、「むいむい、むい?むい!」と言いながらウネウネ動く。
ついヒートしてしまい、「むぃぉぉぉ!」と盛り上がっていると「何してんの?」と姉の声がした。
息を殺し、動きを止めてやり過ごそうとしたら、無言でカーテンを剥ぎ取られた。
おどけたフリをしながら「OH、見ーつかっちまったか!バッデム!」と言ってヒザを叩いた。
すぐさま、「ガッデムの間違いじゃないの?」と言われた。俺は逃げた。
167 :
デフォルトの名無しさん:05/03/04 17:19:15
俺は小学生だった。
友達に借りたドラクエ1。
友達はまだクリアしていなかったが、貸してくれた。
優しい男だ。
一週間後、俺はクリアし、貸してくれた友達にその様子を詳しく話して自慢した。
友達は泣いた。
感動の涙ではなく、物語の終わりを聞いてしまったから。
その日の夜、その友達の親が俺の家に来た。
次の日学校、朝の会、担任の先生が生徒達に言った。
「ファミコンのカセットの貸し借りは禁止します」と。
俺は小学生だった。
168 :
デフォルトの名無しさん:05/03/04 17:22:06
169 :
デフォルトの名無しさん:05/03/04 17:28:23
コピペ探しててふと思ったんだけど、
これはどこで笑えばいいの?
↓
162 名前: デフォルトの名無しさん [sage] 投稿日: 05/03/04 09:25:44
>>161 面白くない
笑いのセンスがないことを自覚しなよ。
----------------------------------------------------------
ここまで読み飛ばした。
----------------------------------------------------------
今日も技術的な話題で盛り上がってますね
>161の新作はまだか?
西岡さんワロタ
>>173 俺は小学生でπを習った時にすでに発見していたけどね☆
千葉電波大学ってネラが沢山いそうだな(▽
>>173 虚構新聞社なかなかネタがおもしろいなw
相変わらず、誰でも参加できる易しい話題だとスレが進むな
>>179 しかもこの程度の話で凄い大げさになるのがここのスタイル
頂点シェーダで法線ベクトルに拡大行列を掛けて変換すると、
元は面に垂直だった法線が垂直ではなくなってしまうんですが、
こうならないような何かいい方法はありませんか?
法線ベクトルを非直交行列で変換する場合は
その行列の逆行列を転置した行列を使う。
詳しくは『ゲームプログラミングのための3Dグラフィックス数学』を参照せぃ。
DirectPlayの質問。
CoCreateInstanceでIDirectPlay8Addressインターフェイス作成に失敗します。
調べてみると、ルータで接続してる事に問題有ると推測できました。
ルータでDirectPlay使ってる方、すんなりデバイス作成できました?
できた。
>>183 逆に質問。DXPlayのサンプル試してみたら。
186 :
デフォルトの名無しさん:05/03/05 16:12:05
DrawPrimitiveUPメソッドに頂点シェーダは適用できますか?
>>182 ありがとうございます。
良本っぽいので買って読んでみました。
にしても法線用に逆転置行列を与えるようにしたら
スキン処理のシェーダで定数レジスタの
使用量がすごいことになりますね…
頂点テクスチャでマトリクス送ればレジスタ空くよ。
189 :
デフォルトの名無しさん:05/03/06 18:42:28
DXSDK9 2005 Febをインストールしていままでビルドできたフィルタをビルドしたら
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlcomcli.h(799) : error C2059: 構文エラー : 'catch'
というのが出てきます。
これはどうすればいいのでしょう。。
ちゃんと製品を買う
は?意味不明。
193 :
デフォルトの名無しさん:05/03/07 10:50:07
DirextXのバージョンを取得するgetdxver.cppってサンプルがあったのですが、
これって新しいバージョンが追加されるたびに
自分でコードを追加していかなければダメな仕様ですよね?
今のところ9.0までしか取得できないようなのですが。
追加しなくてもとれるようにできる、うまい方法ないですか?
>>193 レジストリ調べる方法があるがこの先どんなキーを埋めるかなんて予測できない
ドラえもんにタイムマシン借りるしかない
↓ドラえもん出現
地球破壊バクダ(ry
>>192 以前は
VC++6.0
DXSDK8.x
で今は
VC++7.0
DXSDK9.0 Feb 2005
です。
フィルタはTransformFilterです。
原子核破壊砲!!
俺はBCC(しかもコマンドライン)でDirectXによるソフトウェアを開発してる希少種だぞ。
さぁおまえら、俺にハァハァしやがれ。
>>201 D3DXのDLLっていつから不必要になるの?
>>202 不必要なものが必要になったところを見ると、
不必要になる望みはあまりないような気がするな。
俺はとりあえずずっと必要だという覚悟をしている。
>>203 Febのおかげで不必要になったんじゃないの?
202の書き方が悪いな。
最新のSDKでD3DXが.libから.dllになったから、
BCC用のラッパーdllは必要なくなった。
D3DXを使う場合、いままでは
VC=スタティックリンク
BCC=ラッパーが用意したDLL
だったのがこれからは
VC=MS製DLL
BCC=MS製DLL
になったってこと?VCの場合はスタティックリンクも選べるようだけど
WGF では OnResetDevice だのなんだのをやらなくて
済むようになるといいな
3,5,9,17 一般項は
やっと、分かった。解くの遅すぎ... (--;
&すれ違いで、ゴメン。
馬鹿な質問で申し訳ないんですが
DirectX9.0SDKをインストールしても
<d3d8.h>をインクルードすればDirect3DCreate8などの関数を使うことはできるんでしょうか?
何故質問する前に試そうとしないのか?
全くお前ら煽るばかりだな
DirectXはバージョンダウンが出来ないから、このくらいの質問は許容範囲だろ
SDKの話をしているのに、何故ランタイムについて語り出すのか、
馬鹿の思考は微塵も理解できない。
>馬鹿の思考は微塵も理解できない。
深度バッファシャドウで、ライトの射影行列の
near と far の値をギリギリまで詰めてやらないと
影がキレイに落ちないんですが、near と far の
値をあんまり考えなくてもそこそこいい影に出来る
何かいい対処方はないでしょうか?
デプス情報は何bitで格納してる?
biasを適切に設定すれば、精度はそれほど問題にならないけどねぇ。
219 :
デフォルトの名無しさん:05/03/11 20:46:15
曖昧すぎる
222 :
デフォルトの名無しさん:05/03/12 11:57:20
出ないのが正常です。
何の問題もありません。
225 :
デフォルトの名無しさん:05/03/13 12:04:39
DirectXの仕方を教えてください
僕ゲームが作りたい思います
C++言語はgoodです
宜しくお願いします
>>226 ありがとうございます
C++コンパイラはすでに持っているので下のリンクから始めようと思います
228 :
デフォルトの名無しさん:05/03/13 18:58:59
みなさん、auto_ptrってどのくらい使ってますか?
メンバ変数をコンストラクタで初期化中に例外が発生すると、
デストラクタが発動しない。だからスマートポインタを使え・・・
ってのはよく聞きますが、実際どのくらい使われているのかと思って。
RAIIは必ず使う。
auto_ptr, boost::shared_ptr, boost::move_ptr 等可能な限り使うよ
>>228 それがDirectXとどう関係してくるんだ?
たぶんスレタイのDirectXの部分が見えていないんじゃないかな。
すいません、書き込む先間違えました。ここってDirectXスレでしたね・・・・
C++本スレで再度質問してみます。
>>22 回答ありがとうございます。
ゲーム系プログラミングだと業務系より多用するものなんでしょうかね。
なんで例外が発生するような処理をコンストラクタに書くのかわからんね。
まあ、こんなところでC++の質問しちゃうようなのだからしょうがないか(苦笑
>>234 理由ぐらい書いてアフォって言わないと指示は獲られないよ。
インスタンスの数を制限したいとか色々あるだろうに。
>>236 ねぇよ。
8年近くプログラム組んでるけど、そんなアホな位置で制限なんて絶対つけない。
あとコンストラクタで不変条件を確立したりとか。
まあこれはEssenceパターン適用する方がいいかもしれないけど。
>>238 なんでそんなしょーもない処理をわざわざ変な手法使ってまでコンストラクタでやるんだ?
>>239 だって
>>236って自分以外のインスタンスの数を知っていなきゃできない芸当でしょ?
でも、クラスってさ、プログラムの影響範囲を自分自身だけに限定してナンボの機能なわけじゃん。
そもそも設計が腐ってるといいたい。
そこでC#ですよ!
といいたい所だがクラス変数を持ってないのはC++ぐらいだな
おまいらいい加減に新しい言語を覚えるのが嫌だとか我侭やめろよ
>>241 じゃあ数を制限するときはどうすりゃいいの?
>>242 C++でもstaticをつけたやつはクラス変数ではないの?
Direct3Dのワールド座標ってさ、その空間全体の位置を変えるみたいだよね?
だから3DRPGのようなものでキャラの移動をさるときには、
①ワールド座標を中心に設定
②注視点を原点に
③自分のキャラを原点に配置
④ワールド座標を、マップ上のキャラの位置に変換
⑤地面やその他世界を描画
でいいんだよね?
カメラの位置だけ適切に設定すれば、
キャラを原点になどという訳のわからないことをする必要はない。
カメラを固定して世界の方を動かすつもりなのか?
まぁ原点だと利点もあるし、別に245の方法でもOKでしょ
それが全てと思ってたら危ういけど
これじゃ245を支持しているみたいだな
要するに表現方法はシステムによると
Perspective Shadow Maps の説明を
分かりやすく書いてるサイトってないですか?
t-pot のは良く分かりませんでした…
DirectX で 使用されるSprite というのは端的に言うとどういう意味でしょうか?
某Web辞書によると
sprite : 妖精、小人、霊魂、精霊、お化け
とあるのですが…。
:妖精、小人、霊魂、精霊、お化け、という意味です
ゲームスレみたいな所なのでここで質問。
RPGやパズル、シミュレーションなどで、
独特なキー入力(十字キー)のやり方がありますよね。
キーを軽く押したら、1マス動いて、
しばらく押しっぱなしにしたら、そのままスムーズに押した方向へカーソルが
動くやつ。あれはどう実装すればいいのでしょう?
できればアルゴリズム or コードでお願いします。
そんな事も自分で出来ないなら諦めた方がいいよ。
>>250 語源は知らんが、二昔前くらいのPCにはスプライトウィンドウという機能があっての。
そこから来ていると思うんじゃよ。
>>254 どう考えても業務用ゲーム機のスプライトの方が古いぞw
257 :
デフォルトの名無しさん:05/03/14 17:38:53
DirectX9を使ってフォントを扱おうとしています。
ID3DXFont* pFont
があるとして、
pFont->Begin();
というコードを書くとBegin()はID3DXFontのメンバーではないと出るのですが、
どのように解決したらよいのでしょうか?ヘルプをみるとID3DXFont メンバに存在するはずなのですが。
>>257 ヘルプとSDKのバージョンが合ってない。
流された...(泣
↑名前252の間違い
261 :
257:05/03/14 17:55:26
俺はTIが起源という話しか知らなかったけど、アタリの方が先なのか。
>>250 元々は透明色を持ったキャラクタ表示用にハードウェアに備わっていた機能。
プログラムからは座標とパターン番号を指示するだけで、背景との合成は
勝手にやってくれる。実際にフレームバッファが書き換えられるのではなく
CRTに出力する段階で合成されるので、移動のたびに消去等をする必要がない
とっても楽ちんな機能。
ただし、サイズが16*16や32*32と限定されていたり、水平方向に8枚程度しか
表示できないような制限があった。
今のPCにそんな機能は無いのでフレームバッファを毎回書き換えることで
同じ効果を表現している。
(実際にはマウスカーソル用にスプライトの機能は持っている)
ぶっちゃけ、今はスプライトっていうと透過blit程度の意味しかない。
もうちょい厳密に言うと、キャラクタ毎に任意に表示座標を指定できる透過blitの
ことかな。背景用にタイル状に表示する場合は、透明色があってもスプライトとは
呼ばないのが普通。
>>257 >>258 Dx9SDKの初期と今では、D3DXライブラリのインターフェースが違う。
最新の日本語ヘルプ(Oct 04)を落とすと良い。
>>243 別のクラス用意しなさいよ。
っつかそんな状況ってよっぽど設計が腐ってなきゃないでしょ。
>>265 だってこのインスタンスの個数を制限するってどういう用途で使うの?
普通は管理クラス作るよね?
しかも、クラスに自分の生成個数の制限をつける思想が理解できない。
別に理解できないってのは俺が不勉強だからじゃなくて
すごくセンスが悪いと思うって意味ね。
>>244 調べてみたけどやっぱりC++にクラス変数ないじゃん
>>267 あなたのおっしゃる「クラス変数」ってどういうものですか?
>>268 C++でクラス変数が使えるという証拠をあげれば終了だ
話をややこしくすんな
>>255, 262
なーるほど、勉強になりました。
269にレスをしなければ、269が馬鹿なままで一生を終えるわけだ
その方がいいならレスをしないことだ
>>271 そもそもどこにstaticつけるんだよ
もしかして素人?
じゃあ、今までstaticつけてたのは何だったんだよw
本当にあると思ってるならC++でクラス変数を扱ってるページ出してみ?
仕様書でも個人サイトでもなんでもいいぞ
>>269 はC++初心者スレへGOですな。つか全くスレ違いでワロタ。
ん?静的変数とクラス変数を勘違いしてるのか?
>そもそもどこにstaticつけるんだよ
>そもそもどこにstaticつけるんだよ
>そもそもどこにstaticつけるんだよ
クラス変数はない、staticをつけてもクラス変数にならないという主張に対して
ほんの数行のソースを書けばいいものをいつまで粘るつもりなんだ?
>>269で指摘してやったのに無駄になったな
広げた風呂敷を早くたたんでくれ
初心者スレという性格上、間違ってるからといって放置するわけにもいかんからな
クラス変数ってJAVAの方言じゃないのか?
漏れはクラス属性と呼んでる
どっちが一般的なの?
もちろんstaticで宣言されたメンバ変数な
だから静的メンバ変数がJavaのクラス変数だろ。
ここは初心者スレと言ってもC++の初心者スレじゃないだろ。
なんか気になってググったらクラス・スコープ属性というのもでてきた
漏れ間違ってた?
クラスのすべてのインスタンスで共有される変数のことは
オブジェクト指向的には何て呼べばいいんだ?
C++神の俺がバカなお前達に教えてやるよ。
クラス変数=クラスメンバ変数
別なバカきちゃった?
>>284 いや、苦し紛れの自作自演かと。
なんというか、春だなぁ…。(遠い目)
class A {
public:
static int a;
}
クラス変数ってこういうのとは違うの?
>>286 それはフィールド
クラス変数というのは
class A {
public:
static int a;
}
void main(){
A obA=new obA();←これ
}
>287
ちょっとまて
class A {
public:
int a;
}
これがフィールドだろ
>>286 クラス変数またはスタティックフィールドとも呼ばれる
だんだん何のスレだかわかんなくなってまいりました
あのー、そろそろC++スレあたりに移ってもらえませんか?
292 :
デフォルトの名無しさん:05/03/15 05:03:38
DirectX Audioは8と9で何か違うのですか?
9でもプログラムの中で8という数字になっているのは、何も変わっていないと言うことですか?
ああ、そうだ何にも変わってない。
その辺の本だと
メンバ変数とプロパティとフィールドの説明がごっちゃになってます
その辺で勉強した方は気を付けませう
早く実装しる
とりあえず
>>228は例外やエラーが発生するような処理は別にメソッドを作ってコンストラクタから呼べってこった。
DirectDrawCreateはどのバージョンのIDirectDrawを返すのですか?
たとえばIDirectDrawとIDirectDraw7は違いますよね。
もし返却されたのがIDirectDraw7だったとしてアプリケーションが
IDirectDraw::SetDisplayMode(DWORD, DWORD, DWORD)を呼び出したら引数は3つしか与えないですよね?
ところがIDirectDraw7::SetDisplayMode(w, h, bps, ref, mode)では5つですね。
ということはどのバージョンか判断してSetDisplayMode呼び出しを変えるのですか?
でもどうやって判断するの?dynamic_castするのですか?
判断も何も互換性など無い。
阿呆なことをのたまっていないで早く寝ろ。
ではDirectDrawCreateは何を返すの?IDirectDrawのみ?
その他はDirectDrawCreateExで作るの?
おめ、そりゃ「バージョン定数」で決まってんじゃねーの?
よーしらんけど。
スレッド作る意味がやっと分かった。気づくの遅すぎ。。。
>300
QueryInterface()すると7のインターフェイスを貰えるかもしれない。でも貰えないかもしれない。
素人はヘルプにあるように
hRet = DirectDrawCreateEx(NULL, (VOID**)&g_pDD, IID_IDirectDraw7, NULL);
とでもしとけば。
玄人はCoCreateInstance()で華麗にゲット
>>302 基本的には意味は無いよ。
何に気づいたの?(笑)
結局、はさんだメッセージループの処理にたどりつくまでは
別のスレッドにちょっかいを出すことはできないから。
>>303 ありがとうございます。
実は今やりたいのは自作のDirectDrawラッパクラスを作って、
そこでたとえばCreateのような関数をつくり、その中でDirectDrawCreateを呼び出します。
(既存ソフトはDirectDrawCreateを使っていたのでそれを使うのは必須です。)
その結果得られたIDirectDraw*が実際にはIDirectDrawなのかIDirectDraw2なのか
IDirectDraw4なのかIDirectDraw7なのかを判断することなのですが、
それはできない、というのが結論ですか?
QueryInterfaceしてもわからない、dynamic_castしてもわからない、ということですか?
画像やテキストがたまに、ファミコンのバグった時みたいに変になるのはPCの問題?
>>252 pseudoコード書きかけたけどめんどくさくなって消した。
状態遷移図でも書いてよく考えたら分かる。
>>306 設定によっては
presentの後クリアーしないで描画もしないでもっかいpresent呼ぶと
そんな画面になることがある
そういうことじゃないならPC(つーかビデオカード)の問題でしょ
310 :
デフォルトの名無しさん:05/03/16 18:15:07
通常のWindowsプログラムは理解しているが、DirectXは初めてという人に最適な本はどれですか?
>>308 >QueryInterfaceしてみればわかるって買いてあるじゃん。
そうは書いてない。
>>309 多分ビデオカードが問題だと思います。
ありがとうございました。
>>307 レスありがとうございます。
pseudoというのは知らないのですが、目的の動作に近い形で実現
出来ました。(完璧ではない)
何回やっても上手くいかなくてコードを何回見直して書き直しても
直らなくて、気づいてみるとキー動作は正しくてタイマーの動作が
おかしかったようで...。疲れました。
>305
IDirectDrawはIDirectDrawでしかない。が、
IDirectDraw *が指している先の実体は、IDirectDraw7のインターフェイスを持っているかもしれない。
(というか、実行環境にDirectX7がインストールされているなら持ってるはず?)
で、その実体が持っている別のインターフェイスを貰う手段がQueryInterface()と言うわけ。
ついでに、IDirectDrawとIDirectDraw7の間に継承関係はないから、
dynamic_castすること自体間違ってる。
そもそもCOMというのはC++に依存するものじゃなくてだな、(以下略
316 :
デフォルトの名無しさん:05/03/17 05:10:30
JPEG画像をテクスチャへ読み込むのはどうしたらよいのでしょうか?
>>316 DirectXはJPEG形式のファイルもサポートしていますので、
D3DXCreateTextureFromFileで読み込めます。
DirectXがサポートしているというのは語弊がある気が。
今、WinMEなんですが、Direct9.0b以上必要というゲームをやろうとしたときに、
「Direct3Dの作成に失敗しました。」というメッセージと共に、
強制終了してしまい、起動できません。
dxdiagにて、調べたところ、
「DirectXファイル」でdpnwsock.dllとdpnmodem.dllが見つからないという問題と、
「ディスプレイ」(デバイス:NVIDIA GeForce2 MX/MX400
メインドライバ:nvdisp.drv)では、nvdisp.drvが認定されていないという症状、
それから、「ネットワーク」では、サービスプロバイダ
'DirectPlay8 TCP/IP Service Provider'の
レジストリ情報が見つからないか、壊れています。」、
「サービスプロバイダ'
DirectPlay8 IPX Service Provider'のレジストリ情報が見つからないか、
壊れています。」、
「サービスプロバイダ'DirectPlay8 Modem Service Provider'の
レジストリ情報が見つからないか、壊れています。」と表示されています。
DirectXの再インストールや、
ディスプレイドライバの再インストールなど何度も試したのですが、
状況は改善されませんでした。
どうか、ご存知の方いらっしゃいましたら、お力貸していただけないでしょうか。
よろしくお願いします。
>>318 すいません。
「D3DXCreateTextureFromFileがサポートしている」でした。
>>319 Meの再インストールは当然やったよな?
>>319 それはプログラミングに関係あるDirectXの質問なわけ?
どなたか前スレのログ持ってる人いませんか。
いたらどっかに上げてくれませんでしょうか。
お願いします。
>>323 かちゅーしゃのDATの状態ならあるが…
やっぱいいです。勘違いでした。質問に答えてもらったのを
すっかりまた忘れたんでもう一回見ようと思ったんですが、
書いたのはここのスレじゃなかったみたいです。
ごめんなさい。そしてありがとう。さようなら。
326 :
デフォルトの名無しさん:05/03/17 17:07:47
2Dゲームを作る際にフリーで使える素材とかはありますか?
>>326 ゲームによるだろ。
ついでにここはゲ製作技術板じゃない。
厨房は帰れ。
あると思うよ。
>>315 ありがとうございます。おかげさまで自分の勘違いに気がつきました。
継承関係があるとばかり思ってました。
>>319 GeForce2はそもそもDX9に対応してないと思うぞ。
332 :
デフォルトの名無しさん:05/03/18 05:58:51
DirectX9のマイナーバージョンはいくつあるのでしょうか?
333 :
デフォルトの名無しさん:05/03/18 07:58:15
directshowでメモリ上にあるjpegデータを
windowに表示したいんだけど、
どんなフィルタを使えばいいの?
>>332 9、9b、9s、9o、9d、来月9a、7月に9jの予定。
335 :
デフォルトの名無しさん:05/03/18 17:05:00
同じメジャーバージョンのDirectXで仕様が変わるのは勘弁してほしい。
336 :
デフォルトの名無しさん:05/03/18 19:51:08
初歩的な質問なのですが、ビュートランスフォーム、プロダクショントランスフォームはジオメトリ毎に掛けないといけないのでしょうか?
全てのジオメトリに適用されるのなら一回掛けるだけで良いような気がするのですが…
>>336 たしかにそうだが大して早くならんぞ。
まあ、好きにしろって感じではあるな。
>336
気がするんなら聞く前に試してみれ
339 :
デフォルトの名無しさん:05/03/19 17:28:20
ヘルプを読んだのですがSetRenderStateの使い方がよくわかりません。何をどのようにセットすればよいのでしょうか?
いろいろ
サンプル嫁
DirectX9のテクスチャーはサイズに制限は無いのでしょうか?
昔、フラグ見て256x256のみや2の累乗のみとかの制限を判別してた
様な気がするんですが、それらしい記述が見当たらないので・・・
嘘ついて探したフリしてんじゃねーよ
ヘルプで検索するだけですぐ出てくる
じゃねーかボケが
いやぁ探したよ。
CreateTextureの項には何も無いし、パフォーマンスの最適化の
テクスチャサイズは256x256が最速、できるだけ正方形テクスチャを
使用する等としか書かれてないし。
つまり近所のドブさらいをして、ダイヤモンドの鉱山を探したと。
>いやぁ探したよ。
>いやぁ探したよ。
>いやぁ探したよ。
あん、だめぇ、えっちぃ
答えを知ってる人が目星つけて探しに行くのと
知らない人が当てもなく探しに行くのはワケが違うでしょうよ。
でも「いやぁ探したよ」がムカツクからこの人はどうでもいいけど。
「検索」とまで言われてるんだがなぁ
DirectX 初心者は歓迎だが日本語
初心者は帰れって感じだな
350 :
デフォルトの名無しさん:05/03/20 14:35:46
DirectX中級者向けのスレはないのですか?
そもそも中級者くらいになると大抵自分で調べて解決したりするから
必要ないんじゃないか?
楽したい中級者向けのスレきぼん
>>352 >楽したい
初心者以下だ。
血管にニードル刺せ。
このスレ糞ガキしかいないのかよ。
質問スレに必要なのは質問者と回答者。
もったいぶるくらいなら何も書き込まなきゃいいだけ。
他の質問者にとっても回答者にとっても邪魔。
>>355は質問も回答もしていないわけだが、自分だけは例外君か。
厨房の考えることはさっぱり分からん。
>>355 教えてもらう立場の分際で偉そうだな。
どうすればキミの敬愛する偉大な先達の皆様が多忙の中わざわざこんな卑しい場所にご足労下さり
迷える愚民どもに道をお示しになるか、ちょっと考えてみてはどうよ。
本当に質問がしたければID制のゲ製作板
高度な(というほどでもなくても)トピックについて
議論風なやりとりをしたければ鬱氏
それにしてもコミケ前になると何もかも否定したがる奴が
出てくるのはなぜだ
>>355顔が真っ赤だが、そんなに悔しかったのか。
363 :
デフォルトの名無しさん:2005/03/21(月) 10:04:53
DXlibってどうよ?
366 :
デフォルトの名無しさん:2005/03/23(水) 19:53:44
DirectXAudioでソフトウェアmidiではなくハードウェアmidiを使いたいのですが、どのようにしたらよいのでしょうか?
>>366 列挙してハードウェア見つけたらそれを選択すればよろし
370 :
デフォルトの名無しさん:2005/03/23(水) 21:44:17
2Dのスクロール型アクションゲームを作っているのですが、
爆発など画面のエフェクトを学べる本とかサイトはありますか?
372 :
369 :2005/03/23(水) 22:40:25
>>370 どの程度にもよらんか?画像のアニメパターンの連続表示程度でいいのか、シェーダ使って
熱による空気の揺らぎまでやりたいのか
とか。
374 :
369 :2005/03/24(木) 01:21:44
絞った結果、D3DRS_FOGVERTEXMODEをD3DRS_FOGTABLEMODEにすれば動きました。
が、範囲のフォグでないと見た目に違和感があるためやはり前者を使いたいです。
GetDeviceCapsでは問題ないので非対応ってことはないのですが・・
>>374 MFCFogが正常なら、自分のプログラムと異なる点を探せば解決するのだが。
フォグの設定等は逃してないのですがなにかやっちゃいけないことでもしているのでしょうか。
デバッグを試すたびに半フリーズ+エラー+低解像度+8色→再起動を繰り返しているため効率が悪すぎ・・。
377 :
デフォルトの名無しさん:2005/03/24(木) 16:10:22
>>373 体系的、もしくは辞典的に使える本があると良いのですが
>>376 >なにかやっちゃいけないことでもしているのでしょうか。
それがわかるのは自分だけ。
今あるプログラムで解決するのが厄介なら、もっと小さいプログラム組んで確認する。
ありがとうございます。
どうやらTL頂点の描画が原因だったようです。
描画前にフォグの使用を無しにすれば問題は解決しました。
正しい理由は分かりませんが、3次元座標にフォグをかけるので2次元座標では不具合が発生したのでしょうか。
>>380 「TL使うときはDirect3Dのフォグを使わず自前計算して頂点のスペキュラのアルファに埋めろ」
・・・とヘルプに書かれている。
382 :
デフォルトの名無しさん:2005/03/25(金) 17:30:39
DirectX Audioでmp3は読み込めますか?
DirectShowを経由すれば可
384 :
デフォルトの名無しさん:2005/03/25(金) 17:49:47
385 :
デフォルトの名無しさん:2005/03/26(土) 01:48:35
X3DAudioって何?
386 :
デフォルトの名無しさん:2005/03/26(土) 12:00:58
質問になります。
現在Webカメラの映像をネット経由でWMPが再生する仕組みがあります。
既存のシステムはいじらず、WMPの画像の変化をみて、人が入ってきたなどの
動的な動きが発生したら、その動いている標的を赤丸で囲む様な事をやりたいと思っています。
そこで、WMPの映像を横取りと編集後の画像をWMPに送りつける作業には
DirectXを使用するのが手っ取り早いのか、そもそもそんな事出来ねーよって事になるのか
教えてください。
関数名など、ググる為のキーワード的な情報でも分かればもう一度調べてみたいと思います。
DirectXのWizardで作ったプログラムを解説してるサイトとかあるでしょうか?
MSDNのチュートリアルはなんとか分かったものの、
Wizardで作ったスケルトンがあまりに膨大で難解で困ってます。
VS2003でWizardが出ないのは仕様ですか?
389 :
387:2005/03/26(土) 16:55:36
390 :
デフォルトの名無しさん:2005/03/26(土) 17:13:58
>>387 CMyD3DApplication見れば判るでしょ。
>>389 それは2002からアップグレードしないと駄目ですよね?
2003+9.0cを新規インストールしてWizardを出す方法ってあるんですか?
今現在DirectDrawに
ハードウェアに依存することなく
アルファブレンドをしながら転送するような機能は
実装されているのでしょうか?
393 :
387:2005/03/26(土) 18:09:05
>>390 ある程度は分かるんですが分からないところも多いです。
修行が足りんって事ですかね。
片っ端からコメント付けながら読んでみます…
>>391 ファイル→新規作成→プロジェクト→Visual C++ プロジェクト→DirectX 9 Visual C++ Wizard
で出来ないの?
>>393 それが無いんですよ…
2003とFeb2005の組み合わせなんですが。
さっきググってみた所9.0b以前のwizardを2002から手動で持ってこないと駄目みたいです。
今更Winzardを使う必要も無いでしょ。
EmptyProjectの方が使い易い。
×Winzard
○Wizard
397 :
387:2005/03/26(土) 19:28:55
>>394 失礼。そいつは初耳です。
自分にはちょっと分からんです。
>>395 何が今更なのか分からないけれど、
今読んでるプログラミングの本がwizardで作ってるので、理解したいなと思って勉強してます。
その本自体にはwizardの解説がほとんどないので。
>>397 だったらその本の付録のDirectXをインストールしろよ
399 :
387:2005/03/26(土) 23:19:01
>>398 レス番間違え?
wizardが使えなくて困ってるのは自分じゃなくて
>>388=>391=>394です。
…良い加減ウザいと思うので名無しに戻ります
スレ汚しすいませんでした。
>>399 あんたもWizardで困ってるんだろうが・・・
ワラタ
402 :
デフォルトの名無しさん:2005/03/27(日) 00:28:21
640x480で60fpsで毎フレーム1000-2000polyほど必要なgameで
DrawPrimitiveUpで1枚ずつちまちま描くのって一般的ではない?
403 :
デフォルトの名無しさん:2005/03/27(日) 01:21:08
ちまちまの意味がわかんね。詳しく説明してみ
Indexとか使わずに、その場で一枚一枚て事でしょ。
やってる人も居るかも知れないけど、糞重い。
405 :
デフォルトの名無しさん:2005/03/27(日) 02:46:48
DirectInputを利用する利点を教えてください。
通常のキーボードとかでも処理が高速化されますか?
406 :
デフォルトの名無しさん:2005/03/27(日) 03:38:26
描画が画面外だった場合、if文で描画命令を送らないようにしているのですが、これって効果があるのでしょうか。
描画が画面外だった場合、DirectXは自動的に描画しないと判断してくれるのでしょうか。
407 :
デフォルトの名無しさん:2005/03/27(日) 03:46:51
408 :
デフォルトの名無しさん:2005/03/27(日) 04:00:00
DrawPrimitiveを使え
409 :
デフォルトの名無しさん:2005/03/27(日) 05:21:43
DirectXAudioでmidiとwavを再生しているのですが、wavの音量がmidiの音量に従って変化してしまうのですが、どうしたらよいのでしょう。
midiはプライマリセグメントで、wavはセカンダリで再生しています。ボリュームは両セグメントともいじっていません。
>>405 デバイス直なぶん速い
WinAPIみたいにドライバ任せじゃないし
WMイベントみたいにモタモタしない
>>406 DirectXは視野の外に出ると自動的に処理しなくなる仕組み
ただし1つ1つやるので効率は悪い
自分で一気に不要なものを省けるならそのほうが効率いい
>>409 >midiはプライマリセグメントで、wavはセカンダリで再生しています
なぜこうしてしまったのか
411 :
デフォルトの名無しさん:2005/03/27(日) 14:24:57
SampleBrowserからEmptyProjectをインストールして眺めています。
オブジェクト等の初期化は OnCreateDevice と OnResetDevice に分散しているみたいですが、
どちらで初期化(再設定?)するべきか、という判断基準はありますか?
カメラの設定はどちらにもあったりして、悩んでます。
デバイスがリセットされたら何がリセットされるのやら……。
日本語のコメントがついたソースってありますか?
414 :
デフォルトの名無しさん:2005/03/27(日) 16:06:26
3Dにテクスチャ張って2Dにする方法で
たとえば背景を800x600の画像にするときって、
画像のサイズは2のべき乗ということで
1024x1024じゃないといけない(きれいに表示できない)んですか?
>>414 テクスチャーは1024*1024で作成させ
左上800*600に読み込めば何の問題もない
サーフェースのアルファブレンドなStretchBltってなんでサポートしてないかな?
死ねば。
419 :
sage:2005/03/28(月) 14:30:20
>414
どうもです。
話は変わるけど、DirectXってPNGのアルファチャンネルも使えたんですね。
それじゃ、ddsファイルの存在意義ってあるんですかね
>>419 ミップマップとかDXT1~DXT5の圧縮とかはPNGは対応してないべ?
2Dの人みたいだからミップも圧縮も関係ないんだろ。
422 :
sage:2005/03/30(水) 04:56:38
結局CPU100%なのはどうすれば・・・・_| ̄|○
(現在P4、60FPSで70%前後)
しかも上げてるし・・・・_| ̄|○
424 :
デフォルトの名無しさん:2005/03/30(水) 05:10:40
sleep(1)
をいれろ
425 :
デフォルトの名無しさん:2005/03/30(水) 05:37:28
Sleep(0)だと意味なさそうだよね
マニュアルにはCUP時間をほかのスレッドにまわすみたいな事
書いてあるけど
本当のとこどうなの?
426 :
デフォルトの名無しさん:2005/03/30(水) 06:22:39
>>425 本当のところそうだよ。どうだと思っているの?
>>425 つまり他に誰も使ってなければ100%になるまでCPUを使うってこった
428 :
デフォルトの名無しさん:2005/03/30(水) 06:28:56
>>427 なるへそ
マミュアルって抽象的だから
分かりにくいんだよね
do{ } while(1)と、do{ NOP }while(1)は100%食いつぶす事で変わりない?
NOP?
>>430 アセンブラと勘違いしてるんじゃないか?
432 :
デフォルトの名無しさん:2005/03/30(水) 18:42:51
UpとUpなしではどの程度速度に差が出るのでしょうか?
SleepとかDirectXと関係ない。
なんかよく分からないが、
SleepでFPSを調整しながら描画する関数を、スレッド内でループさせてたんだが
スレッドやめてタイマーにしたら
同じ60FPSで、70%前後から10%前後になった。
つまりあれか、素人がむやみにスレッド作るべきじゃないってことか。
素人杉
スレッド乱立アプリなんて使いたくないなあ
>>434 ちゃんと60FPSになってるか?
タイマーは1秒に60回も呼べないぞ
一体どう言う調整してるんだかさっぱり解らん。
Sleep(1)のループでも負荷数%程度じゃないか。
いや、やっぱりダメだ。
特になにも変更してないのに、また70%に戻った。
ためしに、描画関数の描画部分を消してみたら
(つまり、画面更新はするが真っ黒の画面)
35%前後・・・・・_| ̄|○
最初からやり直します。
ウィルスが混入したモヨリ
DirectXの本でおすすめの本とか無いっすかね
うーん、ノートン先生の監視下で
その可能性は低いかと。
>>442 DirectXグラフィックスプログラミング
>>444 できれば出版社など教えてもらえると・・・
ありがとうございます!
田という形で1つ1つの四角に別々のテクスチャを張る場合、十の部分の頂点が2つ以上の四角と重なり別々のテクスチャを張ることができません。
用意する画像を調整する方法も1つですができれば避けたいです。
1つの頂点で2つ以上のテクスチャ座標を指定することはできるのでしょうか?
略->vertexbuffer[(左上の頂点)].vTexture=D3DXVECTOR2( 0.0f, 0.0f );
略->vertexbuffer[(上の頂点1)].vTexture= D3DXVECTOR2( 1.0f, 1.0f );←┐
略->vertexbuffer[(上の頂点2)].vTexture= D3DXVECTOR2( 0.0f, 0.0f );←┴現状は2つだけど1つにできるかどうか
略->vertexbuffer[(右上の頂点)].vTexture=D3DXVECTOR2( 1.0f, 1.0f );
訂正:略->vertexbuffer[(右上の頂点)].vTexture=D3DXVECTOR2( 1.0f, 0.0f ); です
>>448 たとえ同じ座標にある頂点でも、1つでも要素が違うものは
別の頂点として定義するのがこの世界の決まり。
返答ありがとうございます。
つまり488のように田を描画させるには、正方形を表現するための頂点4つ x 正方形4面分 = 16でいいのでしょうか。
452 :
デフォルトの名無しさん:2005/03/31(木) 18:38:29
>>451 そのとおり。テクスチャ座標が共有できないのであればすべての頂点を
非共有にしなければならない。
ただし、マルチレイヤー・テクスチャの方法を使えば、頂点を共有できる。
シェーダ前提だけど。
皆の者、頭を下げよ。
>>450,452のお通りじゃ。
見よ!!
>>450,452は赤く燃えているッッッ!!!
ジサクジエンは見苦しい
IDも出ない板でジサクジエン判定かよ('A`)
IDが出ないからジサクジエンできるんだろ
最近スレが変な方向に向かっている件について
461 :
デフォルトの名無しさん:int 2ch =05/04/01(金) 20:26:02
D3D8 でハマってしまったので質問させて頂きます。
サンプルを参考に組んでみたのですが、
陰面処理がされないのです
(サンプル自身ではちゃんと処理されます)。
追加した処理は以下の3つです。
・ Z バッファを使うよう、デバイスを作成
param.EnableAutoDepthStencil = true;
param.AutoDepthStencilFormat = D3DFMT_D16;
・ 毎フレーム Z バッファをクリア
dev->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
D3DCOLOR_XRGB(0, 0, 0), 1, 0);
・ Z バッファを有効にする
dev->SetRenderState(D3DRS_ZENABLE, true);
これ以外に何か注意することはありますか?
ここは
>>98なスレなので
たまに出来そうな人が来ると叩かれます!
465 :
464:int 2ch =05/04/01(金) 21:29:40
>>461 462サンと間違えました
それではもう一度
それはフルスクリーンの場合ですか?
466 :
461:int 2ch =05/04/01(金) 21:33:54
>>465 ウィンドウモードです。
どうやっても、後に描いた方が上に描かれてしまうのです...。
>>466 追加したコードは間違いではないと思いますが...
D3DFMT_D16をD3DFMT_D32に換えてみてください
私の場合は、フルスクリーン時のみ起こりましたが
それで解消しました
どうしてなのかはよくわかりません(Direct3Dの仕様かもw)
お役に立てるか分かりませんが...
もっと詳しい方がいらっしゃったら教えていただきたいものです
468 :
461:int 2ch =05/04/01(金) 22:37:08
>>467 Present でアクセス違反... orz
インデックスの方も 32 にしてみるも、同じでした。
人(上)
↓
[次描画するもの](Zバッファ)
[] ここが抜けているからだめぽ
[描画されたもの]
ひたすらレイヤーを重ねていくだけだから、背景を(ry
470 :
461:int 2ch =05/04/02(土) 01:28:50
うーん。良く分かりません。
サンプルではこれ以外に
特に特殊なことはしてないように見えるんですけどね...。
色んなサイトを見て回るも、
やってることは皆同じですし...。
FVF やカリングモードとかの他の条件も
できるだけサンプルに合わせてます。
でも、視点をくるくる回しても、
遠近は変わるものの、描画順は影響を受けません。
丁度サンプルでZバッファを無効にした時と同じ感じです。
ソースあげれば?
暇な誰かが見てくれるかもよ
472 :
461:int 2ch =05/04/02(土) 02:14:43
あー、D3D だけのプログラムじゃないですし、
気軽に上げていいプログラムじゃないんですよね...。
それがもどかしい所で。
単純なプログラムで実験してみますかね...。
>>472 話がちがうじゃん。
サンプルに3つ追加しただけって逝ってたのに・・・これだよ。
お前はどっかの会社の営業マンか?w
サンプル(DXのサンプルかと思ってた)に追加しただけじゃないんなら
これだけの情報じゃ判断できないな。
474 :
461:int 2ch =05/04/02(土) 02:33:38
サンプルに3つ追加したとは言ってませんけど...。
サンプルを参考にして、
陰面処理してない自分のプログラムに
3箇所追加したということです。
情報が少ないのは分かってますが、
分かりやすいミスであれば、
これだけでも分かるかと思いました。
これで分からないバグとなると、
結構根が深いのかもしれませんね...。
475 :
461:int 2ch =05/04/02(土) 02:51:04
そういうわけなので、
これで質問を終わりにしたいと思います。
色々いじってどうしてもダメだったら、
その時はまた質問するかもしれません。
そもそも何のサンプルを入れたのか、入れる前はちゃんと動いたなど書かれて騎士
今C言語の入門書を読破して、次にC++をやるか、DirectXをやるか悩んでいます
個人的には、今直ぐにでもDirectXなんですけど、知り合いにはC++を推されました
微妙にスレ違いかもしれないですが、アドバイスおながいします_| ̄|○
478 :
461:int 2ch =05/04/02(土) 04:55:49
解決したのかしてないのか分からない状況ですが、
とりあえずちゃんと動くようになりました。
どうやら、D3DXMatrixPerspectiveFovLH の第4引数(近くのビュープレーンの z 値)が
小さすぎると変になるみたいです。
ただ、友達に実行してもらって分かったことですが、
環境によってちゃんと見えたり見えなかったりすることもあり、
どのあたりの値を選べば問題ないのかが今ひとつ分かりません。
とりあえず色んなところで動かしてみるしかないんでしょうかね?
>>477 DirectXってC++といってもいい希ガス
C++がわからない状態でDirectXを始めようとすると危険鴨
>>478 つ[OpenGL]
480 :
461:int 2ch =05/04/02(土) 06:10:31
色々値を変えてみた結果、
カメラと焦点の距離 と 第4引数 の比があまりにも大きいと変になるようです。
よくよく意味を考えてみたら確かにそうかなと思いますね。
おそらくはドライバに、
そういう状況はないとする近似を使った高速化がなされてるのだと思います。
これにて完全解決です。
第4引数を、カメラと焦点の距離の何分の1かで指定するようにして、
その比例係数もある程度の余裕をもって指定するようにしたいと思います。
情報が少ないにも関わらず回答してくれた方々、ありがとうございました。
>479
興味はあるんですけどね。<OpenGL
GLUT 使ってマルチプラットフォームとか。
でも、今は遠慮しておきます。
481 :
デフォルトの名無しさん:int 2ch =05/04/02(土) 10:41:16
小規模板でMMO作ってるらしいよ。
いそげ!!おまえら。
力あるものは、来い!陸、海、空なんとかっていう
MMOだよ。
ゲーム作成g
>>477 いきなりDirectXはハードル高いからWindows APIあたりをやってみるといいよ
>>481 企画厨乙
>>477 その知り合いをどれだけ信頼しているかがよくわかりますた
485 :
デフォルトの名無しさん:2005/04/02(土) 23:34:12
>>480 GeForceでハマったか?
near planeとfar planeの距離が大きすぎるとZバッファ精度が落ちるぞ。
486 :
461:2005/04/02(土) 23:43:14
>>485 そうです! GeForce です。
なるほど。GeForce で特徴的なんですか...。
ウチの息子はSL好きなのでSLを見に行くことにしました。
中略
息子は「こんなのSLじゃなーい」といって泣き出しましたがSLには違いないはずです
私は父親として何を間違えましたか。
「ホラー 大二郎(仮名)の好きなSLだぞーう」
float4x4 WorldViewProj;
float4 VertexShader_Tutorial_1(float4 inPos : POSITION) : POSITION
{
return mul(inPos, WorldViewProj);
}
「うえーんこんなのSLじゃなーい」
「ええっ」
またおまえか
SL が見たければ sl コマンド入れればいいじゃない。
491 :
デフォルトの名無しさん:2005/04/03(日) 00:44:13
バックバッファ付きでプライマリサーフェイスを作成してフリップするのは
協調レベルがウィンドウモードでもできるんですか?
それともフルスクリーンモードだけ?
495 :
デフォルトの名無しさん:2005/04/03(日) 23:23:43
すごい粘着がいますね
>>493 試せばわかるがFull/Winどちらでも使える。
シェーダプログラムって対応しているビデオカードじゃないと
実行するのは不可能なんだっけ?
ソフトウェアエミュレーションで動かしているのもあるらしけど、
単純にDirectX7世代とかのものでは動かなくて、
ソフトウェアでDirectX9に対応させるように設計してあるビデオチップじゃないとムリポ?
MSDNライブラリの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
のnormalとcrossとdotが何の処理なのかが分からないのですが教えてもらえないでしょうか
normal 法線
cross 外積
dot 内積
500 :
デフォルトの名無しさん:2005/04/04(月) 21:20:39
>>497 ソフトウエアエミュレーションで動くけど、遅いよ。
ハードウエアの10分の1以下。
あと、プログラムがCreateDevice時にソフトウエアエミュレーションでの生成に
対応していないとならない。
normal ノンケ
cross バイセクシャル
dot 幼女趣味(一点買い)
>>497 頂点シェーダはソフトウェアで処理が可能。
ピクセルシェーダは無理。
頂点シェーダだけしか使わなければ、GeForce2とかでも動く。
速度はCPU依存だが、普通は問題ない。
俺の環境だと、ソフトウェア処理の方が速いシェーダもあるくらい。
アルファブレンドを使ってみたのですが、
例えば
. | | |
<() …………> | | |
視点. | | |
1 2 3
となっていた場合、
2より上にある1がα値を持っていても、
1の後に2を描画指定すると、
2が1に「隠れて」しまいます(ブレンドされません)。
描画指定順を変えればうまくいくものの、
描画指定順の管理はなるべくならしたくありませんし、
三すくみが起こった場合にはどうしようもありません。
これはどうにもならないのでしょうか?
>>503 基本的にアルファブレンドの場合は視点から奥にある
ポリゴンから描画しないといけません(このように描画の
順番を入れ替えることをZソートという)。
昔はZソートしなくても正常に描画される機能をもった
ビデオカードもありましたが、今はないのでこのあたり
はあきらめるしかありません。
アルファブレンドでなく、加算描画で代替可能なものであれば
それでやる手もあります。加算描画は描画順は関係ありません。
基本的に3すくみについてはZソートには必ずついてまわるので
ある程度あきらめないといけません。
というか後ろにあるものから描画していくのは2Dの頃から基本なんだがな
507 :
504:2005/04/05(火) 20:42:59
>>506 3Dの場合(というかZバッファ)はできるだけ前から描いていくほうが
フィルレートを消費しないので効率いいんだけどな。
こっちのほうが3Dの基本だと思うんだけど。
508 :
503:2005/04/05(火) 20:49:35
>>504-507 なるほど...。ありがとうございます。
諦めるしかないんですね。
あと、背景は 3D で、キャラを 2D スプライトで、
ということをやろうと思っているですが(ラグナロクみたいな感じ)、
こういう場合に特化した代替案とかはありますか?
なければ描画順を手動ソートですかね...。
509 :
504:2005/04/05(火) 21:00:32
>>503 自分は2D、3Dの混合に特化した方法に関しては知らない。
知らないだけでそういうノウハウがあるのかもしれないけど。
あと、もしかしてアルファブレンドで2Dのキャラの画像を
切り抜こうとしているだけであれば、かわりにアルファテスト
をつかえばいいけど。この場合は描画順は関係ない。
もしかして違う?
510 :
503:2005/04/05(火) 21:39:56
>>509 あぁ、これです!
こんなものがあったとは...。
結論としては、
1. スプライトはアルファテストで
2. ブレンドは加算処理
ということですね。
ありがとうございました。
もれは描画するメッシュなりビルボードなりそのたもろもろを毎フレーム、リスト構造でつなげる
リストは不透明用と透明/半透明用があって
不透明用はカメラから近い順に並ぶようにつなげていき、
透明/半透明用はカメラから遠い順に並ぶようにつなげていく
で不透明リストを先頭から描画
続いて透明/半透明リストを描画
これでもカバーできないパターンもあるが、とりあえずこの方法を基本にやってる
みなさんはどう?
D3DXLoadMeshFromX関数でxファイルを読み込んで描画してるのですが何故か透明部分が透明にならずに描画されてしまいます
xファイルには問題なく、マテリアルもちゃんと設定してるはずなのですが透明部分がまったく透明になりません
原因がまったく分からずに困っています、どなたか教えていただけないでしょうか
514 :
デフォルトの名無しさん:2005/04/06(水) 10:38:34
3D用語を記載したサイトはありませんか。
機能は分かりますが字だけ見ると
NoPowerTexture
何が力やねん
ノーマルマップ
どこがノーマル、普通やねん
といった感じで、わけがわかりません。
演劇部用語でコンパネというとベニヤ板を張り合わせたものなんですが
ゲーマーの間ではコントロールパネルのことです
頭の中では似たようなことになってます
どうでもいいが、コンパネを演劇部用語だと思っている辺りが世間知らず。
>>514 学校の教科書じゃねぇんだから疑問に思った用語だけ調べればいいだろ
>>516 だからそういうサイトを探しているんじゃないか?
>>517 何も全部纏めて載ってる必要はないだろうから、個別に検索すればいいだろ。
だが全部まとめて載ってるところがあれば御の字だろう
それくらい自分で探せよって感じだが
行ったり来たりのインターネッツですね
normalにしろpowerにしろ、普通の英和辞典に載ってる言葉なんだから
英和辞典見てくれよ…
normal は法線だが、辞書だと後ろの方に書いてるだけっぽいんで、
辞書だけでどうにかってのも酷かもしれんの。
だが載ってる
それを探し出すしつこさも必要だ
行ったり来たりのインターネッツですね
FVFから頂点データのサイズを得る方法が知りたい。
メッシュをDrawSubsetではなくDrawPrimitiveで描画したいのです。
527 :
デフォルトの名無しさん:2005/04/07(木) 14:49:37
>>526 FVFのマスクをif判定しながら、sizeofの結果を加算していく。
FVFに対応するサイズは明確に定義され、ヘルプにもきちんと載っているのに、
それを得る方法が知りたいとは意味不明。
もしかして足し算すら出来ないのか?
GetSysFrmTimeを使って画像をX倍から縮小・回転させているのですが、
等倍の大きさまで縮小したら止めるにはどうしたら良いでしょうか?
もしくは他に良いやり方があればお願いします。
>>530 大きさが等倍になったら縮小をやめればいい
>>531 なるほど!なんで気づかなかったんだろう・・・
ありがとうございます。
533 :
デフォルトの名無しさん:2005/04/07(木) 15:35:51
>>527-528 普通D3DXGetFVFVertexSizeを使うだろ。
偉そうだけど片手落ちって奴多いよな。
別に使わなきゃいけないものでもないのに偉そうに説教たれるヤツ多いよな
メッシュビューアでXファイル(自作:単純なもの。アニメーションとかボーンとか一切無し)のメッシュが見れるのに、自作プログラムは何も表示されない。
自作プログラムの方で、
他のXファイルはDrawSubset関数で表示できます。
(DrawPrimitiveでも大体表示されます:TRIANGLELIST←どういう形式で保存されているか分からない為...)
メッシュビューアみたいなのが作りたくて。
DirectXサンプルの「エンハンスドメッシュ」を見てみたら、全てDrawSubsetで描画してる
ようですが。
表示させたいXファイルは、
Mesh 名前 {
頂点数;
頂点配列;
面の数;
面の配列;
MeshVertexColors {
(略)
}
MeshNormals {
(略)
}
}
ビューアで表示できるので、詳細は(略)しました。
長文スミマセン。アドバイスよろしくお願いします。
>>535 いや、だから・・・・・答えは自分の書き込みの一行目に書かれているじゃん。
ソース付きの答えがあるじゃん。
なぜ見ない?
なぜそこから得ようとしない?
なぜ人に答えを聞く?
「どうしていいのかわかりません」は質問じゃない。
やる気がないだけ。
「ソース見てわからないから聞いてるんだ」と言うのなら、
まだあなたのスキルがそこまで達してないだけ。
吸収できないから答え教わっても忘れる。
まずはMeshViewと自分のプログラムの異なる点を見極める。
537 :
デフォルトの名無しさん:2005/04/09(土) 09:07:16
質問ですが、
リスナが同じでも、音源ごとにオーディオパス作る必要があるんでしょうか?
あと、リスナや音源を開放するとエラーになるようですけど、
これはオーディオパスの開放とともに
自動的に開放されると考えていいのですか?
よろしくお願いします。
538 :
デフォルトの名無しさん:2005/04/09(土) 17:15:48
290 名前: デフォルトの名無しさん 投稿日: 2005/04/04(月) 10:53:15
「言語の仕様的には、やればできる」が、
「そういう方法を習っていない」から楽な方法しか思いつかないんだよ。
ここにいる連中は。
結局学校で先生に懇切丁寧に手取り足取り教えてもらわないと
プログラムの手法ひとつも思いつかないし、やれない。
291 名前: デフォルトの名無しさん 投稿日: 2005/04/04(月) 10:58:38
一例では
今あるAPIでは、シェーダ内でアルファブレンディングができない
それでもどうしてもしたい,必要である
そういう状態のときに、ここで聞いても「諦めろ」としか言われないのと同じこと。
できないなら自分で作るしかない、言語の仕様も自前のシェーダを許容しているからと
これを自前のアセンブラシェーダでやったのがジョン・カーマックなわけで
Cにしてもそう
自分でライブラリつくろうとかヘッダ作ろうとか思いつかないのは
先生に教えてもらってないから。
先生に教わらないと靴も履けない。
まあ「自分で考えろ」という奴ほど
じゃあお前はどうやって知ったんだよ
と問うと結局は先生に丁寧に丁寧に教えてもらったから
ってオチがつくもので
「人のソース見た」とか。
おまえそりゃ自分で考えたんじゃねえだろ、みたいな
まぁ人のソース見て勉強するのは一手だけどな
つーか何行もの説教レスは
誰の為にもならない資源の無駄。
無視しろや。
ビル・ゲイツも大学のゴミ箱に捨ててあったソースコードを読んで勉強したって言うぜ。
先生に教えてもらわなきゃ何もできなかった馬鹿ほど吠えるもの。
別にいいんだよ、そんなに必死に隠さなくても(^ω^)
>>539 > 結局は先生に丁寧に丁寧に教えてもらったから
お前と一緒にすんな。
>>540 「学ぶ」という言葉は「真似ぶ」から来てるわけだし、真似ることにはなんら問題ないだろ。
叩かれてるのは、真似る気がないヤツであって。
だいたい今プログラミングなんて、ちょっとぐぐれば真似る対象がドカドカ出てくるのに、
誰かにテトリス足トリス教えてもらうなどという非効率な手段を採るやつは初心者。
羽生善治四冠の言うところの「高速道路」に乗れない、
そもそも高速道路を探そうとすらしない愚か者。
まあ、ここは初心者スレだが。
必死だな
549 :
デフォルトの名無しさん:2005/04/09(土) 20:11:18
>>547 いいわけばっかり長くて結局自分で考えたんじゃないでしょ?
人のパクリしかできないのに自分の努力と勘違いしてみっともないよ。
まぁこの程度のことで、長文説教してる奴は見苦しい
今日も技術的なレスでいっぱいだあ
煽り技術ですな
553 :
デフォルトの名無しさん:2005/04/09(土) 20:22:48
初心者向けの良いサイトを教えてください
初心者はサイト見るより本買っとけ
本やサイトより、ヘルプが一番分かりやすいよ
質問ですが、directx9.0 sdk をインストールをしてVisualC++6.0で
プログラムを作っていたところ、コンパイルしたところでエラーがでてしまいました。
どうやったら直るのかわかりません。どうやらSDKに問題があるようなのですが、
なんどインストールしなおしても直りません。どなたか教えてくれませんか?
下は出たエラーです。
\include\dsound.h(305) : error C2146: 構文エラー : ';' が、識別子 'dwReserved1' の前に必要です。
\include\dsound.h(305) : error C2501: 'DWORD_PTR' : 識別名を宣言するのに、型が指定されていません。
\include\dsound.h(305) : error C2501: 'dwReserved1' : 識別名を宣言するのに、型が指定されていません。
\include\dsound.h(306) : error C2146: 構文エラー : ';' が、識別子 'dwReserved2' の前に必要です。
\include\dsound.h(306) : error C2501: 'DWORD_PTR' : 識別名を宣言するのに、型が指定されていません。
\include\dsound.h(306) : error C2501: 'dwReserved2' : 識別名を宣言するのに、型が指定されていません。
fatal error C1903: 直前のエラーを修復できません; コンパイルを中止します。
cl.exe の実行エラー
template.obj - エラー 7、警告 0
>>556 最新のPlatformSDK入れてないだろ。
VC6付属のSDKにはDWORD_PTRが定義されてない。
頂点2000強、面5000弱の物体を10個表示させると350fpsから70fpsに落ちました。
平行光源を使うと40fpsまで。
これらの原因は単純に頂点や面の多すぎなのでしょうか?
>>558 はぁ?
350fpsのときはどんなモデルをいくつ表示してたんだよ。
>>557 マイクロソフトのホームページいって、directX SDK 9.0c update(Apri 2005l)
をインストールしましたが直りませんでした。
>>556,557
まぁ待て、VC6付属のIncludeファイル群にもDXのヘッダファイルあるんだよ
そっち見てんじゃねーの?
俺もVC6でDX9使ったが、完全な自分の構文ミス以外エラーなんか出なかったし(PlatformSDKの入れ替えとかしてないし)
あと
>>556はちゃんとdxguid.libをリンクしてるのだろうか
>>561 そいつぁDirectX9 SDKだ
PlatformSDKは別のもんだ
>>560 それじゃもう何が原因なんだかこっちじゃわかんねーよ。ばーか。
画面に実際に表示してる物体の数にもよるだろ?(頂点数)
あと、画面に実際に描画されている各物体の面積。(ピクセルフィルレートの問題)
アルファ物はいくつ描画されているの。(アルファがある部分は2度塗りになるので主にピクセルフィルレートの問題)
で、ちゃんとクリッピングしてるの?とか、それがうまく動いてるのか?とかアルファ物以外のものはちゃんと手前から描画してる?とか
色々考えられるけど原因なんてこっちじゃわかんねぇよ。
ちゃんとクリッピングが動作してりゃ画面に表示されている物体しか処理されないはずだよな。
頂点数が多いからといって描画する物体の描画面積が少なければ軽くなるわけだし。
色んな問題が絡み合うだけに何が原因と断言できない。
>>565 >PlatformSDKって何ですか?
訊く前にぐぐれよ。
ググることすら出来ないからここで
バカみたいに聞いてんだろうよ
既に DirectX 関係品
>>564 スマソ。
変化のない部分をずらずら書き連ねても、そんな部分イラネーヨとか書かれそうなので書きませんでした。
グラボ在り(ラデ9200)。
xファイル、面積は0.2以下が大半。
変化前 物体数0個350fps → 変化後 10個70fpsです。
重ならないように画面内に全部表示。
離れようが近づこうが大きな変化はありません。
描画関連の処理をこの処理だけにした場合(他の計算等は残したまま)、
変化前 物体数0個600fps → 変化後 10個80fpsです。
物体の大きさは奥行き48 x 幅30 x 高さ8
重いのはDrawSubset(当然だろうけど)。
>>570 とりあえず、俺なら、
1.同じモデルを1個、2個、5個出してそれぞれの場合を測ってみる
2.頂点数を半分にしたモデルを用意してそれを10個出して測ってみる
3.頂点数を半分にした同じモデルを用意してそれを1個、2個、5個出してそれぞれの場合を測ってみる
4.同じモデルを10個、20個、30個出してそれぞれの場合を測ってみる。
5.頂点数を半分にした同じモデルを用意してそれを10個、20個、30個だしてそれぞれの場合を測ってみる
6.ちょっと凝った背景モデル(できればアルファ込み)を用意して、その上で1~5のテストをZバッファON・OFFの場合でそれぞれ測る
これぐらいのテストはする。
また、いまはピクセルフィルレートによる処理落ちが起きていないが、
頂点数での処理落ちに加えてピクセルフィルレートの処理落ちが出てくるとまたよくわからん処理落ちをする。
実際にゲームのシーンを組んだときと同じモデルを10個20個描画したときでは処理落ちの仕方が違うような希ガス。
レスありがとうございます。
1、4はやってましたが半分サイズの表示はやっていなかったのでやってみました。
見事に地表が真っ黒に(ノ∀`)
ライト処理がされていないか異常があったためでしょうか、
ライト以外の描画関係をコメントアウトしてもやはり地表が真っ黒でした。
当然セットテクスチャは地表以外行っていません。
そもそもXファイルとそれに貼り付けるテクスチャの読み込みをコメントアウトしても真っ黒になったため、残りの半分のポリゴンで奇跡が起こっていたのかと。
プログラムの見直しをして見ます。
細かい条件にもよりますが、PM1.6 R9200では100万ポリゴン程度なら60fpsを維持できるのでしょうか?
>>568 summer 2004から非サポートじゃなかったか?VC++6.0
非サポートっつっても、使えるようにするものがMSページにあるけどな
VC6.0で関数を打ったら引数が自動で出るようにしたいんですがどうしたらいいでしょうか?
WinMain(HWND・・・・
ってでるやつなんですが
いやですからdirectxの関数でも出来ないかなと
出ないときは出ない。VCのバグだ。
あと、入れてるverが最新版なんですがちょっと上のレスにあるように
vc6.0に対応している奴なら改善しますか?
関係ない。IDE自身がダメダメだから。
VS2003とかならマシになってると聞くが完璧ではないらしい。
最近借りた本がDirectX8.0の本なんですが
8.0をそれなりに理解すれば9.0も使えるんですか?
584 :
デフォルトの名無しさん:2005/04/10(日) 21:15:05
DirectXでベンツマークソフトを作りたいのですが、
言語はC++を習得済みとしたら
一般的にどれくらいの期間でDX9を習得できますか。
とりあえずDX9bのフィーチャーを一通り網羅できればいいレベルで。
ベンツマークをt種繰りたいんです!
ワロタ
ベンツマークなら、円を中心点から外周を結ぶ線で3等分すればできるよ
587 :
デフォルトの名無しさん:2005/04/10(日) 22:52:09
質問失礼します。
64人同時対戦等のロビープログラム(名称あってる?)ってどうやって組めば良いのでしょう?
やっぱりWinInetとCGI使って組むのでしょうか?
とりあえず、sageときますね。
>587
どういったものを作りたいのかさっぱりわからんが
とりあえず通信関係のプログラムの勉強しる
まずはsocketとかWinSockとか
589 :
デフォルトの名無しさん:2005/04/10(日) 23:59:13
>>587 なんでDirectXスレに書いてんだ。
590 :
587:2005/04/11(月) 00:44:37
返答ありがとうございます。
>>588 >どういったものを作りたいのかさっぱりわからんが
ですので、ロビープログラムです。
「検索」ボタン押したら、サーバーがズラーっと出てくるやつです。
>>589 できればDirectPlayで組みたいのです。
>やっぱりWinInetとCGI使って組むのでしょうか?
>できればDirectPlayで組みたいのです。
('A`)
>「検索」ボタン押したら、サーバーがズラーっと出てくるやつです。
鯖が複数台無いとできんぞ。
とまぁ、そんな煽りは置いといて、
>64人同時対戦等のロビープログラム(名称あってる?)ってどうやって組めば良いのでしょう?
これは答えれないよ。
100という答えを出すのにどういう式を組めばいいのか聞いているようなもの。
とりあえず2人対戦を作り、そのあとサーバーを分けてそれぞれにアクセスできるようにする。
あとは人数増やしたりサーバーを増やしたりでOKなはず。
>>590 DirectPlayにロビー機能あるぞ。
それ使えばロビー関係の機能は自分で実装する必要がない。
MSN Gaming Zone等の汎用のロビーを利用してマッチングできるよ。
この機能だけでもDirectPlayの存在意義はある。
なんでDirectPlay無くなっちゃうんだろうな
「DirectPlay」は、マルチプレーヤ用ネットワーク・ゲームをサポートする、
ネットワーク通信用の API です。
しかし、現在では、DirectPlay は不適切で旧式のものとみなされています。
現在の SDK では DirectPlay は引き続きサポートされていますが、
DirectPlay の「ヘッダー」「ライブラリ」「ドキュメント」は将来の SDK では削除されるでしょう。
そのため、既存のアプリケーションを修正するときは、
DirectPlay への依存性を削除することが強く推奨されています。
とのことらしい。
595 :
587:2005/04/11(月) 09:05:30
596 :
587:2005/04/11(月) 09:11:44
>>594 ヽ(`Д´)ノ
やっぱ今後はwinsockかそれ以外の何かって事ですね。。。
>>587 Updateではないヘルプには「DirectPlay のロビー」という頁がある
598 :
デフォルトの名無しさん:2005/04/11(月) 13:44:48
>>587 まず、サーバ1対クライアント1の通信をするプログラムを作れ。
TCP/IPによるコネクション指向でいい。
次にサーバ1対クライアント複数のプログラムを作れ。サーバは
マルチスレッドになる。スレッド1対クライアント1となる。
サーバは各スレッドの情報を収集して、全スレッドを通してクライアントに
データを送信する。
ネットワークプログラムで一番大変なのはデータの遅配やロストだ。そして
それらをテストするための環境だ。まあ、がんばれ。
599 :
587:2005/04/11(月) 14:03:36
返答ありがとうございます。
>>597 その使い方が、、、
いや、ありがとうございます。
>>598 >まず、サーバ1対クライアント1の通信をするプログラムを作れ。
できてます。
いや、私が作りたいのはサーバーの検索なのですが、、、
------------------------------------------------------------
色々悩んだ結果、WinInet と CGI で行く事にしました。
(ただし、WinSock に検索機能があればそちらを優先します)
あと余談ですが、通信部は DirectPlay から WinSock に乗り換える事にしました。
皆さん色々答えていただいて、ありがとうございました。
DirectInput(DirectX 9.0c)でキーボードを直接データで取得しようとしてるんですが、
無理にクラスにしようとしてるからかなんだかうまくできません。
どうやったらいいんですかね?
char KeyState[256];とかにキー情報が入ればクラスでも問題ないですよね?
初心者で全然わかってませんがお願いします。
(問題のクラスの定義部分とかカキコしていいっすか?)
もしかして
if(KeyState[i] == 0x80) とかやってないか?
char がデフォルトで signed char になってたら、
KeyState[i] が -128 になって 0x80 = (int)128 と等しくならない。
if((KeyState[i] & 0x80) != 0) だな。
602 :
600:2005/04/12(火) 04:04:25
う~ん、自分はよっぽどの初心者みたいでよくわかりません。
if(KeyState[DIK_RIGHT]&&0x80)のように使っていますが、
よくわからないのでとりあえず
if(KeyState[DIK_RIGHT]&&0x80)!=0)とやってみましたが
特に変わりありませんでした。
たぶん、もっと低レベルな馬鹿ミスだろうと思うのです。
603 :
600:2005/04/12(火) 04:06:33
class CInput
{
private:
LPDIRECTINPUT8pDI;
LPDIRECTINPUTDEVICE8pKeyboard;
public:
CInput();
~CInput();
HRESULTInitInput(HINSTANCE g_hInst);//DirectInput8Createです
HRESULT InitKeyboard(HWND g_hWnd);//CreateDeviceとかAcquireとかです
VOIDGetKeyboardState(char KeyState[]);
};
VOID CInput::GetKeyboardState(char KeyState[])//ポインタとか配列とかの関係がわかってないみたいです
{
if(pKeyboard==NULL)return;
HRESULT hr= pKeyboard->GetDeviceState(sizeof(KeyState),(LPVOID)&KeyState);
/*ロストしたらもう一回Acquireとか*/
}
変なところありますか?お願いします。
>>603 関数側では KeyState は char のポインタ(配列長の情報がない)だから、
sizeof(KeyState) は4になる。
とりあえず sizeof(char)*256 にしる
"(LPVOID)&KeyState" も &つけずに "KeyState" やね。
DirectX以前の問題やね。
607 :
600:2005/04/12(火) 04:36:59
みなさんご指摘ありがとうございます。修正しました。
>DirectX以前の問題やね。
本当にそのとおりだと痛感してますが、
CとDirectXの勉強を並行してやっていくということで勘弁して下さい・・・。
608 :
600:2005/04/12(火) 04:57:45
おかげさまで解決しました。
>>605 の部分が大問題でした。
(どっかのサイトを参考にしてたんだがなぁー)
ありがとうございました。
そしてこれからもよろしくです・・・へ(゜Д、゜)ノ
そのサイトでは KeyState を引数にとらず、
配列のまま直接渡しているはずだ。
己の読解力の低さではなく、
参考にしたところが悪かったと思い込んでいる。
凄いよあんた・・・。
二度と人のソース見るな。
そんなことより
>へ(゜Д、゜)ノ
これ何だw
馬鹿にしているに決まってるじゃないですか。
613 :
600:2005/04/12(火) 11:07:51
>己の読解力の低さではなく
>参考にしたところが悪かったと思い込んでいる。
むしろ読解力の無さに嘆いてるんです。コピペ的になりがちだし。
>へ(゜Д、゜)ノ
この程度の質問を再度するかもしれない自分に対してのあきれ顔です。
誤解を招いてしまいすいませんでした。敵対心これっぽちもありません。
本当に感謝の気持ちでいっぱいですよ。
これからもご教授お願いします。
おう! がんばれよ!
D3DPRESENT_PARAMETERS構造体の
BackBufferCountってなんですか?
なんか最大3つまで確保できるらしいんですが
バックバッファの数
ゲームじゃない用途にDirectXを使いたいのですが
デスクトップ上にポリゴンキャラを描きたい場合どういうアプローチがよいでしょうか
Windowモードでクリッピングせずに描画
619 :
617:2005/04/12(火) 23:20:33
早速の回答ありがとうございます
やはりそれですか、エッジが立ってしまうのは仕方ないですかね
620 :
617:2005/04/12(火) 23:36:57
ちなみにIDirect3DDevice9::Presentの対象にデスクトップが指定できれば楽ちんかと考えていました
621 :
デフォルトの名無しさん:2005/04/13(水) 18:36:04
ヒント:α
623 :
617:2005/04/13(水) 19:58:42
>>621さん
AvalonのSDKを調べればいけそうですか?
完成時期等を考慮すると今からつくるならそっちのほうがいいですか?
>>622さん
GDI+を使うのでしょうか?とても遅い気がしますが実用になりますか?
とりあえずAvalonを調べてみます・・・
624 :
617:2005/04/13(水) 20:07:08
625 :
617:2005/04/14(木) 04:42:39
書き始めて
GetBackBufferしたサーフェスからCreateOffscreenPlainSurfaceしたサーフェスへの
UpdateSurfaceが成功しない・・・
GetDescしてパラメータはあわせてるはずなんだけどなぁ・・・
626 :
617:2005/04/14(木) 06:50:40
GetRenderTargetDataを使って何とかなりました
たぶんこれで質問スレッドは脱出できます
独り相撲すみませんでした
627 :
デフォルトの名無しさん:2005/04/14(木) 17:17:00
はじめまして。DirectMusicのWAVEファイルの読み込みについて
質問させてください。
DirectMusicで、IDirectMusicLoader::LoadObjectFromFile()を使って
WAVEファイルからセグメントを作成して音を再生するようにしています。
ここでWAVEファイルを再生する際にIDirectMusicSegment8::SetLoopPoints()
を使ってループの開始位置、終了位置を指定して再生しようとしたところ
うまくいきません。いろいろ調べてみたところWAVEファイルからセグメント
を作成するとセグメントの長さが1に設定されてしまうらしいということは
分かりました。WAVEファイルからセグメントを作成した場合は
SetLoopPoints()を使ってループを制御することは出来ないのでしょうか?
もし解決方法を知っている方がいらしたら是非ご教授ください。
628 :
628:2005/04/14(木) 23:11:26
>>627 それは無理。
正確に言うと、DirectMusicにWAVEを読ませると無理。
MSDNに書いてある方法を実践しても動かん。
解決方法は、「カスタムローディング」の項を参照。
ここまでするなら、DirectSound使えって話になるんだが・・・
629 :
627:2005/04/15(金) 03:03:54
>628
返信ありがとうございます。
このままでは無理なのですね。ちらっとMSDNカスタムローディングの文章
を呼んでみたのですが恥ずかしながらさっぱりでした。まだDirectXいじり
始めたばっかりでWAVEファイルを再生出来るようにするのも一苦労だった
ので…
取りあえず時間かけながらカスタムローディング調べて無理っぽかったら
DirectSound使ってみようと思います。どうもありがとうございました。
>>629 自分でWAVEの長さを計算してSetLength
631 :
627:2005/04/15(金) 16:22:17
>>630 助言ありがとうございます。早速試して見ました。
WAVEの長さの計算方法が分からないので取りあえず適当な値(8000)を
SetLengthしてみました。その後GetLengthをするとセットした値(8000)が
返ってくるようにはなったのですがSetRoopPoints( 10, 0, 4000 )としても
普通に曲全部が10回繰り返されるだけでした。WAVEの長さを正確にセットしないと
ダメなのでしょうか…
632 :
デフォルトの名無しさん:2005/04/15(金) 22:06:13
今からDirectXプログラミングをはじめようと思います。
VC++によるDirectX入門のサイトはありませんでしょうか?
ちなみに.NETを使っています。
横着せんと本くらい買え
634 :
デフォルトの名無しさん:2005/04/16(土) 01:23:21
>>632 .NETを使っててVC++?? ってことはManaged C++???
最近の初心者はなんでもありだな
久々に見たら
妙に初心者に厳しいスレだなw
まあ回答者が中学生並みしかいないからな。
悔しいからってみっともないですよ^^;
638 :
デフォルトの名無しさん:2005/04/16(土) 08:02:34
>>634 ごめんなさい。
開発環境がVisualStudio .NETということです。
ちょっと質問なんだけど
初期化のとこの、Direct3DCreate9メソッドは
Ctrl + Spaceで補完されないのですか?
他の所は補完されてるのですが。。
スワップチェーンってのがよくわからないんですが
D3DPRESENT_PARAMETERS構造体のオブジェクトのことですか?
ダブルバッファとかトリプルバッファとか、描画するまでに何枚切り替えるか
とかの説明でいいかな・・?<スワップチェイン
最初は気にしなくていいと思う
せっかく日本語のヘルプがあるんだから「プログラミングガイド」くらい全部よもーぜ
いまどれくらいVRAM食ってるかって
GetAvailableTextureMemでしかわからないのかな・・・?
>>
プライマリプレーンと、それにアタッチされたn個のバックバッファのつながりの事
646 :
638:2005/04/16(土) 17:56:48
>>639 ありがとうございました!
参考にさせていただきます。
648 :
デフォルトの名無しさん:2005/04/17(日) 03:03:37
>>639 「.NET」と「VC++.NET」を混同してるお前の方が何でもありだよ。もう二度と来るんじゃないよ。
649 :
デフォルトの名無しさん:2005/04/17(日) 06:04:46
Visual Studio .net 2003を使っているものです。
リソースにBitmapや、waveを追加しようとしてもリソースビューで
recorce*
となるだけでその下が出てきません。
これはどうしてでしょうか?
ここはDXスレだ
652 :
649:2005/04/17(日) 10:02:49
ああああ、す、すいませんでした。
653 :
デフォルトの名無しさん:2005/04/17(日) 22:00:55
今日の情報処理試験のどれかに、Managed DirectXからの出題があったらしいぞ。
ソフ開なんて毎回のようにゲ製作技術板から出題されてる。
655 :
デフォルトの名無しさん:2005/04/18(月) 17:34:04
DirectSoundを使った、録音/再生について質問させて下さい。
最近のDVDレコーダに有る「追いかけ再生」の様な機能を作ろうとしています。
SDKのサンプルを見てLPDIRECTSOUNDCAPTUREBUFFERを使った録音処理は出来たのですが、
このバッファをそのまま使って、指定した時間分だけさかのぼって再生させる事は出来ないでしょうか?
ファイルから読み込んでの再生処理はサンプルを見て分かるのですが、
LPDIRECTSOUNDCAPTUREBUFFERからLPDIRECTSOUNDBUFFERへの変換方法が分かりません。
DXは8を使っています。
>655
録音したデータを順次ファイルに書き込んでいく→
そのファイルを再生する
DirectXの質問じゃなさそうですが・・・
ゲームとかの画像ファイルって大体纏められてますよね。
アレはどうやるんでしょうか?
というより、用語も何もワカランもので、ググるコツとか
書籍とか、URLなどを教え頂けると幸せです。
全部のファイルを順番に繋ぐだけ
画像の読み込みを自前で一度でも作れば理解できる
>>657 画像 連結 ソフト
でググってみてはどうかなあ
なるほど・・・繋ぐだけなのかぁ
zipとかにするもんだと思ってたけど・・・
そりゃー、速度や圧縮性、暗号化、パッチ当てとか凝りだしたらきりがないけど
そんなにしてもしかたない
まぁきになるならzlibくらいは通しておけば?
繋ぐ前の単体をzlibやLZSSで圧縮することはあるが、
結合データを圧縮するのはあまりない
あんな何百Mというデータを一変に圧縮してたらしゃれにならん
664 :
デフォルトの名無しさん:2005/04/19(火) 09:35:37
>>656 ありがとう御座います。
型の変換にばかり気が行ってました。視点を変えて考えてみます。
665 :
デフォルトの名無しさん:2005/04/19(火) 14:14:27
ゲーム製作技術の方に良いスレがないので、こっちに。
これからDirect3Dを学び始めて、半年をめどにフリーウェアゲームを作り始めたいのですが、
VC++とVC#+MDB、どちらでいくべきでしょうか。
また、OSは2000を捨ててXPにすべきですか?
VC++じゃなきゃだめだ!て思えるようになるまでVC#で
XPじゃなきゃだめだ!と思えるようになるまで2000で
>>665 マジレスするとVC++。OSはまだXPでも2000でもどっちでも良いと思う。
それは良いんだが、多分半年ではゲーム製作は無理だと思う。
作る対象が3Dならなお更。
もちろん何にも言語を習得してないって前提で。
665の文章を見る限りではCorC#を習得してるようには見えなかったので。
>>667 最近のアップデートで2000のサポートが切れなかったっけ?
VC++.NETを使えるようなマシンスペックがあるなら、XPを軽量動作で使った方が後々良いと思う。
>>668 ん?そうだったっけ?
最新ってVS.net2005?それとも2003?
今VS.net2003は今2000で使ってるけど普通に動くよ。
まぁ、さっきのは「XP使うに越した事は無いけど態々OS変えてまではどうかな?」って書いてみただけ。
>>669 いや、DirectXのアップデート。
Feb2005からはXP以降の開発環境しかサポートされてないよ。
だから、継続してやるならともかく、これからやるならサポートされてるXPでやった方が良いでしょと思って。
開発環境のサポートとランタイムの問題をはき違えている人間が出るのは、
MSの説明が悪いせいなのか?
672 :
657:2005/04/19(火) 20:02:48
>>662 目的といえば、一つのファイルにして適度にわからない程度の暗号化でいいんですが
結合するのだと画像以外のファイルも扱う時にムリが出て来そうです。
zlibありがとうございます。
理解するのに時間がかかりそうですが・・・
673 :
デフォルトの名無しさん:2005/04/19(火) 22:04:02
zlib、リンクするだけで実行ファイルのサイズが600KBくらい増えるんだが・・・
なんとかならんものだろうか。
それ昔libpng使ったときに思ったなぁ
結局ddsにしたよ
何か勘違いしてるっぽい。
画像として結合するんじゃなくてファイルとして結合する。
たいてい先頭にインデックスを置く。
要するに普通のアーカイブ。
>>673 まじで?
ラッピングしてdllにした時は100k行かなかったんだが。
ファイルの読み込みすら理解してない感じだな
copyコマンドでくっつけて元のファイルのサイズ分づつ読めばいい
あとはオンメモリで操作
679 :
665:2005/04/19(火) 23:05:51
MDBじゃなくてMDXでしたね・・・(恥)
>>666,
>>667 お答え有り難うございます。
書きそびれましたが、言語経験が無いわけではなく、一応Javaをかじってはいます。
オブジェクト指向は全然活用してませんし、UMLとか読み書きできないですが。
まあ、まずはご指摘の通り、DirectX SDK(2004年以前)+VisualC++でやってみます。
680 :
デフォルトの名無しさん:2005/04/20(水) 00:27:31
>>673 600Kじゃなくて600Mの間違いじゃないのか?
600k位キニスルナ
パソコンゲーなら600kbくらい増えても気にもとめんけれどなぁ。
683 :
657:2005/04/20(水) 20:50:13
>>675 画像 連結 ソフト
でググったら画像を結合するソフトが当たったもんでそういうもんなんだと思ってしまった。
それなら最初にzipとかにするもんだって思ってた方が近いですね。
>>677 仰る通り理解してないっぽです。
なるほど・・・D3DXCreateTextureFromFileInMemoryとか使うんですね。
>>683 面倒だったら、zip展開ルーチンを自アプリに組み込めば?
ファイル作るの楽だし。
最低限の暗号化はしておかないと展開も楽になってしまうけどw
>>675 zipってインデックスだっけ?
私の知る限りlzhもtarもインデックスは持たないのだけれど。
そのへん面倒見てくれるライブラリどっかで公開されてそうだけどなぁ
686 :
675:2005/04/20(水) 22:44:13
>>684 zipが何してるかは知らないが、ゲームに使うならその方が楽。
(下手するとGB単位になるアーカイブをいちいちスキャンしてられないし)
少なくとも俺はそうしてる、という意味で書いた。
別にインデックスファイルを持つ方法もある。
zip って暗号化は出来ますが、ファイルの内容を見ても
そのファイルがzipファイルであること自体分からなくすることは出来ますか?
もし出来るのであれば、ゲームのデータ用にzlibを使おうと思っているのですが・・・
zipとzlibにどういう関係があるんだ?
zlib は Zip や gzip に使われている圧縮アルゴリズムをライブラリ化したものです。
作者は Zip や gzip 同様 Jean-loup Gailly と Mark Adler です。
ライセンスは BSD 類似です(詳しくは zlib 配布に含まれる zlib.h のコメントをご覧ください)。
zlib の圧縮アルゴリズムは PKZIP 2.x の deflate アルゴリズムで,
もともとは奥村晴彦と吉崎栄泰が LHA のために開発したものをハッシュで高速化したものです。
その後,LHA もハッシュを使うようになりましたので,
LHA と gzip/zlib/Zip の実質的な相違はなくなりました。
688が言いたいのは、zlibを使ったからといって扱うのが
zipファイルである必要は無いってことジャマイカ?
zlibはzipファイルを読み書きするコードも含まれてはいるが、
zipファイルを読み書きするためのライブラリでは無くて、
むしろzipファイルの読み書きはオマケ。
691 :
デフォルトの名無しさん:2005/04/21(木) 05:33:52
>>689
ちょっとDirectXの話題とはそれてしまいますが、zipもgzも基本的には同じってこと?
zipもgzもlzhも圧縮アルゴリズムは同じってこと。
ファイル構造は全然違う。
gzip は後段シャノンファノって聞いた覚えがあるけど。
他はハフマン。
lha って今はトライとか使ってないの?
まぁ、
圧縮:データの冗長性を減らしてサイズ削減
アーカイブ:複数ファイルを一つにまとめて取り扱うことができる
は区別しようね、ということで
.tar.gzの例を見ればわかりやすいか?
>奥村晴彦と吉崎栄泰が LHA
前者はLarc、後者はLHarc。LHarcはその後LHを経由してLHAと言う名前になった。
#老婆心ながら念の為。
696 :
デフォルトの名無しさん:2005/04/21(木) 16:00:11
吉崎栄泰は今いずこへ?
本業は医師ではなかったか?
698 :
デフォルトの名無しさん:2005/04/21(木) 16:22:48
lh8を開発したいのだが、どうしたらいい。なんと許可を得る方法はないものかねぇ。
展開という言葉だってほぼ同時期に勝手に割り当てられた言葉であって
それほど正当性があるとは思えない
ゲーム中で、3Dモデルのコンパス(方位磁石)を表示したく思っています
コンパスは、ワールド座標の任意の位置(床の上など)に置かれます
この時、コンパス自体の大きさを、一定にするにはどうすれば良いのでしょうか
コンパス描画時のみ、Viewの距離を固定すれば
楽勝かなと思っていたのですが、位置との兼ね合いが難しくて・・・・
702 :
デフォルトの名無しさん:2005/04/21(木) 17:38:36
DirectInputでキーを押した瞬間を検出することはできますか?
Win32APIのGetAsyncKeyStateの最下位ビットのような機能を探しています
GetDeviceStateでGetAsyncKeyStateと同様にできないかと思って試したのですがダメでした
>>701 別のテクスチャにレンダリングした後に合成
705 :
デフォルトの名無しさん:2005/04/21(木) 19:58:41
本当に初心者みたいなことをきいてすみません。
directinputでジョイスティックを使えるようにしたいのですが、
色々なホームページを参考にしたのですが、未だに初期化できなくて
困っています。参考にさせてもらったページは
ttp://www.geocities.jp/toru_website/index.html なのですが、directx9sdkを入れているためか、うまくサンプルを
ビルドすらできません・・・・。どなたかわかりやすく教えてくれませんか?
お願いします
>>705 エラーとか症状とか書かないとわからんだろ
ソース丸投げするならゲ製作技術板でな
>>706 ゲ製にこれ以上ゴミを持ち込まないでください。
9の参考書を一個買えば解決するっしょ
やっぱ一冊はもっとけ
>>701 やり方忘れたけど射影変換いじれば出来た希ガス
DirectInputの初期化なんてSDKのサンプル見ればいいだけじゃないの?
711 :
デフォルトの名無しさん:2005/04/21(木) 20:29:23
DirectInputの初期化はコールバックを使うので
初心者にはワケワカランかもしれん。
が、MSDNのヘルプに書いてあるとおりにコーディングすれば
動くので、ガンバレ。
DirectInputを使わない、という方法もあるよ。そっちのがいいんじゃね?
ところがjoyGetPosやJOYINFOでググってもほとんどヒットしないんだよな
713 :
701:2005/04/21(木) 20:51:29
>>703 >>709 レスありがとうございます
結構他も数が多いので、その都度プリレンダーっぽい感じだと一気に遅くなってしまって・・・
難しそうですが、なんとか射影変換の方で頑張ってみます
>>713 ごめん射影変換じゃなかったも
詳しい人にまかせる↓
難しいことはGDNJで聞けよ
>>707 ゲ製作に板違いなし!
なんでも引き受ける懐の広さが魅力だと聞いたが
彼女へのINSERT権限がありませんと怒られました
どうすればいいですか?
718 :
デフォルトの名無しさん:2005/04/21(木) 23:36:59
>>701 コンパスを描画するときだけ、カメラを変更すればいいんじゃないか?
要は常に画面の一定の場所に配置したいってことだろ?
一定の場所じゃなくて任意の位置じゃない?
コンパスに騙されて問題を読み違えてるヤツがいる悪寒
コンパスはコンパスで 3D なのかな?
723 :
デフォルトの名無しさん:2005/04/22(金) 00:12:41
みなさんありがとうございます。
上の、zlibのzip機能はオマケ、みたいな情報はどこで仕入れればよいのでしょうか。
てっきりzipを出力するためだけのライブラリと思っていたのですが・・・
またzlibは暗号化はできますか?
どうでもいいけど
>>690から水曜夜はジャマイカ戦的なにおいがする
スレ汚しスマソ
727 :
701:2005/04/22(金) 17:17:55
>>714 >>718 >>720-722 皆さんレスありがとでやんす
そうなんです、任意の位置への表示方法で困っています
コンパスと言う誤解を招きやすい表現でしたが、実際はパズルゲームのパネルです
コンパスはコンパスで3Dです
View位置を固定すれば、向きと大きさは大丈夫なので、
あとは位置だけなのですが・・・・簡単そうなだけに、もどかしいです
知らんけど、カメラからの距離を大きさにかければいいんじゃないの?
>>727 viewportで描画場所を変えればうまくいかないかな?
>>728-729 お付き合い感謝っす、早速やってみました
ビデオカードによるのかもしれませんが、Viewportでは負の値が
入れられない(右下にしかずらせない)みたいです、惜しいだけにすごく残念です
手探りで728さんの方法を試し中です
数学出来る人は一発で拡大率分かるんだろうなぁ・・・・
ウィンドウモードで作成中なんだけど
SetWindowPosをしても、すぐ引き戻されてしまう・・・
(元の位置に戻り、結果としてちらつく)
PreTranslateMessageでメッセージを除いても何も着ていないんだが
なんか掟でもあるん?
ヤバイ超ヤバイ。不動産のチラシマジヤバイ。
まず。築五分。これだけでもやばいのに
築五分なんてもんじゃない。
駅から五年。
何処の駅からだよ。
とにかく不動産はチラシだす前に推敲したほうがいいとおもいます
733 :
731:2005/04/24(日) 13:10:25
ごめん、自分で他の場所で移動させてた・・・自爆
なかったことに
734 :
デフォルトの名無しさん:2005/04/25(月) 07:37:55
コールバックを使わずにDirectInputでジョイスティックを使う方法ありますか?
あります
738 :
デフォルトの名無しさん:2005/04/26(火) 09:05:11
ゲーム作ったことのある方が多そうなのでこちらのスレで聞きたいのですが、
下のような処理だとメインウィンドウや子ウィンドウをドラグしたりすると
ゲームの処理が止まってしまうのですが、
止まらないようにすることはできるでしょうか?
リアルタイムに進行するゲーム内で使うウィンドウなどは、
自前で実装するしかないでしょうか?
APIというか、Windowsのウィンドウは使えないでしょうか?
while (!s_end){
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){//ウィンドウのメッセージが来た時の処理
TranslateMessage(&msg);
DispatchMessage(&msg);
}else{
gameloop(hWnd);//ゲームのメインループ
Sleep(1);
}
スレッドを使えばいいだけの話。
これ以上の問答は無用。
740 :
デフォルトの名無しさん:2005/04/26(火) 09:14:35
問答をするかどうかあなたが決めることじゃないと思うのですが、
スレッドは一つの方法として検討します。ありがとうございます。
でも少し難しそうなんで、他の方法というのはないものでしょうか?
>>740 あると思うが、スレッド使うより複雑になると思われ。
スレッドを使うよりも簡単な方法はない。終了。
743 :
デフォルトの名無しさん:2005/04/26(火) 09:44:53
>>742 あなたが知らないってだけで、あるかもしれないじゃないですか。
勝手に断言して終了しないで下さいよ大先生。
守れないルールじゃないだろ
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。
745 :
デフォルトの名無しさん:2005/04/26(火) 10:17:25
融通利かせましょうよ大先生。
せっかく教えてもらった答えにやりもしないうちから難しいだの難癖をつけ、
スレ違いだから話を終わらせるべきなのに、融通がどうのと勝手な我が儘を通そうとする。
無能で頭が悪い上に自分勝手。もはやどうしようもない。
>>746 つうかトラブルの元は君だと思うんだが。
>>446 一つのやり方として検討するって言ってんじゃん。難しそうっていうのが難癖かよ。
具体的な根拠もなく投げやりに断定されたって誰も納得できないっての。
他のやり方が存在して、参考になる他の中身のある納得できる意見が聞けて、
そっちの方が実現できそうで、実際に実現できれば学習コストを削れる。
何の具体性も伺えない決め付けを鵜呑みにしてほいほい進む方がバカ。
スレ違いの質問に対して、折角常套手段が提示されていて、それ以上何かを求める方が馬鹿。
つーか、下らん議論を展開している段階で漏れも含めてスレ違い。
以下、DirectXに関する質問(と回答)をどうぞ。
751 :
デフォルトの名無しさん:2005/04/26(火) 11:09:35
これだからwin厨は駄目なんだよ。
氏ね。
スレ違いなんて承知の上で断って聞いてんだろうが。
くだらねぇ事いってんじゃねーよ。余裕ってもんがねぇのかよ。
だったら最初から一切答えるなよ。一切答えないで誘導すれば筋が通ってるよ。
それに知らねぇから聞いてんのに根拠もなく常套手段とか決め付けられて納得できるかよバカ。
> スレ違いなんて承知の上で断って聞いてんだろうが。
凄まじい厨房っぷりなわけだが。
>>738 >ゲームの処理が止まってしまうのですが
止まりません
わざわざコンパイルまでして確認してやったんだから感謝しろよ
-解決-
>>738 シングルスレッドで処理するなら、WM_TIMERの処理から
gameloop(hWnd)を呼ぶといいよ。
まぁ、大した精度がいらないならそれでもいいけど。
アイタタタタ、酷い質問者が沸いたもんだね。
>>746に同上するよw
>>754 せっかく作っていただいたのであれば見せてくれませんか。
ウチではウィンドウをドラグすると止まってしまうのですが。
>>755 それは簡単でいいかもしれないですね。ありがとうございます。試してみようと思います。
ただループ回してると60fps超えそうなときは何で調整したらfps安定するの?
ウエイト
カウンタ
見せてるじゃん。
765 :
759:2005/04/27(水) 04:09:35
(変なときに質問しちゃったなぁ・・・・)
ウェイトってsleep()?
寝過ぎて60ぴったりにならなさそうな・・・・
カウンタは
if(last - timegettime() > 1000/60) Frame();
これも精度悪そうな気がしますが・・
sleep(1)しつつハードウェアタイマーでタイミング計ったら?
累積誤差が溜まったときに解消してやればOK
17 16 16でウェイトとる方法もあるけどね
そもそも60ぴったりにすることにあまり意味はない
>>765 Sleepは指定した時間寝る関数で、その時間が経っても起きることは
保証されてないからねぇ。
そもそも、ぴったり60にしても画面のリフレッシュレートが60でないと
全く意味がないから、そのくらいは気にしなくていいよ。
リフレッシュレートが85Hzだと、実際に画面が更新されるのは最大で
11msも遅れるわけだ。1msや2msなんて気にしてもしょうがない。
細かいことを言うと、メッセージループの中にSleepを入れる場合は
代わりにMsgWaitForMultipleObjectsを使った方が行儀がいい。
WM_DDE_INITIATEでググってみると分かるけど、メッセージに即座に
反応しないと、他のアプリケーションの動作が遅くなることがある。
まぁ、ゲームのfps調節のためのウェイト程度なら、あんまり
気にならないけど。
769 :
デフォルトの名無しさん:2005/04/27(水) 08:19:32
フォントオブジェクトを使って画面に文字を描画すると、にじんでしまい、きれいに出ないのですが
くっきり出す何かよい方法はないでしょうか?
770 :
デフォルトの名無しさん:2005/04/27(水) 08:21:18
描画するごとにsleep(1)を入れると必ず60fpsになるのは何故?
そもそも何故Sleepが1固定なのか意味不明。状況に応じて休み時間は動的に変更すべき。
それから経過時間から必要回数を割り出せば、揺らぎがあっても大まかな調整は出来るし、
Windows上で揺らぎを防ぐのは不可能。
さらに意味不明なのは、
>ハードウェアタイマー
あのさ、APIによって取得する先は違っても、
すべてハードウエアから時間をとってるわけなんだけど、
ロジックで時間経過を割り出せる技術なんていつ開発されたの?
772 :
デフォルトの名無しさん:2005/04/27(水) 09:15:06
ハードウェアタイマーとういのはぶっちゃげ内蔵時計のことね
そうじゃないタイマーっていうのは、画面のリフレッシュレートとかそれ以外の方法を使って割り出したおおよその時間経過のことよ
ok?
773 :
デフォルトの名無しさん:2005/04/27(水) 09:16:54
描画するごとにsleep(2)を入れても必ず60fpsになるのは何故?
フルスクリーンでやってないかい
デバイスを作成する際に、ウエイトをとるように作っているからだろう。
ちなみにDirect3Dは垂直同期信号の検出ではなく、
フルスクリーン時でもAPI側のタイマーが使われるようになっている。
ヘルプでは言葉を濁してあるが、結局使われていない。
おかげでCPUをフルに使わなくても済んでいるが、自分でやっても結局同じ落ち。
?
>>777 とりあえず何かしゃべれ
「・・・」と「?」を多用する奴はそれで何か通じると思ってるのか?
>>778 多分、判る人に判ればいいと思っているのではないかと。
つまり、判らんあんたが気にする必要はないと。
Sleep(0); でいいんじゃないの?
何で Sleep(1); にするの?
>>780 0だと自分より低いプライオリティのスレッドに実行機会が与えられない。
待機イベントやSleepでてきとーにウトウトしつつ
時間が近くなったらGetRasterStateで
ポーリングってのはダメなん?
プライオリティの指定は、基本的に他のスレッドへのスイッチされるまでの時間の幅の指定です。
CRITICALのような指定をしていなければ、利用可能な時間を使い切った時点で、下の順位のスレッドにも処理が回ります。
優先順位の高いスレッドが走っていても、それより下のスレッドに処理が全く回らないような間抜けな設計にはなっていません。
Sleep(0)の場合、利用可能な時間を使い切る前に処理を戻すことになるので、
優先順位が低いスレッドがCPUを必要としていれば、そちらに処理が回ります。
そしてSleep(0)は処理が終わったらすぐ返ってきますが、
Sleep(1)以上ならその時間は他のスレッドが処理していなければアイドル時間としてカウントされます。
>>781が大嘘なのを確認する簡単なテスト方法は、スレッドをREALTIME_PRIORITY_CLASSにしても、
無限ループでSleep(0)を呼び続ければ、他のスレッドはきちんと動作します。
>>787 試しにやってみたけど、Sleep(0)呼んでもそれよりも低いスレッドが動作しないぞ。
Pen4HTとかマルチプロセッサとかじゃないの?
なるほど。そういう違いがあったのか。
>>734の質問頼む
>>735-736がせっかくあるって教えてくれたけど
MSDNとかヘルプをみた限りじゃ頭の悪い俺には方法がみつからなかった
もうちょいヒントください
つーか、コールバック使わないって事はデバイス列挙しないって事だよな?
んなこと言ったらGUID直指定で作成する意外なくね?
>>791 そもそもコールバックを使いたくない理由ってあるの?