1 :
名前は開発中のものです。 :
04/09/22 23:30:32 ID:anobjZYP DirectXについては基本このスレで話していこうとものです。
基礎的な質問+高度な質問も簡潔かつ簡単に答えることをモットーにして頂き
このスレの回転を早めて常にアクティブなスレにしたいと思っております。
このスレに質問等を書かれる方はまず最初に自分でしっかりと調べたのちに聞かれることをお願いします。
質問に対する答えも簡潔に出来る限りわかりやすくお願い致します。
テンプレは
>>2 以降で
3 :
名前は開発中のものです。 :04/09/22 23:33:28 ID:bWOthTlc
皆さん名前付けはどうやってます? API に合わせて CreateWindow にしてます? それとも STL 等に合わせて create_window にしてます?
>>7 これならWin32APIともSTLともバッティングしないし結構気に入ってたりする。
createWindow
getWindow
setWindow
とか。
>>8 やっぱ、java風のコーディング標準が一番しっくりくるよね
MS方式
クラス名 CClassName
構造体名 SStructName
メンバ関数名 MethodName()
メンバ変数名 m_menber_variable
多分、クラスの頭にCを付ける、って習慣は、メソッド名がキャピタルだから
そうしたんだろうな。createWindow方式ならCWindowじゃなくてWindowでOK
createWindowは俺も違和感感じるな。 名前重複を避けるならSetupWindowとかInitWindowとかがあるべ
>>10 名前重複って意味じゃなくてスタイルの重複を防いでるわけ。
どうしても意味的にGetWindowってつけたいのにWin32APIとバッティングすると面倒じゃん。
Cの頃からcreateWindowみたいな命名規則使ってたから特に違和感ないなぁ。 ところで>9 のm_member_variableの誤字を見て思い出したんだが、 英語を日本語表記する際mとnがどっちも「ン」になるのはどうにかならんのか。
じゃあ、このスレでの標準はメムバとかコムピュータとかオリムピックとかに。
ティムポっていってほしいんだろ
15 :
関連スレ :04/09/23 23:35:20 ID:aZqAfyms
ム板の鬱死DXは次スレ立ってないけど、ほんとにゲ製板のDXスレに
統合する、ということなのかな?
http://pc5.2ch.net/test/read.cgi/tech/1088594869/520 でD3DXLoadMeshFromX()がE_FAIL返すっての報告されてたんだけど、
漏れはD3DXLoadSkinMeshFromXofとD3DXCreateTextureFromFileが
E_OUTOFMEMORYを時々返す、ってのに遭遇したよ。(再現性は低い)
データの読み込みを(Now Loadingの演出をするべく)ワーカースレッドに投げてて
どっかで同期取らなきゃいけないところで同期とってないのかなぁ、と思ったんだけど
結局わからないんでSleep(1)しながら3回試すって対処しちゃった。
それ以降このエラーには遭遇してないんだけど、だれか似たような状況になった人いない?
前スレ
>>985 HLSLでコンパイルされたコードに疑問があるなら
D3DXDisassembleEffectもしくはその他類似関数で
解析してみるといい。
d3dx9dt.lib(fastftoa.obj) : error LNK2001: 外部シンボル "__aulldvrm" は未解決です このエラーの解決方法わかりますか? Summer入れてUnicodeが解決して後はこれだけ・・・ ネットで調べても 英語とItalien?と中国等8件しか 引っかからなかった 英語では your old proje・・・ 中国、Italien?は d3dx9dt.libとかしきりに書いてあった 一応いれては入るのですが #pragma comment ( lib, "d3dx9dt.lib" ) Italienってイタリアですかい??
忘れてた 環境はVC6 Geforce256 Summer(2004)です よろしくお願いします。 とりあえず小規模プロジェクトでやり直すかなぁ
>>18 海外のフォーラムを検索したところ、
プロジェクトタイプがコンソールアプリケーションになってるとそのエラーが出るらしい。
プロジェクトの設定→リンカ
で/subsystem:consoleになっていたら/subsystem:windowsに直すことで解決する
とのこと。
これはライブラリのパスが正しいのにそのエラーが出る場合らしいけれど・・・
>>20 さん
レス有難う御座います。
調べてみた所 /subsystem:windowsになってましたorz
ついでに項目を削除しても効果なす
とはいえ勉強になります。ありがと〜
間違ってコンソールで作った時は
泣く泣く丸ごと作り変えてました。
只今プログラム分解してテスト中
>>21 自分は面倒だから d3dx9dt.lib を d3dx9d.libにしたよ
うっほ 動いた!
何故だ(´Д`;)
>>22 さん有難う御座います
謎調べに移行
Extrasを入れればよい
ゲーム作る前にいつも絵の事で悩んでます。 皆さん絵上手なんですか?ネットにあるどのゲームも綺麗な グラフィックで羨ましいな。文章もダメだけど。。 シナリオは無くてもゲーム作れるけど、グラフィックなしのゲームは ありえない罠。
>25 それがDirectXと何の関係が?
絵は上手くないなぁ 一応やさしい人物画とかで 勉強はしているけど 3Dものなら キャプった画像や、 3Dで作った物をレンダリングして 貼り付けている・・・
>25 どんなゲーム作るかにもよるけど、 シューティング作るときはとりあえず、3Dソフトでプリミティブを加工した程度のものをレンダリングして使ってた あとはフリー素材でテクスチャなんかあるのでそれを利用 きちんとした形で公開するつもりなら絵の作れる人と組めばいいと思う グラフィックはヘタレ版でシステムがきちんと完成した状態なら、 ネットで呼びかければ手伝ってくれる人は見つかると思う 何もできてない状態で人集めても集まらない たまに集まってるけど、ほとんどがお流れじゃないかな
30 :
22 :04/09/28 15:47:25 ID:+etBdtyw
>>23 一応補足だけど、
d3dx9dt.lib は スタティックライブラリで
d3dx9d.lib は d3dx9d.dll へのインポートライブラリだけど、
ランタイムの方には d3dx9d.dll は入ってないぽいので、
配布するときはリリース版の(Extrasで修正した)d3dx9.libを
リンクするように注意しる。
(常にd3dx9.libを使うのも楽かも)
>>26 だと思いましたが、ここの人たちはレベルが高そうなので聞いてみました。すみません。
皆さんレスありがとうございます。
やっぱり同じように思ってる人いたんですね。
>>29 見た目も立派なゲームの重要要素だと思います。
動かないより動いたほうが面白いし。
でも、動かすのはよりムズイ。
32 :
25 :04/09/28 18:35:30 ID:RIga5vzj
名前欄書くの忘れてた。 あと思うのは素材探すより作った方が早い気がする。。。 これが欲しいと思ったモノってなかなか見つからない。
>25>31-32 質問は適切な場所でするべきだと思います
34 :
23 :04/09/28 23:39:20 ID:a4AdCX6Z
情報どうもです 気をつけます。 そのままの状態で出しそうだった・・・。
35 :
25 :04/09/29 18:31:47 ID:p5zY/IKa
御迷惑お掛けしました。すみません。
ゲーム製作でグラフィッカーを担当している者です。 もしかしたらスレの趣旨と違うかもしれませんが、質問させていただきます。 DirectXで画面に表示される総ポリゴン数の目安というのはどの程度でしょうか? プログラム担当に聞いたところ、△2万程度と言っていましたが、いくらローポリとはいえ、 3D畑の人間からすると、背景等も含め2万というのはかなり少ない印象です。 プログラム担当者もゲーム製作の経験はなく、お互いに手探り状態なので、 参考のために答えてくださるとありがたいです。 ジャンル→主人公が敵をバッタバッタ切り倒していくアクション 動作スペック目安→CPU:1G以上、メモリ512M以上、GRAM64M以上
>>36 どんな処理をするかにもよる。
実際に動かしてクオリティと動作を天秤にかけるよろし。
>36 情報が少ないのでなんともいえません あと動作スペック目安はCPUよりも、どれくらいのレベルのグラボを使うかのほうが重要な情報です ほかにも以下の状況でかなり変わってきます 最低動作のグラボはどれくらいのものを想定しているのか? LODとか視界にはいらないものは表示しないとかやってるのか? TriangleStripは使ってるのか? スキニングは行うのか? シェーダは使うのか?
僕らのアイドルガンダムー 今日も得意のガンダムチョップが炸裂だー(うわ、したり顔だよ!)
41 :
36 :04/09/30 20:42:48 ID:g9d6H2VP
>37-40 返答ありがとうございます。 >37 そうですね。 試行錯誤を繰り返すのは大事なので、しっかりと検証しようと思います。 >38 実はまだプログラマの方からデータを受け取っていないので、 実際の処理を行った状態でどうなるかは分かんないのです。 なので、その結果を見てからさらに考えてみることにします。 >39 情報不足すみません。 まだまだ細かい仕様までは決まっていない状態なので、 自分たちの技量を見て決めていこうと思います。
>>36 ワンフレーム2万ポリとして
リフレッシュレート60ぐらいだとしても秒間120万ポリじゃん。
αなんかも足をひっぱるし、塗りも考えると
ま、こんなもんじゃねーの?w
>>36 ポリゴン数より
塗りつぶし面積とテクスチャ複数重ねの方が速度の影響でかいぞ。
>>44 乙
面白そうだから 表示してみた。
キモイ(w
だがそれがいい
CPU1.8GHz Geforce256で45fps
ViewerはNewTekの奴
>>44 一瞬何かとオモタw
CPU1.8G RADEON9600で180fps
DXSDKのMeshView
また
>>43 みたいな馬鹿が出現しているが、
ハードウェアの転送能力を使い切るようなサイズの描画を行わない限り、
フィルレートよりも頂点計算による負荷の方が大きい。
FPSの最大値を60って決めてないのに、 なぜか勝手に60FPSが最大値になってしまう・・・。 どんなに処理を軽くしてもこうなる。 これの原因って何が考えられますか・・・?
>>44 とりあえずちかごろの最低ラインっぽいスペックで。
penIII1.0G RADEON9000
MeshViewで40〜50をうろうろ。
1024*768で最大化すると36周辺に落ちたりする。
>>48 D3DPRESENT_PARAMETERSのPresentationIntervalメンバの値を
D3DPRESENT_INTERVAL_IMMEDIATEにしてみれ
51 :
36 :04/10/01 01:13:21 ID:Ule3aCru
>44 3D開発環境のPen4 2.8G Quadro4 980XGLで400fps前後でした。 上の方々のfps報告を見ていると、2万ポリゴンでもちょっと危険なくらいなんでしょうか・・。 ひとまず、まだ製作に入ったばかりなので、システムなどができてきてから 一度検証してみることにしてみます。
2Dで作る時とかもClearメソッドで毎回、画面をクリアしなければ いけないのでしょうか?しなかったら、画面荒れるし。 更新すべき領域だけ更新しなくても対して変わりませんか? WindowsのGDI使う時はかなり重くなりますが...
>52 更新領域が小さい場合はそれでもいいと思うけど、 画面がめまぐるしく変化する場合、 更新領域が画面全体より大きくなる場合もあるから状況によるんじゃないでしょうか 動きの少ないパズルゲームみたいなのであれば更新された部分を出すのは難しくないし、 更新すべき領域の面積も小さいので効果的だと思います
>>47 いつの時代のPCだよw
もちろん頂点座標の変換やライティングの負荷を減らすため
画面上での視野角が小さい物体には、簡略化したモデルを使う
LOD処理は重要だが。
>いつの時代のPCだよw
無論、今の時代。
>>44 のサンプルでも確認できるが、サイズをかなり大きくして、
一定の限界量を超えるような状態を作らない限り、FPSにはほとんど差が出ないし、
限界まで小さくして、ほとんど塗りが無い状態にしても、
FPSはほとんど上がらないのが分かるだろう。
>>55 CPUで頂点演算してた時代かと。
そうだとすると多くのPCゲームにある、画面解像度の変更オプションなんて
意味ないじゃんw
キャラを単体で表示するだけなら、速度に影響ないように思えるだろうけど、
3Dゲームだとキャラは複数、背景オブジェクト、炎や炎とかのα付きポリゴンも
表示しないとならんでしょ。
森の中や街中のように、沢山のポリゴンが重なっている場合は影響でかい。
あと画面をズームさせるのもつらかったりする。
それから
>>36 の作りたいゲームにはあるかわかんないけど、
水面の映り込みやら、壁にバンプマップ使うとか、ピクセルシェーダ使った
エフェクトも、描画面積によっては激重になったりするんで注意。
57 :
48 :04/10/01 15:18:54 ID:YdevfgFc
58 :
44 :04/10/01 16:17:44 ID:AF2jiSUQ
書き忘れ >44のモデルをMeshViewerなんかでそのまま見ると全部トライアングルリストになってるので、 トライアングルストリップを使うと、処理落ちしている環境でも劇的に改善されると思います
>>56 >キャラを単体で表示するだけなら、速度に影響ないように思えるだろうけど、
MultiAnimation.exeで、キャラを10体程度出して、
全員が表示されている状態と、範囲外へ移動して全く塗りが発生していない状態と、
負荷を比べてみるといい。
キャラを増やしたときに生じる演算負荷よりも、塗りが減ったことによる負荷の方が遙かに小さいことが分かる。
>あと画面をズームさせるのもつらかったりする。
特定の対象物をズームすれば、表示しなければならない描画オブジェクトが減って、
逆に軽く作ることが出来るので、つらくはならないはず。
表示しないものまで計算していれば、MultiAnimation.exeのように重くなるのは当然だけど、
それは組み方が悪いだけでは?
>>59 そりゃtinyレベルのメッシュを沢山出せば重いだろw
MultiAnimation.exeが視錐台カリングやっているのかは知らんが。
そうじゃなくて、同じポリゴン数でも、キャラがアップになると
(描画面積が増えたら)速度低下があるってことを考慮しないと
いかんと言いたいわけだ。
ズームの例えは説明不足だったかな?
普通の状態で描画が間に合っている画像でも、何の手段も講じず
ズームすると(視錐台カリングはしていても)描画すると、時間が
間に合わなくなることは多い。
ちと極端な例だが、爆発の煙とかの4頂点の板ポリ、こんなの
数十枚でも画面いっぱいに描画すると悲しいことになるぞ。
>61 まとめ乙。
>>60 同意。
俺のゲームもそうなる。
実験的なプログラムで頂点計算と塗りを比べて見ても大した差は出ないけど
実際にゲームを作ってみると、αや2度塗りにすげー足を引っ張られることになる。
どっちかっていうと頂点数より塗りの方が処理が重いように感じる。
つーか、扱うことができる頂点数の割には塗りの処理速度が遅すぎるってのが正しいのかもしんない。
フィルレートを稼ぐため、大量に煙が発生するシーンでは 煙を画面解像度より、かなり小さいテクスチャに描画して 最後にその小さいテクスチャを、通常のサーフェスに コピーしたっていう市販ゲームの文書があったな。
ためしに今作っているプログラムでカメラを離して、 描画される物を小さくしてみたけど、全然速度が変わらなかった。 でもデバイスサイズを小さくすると速度向上。
66 :
名前は開発中のものです。 :04/10/02 12:21:20 ID:6KqlFYO1
最近の3Dは1ピクセルにつき1つのピクセルシェーダーシーケンスが実行されるとすると 1024x768で約78万回。 今後は頂点シェーダーもピクセルシェーダーも差がなくなってくるだろうし 1フレームにつきこれ以上の頂点を使うプログラムなら、頂点演算の方が思いと言えるかな。 60FPSでいうと約秒間4719万ポリゴン。
>>65 実験的なプログラムじゃだめだろ?
まず3D空間を全部描画してそこからさらに物を置くと変わってくる。
>>66 その計算じゃ2度塗りやαのコストが計算されてないな。
話にならない。
何を前提にしているのか知らないが、自分のプログラムではといっている。 他人に文句を付けている暇があったら、自分が利用する条件で、 好きなだけベンチマークをとればいい。 自分のプログラムでは塗り面積による影響は、 ほとんど皆無だったというだけの話。
69 :
名前は開発中のものです。 :04/10/02 14:21:35 ID:kghZkJk+
>>68 いや、塗りの計測はそれじゃ駄目なんだよ。(俺経験)
俺のプログラムでも単に描画される物体を小さくしただけでは速度に違いはでない。
でもちゃんとしたゲーム画面になると圧倒的に塗りの方が重くなる。
だから、重くなるところが違うと思うんだよね。
単に一度の塗りでZバッファに素直に描画される物体じゃ重くならないと思うんだよね。(予想だけど)
二回目の塗りが存在するかどうかで速度が違うと思うんだよね。
で、実際のゲームだと3回目4回目なんてのが余裕であるからどんどん重くなってくと思うんだよね。
そういうはかり方をしないと駄目だと思うんだけど。
塗りだし。
>>68 まあ描画以外の処理や、画面クリアの処理に比べて、まだ、
塗りつぶしの影響が、少ない範囲に収まってたんじゃないかな?
どんなゲーム作るかや、どんなコード書くかは人によって違うけど、
ゲームが完成に近づくにつれ、影響が見えてくると思われ。
>>69 だからそういう測り方云々じゃなくて、自分で作っているプログラムの話をしているのに、
何故全然別の方法を持ち出して文句を言ってくるのか。
しかもちゃんとしたゲームなんて曖昧な定義ので、思う思うって、
思うじゃなくて、自分で自分なりの条件で測ればいいだろう。
何度も言うが自分の使用している範囲内では、全く影響が出なかっただけ。
なぜ自分で作ったものでは、実際にこういう影響が出たという言い方が出来ず、
思うとかいう想像だけの言い方になるんだろう?
>>71 問題はαと2度塗りを考慮してるかどうかだけなんだが。
73 :
66 :04/10/02 15:07:25 ID:6KqlFYO1
ワケ ワカ ラン♪ ∧_∧ ∧_∧ ∧_∧ (-@∀@) (-@∀@) (-@∀@) ⊂朝⊂ ) ( つ朝つ ⊂_へ朝 つ く く く ) ) ) (_)/ (_(_) (__)_) 彡(_)
74 :
名前は開発中のものです。 :04/10/02 15:46:56 ID:mntHwQIk
なぜこんなところにアサピーが
想定している条件(環境含む)がみんなバラバラなのに単一の結論を導こうと必死なスレはここですか?
俺の経験から言えば細かいこと気にする奴に限って禿げてる
sage
ゲームの作り始めは、スゴイFPS出てて快適だけど プログラム追加したり、演出を派手にしていくうちに どんどんFPSが落ちてきて、終いにゃコマ送りみたく なっちまって悲しくなるな。
つまり・・・ 悲しい時〜 (悲しい時〜) 最初は快適だったのに 作っていく内に 重くなって コマ送りになった時〜 悲しい時〜 (悲しい時〜) 最初は快適だったのに 作っていく内に 重くなって 動かなくなった時〜
83 :
名前は開発中のものです。 :04/10/03 12:19:28 ID:p8+59llk
すまんが教えてほしい。 DirectX9を使用して2Dゲームを作っているんだが、DirectDrawの サーフェス周りが7と9で変更されたんか? Bltのなかにアルファブレンド関係が増えてるし、IDirectDrawSurface7じゃなく IDirectDrawSurfaceになってる。 これってアルファブレンドが2Dで出来るようになったって事? それだったらとてもありがたいんだが・・・・ この辺の情報を知ってる人、マジで教えてください。
素直にdirect3Dに移れ
2D機能は無くなったので Sprite使うか ポリゴンに貼り付けるか しないといけないらしい。
86 :
83 :04/10/03 13:14:16 ID:p8+59llk
84,85 レスありがトン。 いや、クライアントの意向でノーパソでも動かんといけんのよ。 で、3Dは全部捨ててくれと・・・ アルファブレンドをアセンブラで作って直接メモリ書き直ししてるけど、 やっぱり遅いし。DirectX9のヘルプみてるとBltにアルファ関係が追加 されてたから誰か使ってみたとか、情報を知ってるかと思ってカキコした しだい。 D3DXCreateTextureFromFileEx使いたいんだが、こいつは256ピクセルの 倍数の正方形でメモリ使ってくれるから馬鹿ほどメモリ使ってくれるし・・・ ということで引き続き情報をください
87 :
85 :04/10/03 13:21:43 ID:E0OI59Rz
そうだったのか〜 スマンわからん・・・orz
>>86 Bltでアルファブレンド可能かどうかはDDCAPS調べればわかる
89 :
83 :04/10/03 14:10:55 ID:V9xbK4hh
>>88 イヤ、可能になってる。
でもLPDIRECTDRAWSURFACE7からLPDIRECTDRAWSURFACEになってる
だからかわったのかなぁと・・・
90 :
83 :04/10/03 14:13:43 ID:V9xbK4hh
追記 いますべてを見直してLPDIRECTDRAWSURFACEでCreateSurfaceをすると エラーになってしまう orz もちろん、DirectDrawCreateExもIdirectDraw7ではなくIdirectDrawで 作成してます。
>>83 別に7で作っても9上で動くと思うが?
9にしか無い機能が必要なのか?
結論:3DはD3D、2DはGDI
93 :
83 :04/10/03 15:14:20 ID:V9xbK4hh
>>91 アルファブレンド。
7では3Dだった。それが9には入っていたから是非使いたい
2Dでアルファブレンドが使えたとしても、それは3Dハードウェアを使って 実装されている可能性がとても高いと言うか、殆ど間違いないので、 ノートパソコンでは動かないのでは?
>>94 同感。
>>92 みたいに、割り切るならとことん割り切るべき。GDI+でもいいし
96 :
83 :04/10/03 15:54:30 ID:V9xbK4hh
>>92 >>94 >>95 やっぱそうかなぁ。クライアントがキャラをクロスフェードで!って・・・
そのくせ3D使うな!だから。。
メモリ直接アクセスのアセンブラを高速化するしかないか。。
ありがとうございました。
でも引き続きいい情報があれば教えてください
よく分からないけどエロゲーのシステム作ってるの? エロゲーやる人がクロスフェードなんて求めそうには思えないが 今更アルファブレンドの高速化なんて実のない努力やめようぜ
顧客にそんなことが言えると?
それ以前にこんなレベルの質問している人間が、 客に出すプログラムを組むという時点で終わっている気がするが。
>>99 悲しいかなエログラマは大半がこの程度のレベル。
102 :
83 :04/10/03 19:52:43 ID:V9xbK4hh
>>99 >>101 そういわれると身もフタもないが・・・
コンシューマの人間なんでPCあんまりわかんないのよ
何とか自作アルファブレンドロジックが32msec処理で
ストレスなしに使えるところまでもってこれたんでこれで
行くことにしますわ
エログラマの最高峰ってやっぱやねうら某?
NOGタソを俺は推す。
106 :
名前は開発中のものです。 :04/10/03 21:32:23 ID:4V97zk6L
ダイレクトXをやりたいと思うのですが、やり方が分かりません。 何か、特別なソフトとかいるんでしょうか。 マイクロソフトの、C++?というソフトでしょうか? あと、やるとしたらどんな専門知識が、いるんでしょうか。 初心者ですが、よろしくお願いします。
初心者むけのdirectXの本を買う
DirectXはCOMとして実装されている。 つまり、COMを扱える言語またはそれに類するi/fが用意されている環境であれば 使用できる。
>>106 やっぱ
>>107 と同じく、本を買うのが確実だと思う。
SDKとサンプルプログラムの入った、付録CDとかついてるし。
あとは、コンパイラに何を用意できるかの金銭問題だな。
吉里吉里の作者だろう
>>110 使われている数は圧倒的なので、本人の意志無関係でエログラマーの称号授与。
>102 >コンシューマの人間なんでPCあんまりわかんないのよ いつのコンシューマですか? 最近のコンシューマは3Dと切っても切れない関係で、 3D関係の情報をチェックしてると最新のDirectXやグラボのことなんかもよく見かけるから、 その言い訳は結構見苦しいので、本当だとしてもヤメレ
113 :
83 :04/10/04 00:18:41 ID:mmTPot1L
>>112 えと、私が教えてほしいと言ったことはDirectX9に含まれている
DirextDrawとDirextX7のDirectDrawでDirectX9ではアルファ
ブレンドが制御できるようになったみたいだが、このあたりを経験
された人がいればアドバイスをいただきたいということなんですが。
言い訳に聞こえたらしょうがないけどさ。
>>83 >>113 DirectX8以降より
DirectDrawとDirect3Dは統合されDirectGraphicsになってます。
DirectX9のDirectDrawっては
どんな物だと思っているのか詳しく説明して欲しい。
115 :
名前は開発中のものです。 :04/10/04 00:46:02 ID:rxXTG6av
>DirectDrawとDirect3Dは統合されDirectGraphicsになってます。 なってない。大嘘書くな。
DirectX Graphics ってこと?? だとしたら細かすぎか…
>>113 今、DirectX9のヘルプ見てみたが、そのIDirectDraw関係はDirectShowカテゴリの
マルチメディアストリーミングインターフェイスに記述されてる。
見てみれ。
ちなみにDirectDrawExはないよ。
(このIDirectDraw、バージョン的になんにあたるんだ?)
>>113 ノートでもここ1〜2年のなら3Dがまともに動くグラフィックチップが載ってるぞ?
その顧客がいう「ノートのスペック」の下限がわからない限りなんともいえんなあ。
ManagedにはDirectDrawあるんじゃなかったっけ
それにしてもFFDにしろ吉里吉里にしろAGESにしろ、エフェクトに強くて技術的によくできてるといわれる 有名なエロゲエンジンはことごとく画像演算にDirectX使ってないらしいね……。
>120 グラボに依存しない方向なんだろうな 高度な機能を使うと見た目が飛躍的によくなるがユーザを選んでしまうからなぁ あと、最近のイパーン人はデスクトップよりノートを選ぶ人も少なくないんだけど ノートで3D対応機種ってなっていても実際はDirectX7程度のものもあるからなぁ もちろんまともなグラフィックチップ載っているものもあるんだが
122 :
名前は開発中のものです。 :04/10/04 16:16:26 ID:C1CICipj
「最近の」ノーパソ内蔵のチップだったら トランスフォーム済頂点で2Dやるくらいなら普通にこなすんじゃね? チップセット内蔵のグラフィックとかも意外と性能高いっすよ。 一昔以上前のノーパソチップだとリファレンスラスタライザでしか 動かなかったりするチップも多いですが...
>122 いや初心者質問スレでもあったけどRADEON IGP345Mとか機能不十分のようだから、 「最近の」でも全てがとは言えないと思う
124 :
名前は開発中のものです。 :04/10/04 17:44:34 ID:0nRK6gjd
>>120 エフェクト系の画像処理なら、何が入っているかわからないGPU依存
のハード機能使うより、自力でほぼ問題ない性能を発揮するCPU用の
コード書いた方が確実だからね。高速なメインメモリにDIB用フレー
ムバッファを取ってそこで演算した方が、処理速度の「最低線(最悪
の環境での処理速度)」を引き上げられる。
125 :
名前は開発中のものです。 :04/10/04 17:48:14 ID:YRi3PMHC
いやRADEON IGP345Mは十分な部類に入ると思うぞ。 DX7世代の3Dゲームなら問題なく動くだろう。
126 :
名前は開発中のものです。 :04/10/04 17:52:16 ID:YRi3PMHC
Direct3Dの一般的な透視変換行列を用いた場合 無限遠のZ値を求める計算はどうなるの? z_far / ( z_far - z_near )であってます?
無限遠ってどれくらい遠くのZ値なの? 無限って言うくらいだからどこまでもあるんだろ
>>123 http://pc5.2ch.net/test/read.cgi/gamedev/1094627404/13n ↑の参照先BBSの内容だが、どういうゲームで「どう快適でない」のか
全く触れていないので、要するに主観情報のみであり評価不能。
RadeonIGP345Mとほぼ同程度の3D性能を持つビデオチップは
MobilityRadeonやRADEON無印とかVE。DirectX7世代。
(IGP345MはUMAなのでその点がどう影響するかは知らない)
これでだいたいの性能は想像できるでしょう。
俺はMobilityRadeon+Pentium-M(1.1GHz)使ってるので参考までに書くと
3DMark2001は大体1800前後。
Quake3やUnreal Tournament世代のゲームは標準設定で快適に遊べる。
FFはカクカク。おそらく例のyahoo掲示板の感想書いた人はこの手のMMORPGを
プレイしたのではないかと想像する。
君が今いる場所で一番遠くにみえる場所はどこ? そこが無限遠だよ
130 :
名前は開発中のものです。 :04/10/04 21:54:20 ID:kL12U+pa
>>127 View空間上の視錘台を透視変換行列で変換すると
台形が直方体になるじゃない?
これのZ値の計算式は以下のようになる。
z' = z_view * z_far / ( z_far - z_near ) - z_near * z_far / ( z_far - z_near )
w' = z_view
z_viewproj = z' / w'
このz_viewを∞として、上の式に代入して因数分解すると以下のようになる。
z_viewproj = z_far / ( z_far - z_near )
これで正しいと思ったんだけど、ある資料では以下のようになっていて?みたいな。
うろ覚えではOpenGLとDirect3Dでは透視変換行列が違っていたような・・そのせい?
z_viewproj = ( z_far + z_near ) / ( z_far - z_near )
DX9のマルチレンダリングターゲット機能って いま一つ、利用目的がわからないんだけど、 これつかうと、何かのエフェクトが軽く作れるとか 面白い表現ができるとかすんの?
133 :
名前は開発中のものです。 :04/10/05 11:29:14 ID:C0CUDKhb
>>132 今までのシェーダープログラムは、
float4 shaderMain( vertexIn vertex );
マルチエレメントテクスチャを使うと
struct fragmentOut
{
float4 data0;
float4 data1
float data2;
};
fragmentOut shaderMain( vertexIn vertex );
お前ら、ぬるぽは好きガッ?
>117 これ単に初代DirectDrawのインターフェイスそのままな気がするんだが。 83がこれのことを言っているのなら、そのアルファ機能は机上の空論でしかない。 しこしこアセンブラなりMMXなりで高速化してください。
>>117 アルファ機能使うのに、アルファサーフェス作るかアルファ込みサーフェス作って転送毎に
アルファ値書き込む必要あるから、自前でつくったほうがいいんでないかと思った。
>>113 増えてないしDirectX9にDirectDrawなんてものはない。
一度公開されたインターフェースが同じ名前のまま機能が変わることもない。
DirectX9をインストールしていても、GameSDK〜DirectX8は使える。
君が新しいと思っているDirectDrawは太古の物だ。
138 :
名前は開発中のものです。 :04/10/09 10:03:14 ID:5XbefvOQ
DirectX 9.0 SDK Update - (October 2004) English
139 :
名前は開発中のものです。 :04/10/11 00:21:39 ID:yBosNnnp
すいません、ちょっとDirectXの質問ではないのですが、 DirectXに使うテクスチャでアルファ値が入ってる画像を フォトショップで開いて、直接各ピクセルのアルファ値って見れるのでしょうか?見れる場合、教えてもらえないでしょうか? すいません。
誤れば何でも通ると思うから 割れ厨になっちゃうんだろうね。
ンvidiaのHPから、フォトショップ用プラグ印ダウンロードして入れれ
143 :
名前は開発中のものです。 :04/10/11 16:44:56 ID:fodZGKKI
2003Summerを使ってます。 Xfileを読み込み、ライティングを施してみたんですが、 テクスチャを貼っていないオブジェクトにはきちんとライトが反映されてるようなんですが、 テクスチャが貼られたオブジェクトにはライトが適用されなくて困ってます。 考えられる原因としてはどんな事があるでしょうか。 教えてください。お願いします。
144 :
143 :04/10/11 16:49:16 ID:fodZGKKI
ちなみにライトは自前でなにか難しい事をやってるとかではなくて 普通にDXで用意されてる D3DLIGHT9のポイントライトとかスポットライト等です。
>>145 >テクスチャを貼っていないオブジェクトにはきちんとライトが反映されてるようなんですが、
って書いてるんだが。
>>143 とりあえずこれは確認しろ。
device.TextureState[0].ColorArgument1 = TextureArgument.TextureColor;
device.TextureState[0].ColorArgument2 = TextureArgument.Diffuse;
device.TextureState[0].ColorOperation = TextureOperation.Modulate;
そもそも固定なのかシェーダなのかすら書いてないし、ステートの設定の情報も無し。 その状態で何を答えろと?
>>146 テクスチャを張ってあるオブジェクトと、張ってないオブジェクトは別物だろ?
テクスチャを張ってあるオブジェクトに、法線が設定されているかと聞いているのだが。
150 :
143 :04/10/11 17:37:38 ID:fodZGKKI
すいません。 LightWaveのXfileエクスポーターを使ってるんですが、 その設定の問題だったようです。 「Replace surface color with texture」 のチェックをはずしたら上手くいった模様です。
チクショー
うんこがでちまったよ
クソー
ちんこがでちまったよ
155 :
名前は開発中のものです。 :04/10/11 19:53:42 ID:jqTCTr00
今日は、風呂でもぐろう。
LightWaveネタが出たので、ちと質問ですが モーション付Xファイルは読み込めば、そのまま上手く動作しますか? 他に3dsMax以外でモーション付Xファイルを出力するツールてありますかね?
D-StormのLightWave用X-Fileエクスポーターでは まともにモーション付きX-Fileを出力できないです。 全てのボーンにウェイトマップをきっちり割り当てて use weight map onlyを指定するといくらかまともに出力されるかも。 漏れは自作のコンバーター使ってます。 X-File出力できるツール(コンバーター)は 有名どころだとPolyTransとか?使ったことないですけど。
結局は自作するかちまちま書いてくしかないのか…(´A`)
ちんこでもしごいてな
お前ら、ぬるぽは好きガッ?
ぬるぽは好きだガッ、何か?
162 :
名前は開発中のものです。 :04/10/20 18:13:21 ID:zP6xl/RK
今、DirectXを使ってエフェクトを作っているのですが、空のテクスチャを 用意してそこに色の情報を書き込みたいのですがLockなどを使うと思うのですが よくわかりません。 空テクスチャに対してはどういったことをすれば色を書き込めるのでしょうか。 分かる方おりましたら教えていただけますか。
いやその通りなんだけど…実際にやってみたら? t-potとかを参考に。
DirectXを使うならC#とVB.netだと、どっちが良いですかね? 資料が豊富なほうがイイかな、とも思ってるんですが。
どっちもどっちだけど多分C#のほうが資料は多いんじゃないかな。 英語版ヘルプとかでもC#の記述が多いし
最近のDirectXってC#のソースはあってもVBのは入ってないっぽい。 Cマガジンも日経ソフトウェアもC#の記事しかやらない。 ネタっぽく書くとこんな感じ。 C#>>>C++>>>(超えられない壁)>>>HSP>LGP>>>VB>>>(あの夏の思い出)>>>Delphi
>166 (あの夏の思い出)はもう少し↑だろ
168 :
名前は開発中のものです。 :04/10/20 22:54:32 ID:6K7KSXLz
毎回、テクスチャ240*240に色を書き込んでそれをポリゴンにはっつけて るんですがどうしてもスピードに問題があって10フレーム未満しかでないん ですが何か改善策ありますでしょうか。 現在は毎回ロック・色書き込み・アンロックを繰り返してテクスチャを 書き換えてそれをポリゴンにはっつけてます。
>>168 Usage.Dynamicなテクスチャで作ってる?
あと、毎フレーム240*240のテクスチャに書き込むというのはかなり膨大な作業になりそう。
どうしてもその作業が必要なら仕方ないけど、他の方法で近いことができそうなら、そうしたほうがいい。
>>166 俺のレベルだとC#,C++のサンプルさえあればDelphiで困らないけどね。
>>167 Del6のリリースが夏だったからかけてるんだYO!
>>171 C++はそうだけどC#は違うだろw
DelphiのヘッダはC++からのコンバートだからC#とは使える機能に若干の違いがあるよ
さらに細かい事をいえば構造体とか移植者が適当に定義してるから一貫性がないし
173 :
名前は開発中のものです。 :04/10/21 00:02:57 ID:3V+U9H90
Usage.Dynamicというのはポリゴンへ描画するときテクスチャの 座標を変えて違う色を描画する方法のことですか? FPSの計算をしたのですが何も描画しない状態でも60FPS前後しか でないのですがサイトなどで公開されているFPSを計るものでは 120とかでてるのですが原因がわかりません。 分かる方おりましたらアドバイスお願いします。
240*240は小さくできないの? 64*64とか あとはもう一つテクスチャを準備して交互に書き込んでいくと、 もしかしたら少しは速度がでるかも
>>173 60FPS前後なのは、自分でウエイトをかけるようにして、
デバイスを作っているからだろう。
サンプル丸写しで何も考えずに出来合の物を使うから、
そうやって基本的なことが出来なんだよ。
ウェイトをはずせw
>>173 VRAMってのは普通にメモリを読み書きしようとすると遅い、とにかく遅い
そのVRAMに毎フレームで240*240なんていう広大な領域を更新するのは無理
だがUsage.Dynamicで宣言したテクスチャはVRAMじゃなくてAGPメモリに確保する
こうするとボトルネックとなっていたメモリアクセス速度は回避される
そもそもその毎フレーム書き換えたテクスチャで何をするのか、ちょっと聞いてみたい
今173読み返したら見当違いの回答だったらしいなorz Usage.Dynamicってのはnew Texture()の時に渡す引数のこと ManagedじゃなくてCOM直叩きとかなら、D3DUSAGE_DYNAMICをCreateTextureに渡す感じ
320x240のムービーをリアルタイムにテクスチャにレンダリングしたことがあるが、 こま落ちなしで余裕で60fps出たぞ。 流れは、 Pool.SystemMemoryなテクスチャをLock→書き込み→Unlock→ Pool.Defaultなテクスチャに.UpdateTexture。 至極単純。
>>173 FPS=60は、画面更新時に同期待ちをする設定になってるから。
C++の場合は、CreateDevice に渡す構造体 D3DPRESENT_PARAMETERS の
メンバ PresentationInterval を D3DPRESENT_INTERVAL_IMMEDIATE にすれば
同期待ちしなくなる。
そもそも、256*256のテクスチャじゃなくていいのか?
182 :
名前は開発中のものです。 :04/10/21 19:05:15 ID:uHJFd8pj
そもそも、60fps以上の数値って、理論値だろ。 モニタが60Hzなのに400fpsなんてあり得ない。 BeginSceneからEndSceneまでにかかった時間を逆算してるだけ。
>>182 \ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ そんな餌で俺が釣られクマー!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
(´⌒; (´⌒;;;
いや釣りじゃなく本気でそう思い込んでる気がする。
そもそもモニタが60Hz固定じゃないし それはモニタの描画速度であってDirectXがVGAに転送する頻度とは関係ないし クマー
モニタが60Hz・・・すでに前提から間違ってる
>60fps以上 突っ込みどころは色々あるが、 以上という言葉で60FPSを含めてしまっている時点で、 プログラマとしてはその知能に致命的な障害を持っている。
189 :
名前は開発中のものです。 :04/10/22 08:34:09 ID:PpvljLwQ
サーフェスからテクスチャに書き込みたいのですがそんな命令あります?
>>189 無いんじゃね?
サーフェスにはテクスチャを
テクスチャにはサーフェスを取り付けて
そっちに対して、サーフェスにテクスチャを書き込み。
テクスチャからサーフェース取得すれば、 ある程度選択幅がでてくるだろうに。 もしくは、Lockして自前で転送。
> サーフェース 発音注意
193 :
名前は開発中のものです。 :04/10/22 16:53:26 ID:oY6D88HE
テクスチャのUV座標情報が、ほぼ全ての面(の頂点)に付いている モデルって珍しく無いと思うのですが、 この場合、IndexBufferはほとんど無意味ですよね? 無意味どころか有害な気がするんですが、実際どうなんでしょうか。
一般的なモデリングデータの共通のメッシュで、頂点ごとのUVがバラバラであるケースはほとんど無い。 球面で法線が異なることなら多いけど。
>193 何が有害かわからないけどある程度複雑なモデルになると、 描画の時に2度以上指定しないといけない頂点がでてくるんだが、 IndexBufferを使っておくとお得な気がしませんか? 例えば↓のような四角形をトライアングルリストで描画するとして 1 2 3 4 IndexBufferを使った場合と使わなかった場合、それぞれどうVertexBufferを確保するか考えてみたら?
>>194 私が今解析してたモデルデータ達が特殊なのか…。
おかげで安心してIndexBufferを使って行けそうです。レスありがとうございました。
くっ、ちゃんとリロードしたのになぁ…3秒差か
というわけで、
>>195 さんもありがとうございましたー
共有頂点の問題だろ。質問する方は分ってないから質問するんだけど 答える方が理解出来ないのな… 要はIndexBufferで共有頂点を指したいが、座標は同じでもUVが違う(マテリアルが違う) そんな時は、そのUVの違う頂点が存在するようにデータを持ってる。 その時に共有頂点がない訳だからindexBufferはいらないだろ?って質問。 Xファイルしか見たことないやつ等なのかな?質問に答えてるのって。 例え共有頂点がなくとも、Indexを指定すれば(0,1,2,3,4,...と順並びでも) 描画が速い場合・も・ある、のでIndexBufferがあっても意味無い事はない。
199 :
名前は開発中のものです。 :04/10/22 18:51:47 ID:CkzGgn6x
>>199 その技法はあまりDXのバージョンに依存しないと思われる。
>>198 > 0,1,2,3,4,...と順並びでも
我が意を得たりというか、コンバートするとまさにこの状態なんですよ。それで疑問に思いまして…。
いや良かったです、速い場合があるんですね。その辺もう少し勉強してみます。
回答ありがとうございました!
202 :
名前は開発中のものです。 :04/10/23 01:14:18 ID:y/5D5f1B
頂点シェーダやらピクセルシェーダやらプログラマブルシェーダやら 何やらかんやらありますがテクスチャ1枚を貼り付けたCUBEを100個 表示させるのならどれが一番速いですかね? and それぞれはどういった特徴があるのでしょうか?
全く見当違いの質問でどう答えたらよいのやら…w ホンダのエンジンとブリジストンのタイヤと日本石油のガソリンがありますが 100kmを走るにはどれが一番速いですか?って聞いてるようなもんだぞ
204 :
名前は開発中のものです。 :04/10/23 01:33:21 ID:IHYlkrYR
>>202 プログラマブルシェーダって要するにシェーダをプログラムで組む奴ですよ。
つまり頂点シェーダとピクセルシェーダを包括するものだと思っとけw
頂点シェーダはモデルの頂点のシェーダ。(なんつーの?点1つ1つにほどこす計算みたいな?)
ピクセルシェーダはモデルのピクセルのシェーダ。(ポリゴンの色塗りに施す仕掛けだな)
つまり頂点シェーダとピクセルシェーダは同時に使える(使う)別々の処理を行うもので比べてもしゃーないのですよ。
どれも使わない固定パイプラインが一番速いです。
>>205 測ったこと無いけど固定パイプラインって色々やってるじゃん。
ライトを5つも6つも付けても、バンプや環境マップが設定できるでしょ(たしかw)
遅いと思うよ。(処理によると思うけど)
モデルに対し UVマッピングで1枚のテクスチャを貼る方法と面一枚一枚に複数貼る方法とでは どちらが速度が速いのでしょうか?
208 :
名前は開発中のものです。 :04/10/23 04:19:16 ID:IHYlkrYR
>>207 一枚のテクスチャを貼るほうが速いとされているけど
俺が測った感じだと数と場合による。
普通のモデルだったら一枚のテクスチャの方がはやいよ。多分。
でも、一画面にどう考えても入らないモデルをぎっちりまとめておくと
テクスチャ云々の問題よりモデルを分割して描画(つまり画面に入らない部分のモデルの計算からしない)
をすることができないから、それはそれでおそいんじゃねぇかなと予想してみる。
どうだろ。(ちなみに勘)
テクスチャセットの呼び出しは少ない方が当然いい
>>209 それはそうなんだけど。
一画面におさまる程度の大きさを超えた場合ってどうなるんだろうね。
つまり広大な地形の類とかさ。
真ん中に立って北を向いたとすると、そのときの描画自体は南のデータなんかいらないわけじゃん。
でもテクスチャやモデルは北と南の両方のデータがまとまってるわけじゃん。
こういう問題を含めると単純にまとめておくと速いって認識もどうよと思うわけよ。
スカイボックスの類なんてやったとすると一枚一枚別にした方がはやいんじゃねーかと考えてみたりして(もちろん勘)
一枚のテクスチャを複数のモデルデータで共有すればいいだけの話では?
>210 テクスチャは一つでもいいと思う モデルは分割して見えない部分は描画しないってのも手だと思うけど スカイボックスっていうぐらいだから頂点数は少ないでしょ だったら分割してできるコストの方が大きい気がする スカイボックスを軽く描画したいんだったら、できるだけ最後に描画したほうがパフォーマンスは稼げる 半透明(アルファ値を持つ)のものがあるとそっちの方を後に描画しないといけないけど 基本は手前から描いていく >202はもうすこし理解してから質問しましょう >頂点シェーダやらピクセルシェーダやらプログラマブルシェーダ この時点で理解不足です いや、煽りじゃなくてある程度理解がないと適切な質問もできないし、 返答を理解することもできないだろうから非効率だと思うんで
トゥームレイダーの暗闇をともすアイテム(マッチ)のような処理がしたいのですが 方法がよく分からないです。頂点カラーを操作しているのでしょうか?
ポイントライト
すみません、DirectX9で3Dのゲームを作っている初心者なんですが、 スコアなどをテクスチャを貼り付けたポリゴンで表示したいのですが、 常に画面の同じ位置に表示させる方法が分かりません。 どうかこんな俺に救いの手をお願いします。
D3DFVF_XYZRHW
217 :
名前は開発中のものです。 :04/10/24 15:34:27 ID:fL1Fp2Br
カニ型ロボットを攻撃すると足やハサミが取れていくシーンを作りたいと思ってます。 そこで方法として 胴体x1 足x6 目x2 ハサミx2 計11個のポリゴンモデルすべてに同じボーン構造をもたせた Xファイルを出力し、プログラム側で親子関係を持たせて結合、連動させるというのを思いついたのですが この方法は正しいでしょうか?もっと他に良い方法など無いでしょうか?
>>216 ありがとうございます。こんなに簡単な方法だったんですね。
かなり勘違いしてました。
ビルボードとかの技術を使わないといけないのかと思っていました・・・。 orz =3
219 :
名前は開発中のものです。 :04/10/24 19:34:17 ID:bVUqYsQl
VC++でLPDIRECT3DVERTEXBUFFER9 vbを宣言しているmain.cppから CreateA()してからA()、Aの戻り値が1ならCreateB()してB()という関数を呼び出してます。 A.cppのcreateA()という関数の中で externでvbを外部呼出しして CreateVertexBuffer命令・Lock・書き込み・unlockのあと A.cppのA()という関数で その頂点データを使用して描画しています。 B.cppのcreateB()という関数の中で externでvbを外部呼出しして CreateVertexBuffer命令・Lock・書き込み・unlockのあと B.cppのB()という関数で その頂点データを使用して描画しています。 B()関数を呼び出して描画しようとしてるのですができません。 原因わかりますでしょうか? 説明が下手で申し訳ありませんがよろしくお願いします。
できない、って、どういう具合にできないの? エラーコードが帰ってきたりするならそれも教えて欲しいんだが
221 :
名前は開発中のものです。 :04/10/24 19:50:05 ID:bVUqYsQl
頂点の情報は設定されているみたいなんですがテクスチャが張られてないみたいです。
みたいじゃなくて確認しろよ
(例) HRESULT hr; hr = pD3DDevice->SetTexture( 0, pTexture ); if( FAILED( hr ) ) return FALSE; こんなんとか hr = pD3DDevice->SetStreamSource( 0, pVB, 0, sizeof(頂点データ) ); if( FAILED( hr ) ) return FALSE; とかやってみては? CreateVertexBufferも DrawPrimitiveも 失敗すれば hr にエラーが返ってくるから どの設定が悪かったのか分かるかも。 張られて無いならエラーだしてるんでは? もし俺なら、AのプログラムをBに コピー&ペーストして動かしてみる(w
224 :
名前は開発中のものです。 :04/10/25 00:53:04 ID:Z4xgve5p
main()からswitch(mode)でCreateAを通らしてmodeの値を変えてAに飛んで Crate〜ってのが頂点データとか設定とかだけやっててすぐにTRUE返して。 A関数で描画を行なってるんですけどA関数はキーボードに反応させて1を 押したらTRUE返してCreateBに移ってこれもまたデータの設定とかで B関数に飛んでまわしてるんですけど。 CreateA→Aでは欲しい結果は返ってきててそのあと返り値でCreateB→B にいくとおかしくってるんですよね。 これでCreatA→Aを通さず、CreatB→Bだけだと成功するんですよね。 CreateVertexBufferのLock→書き込み→unlockって別に何度というか 2回しても大丈夫ですよね。
個人的にアクロバティックな動き方だと思うんだけど switch(mode) { value1: CreateA(); break; value2: if( A() == TRUE ) CreateB(); break; } //////////////////// BOOL A() { 描画 if( キー操作 ) return TRUE; return FALSE; } void CreateB() { B(); } void B() { 描画 } こういうこつ?
VertexBufferは何度も書き直しても大丈夫だけど (自分のプログラムはしょっちゅうやっている いいか悪いかは知らねw) 処理の順番に問題があるような、そんな貴方に 『出来るだけシンプルに。しかしシンプル過ぎず。』 225を元にしてだけど、Aという関数が仕事し過ぎのような。
説明通りか検証もない動作をグダグタ述べるならソースをUPしろ。 多分一発で解決だと思う。 コーディングミスってオチでね。
228 :
名前は開発中のものです。 :04/10/25 15:44:08 ID:x6+SjO3O
>225 そういうことです。
229 :
名前は開発中のものです。 :04/10/25 21:01:54 ID:CESlfaTk
>226 Aという関数が仕事し過ぎのようなとはどういうことですか?
>>229 一つの関数で多くの処理をやりすぎているってことだろ
つーか、225氏も言うとおりだが、プログラムがかなり怪しい動き方をしてると思うよ。
やりたい作業の手順の書き下し方がよくないんだろうと思うけれどなぁ。
231 :
名前は開発中のものです。 :04/10/26 19:24:05 ID:Vz62+Yvu
ゲームを作ってるんですがタイトル画面→ゲーム画面っていうふうにしようと思って while (!end){ if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)){ TranslateMessage(&msg); DispatchMessage(&msg); }else{ Main(); } } ーーーーー void Main(){ switch(Mode){ case 0: if( CreateA() ) Mode=1; break; case 1: if( A() ){ if( CreateB() ){ Mode=2; break; } } default: end=1; } } こんな感じでCreate〜で頂点データの作成とか設定を書き込んで 〜関数で描画って感じでしてるんですがアクロバティックですかね。 オーソドックスなスタイルを教えていただけませんでしょうか? ちなみに欲しい結果はえられましたのでだいじょうび。
Mainって・・・
233 :
名前は開発中のものです。 :04/10/26 20:09:39 ID:/b5gpP3q
モード分けなんてしないで タイトルロゴもボスシーンもエンディングもメニュー画面もすべて同じゲーム中のイベントとして考えればよい。 プログラムが始まってシステムの初期化が終わればメインループを抜けることは(ゲーム終了時をのぞき)無い。
そもそもメッセージがないときにCPUをぶん回すその書き方は、 あちこちで見かけるが、最悪のコーディングなんだが。
236 :
名前は開発中のものです。 :04/10/26 20:53:00 ID:tYFSXHVI
>>234 べつにいいんじゃねぇ?
DirectXのフリップ関数はいってるんだろどうせ。
なら大丈夫じゃね。
>>231 の方法だとモードが増えたらその分だけcase文を増やさなきゃならん、
モードが増えてもメインループのコードには手を付けなくて済むように書く
この手のプログラムは「状態の時間進行」と「現在状態の描画」の繰り返しなわけよ。
その2つの作業をする関数を定義しといたModeBase抽象クラスでも作っておいて
メインループはそいつを駆動させるように書く。
んでモード変更があったらポインタを入れ替えるだけで済む、と大体こんな感じ
>>236 余談だがPresentはCPUパワーを開放しないから
やっぱSleepをどっかで入れないと駄目らしい
238 :
名前は開発中のものです。 :04/10/26 21:06:11 ID:tYFSXHVI
>>237 それってモードいくつ作ることが前提なシステムなんだよ。
話聞いてると3〜4こで済みそうなのに、
なんでそんなアホみたいに量産しないと元がとれないような設計勧めるんだ?
おそらくな、
>>231 はな、
タイトル画面→ゲーム画面→エンディング画面
でいいんだよ。
だったらcase文が一番シンプルで綺麗にかけるじゃねぇか。
>余談だがPresentはCPUパワーを開放しないから
俺のプログラム、Sleep入れて無いけどタスクマネージャで見てもCPU100%いかないよ。
ビデオカードが対応していれば、垂直同期待ちでCPUは使用されないが、 今度は同期待ちの間、メッセージが処理されなくなる。 素直にイベントとスレッドを分けるべき。
240 :
名前は開発中のものです。 :04/10/26 21:13:58 ID:tYFSXHVI
>>239 その結論はもちろんビデオカードの対応状況を調べた上での結論と思っていいんだろうね。
>>240 確認したのはGeForce2/4、Radeon9600で、全て対応していたが、
市場の出回っているビデオカードを一つ残らず調べろと言うことなのか?
俺Detonator(GF3Ti)もCatalyst(RADEON9500Pro)も使ってるけど両方とも100%だわ。
それと
>>239 に対して
>>240 は全く見当はずれの回答をしているように思えるわけで
ついでにswitchと関数ポインタ系のやり方ってどっちがシンプルかって
それは人によって評価違うだろうしなんとも言えんけれど
俺はオーソドックスなのはやっぱ関数ポインタな気がするけどどうだろう
>>242 確認してもらいたいんだが、
DX9cSDKサンプルからOptimizedMesh.exe(負荷の軽いサンプルなら何でも)を実行して、
デバイス設定をINTERVAL_DEFAULTに変更してCPU使用率を見てくれ。
最近のビデオカードなら普通は対応しているはずなんだが。
>>243 すまん確認したら負荷なしだった…。
つい先日まで同カードで負荷100%いってたゲームがあったから駄目なもんだと思ってた。
相当駄目なやり方してたのかなw
>231 A()とCreateB()が何かはしらないが漏れならこうする てかcase 1のbreakおかしいぞ てか直値よりenum使って変更したときのミスを減らせ enum {GAME_TITLE=0,GAME_A, GAME_B,GAME_END}; void Main(){ switch(Mode){ case GAME_TITLE: if( CreateA() ) Mode=GAME_A; break; case GAME_A: if( A() ){ Mode=GAME_B; } break; case GAME_B: if( CreateB() ){ Mode=GAME_END; } break; default: end=1; break; } }
246 :
245 :04/10/26 23:02:35 ID:UwgETfqy
すまんよくよんでなかった、ダメだな もしCretateB()に対応するB()があったらこの方がシンプルじゃないか? switch(Mode){ case GAME_TITLE: if( CreateA() ){ A(); Mode=GAME_B; } break; case GAME_B:: if( CreateB() ){ B(); Mode=GAME_END; } break; default: end=1; break; } } でもenumは使え
247 :
名前は開発中のものです。 :04/10/26 23:03:32 ID:KLw6ecBO
どうも231です。 DirectXのフリップ関数は各〜関数で使ってその一つの関数が タイトル画面やらゲーム画面でやってます。 たしかにこれで作っててどんどんcase文が増えてます。 皆様のご意見を拝見させて頂いた結果としては書いたやり方は駄目ですかね? いっそのことMain()の中をwhile(0)でその中でシーンごとフェーズごとに したほうがよろしいですかね? とりあえずDirectXに関しては本ばっかり読んでまして実践向きの プログラムを打ててないのが現状ですので皆様のご意見お伺いしたいと思っております。 よろしくお願い致します。
248 :
名前は開発中のものです。 :04/10/26 23:42:19 ID:tYFSXHVI
>>247 30個以下でおさまるんなら気にすることないよ。
caseでやっちゃえ。
別にcaseが30個以上ならんでたって俺は汚いソースだとは思わないよ。
関数ポインタを使いたい年頃なんだろう。 いまどきswitchは遅いから使うななんて時代じゃないよ。
Strategy/Stateパターンで一発解決の話題だな
クラス図は同じだが、Stragegyは違うこと無いか?
Stragegy
この場合はモロにstrategyの典型的な例だと思った
255 :
名前は開発中のものです。 :04/10/27 16:33:53 ID:9oFtDTE0
マリカーとかで対戦するとき画面分割があるじゃないですか、 そういった画面を2分割・4分割でする方法ありましたらご教授お願いします。
分割したいぶんだけ、一つ一つ描画すればいいだけだが、 いったい何が聞きたいのかわからん。
ビューポート変更してレンダリング
258 :
名前は開発中のものです。 :04/10/27 21:26:48 ID:0i+Z0zwN
例えば箱を(0,0,0)に表示させてカメラの位置を変えて4画面でしようと思ったら。 Clear→ビューポート設定→カメラ設定→箱描画→ ビューポート設定→カメラ設定→箱描画→ ビューポート設定→カメラ設定→箱描画→ ビューポート設定→カメラ設定→箱描画→Present でOK?ってことですかね? 試したんですけどなんか画面がちかちかする。
>>258 勘だけど
Clear→ビューポート設定→カメラ設定→箱描画→
ZBufferClear→ビューポート設定→カメラ設定→箱描画→
ZBufferClear→ビューポート設定→カメラ設定→箱描画→
ZBufferClear→ビューポート設定→カメラ設定→箱描画→Present
で上手くいっちゃったりして・・・?
>>258 クリアの前に画面全体をビューポートに指定してる?
>>258 Clear→ビューポート設定→カメラ設定→箱描画→ Present
ビューポート設定→カメラ設定→箱描画→ Present
ビューポート設定→カメラ設定→箱描画→ Present
ビューポート設定→カメラ設定→箱描画→Present
になってないか?
262 :
名前は開発中のものです。 :04/10/28 09:51:31 ID:tuc1m51K
>83>96 ノートっつても最低スペックは決めれるだろ 比較的最近のノートを対象にするならDirectX7の3Dうごくだろ 少し古くてもDirectX6くらいは動くはず そのあたりのDirectXのバージョンのアルファブレンド機能を使うのはOKだろ じゃなきゃGDI+ でも、GDI+がどのWindowsまでサポートしてるかはしらないなぁ アセンブラでごりごりやるなら全画面でやらなければ結構高速なんじゃないか? 紙芝居ゲーなら背景とアルファブレンド途中の画像をレンダリングしておいて、 それを張り付けるだけならマシンに負荷かけずに見た目上クロスフェードできるし、高速にできる ファイルサイズがでかくなるけど まぁクライアントも幅広いPCを対象にいれたいってのに必死なんだろ でもDirectX6くらい動くだろ...
263 :
名前は開発中のものです。 :04/10/28 16:32:29 ID:PbnH20+p
テクスチャ読み込みの関数とかXファイル読み込み関数があるじゃないですか? D3DXLoadMeshFromX・D3DXCreateTextureFromFileEx データが大きくて読み込み時間が長いのでロード画面をつくりたいので すが関数よんでも上の関数は処理は帰ってこないですよね。 ってことはロード画面はどうやって作ればいいんですかね?
264 :
名前は開発中のものです。 :04/10/28 16:40:35 ID:zVW7O6Cy
directshowで画像取り込みのプログラムをしています。ってか卒研のテーマです。カメラからの画像のたれ ながしはできますが一枚とるプログラムが完成しません。ビルドまではできるん ですがActive movie windowを表示して5秒後くらいにwindowが真っ白になってフリーズ します。回りにdirectX扱える人いなくてほんと困っています(担当の先生すら扱えないT_T)。誰か教えてください。 プログラムの流れは ピンの列挙→main(本文)→フィルタグラフマネージャの作成→システムデバイス列挙子作成 →モニカの列挙→モニカをフィルタオブジェクトにバインド→フィルタを追加 →キャプチャビルドの作成→ファイルライタフィルタの設定→サンプルグラバの生成 →メディアタイプの設定→フィルタグラフの追加→サンプルグラバの接続 →グラバのモードを適切に設定→ファイルへ出力→キャプチャ開始→ →サイズの取得→一枚キャプチャ→バッファ取得→解放 どこが間違っているのかが分かりません。分かる人教えてくれませんか?
>>263 手を抜きたきゃ、ロード画面描画>表示されてからロード開始。
268 :
名前は開発中のものです。 :04/10/29 00:12:11 ID:kuEKx5nX
Xファイルで描画しているモデルを半透明処理したいのですが αブレンディングを有効にしても変化しません。 誰か助けて
d3drs_srcblend, d3drs_destblend
270 :
264 :04/10/29 12:40:33 ID:MjPIaTHg
デバッガ使用しましたら無限ループしてるとこ発見しました。 do{ pSGrab->GetCurrentBuffer(&bufsize, NULL); }while(bufsize <= 0); なぜここが無限ループしているか分かりません。bufsizeは long *buffer = NULL; long bufsize = 0; て宣言しています。なぜ無限ループするかよろしければ教えてください。
しかもマルチを指摘されてるのに またのこのこ出てきて 謝るわけでもなければ悪びれた様子もなく 当然のごとく再び質問を投げるというナメた態度が気にいらない。
構うから図に乗るんだよ 構う方が悪い 動物相手するときと同じ
>270 戻り値のチェックくらいしてから来てください
>>270 卒論ってどこの大学だよ?
何勉強してんだ?
マルチ野郎は放置で。
277 :
名前は開発中のものです。 :04/10/29 19:05:56 ID:SQEkFlVg
アニメ風っていうのかな?トゥーンシェーディングっていうんですかね。 あれはどうやってるんですかね?Xファイルで試したいんですが。
>277 法線と光源から頂点の明るさを求めるんだけど 最後の出力を明るさじゃなくてテクスチャ座標にしてやるだけ シェーダかじればすぐできる
>トゥーン DQ8の影響かなw
いや、村上ジョ)ry
>279 もう新しい技術ではないんだけどな もう2年以上前から初心者向けDirectX書籍で取り扱ってた気がする
>>268 自分LightWaveからXFile作ってるけど
そのままじゃ、Diffuse設定されてなかったから
半透明に出来なかった。
XFileの内容は分からないけど
Diffuseが設定されているか見てみては?
"ちゃんと確認した"なら
1,CloneMeshFVFでD3DFVF_DIFFUSE追加
2,GetVertexBuffer
3,lock
4,Diffuse設定
5,Unlock
6,Release
と、これで自分の奴は問題なく半透明
>>268 固定機能ならこんな感じで。
D3DCOLOR color = D3DCOLOR_ARGB( 128, 0, 0, 0 );
GetD3D()->SetRenderState( D3DRS_TEXTUREFACTOR, color );
GetD3D()->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR );
GetD3D()->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
// (描画)
GetD3D()->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
GetD3D()->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
284 :
名前は開発中のものです。 :04/10/29 23:14:48 ID:ND0SckE9
固定シェーダなんて使ってると馬鹿になるぞw
>固定シェーダ
たしかにそんな存在しないものが使えるのは馬鹿くらいだろう。
>>284 みたいな。
馬鹿な284がいるスレはこちらですか?
はい、こちらです。
288 :
名前は開発中のものです。 :04/10/29 23:36:19 ID:ND0SckE9
>>285-287 自作自演ご苦労w
でもね、絶対後悔するから素直にシェーダ組んだ方がいいよw
テクスチャ貼って、適当に色が付けれて、αが効いてりゃいいなら絶対にそっちの方がいい。
なんで?
290 :
283 :04/10/29 23:47:05 ID:TXJdGA09
固定機能は暗黙の制約がいろいろあって トラブルの元だからね。 …公で固定機能に言及するときは「シェーダの方がベター」 みたいな予防線が必須みたいだね。
別に固定機能だって使えてりゃOKさ、予防線なんかいらないよ 環境も考えずにシェーダシェーダ言っている方が愚かしい
>環境も考えずにシェーダシェーダ言っている方が愚かしい 固定機能のみ、の環境なんて方が愚かしいと思えるけど… 環境を考えて…固定機能!となる環境が愚かしいw 今時固定機能が貧弱でも 頂点シェーダーVer1.1をソフトウェアで動かした方がマシな場合が多いでしょ。
ピクセルシェーダ2が使える環境なら迷わずシェーダ使うけど それ未満の環境だとシェーダなんぞめんどくさくて使いたくもないなぁ というのが俺的な感想
固定パイプよりバーテクスシェーダ使った方が早いのは間違いないのかね。 ハードウェア処理よりCPUでやるソフトウェアバーテクスシェーダのが速かったと言う話はちょっと聞いたことあるが。
パーテックスシェーダ使えばサポートしてるPCでより快適に動いてくれるんだから問題ないだろ。 サポートしてなくたってそれなりに動くし。 問題は固定パイプ独特のくせだよ。 あの腐った構造見てると、ホント、イライラする。 固定パイプ特有の動き覚えなきゃいけないし、なんのためにもならない。 触っても今後に生きてこない。
そこまでボロクソに言う必要はないと思うがなあ。 シェーダ使ったほうが直感的に作れるのは間違いないが。 固定パイプだって見事にできてると思うよ。 まあ294でも書いたが頂点シェーダなんぞどーでもいいから とりあえずピクセルシェーダ2を使わせろと言いたいんだが 流石にPS2は対応環境が限られてくるから趣味プログラミングでしか使えないのが寂しい。
>>296 > サポートしてなくたってそれなりに動くし。
羨ましい発言だな
つまり固定を使っているFFXIの制作者達は馬鹿ばっかりと言いたいわけか。
>>299 固定かどうかはわからないはずだけど。
どうやって調べたの?
つか、もし俺が作るなら、
スキニング使う時点でシェーダ使った方が楽ではあるね。
頂点シェーダだけでも使用するというアプローチは場合によっては アリかもしれないけど(スキニングとか)、ほとんどの場合、 主役はピクセルシェーダだからねぇ。 頂点シェーダだけでは半透明化すら困難っぽいし。 頂点シェーダをソフト処理しようと思ったら、デバイス生成時に D3DCREATE_SOFTWARE_VERTEXPROCESSING とか指定しないといけないと思うけど、 例えばスキニングをする描画の時だけこれを効かせる(他の描画はハードで処理) みたいなことは無理なのかな。
>>300 DirectX8.1が使われており、起動するためにビデオカードがHWTnLに対応している必用がある。
これはデバイスの作成に、D3DCREATE_HARDWARE_VERTEXPROCESSINGが利用されているから。
もしD3DCREATE_MIXED_VERTEXPROCESSINGなら、対応が無くてもそのまま起動する。
そして動作環境にGeForce2が含まれているので、D3DCREATE_HARDWARE_VERTEXPROCESSINGだと、
シェーダーを利用することは出来ない。
>>301 D3DCREATE_MIXED_VERTEXPROCESSINGにしておけば、必要に応じて切り替えられる。
304 :
301 :04/10/30 12:22:25 ID:0mtjTHL8
>>303 なるほど、MIXEDってそういう用途があるんだね。サンクス。
>>302 GeForce2でも頂点シェーダは動いちゃうよ。
試したグラボはGeForce2GTS。
このグラボでバンプ+スキニングまで動作することは確認済み。
あと、Radeon7500あたりでも頂点シェーダが動くことは確認してるけど。
でもってこの環境のときはD3DCREATE_HARDWARE_VERTEXPROCESSINGって
設定してもソフトウェアの方にしてもあんまり動作は変わらなかった気がする。(良く覚えてない)
ただ、動くことは確認済み。
設定によって実行できないとかそういうのは無かった。
DirectX8の頃にGeForce2UltraでSDKのサンプルを試したときは、 頂点シェーダのサンプルは動いてくれなかった記憶がある。 バンプマップも動かなかった。
おまいらFF11がいつ移植されたか考えて発言してるのかと。 DX9.0以降になってMSやドライバ屋が頑張ったから動くんじゃねーかよ。
>>306 それってSkinnedMeshのサンプルでVertexShaderの項目を
選択しても動かなかったってこと?
そうだったかなぁ・・・。
できたような気がするんだけど・・・。
今の不十分なHLSLコンパイラで それにあわせてセコセコ作るのも馬鹿臭かったり
>>306 バンプはVoodoo3でも動いた記憶が・・・・
ふと思ったんだが。 DirectXでフルスクリーンゲーム作って、プレイする人のディスプレイ解像度が制作側のディスプレイ解像度と違ってたら どうなるんだ? プログラム側でディスプレイ解像度設定できるけれど、最近、なんかTVチューナ付きのディスプレイとかで、 ワイドテレビ並に横長なディスプレイあるじゃん?あれだと横に伸びたゲーム画面になっちまうのか?
ttp://www.c3.club.kyutech.ac.jp/~sukiyaki/dir/tex ここの方法で暗号化したテクスチャを読み込んだんですが、
エラーは出ないのにテクスチャが表示されません。
LPDIRECT3DTEXTURE9 lpD3DTexture = NULL;
char *pBuffer;
FILE *fp = fopen("number.suk","rb");
fseek(fp,0,SEEK_END);
int size = ftell(fp);
pBuffer = new char[size];
fseek(fp,0,SEEK_SET);
fread((void *)pBuffer,sizeof(char),size,fp);
for(int i = 0; i < size; i++)
{
pBuffer[i] = pBuffer[i] - 100;
}
fclose(fp);
D3DXCreateTextureFromFileInMemory(g_pd3ddevice,pBuffer,size,&lpD3DTexture);
delete []pBuffer;
それは難儀でしたね。 で? 質問なのか、サイトに対するイチャモンなのか どっちだ?(w 質問と勝手に解釈して 俺の所はテクスチャやってないけど XFile暗号化でそのサイトから拝借したけど 動いてるよ? 暗号化が悪いか、そもそも表示事態が悪いのか
質問でした。サイトに対するイチャモンとかではないです。 すみません、初心者なのです。 暗号化はできているんですよ。解読もできるんですが、 それをテクスチャに使おうとすると、なぜか表示できないという事態に。 どうかアドバイスのほどをよろすくお願いします。
>>314 とりあえず暗号化を止める。
しかるべき時期が来れば暗号化など自前でできるようになるから。
>>315 そうすか。それも考えたんですが、
やっぱり早いうちにできたほうがいいのかなと思っていました。
とりあえず暗号化はやめて、他のことします。
サンクスです。やっと寝れそうです。
>>312 本当に解読できているか保存して確かめてみては?
D3DXSaveTextureToFile("Test.bmp",D3DXIFF_BMP,pTexture,NULL);
318 :
312 :04/11/02 17:08:22 ID:m+LH2PV3
暗号化が間違っていました・・・。暗号化のところをもう一度 コピペしたらできました。どうやら前のやつは知らないうちにいじってたみたいです。 本当に申し訳ないです。ご迷惑をおかけしました。 今度からは、自分であらゆる方法を試してどうしてもできないというときに ここに質問に来ます。 || ∧||∧ ( / ⌒ヽ <スミマセン… | | | ∪ / ノ | || ∪∪ ; -━━-
>>311 想定する解像度がサポートしていなければ実行できない。
サポートされていればその解像度になる。
とりあえず。
WindowsXPが載っているPCなら640X480と800X600が
サポートされていることは保障されている。(はずw)
色数については16Bitか32BitになるがノートPCに関しては
16Bitしかサポートされていないものも結構あるが、
多少汚くなる程度だから気にスンナ。
でもαやカラーキーのしきい値などには注意!(気ぃ抜いてると黒出るよ黒w)
グラボによってはあきらめが肝心w
まぁ正しくは使用できる解像度を列挙してユーザに選ばせればいいと思う よく市販のゲームではやってると思うけど >311は横に伸びる心配をしてるけど D3DXMatrixPerspectiveFovLH(RH)で行列を作るときに 引数のAspect ( [in] アスペクト比。 ビュー空間の高さを幅で除算した値として定義される。) これを正しく設定していれば問題ないかと ゲームによっては(FPSなんかで)横が圧倒的に広いと有利すぎると思ったらSetViewportで制限してしまえばいいのでは? 漏れはそんなに多くの環境で試したことがないのでこれくらいしか思いつかない でも趣味とかでやってると面倒くさくて640x480とか800x600固定で作ってしまうな ちゃんと公開するのはそこらあたりもきちんとやったほうがいいんだろうな
321 :
319 :04/11/03 07:58:44 ID:ej0+5RZs
すまん。よくよまないでアホなレスを返してしまったw 俺もアスペクト比をどうにかすればいけると思う。
みんな文字描画ってどうやってるの? Text3Dのサンプルを使って日本語フォントを使うと 変な点々が出るじゃないですか。 アレってどうにかならないものですか?
普段は英数字しか使わないから文字テクスチャを作ってスプライトで表示。 日本語フォントを表示するのも書いたことあるが普通どうするか知らんから、以下自己流。 大きめのD3DUSAGE_DYNAMICなテクスチャを用意。 文字をGetGlyphOutlineとかでテクスチャに展開しつつスプライトで描画するが、 既に展開した文字に関してはキャッシュの要領で展開する必要がない。 そのうちテクスチャの空きが無くなるからLRUの法則でキャッシュから消去。 案外1000文字もあればいけるもんで、1024文字=2^10=2^5*2^5。 16*16サイズなら512*512の大きさのテクスチャで1024文字いけることになる。 アルファ値のみだからA8フォーマットでよくて必要なメモリ量は256kb。 あまり日本語フォントにお世話になることないけど技術自体には興味があるので もっと上手いやり方あるなら俺も教えてほしいな。
>>323 読んでたら私も挑戦したくなってきました。
その方法は、プロポーショナルも考慮してますか?
あと、LRUのキャッシュ検索はどうやってますか?
GetGlyphOutlineで文字幅も取得できるのでプロポーショナルもできました。 文字セットの幅の最大サイズをTEXTMETRICで取得してバッファに書くときにそれを使います。 実は指摘されて思い出したんですがLRUがアレでした。メモリを相当に食います。 struct List { WORD Next; WORD Back; WORD TexPos; }; 線形探索でO(N)は流石に遅くなりそうなので、O(1)で済むように2^16個も用意してMTFしてました。 O(1)でなくてもO(logN)程度で十分そうだし木構造あたりを使えばメモリ節約できるのかな。 あと動的ハフマン圧縮とかで使われるような使用頻度更新のがLRUよりもいいかもー なんてことも考えつつも、結局日本語を使う機会が無いので、考えるだけで終わったことも思い出した。
326 :
名前は開発中のものです。 :04/11/04 10:00:30 ID:yiF2yfrK
>>323 実際そんな感じで作って使ってるよ。
文字の使用頻度にかなりの偏りがあるから
頻度の高い文字がリストの先頭の方にきてれば検索は線形でも十分動くよ。
たまに頻度でソートしてやるとかしたら良いのかもしれないね。やってないけど。
最強のキャッシュを作ろうと思って
どこかに日本語文字の使用頻度データはないかなと探してみたりもしたけど
めんどくなったんでやめました。
ACBなら26だけど50音に漢字を加えた状態は数が多すぎる。 文章によって使用頻度はかなり偏ると思うよ。 漢字変換のように使った奴を上にするやり方でいいんでない?
ってよく見たら、同じことが書いてあるな。よく見てなかった。スンマソン
何かバックバッファクリアしてないときの画像に似てるなあ
331 :
329 :04/11/04 18:45:30 ID:m2RoPb1N
普通に表示されるんですけど…
333 :
329 :04/11/04 19:07:31 ID:m2RoPb1N
やっぱりか!俺のパソコンがおかしいんだ!チクショーーー! セットアップしなおそうかな・・・・・・・・・
自分も普通に表示されました
335 :
329 :04/11/04 20:06:51 ID:+LLuMTuu
うむ、これは確実に俺のやつがおかしいな。 いまから再セットアップするけど、 これで直らなかったら正直へこむ。
334ですが環境書いておきます。 Win2k GeForceFX5900XT DirectX9.0c
つまりフォントを設定していないだけでは?
339 :
329 :04/11/05 01:55:28 ID:G1pevwaC
直りませんでした・・・・・・・・・。へこむマジへこむ。
DirectX9.0bだからだめなんだろうか。
9.0cにしたらまためんどくさいことになりそうだし。
>>336 Meです。
>>338 どうやって設定するんでしょうか?
340 :
329 :04/11/05 02:08:13 ID:G1pevwaC
詳しく言えば、一瞬だけ文字が表示されて すぐ見えなくなるんです。
>>329 デフォルトのフォントが日本語に対応してない…のかな?
D3DXFONT_DESC の最後の引数を、NULLじゃなくて
_T("MS ゴシック")みたいに明示してみては。
342 :
名前は開発中のものです。 :04/11/08 21:54:29 ID:mICjgVIA
Xファイルをワイヤーフレームで描画したいのですが方法ありますかね?
D3DRS_FILLMODE
>342 なんで「ワイヤーフレーム」ってところまで答えがでてるのに ヘルプを検索したりググったりできないんだ? 結構初心者用の書籍でも取り扱ってたりすると思うが
346 :
名前は開発中のものです。 :04/11/09 15:52:13 ID:S09E6q8s
すみません、ヘルプってどこあるんですか? あとググったりというのはどうすることなんでしょうか?
もう一度言うが、お前は向いていない。
>346 >すみません、ヘルプってどこあるんですか? って聞く前に知らないなら知らないでも ヘルプ→SDKに入ってるかもって連想できるだろうし MSのサイトにおいてあるかもって連想もできると思うんだが もう少し深く自分で考える癖をつけたほうがいい >1にも書いてあるけど >このスレに質問等を書かれる方はまず最初に自分でしっかりと調べたのちに聞かれることをお願いします。 別にいやみでいってるわけではない DirectXやプログラミングを続けていけばわかるけど、 何でもかんでも丁寧に一箇所に1から10まで情報がそろってるとは限らない そんなときは断片的な情報しか得られないこともある その断片的な情報を元にまた断片的な情報を見つけて… ってことの繰り返し それができない人は間違いなく挫折するし、結局向いてないってこと とにかく入り口くらいまでは自力でいってみれ それができなきゃそれこそ向いてない >このスレに質問等を書かれる方はまず最初に自分でしっかりと調べたのちに聞かれることをお願いします。 本当に調べた結果わからなかった人は質問みればわかるし、(逆もわかる) そういった人には助力を惜しまない人もいるから、せめて調べれるようになってから来てくれ
つりでしょ?
346は確実に釣り
346がマジだったら、珍獣として保護したい
353 :
名前は開発中のものです。 :04/11/11 15:43:34 ID:jmGrmvuq
現在わたくしはレースゲームを作っております。 Q1 裏表ポリゴンがあるモデルをXファイルで出力してカリングを設定して描画しているのですが 裏表のポリゴンが多ければ多いほどやはりカリングに掛かる時間は上がるのでしょうか? カリングが計算して行なわれているということは知っているのですが具体的にどういった 計算が行なわれているのかご存知の方おりましたらよろしければご教授下さい。 Q2 先に述べた通りレースゲームを作っておりまして車とタイヤでXファイルを分けて描画 しているのですが左右のキーでタイヤだけが動くようにしています。 A(アクセル)を押せばタイヤの向きに合わせてその方向へ進めたいのですが方法を探して いるところです。何か方法御座いましたらこちらもご教授よろしくお願い致します。 では失礼致します。
354 :
名前は開発中のものです。 :04/11/11 15:45:31 ID:CR0hIb7G
現在わたくしはレースゲームを作っております。 Q1 裏表ポリゴンがあるモデルをXファイルで出力してカリングを設定して描画しているのですが 裏表のポリゴンが多ければ多いほどやはりカリングに掛かる時間は上がるのでしょうか? カリングが計算して行なわれているということは知っているのですが具体的にどういった 計算が行なわれているのかご存知の方おりましたらよろしければご教授下さい。 Q2 先に述べた通りレースゲームを作っておりまして車とタイヤでXファイルを分けて描画 しているのですが左右のキーでタイヤだけが動くようにしています。 A(アクセル)を押せばタイヤの向きに合わせてその方向へ進めたいのですが方法を探して いるところです。何か方法御座いましたらこちらもご教授よろしくお願い致します。 では失礼致します。
356 :
名前は開発中のものです。 :04/11/11 16:22:00 ID:gmCW10tU
現在わたくしはレースゲームを作っております。 Q1 裏表ポリゴンがあるモデルをXファイルで出力してカリングを設定して描画しているのですが 裏表のポリゴンが多ければ多いほどやはりカリングに掛かる時間は上がるのでしょうか? カリングが計算して行なわれているということは知っているのですが具体的にどういった 計算が行なわれているのかご存知の方おりましたらよろしければご教授下さい。 Q2 先に述べた通りレースゲームを作っておりまして車とタイヤでXファイルを分けて描画 しているのですが左右のキーでタイヤだけが動くようにしています。 A(アクセル)を押せばタイヤの向きに合わせてその方向へ進めたいのですが方法を探して いるところです。何か方法御座いましたらこちらもご教授よろしくお願い致します。 では失礼致します。
357 :
名前は開発中のものです。 :04/11/11 16:26:27 ID:gmCW10tU
現在わたくしはレースゲームを作っております。 Q1 裏表ポリゴンがあるモデルをXファイルで出力してカリングを設定して描画しているのですが 裏表のポリゴンが多ければ多いほどやはりカリングに掛かる時間は上がるのでしょうか? カリングが計算して行なわれているということは知っているのですが具体的にどういった 計算が行なわれているのかご存知の方おりましたらよろしければご教授下さい。 Q2 先に述べた通りレースゲームを作っておりまして車とタイヤでXファイルを分けて描画 しているのですが左右のキーでタイヤだけが動くようにしています。 A(アクセル)を押せばタイヤの向きに合わせてその方向へ進めたいのですが方法を探して いるところです。何か方法御座いましたらこちらもご教授よろしくお願い致します。 では失礼致します。
現在わたくしはレースゲームを作っております。 Q1 裏表ポリゴンがあるモデルをXファイルで出力してカリングを設定して描画しているのですが 裏表のポリゴンが多ければ多いほどやはりカリングに掛かる時間は上がるのでしょうか? カリングが計算して行なわれているということは知っているのですが具体的にどういった 計算が行なわれているのかご存知の方おりましたらよろしければご教授下さい。 Q2 先に述べた通りレースゲームを作っておりまして車とタイヤでXファイルを分けて描画 しているのですが左右のキーでタイヤだけが動くようにしています。 A(アクセル)を押せばタイヤの向きに合わせてその方向へ進めたいのですが方法を探して いるところです。何か方法御座いましたらこちらもご教授よろしくお願い致します。 では失礼致します。
UV座標のUって何なんだ。 VはverticalでUはhorizontalと書いてあるがhorizontalのどこにもUがねー。 納得できる理由はあるんだろうか。
360 :
名前は開発中のものです。 :04/11/11 16:58:00 ID:015ext2C
現在わたくしはレースゲームを作っております。 Q1 裏表ポリゴンがあるモデルをXファイルで出力してカリングを設定して描画しているのですが 裏表のポリゴンが多ければ多いほどやはりカリングに掛かる時間は上がるのでしょうか? カリングが計算して行なわれているということは知っているのですが具体的にどういった 計算が行なわれているのかご存知の方おりましたらよろしければご教授下さい。 Q2 先に述べた通りレースゲームを作っておりまして車とタイヤでXファイルを分けて描画 しているのですが左右のキーでタイヤだけが動くようにしています。 A(アクセル)を押せばタイヤの向きに合わせてその方向へ進めたいのですが方法を探して いるところです。何か方法御座いましたらこちらもご教授よろしくお願い致します。 では失礼致します。
釣りっぽいけど暇なのでレス A1 カリングは頂点計算の最後の結果を見て右回りか左回りかを調べるだけでは? 両面のポリゴンは逆にカリングされないか、されてもその後に裏側の表示であってもピクセル処理を省略できないから重いと思う A2 タイヤの向きに力を加えてやればいい ベクトルをかじる程度でも勉強してください そのあと力学も少しかじれば悩むことなくすぐ実装できる
>>359 ならさぁ、XYZ座標のX,Y,Zって何だ?
>>362 仕事の依頼がある場合に利用するメッセージ。
UltraVioletはもういい。
>>359 アルファベットの順番が U V W X Y Z であることに起因していると思う。
あと古い話で申し訳ないがN88BASICの頃、
キャラクタの座標をXYで記述するとき、移動慣性方向をUVで記述していた。
>アルファベットの順番 別に意味は無いわけか。なるほど納得できそう。
つうか中学程度の学力があれば普通想像つかないか?
釣りだろ?
ワロタw 360 名前:名前は開発中のものです。[] 投稿日:04/11/11(木) 16:58:00 ID:015ext2C 現在わたくしはレースゲームを作っております。 Q1 裏表ポリゴンがあるモデルをXファイルで出力してカリングを設定して描画しているのですが 裏表のポリゴンが多ければ多いほどやはりカリングに掛かる時間は上がるのでしょうか? カリングが計算して行なわれているということは知っているのですが具体的にどういった 計算が行なわれているのかご存知の方おりましたらよろしければご教授下さい。 Q2 先に述べた通りレースゲームを作っておりまして車とタイヤでXファイルを分けて描画 しているのですが左右のキーでタイヤだけが動くようにしています。 A(アクセル)を押せばタイヤの向きに合わせてその方向へ進めたいのですが方法を探して いるところです。何か方法御座いましたらこちらもご教授よろしくお願い致します。 では失礼致します。 368 名前:名前は開発中のものです。[sage] 投稿日:04/11/11(木) 19:51:36 ID:015ext2C つうか中学程度の学力があれば普通想像つかないか?
すいません質問です。 今、Direct3Dを使用しているゲームを動かしているのですが、そのゲームはフルスクリーンでしか起動できません。 どうしてもWindowモードで起動したいので、外部からHookしてWindowモードで起動させました。 すると何故かとても早くなってしまいます。 画面のリフレッシュレートを変えてみたりしたのですが、どうもうまくいきません。 ビデオドライバはNVIDIA GeForce FX 5200を使用しています。 Windowモードで起動した時とフルスクリーンで起動した時では何かが違うのでしょうか。。 すいません私全然知識がないので本当によく分かりません。 どうかご教授お願いいたします。
>372 こういうのってアレだな テレビを勝手に分解しておいて 「テレビが映らなくなりました」って電気やに持っていくのと同じだよな ぶっちゃけ作る側からすれば、そうことするなって感じだな マジレスすると…いや、やめとく そもそも板違いだし
>>373 ご解答ありがとうございます。
屁理屈というか言い訳になってしまうのですが、私のモニタは仕様でズーミングができません。
そのゲームの解像度は640*360で、私のモニタは1280*1024なのでフルスクリーンのままだと
縦長な状態でプレイする事になってしまいます。
その趣旨を伝えたメールをサポートに何回も送っているのですが一向に返事も来ません。
利用規約にゲームプログラムの改ざんについて何も書かれてないのもあり、やむを得ず
外部プログラムを使用してHookしてWin化したんです。ですから分解したのとは少し違うと思います。
チート・解析等をした訳ではありません。Win化したらとても早くなりました。
そこで、何故Windowモードとフルスクリーンではこのような違いが起こるのだろうと疑問を抱きました。
ゲームを普通にプレイしたいというよりは寧ろ、こっちの方に興味がそそられたのでゲ製板のDirectXスレ
に書き込ませていただきました。
自分が言ってる事は矛盾だらけだとは重々承知していますが、本当に何故こうなるのかがどうしても
知りたいのです。もしよろしければご解答よろしくお願いいたします。
>>375 わかりました。移動します。
ありがとうございました^^
DirectXは関係ないがPC初心者もなんか違うだろ・・・。 そのゲームはVSync待ちだけでFPS調節をしてるんだろう。ただの手抜き。 もっとよく知りたきゃ『VSync ゲームループ』とかでぐぐれ。
攣れたv(^^)
379 :
名前は開発中のものです。 :04/11/12 17:51:57 ID:TFHXxj58
漏れは逆に最近フルスクリーンにするとFPS半分くらい減っちゃうのなんでだろーと 思ったらそういうことだったという経験がありました。 結局2種類のメインループを書きました。
>>そのゲームの解像度は640*360で、私のモニタは1280*1024なのでフルスクリーンのままだと >>その趣旨を伝えたメールをサポートに何回も送っているのですが一向に返事も来ません。 ここがもう…
>>380 お前みたいに上級者ぶってる奴も俺の中では同類項まとめにされてます。
どのみち何やってるのかはソース見ないと分からんよな。
いや
>>380 に同意
PC初心者板に行って、モニタの縦横比の変え方を聞いてこい
しかし640*360の市販ゲームなんてあるのかね
>>383 馬鹿か?
>私のモニタは仕様でズーミングができません。
って書いてあるだろw
>>384 まあGeForceならモニタに機能がなくてもいけるんだがな
GeFocrceならソフト側から調整できるのか。 640x360なんてヘンな解像度使ってたら、電子銃の位置ずらしたりしないと、黒い部分がどっかに大量にできそうだが。
いい加減にソフト的な解像度とハード的な解像度をわけてほしいよな。 単に見た目の整合性を保つだけなら拡縮でいけるんじゃねぇの? って感じは前々からしてた。
>>387 例えばソフト側では640*480固定で作ってて、それをビデオカードが勝手に1024*768に拡大してくれるとか、
逆にソフト側では1600*1200を想定して作っててビデオカードが勝手に1024*768に縮小してくれるとか?
っていうのなら385ですでに……
>>389 だからさ、ディスプレイのサポート状況ってのは関係無くするわけよ。
>>390 ハード的っていうのはディスプレイ側のこと?
もちょっと具体的にキボン
>>391 そうそう。
とりあえず、ハード側をディスプレイ、ソフト側をグラボとおいて考える。
現在の状況だととりあえずディスプレイとグラボのサーポート状況が一致してないと
サポートされないけどそうじゃなくてもいいんじゃないかって話。
洞窟内部の真っ暗な場面で懐中電灯のわずかな光で奥へ進んでいく演出をしたいのですが その場面を一時的に暗くする方法が思い浮かびません。フォグでは上手くいきませんでした。
なぜライトの設定を変えない?
よくわかんないよね。
>>392 ( ゚д゚)
(つд⊂)ゴシゴシ
(;゚д゚)
(つд⊂)ゴシゴシ
_, ._
(;゚ Д゚)
>>392 知らないんだろうけど、プラグアンドプレイでとてつもなくキミの望む状況に近づいているんだよ。
便利さより不便さを感じることが多いかもしれんが、大昔の固定解像度のが良かったか?
ぶっちゃけ作る側としては固定の方がいいなw
>>400 固定のやつなんて存在しないんじゃないの?
コンシューマ系の携帯機くらいだよ。PSPなら固定でやれるw
固定の方が良いかって話だろ? 固定のが存在するかって話にすり替わってないかそれ
>>399 RADEON9600だけど一向にそんな気配はないよ。
む、なつかしのVSync論争か?
固定ともVSyncとも別の話だろ・・・。
>>404 ,406
VSyncの話なんてしてないんだけど。
アホ?
まあ俺的には、やっぱ固定シェーダーはいらねえと思うんだが。 DX10では廃棄でしょどうせ。
>固定シェーダー そんなものは最初から存在しない。
釣ったり釣られたり、みんな大変だな
みんなヒマなんだな
>>409 シェーダーの意味を調べてから出直して来い
そのまま間違った用語を使い続けて、恥をかき続けるのは自由。 好きにすればいい。
>>413 じゃあ、ぶっちゃけ正式名称はなんていうんだ?
あのDirectXについてるウンコ。
416 :
名前は開発中のものです。 :04/11/14 13:40:44 ID:JPvao99j
固定機能パイプライン って長いな。 いいんじゃねぇの? 固定シェーダーでも意味わかれば。 こだわるところなのか。 譲れないのか。そうか。
どっちにしろ固定はもう消える 2004(october)ではサンプル消されてたしな
つまりだな、いまだ世の中にヘボグラボを使ってた りする奴のせいで固定が消せなかったん ではないでしょうか?みんながGefFX6800買えば解決で す。晴れて固定は不要になります
>>416 彼はシェーダーが何を意味するのか理解してないから
譲れないんじゃなくて知らないだけ。
>>419 固定シェーダという物は無いよ
そこを「まぁ、通じればいいじゃね」って折角416が言ってくれてるのに(俺も同意)
またシェーダの原意に拘るのは愚か
>>420 シェーダーの意味が判ってれば、どっちでも通るって理解できるはずなんだが…
原意とか言っててなんでどっちでも通るか理解してから出直して下さい。
固定シェーダという単語にこだわってるのは>420
そういうこと言ってたらVertexShaderがそもそもおかしいとか そういった話にならないか?
実にくだらん。
眠い
>>421 いやテクニカルタームってそういうもんよ
固定シェーダーで通るとしても固定シェーダーなんていわないだろ
相手に伝わればどれだけ足りない言葉でもOK 相手に伝わらなければどれだけ熱弁してもNG それだけの事じゃないの?
足りないんじゃなくて間違ってるんだからダメだろ。
ピクシェルセーダー
固定シェーダー の検索結果のうち 日本語のページ 約 14 件中 1 - 5 件目 (0.07 秒) 固定機能パイプライン の検索結果のうち 日本語のページ 約 271 件中 1 - 41 件目 (0.65 秒)
お前ら釣られすぎ。 シェーダーと延ばしてる時点でシロウトなのは明白だろ。
"シェーダー" -"シェーダ" の検索結果 約 9,780 件中 1 - 10 件目 (0.12 秒) "シェーダ" -"シェーダー" の検索結果 約 7,770 件中 1 - 10 件目 (0.16 秒)
最後の棒は伸ばさないのが達人の言い方なんですか?
434 :
名前は開発中のものです。 :04/11/15 09:31:15 ID:e4BEURlV
技術者の言い方です。
固定シェーダーだと意味的におかしい。 何を固定するシェーダーなんだ?
436 :
名前は開発中のものです。 :04/11/15 12:44:08 ID:j3+2qJVd
じゃあ技術者の人はエラーのことをエラって言うんですね。 ちょっとどうかしてますよ。 ありがとうございました。
いるよなー原理厨 もっとフレキシブルに対応しないと自分で自分の首しめるんじゃないのw
JIS表記とか専門家アクセントとかその辺が関わってくるのだろう。
つか英語つかえばいいじゃん
シェーだ
読み方なんて関係ないです。 エロい人にはそれが分からんのです。
∧⊂ヽ (゚Д゚)ノ | ⊃| | | ⊂ノ〜 ∪
DirectXのスレなんだからヘルプやMSDNに準拠でいいと思うけど。
「固定シェーダー」なんて言葉は仲間内だけで使えってことだな
こんなどうでもいいことに拘って技術ネタがないのが このスレのたしなみ
447 :
◆c.50Ky2eZQ :04/11/16 22:23:11 ID:DXV97k4K
質問です。
私の環境では、下記の本や他のDirectXのサンプルで
フルスクリーン表示のサンプルを実行するとOSごと固まります(マウス、キーボードの入力を受け付けなくなる)
DirectXゲームグラフィックスプログラミング Ver. 2.0
ttp://www.amazon.co.jp/exec/obidos/ASIN/4797329807/1100610050/250-9497108-9869848 こちらの本のサンプルでは動作します。
DirectX 9実践プログラミングI/O別冊
ttp://www.amazon.co.jp/exec/obidos/ASIN/4875934610/250-9497108-9869848 この他、DirectX9の入門ページなどのサンプルでもフルスクリーンだと固まってしましいます。
上にあげた2つの本のサンプルを比べていろいろ修正して試したところ、
D3DPRESENT_PARAMETERSの設定が問題であることが分かりました。
↑根拠は、I/O別冊のほうのD3DPRESENT_PARAMETERSの設定部分をコピペして、
動かない本のサンプルや入門ページのサンプルに貼り付けて実行したらフルスクリーンでも動作したからです。
この構造体の設定は入門書などでは決めうちで書かれているのですが、
本当なら実行環境のグラフィックカードの状態をチェックして適切に設定しないと
ダメという認識でいいんでしょうか。
※ところで、有料のゲームでも私の環境ではフルスクリーンで固まってしまって遊べないものが
あったりします(PSO BBなど)。もちろん固まらないゲームもあります。
そうしたゲームで環境のチェックなどを行っていないわけはないと思いますが、
D3DPRESENT_PARAMETERSの設定を決めうちで書いている可能性ってあるんでしょうか。
[環境]
自作機
OS: Windows2000
CPU: Athlon 1.0GHz
メモリ: 512MB
HDD: 120GB
グラフィックカード: GeforceFX5700
もちろん決めうちはいかん。
449 :
◆c.50Ky2eZQ :04/11/16 22:41:32 ID:DXV97k4K
>>448 やっぱりそうですか。
とにかく問題の個所が分かったので、書籍のサンプルや自分で作成するプログラムは
フルスクリーンでも動かせるようになったわけですが、
さすがに市販されてるゲームはどうにもならず・・・
ちなみに友人数人の環境で試してみたのですが、
自分の持っている本のサンプルとか、入門ページのサンプルで
フルスクリーンで固まるという現象は再現しませんでしたorz
ネットで検索してもフルスクリーンで固まるというのは全然出てこないので
うちの環境が特殊なのかもしれません。
>449 ちなみにどのパラメータが原因だったの?
451 :
オレー :04/11/16 23:21:34 ID:KvJj/Phk
>>449 俺もオマエと非常に似た構成のマシンで、同じようなことがおきたぞ。
俺の場合は、ウィンドウモードでも固まったがな!
BIOSでAGP×8をAGP×2まで落としたら直った。
452 :
◆c.50Ky2eZQ :04/11/16 23:25:07 ID:DXV97k4K
>>450 どのパラメータが悪いのかというところは詳細に調べてないのですが、
とりあえず下記のような差がありました。
○:フルスクリーンで動作した
×:フルスクリーンで固まった
○[DirectX 9実践プログラミングI/O別冊]
BackBufferWidth = 1024;
BackBufferHeight = 768;
BackBufferFormat = D3DFMT_X8R8G8B8;
BackBufferCount = 1;
MultiSampleType = D3DMULTISAMPLE_NONE;
MultiSampleQuality = 0;
SwapEffect = D3DSWAPEFFECT_DISCARD;
hDeviceWindow = g_hWindow; // ウインドウハンドル
Windowed = FALSE;
EnableAutoDepthStencil = FALSE;
AutoDepthStencilFormat = D3DFMT_UNKNOWN;
Flags = 0;
FullScreen_RefreshRateInHz = 0;
PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
×[DirectXゲームグラフィックスプログラミング Ver. 2.0]
BackBufferCount = 1;
Windowed = FALSE; // フルスクリーン表示の指定
BackBufferWidth = clientWidth; // フルスクリーン時の横幅
BackBufferHeight = clientHeight; // フルスクリーン時の縦幅
BackBufferFormat = d3ddm.Format; // カラーモードの指定
SwapEffect = D3DSWAPEFFECT_DISCARD;//
EnableAutoDepthStencil = TRUE;// エラー対策
AutoDepthStencilFormat = D3DFMT_D16;// エラー対策
453 :
◆c.50Ky2eZQ :04/11/16 23:32:38 ID:DXV97k4K
>>452 動作したほうの設定をそのまま動作しないソースへ貼り付け。
動作しないほうの設定はコメントアウトでビルドして実行すると
フルスクリーンで動作しました。
パラメータの1つ1つをこれからチェックしたいと思います。
>>451 ウインドウモードでも固まることがあるんですね・・・
現在AGP×4なんですが、AGP×2に落として試してみます。
D3DPRESENT_PARAMETERSはちゃんとゼロクリアしてる? 違うのはAutoDepthStencilFormatくらいに見えるけど
これ差分だけ? 下の方は FullScreen_RefreshRateInHz 書いてないけど 初期化されてなくて D3DPRESENT_RATE_DEFAULT D3DPRESENT_RATE_UNLIMITED EnumAdapterModes のどれにも当てはまらない数字が入ってないかい?
連投スマソ >BackBufferFormat = d3ddm.Format; // カラーモードの指定 d3ddmはGetAdapterDisplayModeで取得してると思うけど フルスクリーンの場合はカラーモードはこちらか指定するから >BackBufferFormat = D3DFMT_X8R8G8B8; でとりあえずいいと思う
457 :
◆c.50Ky2eZQ :04/11/16 23:44:43 ID:DXV97k4K
>>454 2つとも値の設定の直前で下記を実行しています。
[DirectX 9実践プログラミングI/O別冊]
ZeroMemory(&g_D3DPP, sizeof(g_D3DPP));
[DirectXゲームグラフィックスプログラミング Ver. 2.0]
ZeroMemory(&m_D3DPP, sizeof(D3DPRESENT_PARAMETERS));
>>455 差分ではなく、すべて載せました。
I/O別冊のほうはいろいろ設定されているのですが、
もう1冊のほうは設定していないパラメータが多いですね。
FullScreen_RefreshRateInHzは指定されていないです。
下のほうは PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; を加えてみ。それでSDKサンプルと同じ記述。
459 :
◆c.50Ky2eZQ :04/11/17 00:38:16 ID:l0UutMMZ
>>458 その1行を追加して実行してみたら動きました。
下のほうでは、PresentationIntervalを明示的に指定していない(0クリアされている)ので、
D3DPRESENT_INTERVAL_DEFAULTとかになっているのでしょうか。
(0だからとりあえずデフォルト値になっているのかなと推測)
D3DPRESENT_INTERVAL_IMMEDIATE以外のD3DPRESENT_INTERVAL_*パラメータは
最大N回の垂直帰線間隔を待つという説明がI/O別冊に載っていますが、これが問題ということですね。
460 :
◆c.50Ky2eZQ :04/11/17 01:01:33 ID:l0UutMMZ
>>448-458 みなさんありがとうございました。
うちの環境では、
PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT
で動作しないのが原因ということですね。
ドライバいれなおしてみれ。DriverCleaner使って消してからね。
462 :
◆c.50Ky2eZQ :04/11/18 00:08:55 ID:/wUu2R3S
>>461 DriverCleanerでドライバを削除してから入れなおしてみましたが、改善されませんでした。
うちはこの前最新のDirectX入れたらポリゴンが壊れまくるようになった あとシェーダを使ったプログラムが動かなかった nvidia行って最新のドライバ入れたら直った きっとドライバとDXの相性ってのがあるんだろうな
スレッドを作成して Vsyncを待ってIDirect3DSwapChain9のPresentを呼ぶ というのをちょうど作った所だったのですが 今上で話題になったになっていたので D3DPRESENT_PARAMETERSのを細かく見ていたのですが 描画が終わった時点でPresentを読んだとしても 勝手に待ってくれるからそんなことしても全く意味ないのでしょうか? 初期化をもっとちゃんと勉強しとくべきやったorz
全く意味ない
>>462 やれそうならクリーンインストールもやってみてくれ。
ハードの不具合だとあんま意味なさそうだが・・・。
Engel 氏の Shader X3 本が出たみたいだけど、どないな感じ? だれかレビューしてくれ。プリーズ。よかったら買う。
>466 あんまり意味ないかもしれない 最新のSDKについてくるランタイムが少し怪しい 他のスレでも少し報告されてる
469 :
◆c.50Ky2eZQ :04/11/18 23:11:02 ID:jT7gH3UE
>>466 先週の土曜日にOSの再インストールをやったところです。
ハード的な不具合の可能性が高いと思います・・・
ちなみにSDKは9.0cです。
まだDirectXの勉強は始めたばかりなんですが、
持っている本のサンプルがそのまま動かないんですよね。
SDKが9.0aか9.0bのときに出た本なんですけど。
9.0cではメソッドの引数が違うみたいで、コンパイルエラーになるたびに
英語のヘルプを参照して修正していますが、みんなそういう感じで勉強してるんでしょうか。
9.0b入れりゃいいじゃねえか…
変わってるって言っても一部だけじゃないか 勉強という程でもないと思うけど
初心者には、それが辛かったりする
VSYNC待ちの場合、キャラクタを直接スクリーンから消去+描画していっても ちらつかないと思うのですが、どうなのですか?
>473 うん
>>473 そんなわけない。
VBlank期間中に全ての描画を終えれば確かにチラつかないが、
それではGAのパワーを1割前後しか使えない。
走査線に抜かれないように上から順番に描画するのも非現実的だ。
ダブルバッファは必要。
というかフロントバッファへ直に描画ってできるの?
フロントバッファへのアドレスを取ったらいいだけじゃないのか。
>>476 出来ない。
劇重だがフロントバッファサーフェス上のデータを別のサーフェスにコピーすることならできる。
ゲーム機や昔のPCと違って今のWinowsでフロントバッファ触られたら メンドくさいことになるのでできないようにしてあるんだろう 同じDirectXでもXBOXならできそうな気もするが、どうなの?
>>479 多分できると思う。じゃなきゃエミュつくれねーって話にはなってないだろうし。
しかし何でそんなとこいぢりたがるんだろう。。 アホとしか思えない。
何でも自前でやらないと気がすまないのでしょう
483 :
名前は開発中のものです。 :04/11/21 02:55:30 ID:LAZDMw8k
なんでBBXは自分を厨房と自覚しないまま解答する香具師がこんなに多いんだ。 誰か一発叩いてやってくれよ。
お前が叩け
>>483 は、その厨房の回答でないという回答を見せ付けるか、自分で叩けばいいんじゃないのか?
483は質問者側で、回答できるほどの腕はないんだろ。 分かってないのにわざわざ何にでも回答したがる人は確かにいるね。 それをレスが付かないよりは有り難いと取るか、 不完全で見当違いな方向にて結論づけて欲しくないと感じるか。 まぁ、不十分と感じたら議論としてつっこみ返せば良いだけのこと。 俺としては2chのノリを持ち込んでる奴の方が嫌だな。今時どこ行ってもいるか…。
BBXを覗く事もだいぶ減ったな。 なんつーか質問の内容が俺の知りたいことと 全然かすらない為かもしれないが。
どうしようもない質問ばっかりだからな
そこがいい
別にいいじゃない。 ほっといてやれよ。
BBXって、すでに質問BBSに成り下がってるよな 技術に関する議論とか皆無だよな
あれ? 元からではなかったのね・・・
>492 一旦質問BBSになったらもう議論とか無理だね
兄さんそこでspinなわけですよ。
CPUを100%使って何が悪い。120%とかならともかく。
姉さんそこでBio100%あすか120%バーニングなわけですよ。
>497 懐かしいなぁパイオツ100%
DirectXのヘルプではサーフェスのつづりになってる。 ところでxファイルの仕様は一般には公開してないんですかね? 六角でxファイルに出力したらグジャグジャになっちゃうんですが。
>499 ヘルプにのってるのはフォーマットじゃないの?
>>499 xファイルについては500の言う通り。ヘルプ嫁。
それと六角についてだが
フリー版の六角には面の表裏の概念がなかった。
例えばrokファイルは面方向がバラバラなので
そのままカリングONで描画すれば(当然ながら)面が欠ける。
他ツールで面方向を統一するか、カリングOFFで描画しろ。
シェアウェア版以降の六角については知らない。
502 :
名前は開発中のものです。 :04/11/23 23:51:38 ID:IR6kcETY
ある平面Pがあって、境界コーンCとの最近距離Nを求めたい。 ただしNは平面Pの内、境界コーンの円弧の範囲に含まれる部分のみから得るものとする。 境界コーンの要素は次の通り。 ベクトル 頂点A、単位ベクトル 方向D、 スカラ 範囲R、 スカラ 半角度T。 よろしくお願いします。
何をお願いしてるの?
>>502 ここはダメ初心者の日記帳じゃないんだが。
DirectXに恐ろしく関係ないな
実はただの誤爆だったりして
508 :
名前は開発中のものです。 :04/11/24 20:58:06 ID:0xpnHkr5
>>503 回答またはアドバイスお願いします。
>>504 俺は初心者のつもりはないですよ、
中級ぐらいだと思ってます。
質問のレベルも低くないと思います。
>>505-506 たまにはいいんじゃないですか?
スプライトだのなんたらバッファだの
決まりきった題しか最近ないじゃないですか。
それにまったく関係がない訳がないでもないでしょう。
3Dのゲーム開発者なら、考える機会もあるでしょう。
510 :
502 :04/11/24 21:04:00 ID:0xpnHkr5
また質問の中で説明不足な点がありました。 すみませんでした。 最近距離Nは、頂点Aから平面までの距離からとります。
>>508 なんでわざわざコーンと平面なんて判定しなきゃいけないの?
俺、10年近くゲーム業界いるけどそんな場面に遭遇しねぇよ。
よしんばできたとしてもバグりそうだな。
俺だったらこんな問題とかないで、アプローチから替えちゃうな。
完
>>508 プギャ―――――――m9(^Д^)―――――――!!!
>>511 シャドウマップの為
スポットライトと視錘台の距離を知る必要があります。
確かにシャドウマップには視錘台を使うので
距離判定も視錘台で良いとは思います。
しかし境界コーンで求める方法があるなら
そっちの方がより正確で良いだろうと思い質問しました。
>511 純粋な質問だったら、中級者だったら自力でがんがってください 議論とか問題提起とかしたいんだったらそう書けばいい 正直あなたの真意がわからない
>>513 じゃあ、自分が納得がいく精度のコーンのモデル用意して
ポリゴン単位で当たり判定。
516 :
名前は開発中のものです。 :04/11/24 23:37:06 ID:qruBncC8
東鳩キャラメルコーン
>>513 少なくとも、自分が試した方法くらい書けや
何にも考えてない質問厨なら出て行け
>中級ぐらいだと思ってます 自称中級は、世間的には初心者 中流意識を持つことで自分を誤魔化している
なるほどためになる
なるほどだめになる
521 :
名前は開発中のものです。 :04/11/25 22:00:46 ID:JWvNIo+a
>>517 考えた上でわからなかったから質問したまでです。
わからないという点では俺も君らも同じレベルです。
噛み付く理由はないと思うんですが。
俺が昨日考えたのは、回転行列を使うダサい方法ですが
とりあえず正しく機能しそうです。
しかしこれは使わないことにしました。
やはり
>>511 の言う通り、このケースでは使ってもデメリットがあるだけみたいなので。
1、平面Pの法線Pnと視線ベクトルDから回転軸Xを求める。 X=NxPn
2、視線ベクトルDを回転軸XでT度回転させる。 D'=Rot(D, X, T)
3、A から D'方向で平面PとぶつかるベクトルIを求める。 I=D' * ( -(vec4(A,1)・P)/D'・P )
4、D'の長さを求める。
日記はチラシの裏(ry
お前ら、あえて使ってないDirectXの機能は何ですか? 漏れは階層アニメーション辺りは全滅 逆にメッシュ管理はM$に依存しまくり
>>523 DirectMusic、DirectInputかなー。
そんなこったことはやらないから、ほとんどWinAPIで間に合ってる。
MFC対応のライブラリを作ろうかと思ってるんだけど、 SDKベースのアプリしか組んだ事ないからいまいちわからんのよね。 MDI対応でDirectX9使うとなるとどうするのがベストだと思う? 子ウィンドウ毎にデバイス生成じゃぁ流石にきついと思うんだけど・・・
目的を定めず、手段だけ論じるのは愚か者のすること。
MDIベースのアプリを作る時に各ウィンドウごとに3Dモデルやテクスチャの 描画をする場合どうしているのかが知りたいわけで。 ウィンドウの数分レンダリングターゲット作ってDC経由で描画ってのも出来るのか?
>>527 プギャ―――――――m9(^Д^)―――――――!!!
>>527 なんでウィンドウの数分レンダリングターゲットが欲しいの?
Presentの転送先を変えるだけで良い気がするけど。
ウインドウが複数ある時に移動やウインドウの切り替えで ウィンドウの更新が発生すると思うんだけど、 1つのバックバッファ使いまわしにするとそのたびにレンダリング し直しとかになるのかと思ったんだけど。
>>527 ,530
つか、描画のしなおしはしょうがないだろ。
つか、基本構造理解できてる?
折角別ウィンドウなら別の視点でみたいだろうし(何作るかは知らないけど)
デバイスをたくさん作る必要もないし、リアルタイムじゃないからフリッピングを
気にすることもないからね。
ただ、リアルタイムに動かしたいときもあるから、そのときはそのときで
リアルタイムで動かせるウィンドウも生成できるようにしておく。
描画に多少時間をかけても気にならない。
けど、描画中にもウィンドウのメッセージをやりとりしなきゃならないから
そこはそういう構造で。
#ところでMDIってドキュメントが何枚もある場合のウィンドウ構造でしょ?
#作ろうと思ってるのは「SDI+ツールウィンドウ複数」じゃねぇの?
#まず、ウィンドウズでの基本的な構造は理解できてるか怪しいんじゃねぇのおまい?
#MDIってなんのためのMDIなのかおじさんにいうてみぃ。
>>527 が作りたいのはたしかにSDIっぽいが、
別にMDIの3Dツールあってもいいと思うけど。
メタセコみたいに各ドキュメント毎に別アプリでは
使い勝手悪い+リソース無駄使いじゃない?
ウィンドウ モードのマルチビュー -------------------------------------------------------------------------------- IDirect3DDevice9 インターフェイスを介して所有し操作できるスワップ チェーンに加えて、 同じデバイスから複数のビューに提示するための追加スワップ チェーンを作成できる。 アプリケーションは、一般的に、IDirect3DDevice9::CreateAdditionalSwapChain メソッドを使って ビューごとに 1 つのスワップ チェーンを作成し、そのスワップ チェーンを特定のウィンドウに関連付ける。 アプリケーションは、各スワップ チェーンのバック バッファにイメージをレンダリングした後、個々に提示する。 各アダプタでは一度に 1 つのスワップ チェーンしかフルスクリーンにできない。 --------------------------------------------------------------------------------
>>532 使い勝手は微妙だな。
別アプリにしておくことでウィンドウズのタスク機能やショートカットを使えるってのもあるし。
各ドキュメント毎に別アプリはプログラマにとっては使いやすい。
つーか、MDIは画面全部を無駄に占有してくれるじゃん。
MDIにしちゃうとMDIで必要なことすべてができないと苦情がくる。(画面全部を占有するし)
VCみたいに「横にエクスプローラおいてエディタ開くのと何が違うの?」とか言われたらおしまいだしw
MDIで成功してるツールってそんなに無いと思う。
昔、MSから 「MDIでアプリケーションを作成するのはやめれ」 と言うお達しがあったような・・・
536 :
名前は開発中のものです。 :04/11/27 08:44:59 ID:nL+8cHtL
ポリゴンにテクスチャはっつけて表示しているのですが 黒、白、赤の3色を使ってるのですが黒を完全に消して赤を半透明にして 白はそのままってのをしたいのですがそういった色指定で半透明とかできますかね?
538 :
名前は開発中のものです。 :04/11/27 17:08:04 ID:L/vs30QR
('A`)<DirectX7のDirectSoundで質問なんですが DirectSoundを開放する前にやらなくてはいけない事って何かありましたっけ? SDKのチュートリアルではDIRECTSOUNDNOTIFYを取得しているなら先に開放して、 後はDirectSoundを開放するだけみたいな事しか書いてないのですが、自前の コードではどういうワケかDirectSoundをRelease()すると”不正な処理〜”で落ちます。 何かヒントがあれば教えて下され。
539 :
538 :04/11/27 18:09:21 ID:L/vs30QR
自己解決しますた。 リファレンスには >DirectSound を解放すると、既存のバッファも自動的に解放される。 とあるんですが、実際には作ったDirectSoundBufferオブジェクトを自分で 開放しないと何故かDirectSoundオブジェクト開放でコケます。 何か納得いかん気もするけどエラー吐かなくなったんで良しとするか('A`)
基本的に取得したものは開放しないと
参照カウントを理解していないのでは?
>後はDirectSoundを開放するだけみたいな事しか書いてないのですが、自前の >コードではどういうワケかDirectSoundをRelease()すると”不正な処理〜”で落ちます。 DirectSoundを開放した後に、サウンドバッファとかを開放してるの? 仕様がそのヘルプ通りだったらそりゃ落ちると思うけど。
>>540-541 DirectX7SDKのサンプルコード読んでみ
>>542 いや勿論バッファ開放した後でDirectSound自体を開放するんだが、チュートリアルや
サンプルコードだとバッファを開放せずにいきなりDirectSound開放してんだよね。
どうもプライマリバッファとフォーマットの違うバッファを確保して、それを開放せずに
DirectSound開放すると駄目みたいだ。
細かく検証すんのマンドクセ('A`)
自分で書いておいてなんだが違うな…
スワップチェーンってマルチディスプレイ用の機能でMDI用でなはいのねん。
546 :
名前は開発中のものです。 :04/11/28 10:00:44 ID:ZBHH8DXD
ゲーム中の時間のカウントとか文字表示ってあるじゃん。 それってスプライトでやってる?それとも違う方法?
GDI使うと遅いからBMPフォント
GDIを使うと遅いという馬鹿がいつも発生するが、 一度書いたら使い回せるんだから、 元がビットマップだろうがGDIだろうが速度は変わらない。 何故その程度も分からないほど無能なんだろう。
DirectX勉強したいんだけどナンカ良質な参考書無い? 今目つけてるのは、 DirectX実践プログラミング DirectXプログラミング入門
548みたいな「勝手に解釈して思い込んでしまうバカ」は社会にいると迷惑。
>>548 GDIからBMPフォントにするというのは、伝わらないか?
キャッシュすることをBMPフォントと伝わらなかったのはあやまる
そこで漢字ROMですよ
そこでfreetypeの登場ですよ
>>549 SDKのサンプル、あとはMSのサイト
本は要らない。著者のキモイ癖だとかキモイライブラリを押し付けられるだけ。
>557 >SDKのサンプル、あとはMSのサイト たしかにそれが一番だけど、世の中にはそれでけでは前に進めない人も多い >557はSDKのサンプルとMSのサイトだけで理解できない香具師はDirectXなんかするなって考えなのかな? 漏れはプログラムは趣味程度でもDirectXはやっていいと思ってるから、本は要らないとは言わない >549 個人的には、まったくのゼロからならDirectX実践プログラミングの方がいいと思う
559 :
549 :04/11/28 23:28:38 ID:/2AuT/Ax
「本ないと・・・」とか言ってるのが会社入ってくると厄介。 新しいことやらせると「何か本ないスか?サンプルないスか?」と言い出すから。 それでも「仕事なんだからやれ」と言うと、2ch/BBX/トキワあたりで質問厨と化す。 学校感覚でやってる野郎は趣味止まりにすべき。
本を参考にするのは仕事でも全然okだと思うけど? 問題はその本すら自分で吟味できない香具師だろう。 本屋に2,3時間篭って使える本か使えない本か位は 自分で選別出来ないようだとクレクレ厨でしかないが。 資料扱いなら経費で落とせるんだし働いてるならせいぜい 4,5千円程度なら授業料として自前で出してもたいしたことないだろ。 まぁ学生の時でも月数万は本で金使ってたが・・・ ハズレ引くと結構ダメージでかかったなw
本を参考書にするのは構わんが、参考書がないと何もできない奴は困る(というか要らん)わな。 もちろん、仕事にするならって話だから趣味ならご自由にどうぞ。
マニュアルなくてネットや本でなんとかする仕事もあるがねw 判らないことを理解して情報を得ようとする姿勢だけ非難してもダメだろう。 まあ、本読んでる人間全員が使えないようなことかくなよ。一人のマヌケがいるだけだろ。
>>549 この一冊でokみたいな書籍は普通ありえないから。
何冊か読んでそれぞれから使えそうな部分を拾っていくって感じでいいかと。
最近は日本産のDirectXライブラリも多いからその辺のソースを眺めるのもいいと思う。
>560 >「本ないと・・・」とか言ってるのが会社入ってくると厄介。 だから趣味でゲームプログラミングやってるアマチュアにもそれを求めるなよ
>561 ハズレ引くと結構ダメージでかかったなw 結構で済むものか…(;ω;)ウッ
563に同意。
とりあえず、October 2004の日本語ドキュメント出たから それ落としてきませう
>>569 おお、気づかなかったぜ。
では、さっそくDLと・・・・
(;´Д`) 推定残り時間 2時間10分
>>571 俺も10KB秒くらいしか出ない・・・
あと54分
じゃ漏れは明日か明後日にでもサクサク落とすかな
>>560 じゃあお前が相手してやるのか?と。
自分で何とかしようとしてるだけマシ。
プロセスはどうでも良いんだよ。重要なのは結果。
誰にも質問しない、調べない。黙々作業、、。で、結局出来ませんでした。
というのが一番最悪。
俺は逆にそういう奴がお荷物。
「何できかねえの?」とプチギレした。
漏れも勝手に本買って調べたり、検索して勉強する香具師にはどうも思わない。 自分で何も調べない、疑問があっても質問せずに勝手に処理する香具師が一番迷惑。
>>575 > 漏れも勝手に本買って調べたり、検索して勉強する香具師にはどうも思わない。
それはそのとおりなんだが
>>560 が書いてるような質問厨は勘弁してほしい。
要は自分で解決できるかどうかだな。
プログラマに限らず、新入りは 「自分で考えろ」と「なぜ聞かないんだ」の 矛盾に一度は悩むだろうね。
578 :
名前は開発中のものです。 :04/11/30 15:02:19 ID:Mn9PGrgB
DirectX8でテクスチャーは何枚までメモリーにロードできるんですか? テクスチャーは一枚にまとめてメモリーにロードして必要に応じて切り出してつかうのがいいのか 数枚に分けてロードして使うのがいいのかどっちがいいんですか?
>>575 自分で解決できないものについて質問して叩かれたら可哀相じゃねえ?
>>579 レスありがとうございます
テクスチャーを一枚にまとめてロードするより
用途別に数枚に分けてロードしたほうが管理しやすいんですけど
テクスチャをなるべく少ない枚数で管理したほうがメモリーを効率よくつかえたりするとかあるんでしょうか?
>>580 自分で調べた上で「ここまで調べたのだが、どうもここがわからない。何を調べたらいいか
ヒントを教えてくれ。」とかちゃんと質問すればそれほど叩かれないだろ。
調べもしないで質問するから叩かれるんだよ。
>>579 テクスチャの切り替えが少ないほうが処理は早い場合が多いが。
モデルデータなんかだとマテリアルは1つでテクスチャとUVだけで
質感を表現するほうが処理的にはかなり有利じゃないかな。
>>582 長文スマンが、悪いけど俺はそういうエセ徒弟制度みたいな考え方は否定派だよ。
大工だったら、時間掛けて体に覚えさせなきゃダメだろうが、プログラミングの
手続きや技法は単なる知識だろ。
どこの世界に、「線形代数を学習したいんですが、お勧めの参考書を教えてください」
とか質問されて、「Googleで調べろボケ」とか答える数学者が居るんだよ。
別にプログラマに限らんが、日本のリーマン気質の技術者は、単に「あまり頻繁に質問
されたら俺の時間が減るから、無制限に質問するのは勘弁してくれ」という程度の話を、
「質問する奴を突き放すのがエチケットでカコイイYO」とか思ってるアフォが大杉だ。
そんなパソ通時代のキモオタ丸出しのセコいネチケットなんぞを信仰する連中は、
ブルマ一丁で女子更衣室のロッカーにでも飛び込んで頭打って氏んでほしいよ。ホントに。
そりゃあ549がプロで、仕事場で言ったのなら論外さ。でも、ここは仕事場ではないし、
582のようなハイスキルな人間専用のサロンでもないんだよ。
だったら、単にスルーするか、ちっとでも裾野が広がるように回答してやるのが道理だろう。
自分で裾野を切り捨てて、初心者質問を厨だと叩く奴が一番精神的には厨房だよ。
>>584 悪いけど自分の考えが一番正しいと思い込んでいて
それを他人に押し付ける奴も十分厨房だと思うが。
文章を要約することは小学生で習ったはず。
>586 だが要約は東大入試でも出るぞ。英語だが。
しょせんアホの集まりってとこか
ここで横柄な態度で答えている奴なんて それこそ初心者のケツが青い坊主だけだよ。 人間的に未熟、所詮学生レベル。
↑ こういうのが横柄な態度の見本です。
>>590 はあ、慈善じゃないとしたらじゃあ何なの?
慈善を抜けば、単なる暇つぶしか気まぐれぐらいしか残ってないよ。
お前、自分が偉い何かにでもなってるつもりなのか?
これだからケツが青いって言うんだよ。
出過ぎた説教は単なる荒らしだっつーの。
メリークリスマス
日本語には、丁寧語やら尊敬語があるから こんな事になるのな。 アメちゃんの掲示板を見てると サクサク質問して サクサク答えてるべ。 ホントまんどくせー世の中ですこと。 メリークリスマス
596 :
名前は開発中のものです。 :04/11/30 22:24:30 ID:dPOW7liI
はじめまして、DirectXの初心者です。 DirectX8.0でVB6.0を使用しています。 もらったプログラムを実行したいのですが、ビルドするとエラーが出てしまいます。 過去ログを見て、リンクの設定がおかしいらしいのですが・・・。 なにぶんDirectXをインストールしていなかったPCなもので、インストールから始めた状態です。 --------------------構成: CrowdSimulation - Win32 Debug-------------------- リンク中... CrowdSimulation.obj : error LNK2001: 外部シンボル ""void __cdecl MainLoop(void)" (?MainLoop@@YAXXZ)" は未解決です CrowdSimulation.obj : error LNK2001: 外部シンボル ""int __cdecl StartDirectGraphics(struct HWND__ *)" (?StartDirectGraphics@@YAHPAUHWND__@@@Z)" は未解決です CrowdSimulation.obj : error LNK2001: 外部シンボル ""int __cdecl EndDirectGraphics(void)" (?EndDirectGraphics@@YAHXZ)" は未解決です Debug/CrowdSimulation.exe : fatal error LNK1120: 外部参照 3 が未解決です。 link.exe の実行エラー CrowdSimulation.exe - エラー 4、警告 0 とエラーが表示されます。 どうかみなさんご教授お願いします。
それVB6じゃないだろ・・・
>>596 VC6.0の使い方のご質問はスレ違いでございます。
このタイミングでBBXとのマルチかよ…・・・
・・・
>596 ライブラリがない ライブラリがリンクされていない ライブラリへのパスが通っていない ない場合はなんのライブラリかは知らない 友人に聞くなりして自分で探してください リンクがされてない場合はVCの初心者向けのサイトなり本なりで調べてください パスが通ってない場合も同上 これくらいは十分自力で解決できる基本的なことなので 同じようなことは2度と聞かないでください てかやる気ねーだろ?
>601 もうBBXで答え出てるよ
まあなんていうか、ここで他人の行動にケチつけたいやつは 自分のキモblogに日記でもつけてろや 気軽に聞いて気が向いたら答える。それでいいだろう
>>604 そっくりそのまま返せるじゃんw
まあなんていうか、ここで他人の行動にケチつけたいやつは
自分のキモblogに日記でもつけてろや
気軽にケチつけて気が向いたら質問する。それでいいだろう
>>605 無理あるだろ・・・。
他人の行動にケチつけたいやつは自分のキモblogに日記でもつけてろって話なのに
>気軽にケチつけて気が向いたら質問する。
は明らかにおかしいだろ。
607 :
604 :04/12/01 04:19:21 ID:/69vUOxo
質問ー。 アニメ付きXファイルの再生まで出来てるんだけど、 アニメ再生のループ設定の詳細がわからん。 BBXのログには、ナンたらアニメーションセットを生成するD3DX関数でしか、 プレイモードの設定は出来ないとある。 で、やってみた。 アニメSETを取得して、新たに生成。その際、 プレイモード以外は取得したものを使用。 で、登録やらセットトラックやらやってみたけど、再生しない。 というか、面倒過ぎ。SetPlayMode()みたいなアクセサ1個追加すりゃ良いだけなのに、、。 エクスポーター弄るしかないんかな?
アルファベットが全角だぁ^−^
>>609 アニメーションセット周りはは確かに面倒だよね。
単にアニメーションセットを再生するだけでも、
登録→トラックに乗せる
という段階を踏まなければならないあたりをみると、
どうやらお手軽さよりも内部での効率を重視した作りっぽい。
アニメーション関係は全部独自でやるのも一つの手だろうけど、
どうしてもD3DXを使いたい(使わざるを得ない)のなら、
やはりXファイルのオーサリング・コンバート段階での地道な作業が必要になると思う。
ここまで書いててごめん、プレイモードとやらはよく知らない。
あんなもん使うなよ。 DirectXの開発者のセンス腐ってるだろ。 RMと同じようなインターフェースでよかったんだよ。 アレと同じで何がどう困ることがあるのか聞いてみたい。 わざわざ複雑にして使い難い、マニュアルは無い。 馬鹿じゃねぇの。 自分でこさえた方が100倍速い。
なんだか荒れとんね。 VB or C#のDirectX本で オススメ無いすかね? マニュアル、ヘルプ、MSDN以外で たのんますよ、ホント。このとおり。or2
>613 立ち読みしてみて読みやすいのが一番
>>614 おまいさんが役に立ったと
思えた本て何かありますかね?
あんま定番ぽい本が
DirectX界には無いのかもしれんが
そこをなんとか、ちょいちょいと。
>>615 ・DirectXのバージョン
・お前の技術レベル
・DirectXで主にやりたい事
を書いとかないと。
617 :
名前は開発中のものです。 :04/12/02 02:08:36 ID:SJ2T9fJ7
Xファイルの描画に関して質問でちゅ。 頂点シェーダ用・ピクセルシェーダ用のアセンブリ言語を使用しているのと そうでないのではかなり速度+やれることに違いはあります?
>617 他スレや過去ログみてわかんなかったら、ここで説明しても知識が足りなくてわかんないだろうから とにかくうだうだいう前に勉強しれでちゅ でもまぁせっかくなので軽く答えるでちゅ やれることにはかなり違いがあるでちゅ どんなことができるかは、とりあえず少し勉強すればすぐわかるから さっそくやってみれでちゅ 速度はハードウェアによって変わってくるのでなんともいえないでちゅ
>>617 たまに退化するライブラリもあるが、DXであたらしく追加されたものはより良い物を扱えるように (もしくはもっと効率よく使えるように)してるものがほとんどだと思うよ。 つーわけで、シェーダ使えればいろいろできるもよう。3Dは全部そっちに流れてる・・・らしい。
つーかシェーダ自体は人によって使わなくても シェーダで学べる3Dの知識がゲームを作るのに必須。 (主にローカル→ワールド、ワールド→ローカル変換) だから、シェーダやれって感じ。
>>618 そのC#の本はゴミだった。
お勧めはコレ。Managed DirectX の開発リーダーが書いてる。
SAMS / Kick Start Series
Managed DirectX 9 - Grahics and Game Progamming / Tom Miller
>>622 英語本は要らんのよ。
コード以外でつまづいた挙句
気になって気になって
違う勉強し始めちゃうからよ。
>>618 VBだと、そこらしかないかぁ。。
ま、数が少ないから
どうしようも無いし。
∧⊂ヽ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (゚Д゚)ノ < シェーだ | ⊃| \__________ | | ⊂ノ〜 ∪
ぷぎゃー
DirectXとリフレッシュレートの話なのですが。 画面の設定リフレッシュレート70にしておき、 アプリ開始時にChangeDisplaySettingsを使ってリフレッシュを動的に60にした場合、 ウィンドウモードだと60になるのですが、フルスクリーンだと元の70のままです。 動的じゃなくレジストリに書き込むと60になるのですが、つまりフルスクリーンだと レジストリの設定から同期をとってるってことですかね? ゲームスピードだけならまだしも、リフレッシュ70のままだとなぜか画面の縦横比が狂ってしまうので ゲーム中は60にしたかったのですが・・・・。
>629 ウィンドウモードの場合は環境の設定にあわせないとだめだろ
>>629 悩むだけ無駄。
その辺の仕様は固定じゃないから。
俺はディスプレイ2つ使ってるけど、片方75、もう片方は60で動いてる。
60を返すほうも75と言われて60で動いてるディスプレイは発見できない。
ちなみにこの環境でレジストリをどんなにいじってもリフレッシュレートにまったく影響は無い。
633 :
629 :04/12/03 00:47:42 ID:xgYa9aZ/
>>631 9です。この夏出たSummer 2004という奴です。
色んな掲示板見てるとChangeDisplaySettingsは
使うなって書き込まれてたりします。まぁ動的に使ってるのならいいかな、とは思うのですが、
リフレッシュが適応されなくって70のままで画面レイアウトが壊れる(縦長になって、
画面上下が見えなくなる。)のではレジストリに書き込むしかない・・・しかし、
たしかに勝手にユーザーの設定を変えるのはどうだろう?とも思います。
余談&ちょっとヲタ臭い話ですが、東方シューティングの、紅魔郷、リフレッシュ70でゲーム開始すると、
案の定画面が崩れるので、ゲームする前にディスプレイ設定を60にしないといけなかったりします。
FPSも70になっちゃってゲームが早くなってしまうし。
ところが、その次の妖々夢からは、70のまま始めてもちゃんと画面が表示されるのです。FPSも60
固定で、これにはかなり驚愕しました。そこで一定間隔でEnumDisplaySettingsを使いディスプレイの
設定を取得&表示させつづけるアプリを裏で動かしていたら、ゲーム起動前は70だったのに、ゲーム中は
EnumDisplaySettingsから取得されるリフレッシュが60になってました。
おそらくChangeDisplaySettingsでレジストリ変更させて、画面設定をゲームに
ちゃんと適応させてるのだと思い、ChangeDisplaySettingsでレジストリいじるしか
ちゃんと表示させる方法はないのだろうか・・・と思ったのが事の発端で。
A宗
B宗1派
B宗2派
>>629 好きな派閥に所属するがよい
>>634 な、なつかしい〜
と思うと同時に、もうあの議論は二度とみたくないな。
2000/XPの場合の優先順はヘルプのCreateDevice()のところに書いてあるけど。 駄目だったらタイマ使うって考え方がなぜ出来ないのか……。
そもそもリフレッシュレートは、ユーザが選べるようにするならともかく、 プログラマ側が勝手に設定していいものではない。
>>638 そうだな。
しかしこういうハード寄りの部分にこだわる奴って
日本人に多い気がする。
>>639 こだわりとかじゃなくて単に書き換えと一緒に移動とかしてるからだろ
クオリティにこだわりたいからだろ 外人はみえりゃなんでもいいからvsyncなんか糞食らえ・・・ではなくて、 フレームはvsyncに同期してとにかくflip。 前フレームとの時間差から移動量を求めて、100Hzとかどうすんの?とかいう疑問は ハードの進化が解決するさ、的なA宗だよな
フレームレート関係は戦争になるから別でやってくれ 専用スレでもたててそっちで お ね が い
>>642 もう、ならねぇよ。
だって、普通にDirectXのサンプルどおりにやれば
綺麗に動くじゃん。
645 :
629 :04/12/04 00:55:07 ID:/JV7qthP
あ、いえ綺麗にしたいとかタイマで管理すればいいの以前に、 FPSによっては画面比がおかしくなってゲームにならない ってことをなんとか したかったのですけれどね。リフレッシュレートの論議はある程度見てきましたが、 私のPCで表れるような画面が縦長になる なんてことはどこでも語れてなかったので・・・ でもどうやら、荒れるネタのようなのでやめたほうがよさそうですね。 注意書きでも書いてなんとかしようかな・・・。 すみませんでした。
そんなのは環境依存だし。 60Hzにするとおかしくなる環境だってあるかもよ?
>>629 画面が縦長になって上下が切れるのって
モニタ側で調整すればなおるのでは?
>>633 SetDisplayModeで余裕でできるわけだが
>>645 画面比がおかしくなるってのは、
アスペクト比考慮しない安SXGA液晶なんかだと当たり前だし、
CRTで低解像度のアスペクト比設定していないのはユーザーの責任
開発者が考慮する問題ではない
>>645 60Hzとか同期とかそういう話と、アスペクト比に何の関係があるんだよ?
>645 うちのディスプレイは、解像度(周波数)毎に、縦横比の設定が出来る。 というか、しないと普通に表示できない。 一度設定をやってしまえば、またその解像度になっても大丈夫。 だからそのおかしい解像度のときにちゃんと調整すれば、後は大丈夫だと思う 他の原因も考えられるけど、これしか心当たりがない。
>>650 俺の昔のPCでは
800x600の75Hzにすると画面が縦長になったな。
モニタで調節してもバッチシにはならなかった。
そういうことでない?
まだやってんの。
以前まではB宗信者だったけど、A宗のほうがいいかなと思う今日この頃
次の話題まだ〜?
>>652 確かに昭和時代のモニタはそうだったな。
>>656 そのスレ、一年以上もレスついてなかったんだな。
659 :
629 :04/12/05 01:00:04 ID:C8cHkTrH
は〜、なるほど。つまるところ私のディスプレイがしょぼいってことですかね? >SetDisplayMode 試してみます。 ちなみに買ったのは3年前で、HYUNDAIってなメーカーです。そんなボロいものでもないとは思うんですけれども・・・。 >次の話題まだ〜? んじゃ、話題変えついでにも一つ聞きたいんですけれど、今VC6でやってるんですが、.NETだとDirectX用の ウィザードがあるじゃないですか。新しくゲーム作るなら、.NET購入してそれで組みだした方がいいですかね?
>660 C#じゃなくてVC.NETのことじゃねーの? たぶんだけど >659 漏れはウィザード使ったことない もう自分で書いたフレームワークがあるんだったら そっち使ったほうがいい まぁフレームワーク作りの参考にはいいかもしれないけど(よー知らんけど) 別にDirectX用のプログラムしか書かないんだったら、もうしばらく6でもいいかもしれんけど
>659 Summer2004からWizardは廃止されて、サンプルフレームワークに移っている。 CALLBACK関数の中を埋めていくだけなので、Wizardが生成したソースより使い易い。
663 :
名前は開発中のものです。 :04/12/05 18:13:07 ID:qjM4BToy
画面分割する方法なんですがビューポートを指定する方法以外にありませんでしょうか? 格闘ゲーム作ってるんですが演出で画面分割をビューポートでして見たら ポリゴン数が多くてすごく重くなったので何か方法がないか探してます。 何かご存知の方いましたらご教授よろしくおねがいします
>>663 どんな分割の方法を試そうとポリゴン数が多いのに変わりないだろ。
画面分割時はポリゴン減らすとか対処するのが普通だろ。
665 :
名前は開発中のものです。 :04/12/05 19:15:49 ID:6PAlLV0+
DrawPrimitiveUPのUPは何の略ですか?
UnlimitedPower
UserPointer?
UはUesrだけど(Managed参照)、Pが分からんなー PrimitiveかPointerかどちらかじゃない?
ユーザーメモリポインからのレンダリングって記述があるから、 Pointerでええんでない?
「UserPrimitive」だ。 MDXでは「DrawPrimitiveUP」は「DrawUserPrimitives」になっている。 これに限らず、MDXの識別子はネイティブに比べて洗練されているものが多い。
うpするんだとおもってたけど違ったのか
DrawPrimitiveうpしました!ってかw
ヘルプに書いてあるUser memory Pointerの略だと思うのだが。
>>673 それで間違いなさそうだな
なんの根拠もなくupdate(最新のものにしろ!)かup-to-date(最新ですよ(・∀・)ニヤニヤ)の事だと思ってた
なんて逆説的でウィットが効いてるんだと
DrawPrimitiveDown DrawPrimitiveAge DrawPrimitiveSage
676 :
名前は開発中のものです。 :04/12/07 01:50:13 ID:OZKhoYmt
逆行列を求める関数でD3DXMatrixInverseというのがあると思うのですが これの引数に行列式(float *)があるとおもうのですが、これはfloat1個 を渡すのでしょうか?いまいち行列式というのがわからなくて・・・すいません。
俺の記憶が正しければ 確か逆行列を求めるついでに行列式の値も求めますよーって関数のはず 逆行列求めるために行列式の値が必要だから
>676 そういえばそこNULLしか入れたことない
>>676 いまいち行列式というのがわからない人ならNULLを入れればいいだべ。
>>676 こうやって使う
float determinant;
D3DXMatrixInverse( &matInv, &determinant, &matTaget );
if( determinant == 0.0f )//〜
determinant(==行列式)が0ならば、逆行列matInvは存在しない
必ず逆行列が存在すると分かっているならNULLを指定しても構わない
行列式知らないような阿呆がプログラム組むな
まあまあ。
阿呆 じゃありません。 もちさん です。
行列のできるDirectX相談所
682のレントゲン写真に影的なものが写りますように。
682は底辺のサルグラマで 余裕がなくてイライラしてるんです。 どうか許してやってください。。。
ある日
>>682 の右の精巣が激痛をもって腫上がりますように。
そのあくる日
>>682 の左の精巣も腫上がって、あだ名がたんたんたぬきになりますように。
>>681 それじゃ駄目だろ。
0.0fなんて綺麗な0は浮動小数点じゃほとんど返ってこないんじゃね?
なんか浮動小数点の足切り用の定数なかったっけ?
>>690 FLT_いぷしろん?
まあ、この場合は0か否かが知りたいだけなので
これでよし。
ふつーに if( D3DXMatrixInverse(...) == NULL ) で 大丈夫な悪寒。
693 :
アンチ・シェーダー主義! :04/12/08 21:47:24 ID:c6WeYnvv
なんでもシェーダでやってしまうのが人気なようですが まだまだシェーダも動かないような低スペックなマシンも たくさんあります。 ソフトウェア実装に力を入れている方々、情報交換しませんか?
>693 それは底が見えるから、情報交換とか議論とかできなさそう 何をするかにもよるけど、たとえばトゥーンシェーディングとか スキニングとかをシェーダ使わなかった場合とか 頂点バッファをロックして書き換えるのが頻繁になって 重くて現実てきじゃない そんな低スペックグラボのマシンではカクカクポリポリじゃないと現実的じゃない どうしてもやりたかったら、シェーダでやってることをそのままソースで書けば いいだけだから、特別な議論も必要ないと思う
下らん話をBBXから転載する
>>693 はアホだと思うが、
> スキニングとかをシェーダ使わなかった場合とか
> 頂点バッファをロックして書き換えるのが頻繁になって
↑
馬鹿
「なぜトゥーンシェーディング・スキニングで頂点バッファをロックする必要があるのか」 を議論するスレになりました。
別にDrawPrimitiveUPでもいいんだが…
↑ やっぱり分かってない、ただの馬鹿。
ID:WW1dHwS0の底が見えてしまいましたとさ 完
つーかシェーダーの方が楽だからなあ。 エフェクトファイルステートで書いてみ、スゲーつらいよ。 何書いてあるか読みづらいし。 ステートでは良いことないのよ。
Shader嫌いと言うか単に使えないだけじゃねーの?とか思ってしまうが。
∧⊂ヽ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (゚Д゚)ノ < シェーダ | ⊃| \__________ | | ⊂ノ〜 ∪
ピクセルシェーダーならまぁ環境に依存するが、ヴァーテックスシェーダーは TnLなければCPUで処理されるんだからあえて使わない意味はほとんどないに等しいじゃね。 シェーダー使わなくたってどっちにしろCPU処理なんだしな。 スキニング処理なんかだとむしろ余計なバッファが要らないから同じCPU処理でも シェーダー使うほうが速いしメモリにも優しくてなおさら低スペックにもいいだろ。 もっともそれ以前にそんな事考えるようなスペックじゃCPUがボトルネックになりそうだけどな。 まぁ日曜プログラマ風情の意見としては3DゲームをやるならGeForce4程度は買って来いと、 GeForceFx5200ですらGBASPよりも安いんですよ?とチラシの裏。
HW-TnLは固定機能のアクセラレートをするものであって、 頂点シェーダー対応の可否とは何の関係もない。
全て理解した上で適切な選択をする人>>>>>>(越えられない壁)>>>>>全く理解せず見当違いな事を言う人=全く理解せずただ多数派に同調する人
>>693 マルチだか転載だか知らんが、元ネタのところじゃ一夜にしてすげーことになってるな
この前の騒動といい、最近あそこはどーかしてるよな
条件後出しとボーンを無制限に出す話から、以前暴れたアセンブラ厨と同一人物。 最後にシェーダでボーンが4つしか使えないと思いこんで、それを指摘されて消えていった。 BBXでもやることは変わらない。
いやあれはアンチ後出しジャンケンが悪いよ、最初から煽り腰だ 馬鹿な意見とか、お節介な意見とかは構わないが、 2chのノリを他に持ち込むのだけは勘弁
それにしても両方痛いIDだね。 下の方のレスが、対岸の火事見物っぽくてワラタ。
とりあえず、まとめると 「頂点シェーダが動くかどうかはグラボの性能とは関係ない。」 だからとりあえず頂点シェーダを使わない選択肢ってのはいまのところ無い っつーことで。 で、なにやら複雑そうなんだけど、実際はそんなことない。 自分でできなきゃ、どっかの人が作ったサンプルやらコピって勉強すれば十分できるようになる。 HLSLで組まないとだるくてやってらんない。
全然知らんのだけど、バーテックスシェーダを使う = VertexBuffer作って頂点転送するってことでいいの?
712 :
名前は開発中のものです。 :04/12/10 00:06:23 ID:W/W3hlMT
シェーダーでなくても固定機能パイプラインでも出来ちゃうエフェクトってあるじゃん。 皆さんはこういうの書くときどうするの? とりあえずステートで書く? それとも全部シェーダー?
>>712 全部シェーダーの方が楽だと思う。
固定機能パイプラインは鬼面倒臭い。
誰もあんなもの使いたくない。
誰がステートの管理やるのかと。
馬鹿じゃねぇのかと。
714 :
名前は開発中のものです。 :04/12/10 00:19:49 ID:anReHWWX
全然知らんのだけど、 プログラマブルシェーダって、例えば シーン中にライトをOn/Offしたりとか、ステートが動的に変化する場合でも 一つのシェーダを使いまわせるんですか? それとも、ライトの数に応じたシェーダを複数用意しておいて切り替えながら使うとか、 非効率を覚悟で常にライトの最大個数用のシェーダを使うとか、 ライトは一つに制限したりとか しなきゃいけないんですか?
>>714 それはシェーダの組み方次第。
自分で自由に組めるから、組んでみて自分で最適と思うものにすればいい。
716 :
名前は開発中のものです。 :04/12/10 01:48:52 ID:W/W3hlMT
>>713 やっぱそうなりますかね。
必ずしも固定だからといって対応ハードが増える訳でもないですしね。
>>714 やっぱ用途に合わせてシェーダーを多数用意しなければならないのは
今もかわってないと思う。フラグメントとかいろいろあるけど面倒臭いしね。
俺はリテラル定数で条件分け出来るシェーダープログラムを1個作って
用途別にテクニックを複数作る方法を採用している。
頂点ライティングだと最大ダイナミックライトが3つ、グローバルライトが2つの組合せで
結構多くなるな。ピクセルライティングだと双方最大1つづつの組合せ。
>頂点ライティングだと最大ダイナミックライトが3つ、グローバルライトが2つの組合せで ダイナミックライトが4つ、グローバルライトが1つの間違い
頂点シェーダって、昔からソフトウェアエミュレーションで動いたっけ?
俺は割と早くからシェーダ使ってるけど 固定機能のほうを馬鹿にする奴はそれはそれでムカつくんだが
普通は馬鹿にするほうが理由を言うもんだろう。
技術的に固定機能が優れている点をあげよ、ってことならそれは無茶よ。 今は俺もシェーダ使ってるし、もう固定機能には見切りを付けてるもん。 最終目的は映像を表現することで、それが出来るなら手段は何でもいいんじゃない。 話聞いてるとどれもそう手間は変わらなさそうな内容だし、そこまで貶す必要もないと思った。 世の中頂点シェーダですらできないような頂点処理もあるわけだし、 馬鹿にするのはそういうのを無理して固定機能でやるとき位にしてやってくれw
>>722 同意、まぁどっちの派にしろ、自分が慣れた方しか認めないのは見苦しいね。
固定の良いところか…ある程度決めうちできるゲームは良いけど、
アプリなんか作ってると固定の方が楽に感じることはあるかな。
(今使える)OpenGLと共用する時とか。
OpenGLと共用なら、固定だと行列の並びが異なるので逆に使いづらい気がする。
基本的には漏れも頂点シェーダを使う派なんだけど、あえて固定パイプラインの利点を 上げるとすれば、プログラマブルでないTnLを持ってるGPUでは固定パイプラインを使った ほうが高速ってことはないかい。GeForce MXとかそうじゃなかったっけか。 測定したわけじゃないんで、間違ってたらごめん。
>>725 ベンチ見るかぎりでは平均8.2%速いってさ
TnLが効く古いビデオカードに最新のCPUという構成の場合、使わない方がはやい。 ただしCPUの空きが増えるので、使った方が負荷は軽くなる。
728 :
名前は開発中のものです。 :04/12/11 20:11:30 ID:ENo3zpOh
STGのような多数のオブジェクトを表示するゲームで 2D描画にDrawPrimitiveUpを使っています。 基本的な動作としてはオブジェクトごとに 動きを計算し 行列の計算→D3DXMatrix系の関数 描画時に SetTransform → DrawPrimitiveUp を毎フレーム繰りかえすという形でいいんでしょうか? 無駄が多い気がするんですがほかにいい方法は思いつきません。
>>728 明らかに無駄だな。
必要ねーぞ。
マジで。
SetTransform必要ないだろ。
だってTL_VERTEXとかそんなんじゃねーの?
>>728 上でも議論があるが、Up じゃなくて UP な。
3Dの複雑なモデルならともかく、2Dのキャラクタで、
DrawPrimitie系メソッドを「オブジェクトごとに」呼び出すのはいけてない。
UP系を使ってるんなら、
一つの頂点配列に複数のオブジェクトで使う頂点をまとめて格納しておいて、
頂点の座標を全て書き換えてから一度だけDraw。
無駄は無駄だが、どうせ今の環境ではその程度改善したところで、 全体のパフォーマンスは大して変わらない。 細かいことを気にしている暇があったら、まず全体を完成させて、 後からチューニングしても遅くない。
732 :
728 :04/12/11 20:51:15 ID:ENo3zpOh
>>729-731 ありがとうございます。
他のやり方があるということがわかっただけでもよかったです。
全体完成させてからいろいろ改良することにしてみます。
まてよ。 固定機能パイプラインのときって2D描画(3D空間に無い)ってどうやってやってたんだっけ?俺。 いまのソースだとシェーダに値を渡してるけど、固定機能だと値を渡すようなものってないのか?もしかして。 頂点バッファを毎フレームごとにロックしたりしてたんだっけ?いや、それは無駄だよな。うーん?ん?
毎フレームロックするようなときのためにUsage.Dynamicがある
スプライト毎にUP垂れ流しでも、ほとんど速度は変わらないっていう実験結果がどこかにあったような すこし昔の話だが
アホみたいな質問ですがご容赦ください。 DirectX9 SDKと日本語ドキュメントをDLして インストールしたところ、日本語ドキュメントは SDKとは別のフォルダへインストールされました。 で、日本語ドキュメントのインストールされた フォルダを見てみると、拡張子がHx○というファイル が複数できましたが、クリックしても実行できない もののようです。このヘルプはどうやって見るもの なのでしょうか?開発環境はVC++.netです。
>736 英語ドキュメントのショートカットのプロパティみてみ 拡張子何になってる?
738 :
736 :04/12/12 02:28:00 ID:tfjyzDT/
レスどうもです。 英語ドキュメントのショートカットとはどこにあるのでしょうか? SDK本体のフォルダの中のDocumentationというフォルダの 中には英語ドキュメントらしきものがありますが、ショートカットは ありません。ここには、Hx○がいくつかと、chmというコンパイル済み HTMLファイルがあります。これはクリックして読めるようですね。
>738 >英語ドキュメントのショートカットとはどこにあるのでしょうか? スタート→プログラム
DirectX8.1でフルスクリーンモードにしてテクスチャを表示すると 勝手にアンチエイリアシングが掛かってしまうようなのですが 何が問題なのかわかりますか? この現象が起こるのは今のところ Radeon9800PROだけです。 スクリーンショットを撮るとボケてない画像が撮れます。 Windowモードならボケないようです。
Visual C++.net 2003 をインストールし、DirectX9.0cSDK(最新版)を ダウンロードしインストールしようとしましたが、何回やっても インストール進行状況の緑のバー(?)が途中で左へ戻ってしまい、 your system has not been modified to complete installation at another time, please run setup again. と表示されて失敗してしまいます。 いろいろヘルプドキュメントやネットで調べましたが解決方法はわかりませんでした。 OS は XP Home Edition Service Pack 2 です。
742 :
736 :04/12/12 13:24:13 ID:tfjyzDT/
>>739 どうも。
リンク先のファイルはchmという拡張子でありました。
しかしJPNドキュメントにはないんですよね・・・。
>>742 みつかりにくいんだけどたしかどっかにあったよ。
拡張子はchmだからマイコンピュータを拡張子で検索かければそのうちあたんじゃねぇの?
>>742 DX9_Oct04_JpDoc.exe を展開するとその中に入ってる。
ちなみに同じフォルダに DirectX9Oct04JpnDoc.msi ってのがあって
これをインストールすると、確かに *.Hx○ってファイルができるんだけど
これって何なんだろうね。自分はアンインスコした。
>>744 統合環境からF1でヘルプを見た時に、DX9用のヘルプが出るようになる。
MSDN用。
つまりVC++.NETのヘルプからは 見れないということでしょうか? つまりは、いらないってことか。
747 :
740 :04/12/12 15:30:54 ID:BNsUi8qI
液晶モニターを使ってるのが原因なのかも、という話になってきました。 手元に再現する環境がないので色々面倒です・・・。 EFZは「640*480で起動」にするとボケないが 320*240で起動するとダメだというので 単純に解像度を640*480にしてみたんですが、解消されず。 うーん、困った。
748 :
744 :04/12/12 15:39:00 ID:lh5zcFYt
>>745 VC6使いには縁が無さげだね。サンクスコ。
こういう偶然を必然と脳内変換しちゃう人は騙されやすそうだな 本人ならかわいいもんだが それはともかくキタ━━━━━━(゚∀゚)━━━━━━ !!
>740 アンチエイリアス? バイリニアじゃなくて? D3DTEXF_POINT(だっけ?)つかってもだめってこと?
752 :
740 :04/12/12 23:03:56 ID:BNsUi8qI
>>751 それ以前の問題でした・・・
ドット数比が5:4の液晶ディスプレイ使ってるのが原因でした。
画面サイズを変えないでD3DTEXF_POINTつかって
引き伸ばし表示するモードをつけることになりそうです。
むむ。 Present(&src, &dst, hWnd, NULL); で srcの整数倍した矩形を dst に設定してみたら D3DTEXF_POINTを指定してあってもエッジがボケてしまいます。 この部分でバイリニアフィルタが掛からないようにすることは可能でしょうか?
>753 よくわからんが、テクスチャの領域外をエッジのに指定するフラグなんだっけ? それつかってみたら?
755 :
名前は開発中のものです。 :04/12/13 00:37:02 ID:O19Oklaz
質問でちゅ。 RPGなどのゲーム中に出せるメニュー画面(戦闘中・フィールド)についてでしゅが 1.スプライトで表示 2.UV座標に応じて4つの頂点を指定して表示(rhwの設定のやつ) 3.カメラ設定に応じて4つの頂点を指定して表示(座標変換有り) の3つが僕の現在ある知識ではできるのでちゅが皆さんはどれ使ってましゅか? 他に方法あったりしたらそれも教えて欲しいでチュ
自分は2かな? ゲームによっては 半透明のメニュー画面があるし 他の人がどうしてるのか、気になるなぁ BBX見たらスプライトでやってる人も居るようだ
>755 1と2は同じことだろ? あ、D3DXSPRITEとかいうやつか あんなん使うな 2Dのメニュー表示だったら3の意味はなし
そもそも1-3全部が中身はDraw*Primitive*()なんだが。
>758 さすがにそれはわかって…るよな?>755
うほw俺は知らんかったw ためになった。 でも、Spriteを触ることは無いだろう
761 :
753 :04/12/13 10:45:56 ID:65Upxz8j
>>754 ちょっと探した感じでは見つからなかったです。
今回の件とはちょっと違うかな・・・?
IDirect3DDevice8::Present の説明に
「必要に応じて、転送元矩形内のピクセルをターゲット
ウィンドウのクライアント領域の転送先矩形に転送するために
拡大処理が適用される。」
と書いてあるので、この部分の拡大処理でバイリニアフィルタが
適用されているようですね。
ここを制御できればいいんですけど・・・。
762 :
753 :04/12/13 16:57:51 ID:65Upxz8j
色々調べたんですが、 レンダリングターゲットをテクスチャにして描画 ⇒テクスチャからバックバッファに拡大して書き込み ⇒Present(NULL,NULL,NULL,NULL) とすることでうまく行きそうな予感・・・? #今まではバックバッファに直接描いてました。 Present()内部で行われる拡大処理を制御するのは無理なのかな。
>762 あとはベタだが0.5ピクセルずらして張る サイズ256だったら一番端のUVは 1,0じゃなくて 1.0f - (0.5f / 256.0f) 0.0fのところも (0.5f / 256.0f) とか
764 :
753 :04/12/13 22:08:26 ID:OHILwBcG
>>763 0.5ドットずらす方法は既に実践済みなんですよ。
結果はずらしてもずらさなくても同じでした。
762に書いた方法で実装してみたら結構遅くてショック。
>0.5ドットずらす方法 つい最近まで流行ってた、TOWNSとかのハードウェア0.5ドットスクロールのことかと思った。 あれは滑らかだったからなー。
766 :
名前は開発中のものです。 :04/12/14 17:10:23 ID:52nIwGgv
どうも755でちゅ。 レースゲーム中のメーターと針を表現したいのでちゅが、 メーターはRHWを設定するので描画してるんでちゅが針のほうをRHWで 描画してるんですがRotationXでしたっけそれでは回転できないんでちゅが どうすれば針を回せますか?
rhwだったら自分で回転後の座標を指定すればいいだけ。
RotationX? RotationZじゃないか?
だから素直にDrawPrimitive使えよ。UPでもIndexedでもいいから 出来ないヘタレがプログラム組むな反吐が出る
そんなのも分からずレースゲームを作るっていうんだからたいしたもんだ
なんってったってゲ製板だからな
なんてったってアーイドー なんてったってアーイドー
766擁護じゃねぇけれど、よくわかってない奴だっているんだろうから、教える必要は ないとしても叩かなくてもいいんじゃないか?769は少し言い過ぎかと思う。
>>773 お前の書き込みと俺の書き込み、どちらに中身があるかもう一度読み返せ
本当にお前の頭の中は空っぽだな
>766 SetTransformはやってるよな?
>>766 は先にブロック崩しでも作っとけ。
>>774 はヘタレ質問見るのが嫌なら鬱だ氏のうスレ行っとけ。
だからトランスフォーム済みの頂点にトランスフォームがかかるわけ無いだろう。 なんでrhwでSetTransformとかRotationXが出てくるんだ? トランスフォーム済みを使うなら、自分で位置を計算しておけばいいだけ。 しかもその程度の計算で行列を使う演算の必用など微塵もない。 既存のシステムに依存して、基本的な計算すら忘れ去ってないか?
rhwなら、こんなんか? 回転 P(x, y) dX = x * cosθ - y * sinθ; dY = x * sinθ + y * cosθ; 平行移動って足せばよかったっけか?w グーグルで 回転 2次元 で調べればいっぱいでてくるよ。 rhwの2次元にRotation???は使ったことないなぁ
>777 そりゃそうだ 久しく使ってなかったから忘れてた
>>778 D3DXにこの計算用意されてなかったか?
なんで2D描画用にカメラ行列を再設定しないんだ?
トランスフォーム済みの頂点だから
RHWだぞ、お前分かってるか? RHWだぞ、お前これ何の略だ?
あ、実は俺判ってないかも>RHW
785 :
名前は開発中のものです。 :04/12/14 23:30:20 ID:if82LLjO
固定でスキニング出来るようになったので、次はシェーダでと思い 朝からやってるのですが、ぴくりとも動いてくれません メッシュは自前で持っていてDX系の物は使っていません。 .fxはDirectX9のサンプル、SkinningMeshの物をそのまま使っています SetMatrixArrayで渡す行列は、固定の時と同じ行列で良いのですよね? (オフセット行列に、現在の姿勢行列を掛けた行列です) シェーダで頂点色を変えたりとかは出来ています。 Weightが一つのボーンに対し100%(1.0f)だと、なんの行列を渡しても初期位置のまま微動だにしません。 2つ以上のボーンに対し影響を受ける頂点は、2つ目のウェイトの割合分、無意味に縮みます。縮むだけで動きません。 いやもうこれでは解答のしようも無いとは思うのですが、質問せずにはいられない状態でして・・・。
サンプルのはシェーダでちゃんと動いてるの?
Right-hand-system Height Width
788 :
785 :04/12/15 00:02:46 ID:pCTFG4k0
>>786 お付き合いありがたいっす
悔しいことにサンプルの方は、シェーダはもちろんどのモードでも問題なく動いています
言われて今、試しにHELにしてみたのですが、やはり挙動は変わらずじまいです
データの持ち方が悪いのかなぁ…
>>784 reciprocal of homogeneous W
>>788 それならサンプルと同じようにやれば動くのでは?
tinyタンはしぶといからな がんがれ
>>789 同じようにやっている…はずなのですがどうにも
明日もう一日頑張って駄目でしたら、ソース見てやって下さい
皆さんレスありがとうございました
>>790 声援感謝っす
あれほど可愛かったtinyたんが、今は中居正広に見えてきましたよ…
ワロタ
ああ、RHWなのか。 いつもRHW使わないでビュー行列とプロジェクション行列を 再設定して2D描画やってるよ。RHWの利点は行列演算が 入らない分高速になること? で、RHWって何の略だよ。
>793 Ruri ha H na Wife
質問です、簡単なネット対戦もの作りたくて DirectX SDK (December 2004)インストールしたんですが DirectPlayのサンプルがついてない・・・ DirectPlayの機能に変化がないからのようで どのバージョンならば付いてますでしょうか?
>>795 Summer 2003 にはある。
Summer 2004 以降は無い。
あとサンプルが無いのは機能に変化が無いからではなく
> DirectPlay は不適切となり、旧式のものとみなされています。
> DirectPlay ランタイム コンポーネントは、オペレーティング システムでサポートされていますが、
> ヘッダー・ライブラリ・ドキュメントは将来のリリースの SDK で削除されるでしょう。
> 既存のアプリケーションを修正するとき、このコンポーネントへの依存性を削除することを強く推奨します。
という事なのでこれから作るなら
DirectPlay 使うのは止めたほうがいいと思う。
>>796 DirectPlayの替わりは何になるの?
799 :
798 :04/12/15 20:32:53 ID:pCTFG4k0
失礼、Bulid環境はVC6、DirectX9.0です
>797 WinSockでは?
802 :
798 :04/12/15 22:13:58 ID:pCTFG4k0
>>801 うひょー修正ソースまで!感激っす!
元のソースにも適用してみましたが、うにょうにょ動いてくれて思わずガッツポーズ!
なるほど頂点宣言ですかぁ、これからじっくりこれについて調べてみます
いや本当に、丸二日寝ても覚めても悩んでいまして…ありがとうございました!
ソース見てくださった他の方にも感謝っす
なんだDirectPlay消えるのか。 どうにもうさんくさいと思っていたら。
そんあ! WinSock使えってのはマジでいってんのかと。
まぁでもDirectPlayよりはWinSockのが俺は使いやすいな。 非同期I/Oとか結構便利だし。
まぁDirectPlayが便利ってよりはサンプルのコードが便利だったんだけどな
ボイチャ機能はどうなんのよ?自分で実装?
ボイチャはマジで面倒くさいな・・・ リアルタイムに自分でエンコードして転送すんのか・・・ マイクからの入力はDirectSoundで取れるからいいけどOggにでもエンコすっか・・・?
ロングホーンあたりで標準APIに似たような機能が実装されるのかもね。
VertexShaderを使って単純なVertexBlendをやっています。 VSを割り当ててDrawIndexedPrimitive()したあとに 頂点ブレンドされた結果のVertexBufferを取得することは できますか?
>>810 ProcessVertices でいけるかも
DirectSoundBufferをLOOPさせてストリーミング再生してるんですが 新しいデータの補充をやめると同じ音が鳴り続けます。 そこでDirectSoundBufferをStopさせずにその音を消す上手い方法はありませんか?
無音を送れ。
>>813 それは考えた。
出来れば無音のwavファイルを用意してそれを読み込むってのは避けたい
もしかしてCreateSoundBufferしたてのバッファをどこかにコピーしておくってのはあり?
815 :
812 :04/12/21 20:42:14 ID:VealJqOr
>もしかしてCreateSoundBufferしたてのバッファをどこかにコピーしておくってのはあり?
↑で出来た。とりあえず
>>813 サンクス。
でも、もっといい方法あったらよろしく。
だから、無音のデータ 16bitだったら0、8bitだったら128を書き込んでやれば良いんじゃないのか?
817 :
812 :04/12/21 22:00:05 ID:VealJqOr
>>816 それは知らなかった!memsetで事足りるね。さんくす。
8bitでも0じゃねーの?
8bitのとき0埋めるとノイズになった おためしあれ
>>818 ヘルプくらい読めよチンカス、
128って書いてるだろ
signed charなら0、BYTEなら128って事じゃないのか?
違う
>>821 そんなエサに釣られるクマーっ!(AA略)
あーそういや符号なしの128=符号付きの-128だったんだな。 となるとなんでそういう仕様になってるんだろな
真性ですな
真性じゃなくて、単に工房以下なだけっしょ
8bitだと128なのに16bitだと0を入れる理由ってそんなに簡単なのか・・・ スマン教えてくれ、ヘルプ見ても見つからん
unsigned char と short だからでしょ。
μ-LawとA-Lawで違わなかったっけか。まぁ今どき8ビットはやめれと言いたいが。
なんで違うのよ? サウンドバッファの話だよ。音声ファイルの話じゃないよ。 μ-LawやA-Lawは関係ないでしょ。
8bit => 0〜255 16bit => -32768〜32767 ということになってるから。 まあ別に中心値じゃなくても、同じ値が続く限り無音状態ではあるけど。
>>832 俺が聞きたいのはなんで8bitが-128〜128になっていない?ってこと
>833 知らん。歴史的理由とかじゃないの? 後細かいことを言えば-128〜127な。
>>833 だったらトンチンカンな事書いてないで
最初からそう聞けばよかったのに…
>>835 何がどこどうトンチンカン?お前の読み方がトンチンカンじゃないっていう保証がどこにある?
とか言い出すやつもいるから煽るのはやめてくれ
バカがたくさんいるスレですね 見渡す限りバカばかり
頭のおかしな人の判定基準 ・「みんなの意見」「他の人もそう思ってる」など、自分の意見なのに他人もそう思ってると力説する人 他人が自分とは違うという事実が受け入れられない人です。自分の意見が通らないとコピペや荒らしなど 無茶をし始めるので見かけたら放置してください。 ・根拠もなく、他人を卑下したり、差別したりする人、自分で自分を褒める人 他人を卑下することで自分を慰めようとする人です。実生活で他人に褒めてもらう機会がないが プライドだけは高いとか、匿名の掲示板しか話し相手のいない人です。可哀想なので放置してください。 ・自分の感情だけ書く人 「〜〜がムカツク」とか自分の感情を掲示板に書くことに意味があると思っている人です。 何がどのようにムカツクのか論理的に書いてあれば、他人が読んでも意味のある文章になりますが、 そういった論理的思考の出来ない人です。もうちょっと賢くなるまでは放置してあげてください。
どの値で埋めても無音になるんじゃないのか?
直前のデータが0で終わってたらノイズが入るだろ
841 :
名前は開発中のものです。 :04/12/23 23:26:07 ID:Zme+tFGw
直前のデータが0以外で終わってれば0で埋めてもノイズ出るだろ 同じ事が言えるわけだが・・・('A`)
スピーカーに余計な電圧がかかり続ければ、変化しなくてもノイズは発生する。
821 名前:名前は開発中のものです。 本日のレス 投稿日:04/12/23 18:09:42 axgNz1Fg
signed charなら0、BYTEなら128って事じゃないのか?
824 名前:名前は開発中のものです。 本日のレス 投稿日:04/12/23 18:58:07 axgNz1Fg
あーそういや符号なしの128=符号付きの-128だったんだな。
となるとなんでそういう仕様になってるんだろな
827 名前:名前は開発中のものです。 本日のレス 投稿日:04/12/23 19:26:18 axgNz1Fg
8bitだと128なのに16bitだと0を入れる理由ってそんなに簡単なのか・・・
スマン教えてくれ、ヘルプ見ても見つからん
833 名前:名前は開発中のものです。 本日のレス 投稿日:04/12/23 20:15:56 axgNz1Fg
>>832 俺が聞きたいのはなんで8bitが-128〜128になっていない?ってこと
836 名前:名前は開発中のものです。 本日のレス 投稿日:04/12/23 20:54:28 axgNz1Fg
>>835 何がどこどうトンチンカン?お前の読み方がトンチンカンじゃないっていう保証がどこにある?
とか言い出すやつもいるから煽るのはやめてくれ
840 名前:名前は開発中のものです。 本日のレス 投稿日:04/12/23 23:12:17 axgNz1Fg
直前のデータが0で終わってたらノイズが入るだろ
最初に0でいいんじゃねーの?と言い出したのはオレなんだが、その後はおれじゃねーよw Winじゃサウンド扱ったことなかったのでちょっと聞いてみただけだったんだが。 Winじゃどうなのかしらんが、SEやBGMの最初と最後はかならず無音(16bitなら0、8bitなら0x80)にしないと そこから他のWAVEに切り替えた時に急激に波形が変化してプチノイズがでる場合がある。 ADPCMを搭載している場合はデータ自体が最後に使用された値への補正値になるのでどんどん音が小さく なったり逆に大きくなったりする場合も。 と、話の流れを変えてフォローしてみる。
ごたごた言わずにDirectSoundサンプルのStreamDataを100回嫁。 まあ実用するには(+д+)マズーな部分もあるが、0 か 128 かはわかるだろ。 wavファイルが無音で終わってないときはプチっとなるので、 ご丁寧にやるなら最後の振幅値をだんだんsageてバッファを埋めるのも。
「そうなってるから」じゃ納得できないやつがいるからここまで伸びたんだろ
8ビットは伝統的に0〜255、中央値127or128。 音響処理をちょっとかじれば分かることだが、波形の数値って 同じ値が続いてる状態だと音は出ないのよ。スピーカに1ボルトの 電圧がかかりっぱなしでも何も音は出ない。抵抗器で熱が生まれるだけ。 だから、8ビットwavで全データが255でも0でも、音はでない。 まあ、鳴らした瞬間と鳴り終わる瞬間に「ボコッ」ってスピーカが 1回振動する音が鳴るけどね。それだけ。
高校で物理をやれば、というより音が波だと知っていればすぐにわかること
>>847 ちがうんじゃん?
疑問に思ってるのは-128から127までになっていないことに対してじゃね?
16Bitと同じように真ん中0にしろよ!チンコ!
って話に聞こえるけど。
まあ、それはそうなってるからしょうがねぇんじゃね?
としかいいようがないけどw
>>849 >ちがうんじゃん?
関東弁まるだしだな。プッ
関東弁のなにが面白いのかが分からない。 標準語で話さない日本人は差別対象な脳内ルールなのか?
ちがうじゃん ちがうてー ちがうでえ ちがうぼん
さざえじゃん ささえてー ささえでえ さざえぼん
>>851 だって、普通に考えて、方言で話されると意味が正確に通じないよ。
全国の人が見る場所で方言を使うのはナンセンスだとつくづく思う。
俺は「ちがうんじゃん」のニュアンスがいまいち分からない。
「ちがってるんでしょ?」くらいの意味かな?
DirectXのお話に戻ろう。
正確には関東弁じゃなくて、横浜弁だ。それも一部だ。 或いはただの若者言葉だ。方言じゃなくて おっさんのジェネレーションギャップだろ。
俺は関東からは遠く離れたところに住む10代だが、 「〜じゃん」などという日本語を話す人は見たことないぞ。
ロンドンブーツの番組でも観てみたらどうだ (俺の嫌いな)淳あたりが使いまくってるから 放送してないならしょうがないが
まあ確かにテレビでは良く聞くな。民放は2つしか無いけど。
CS放送見れば?
外国人が見てる可能性は考えないのか。
うん
SEの話に流れを変えようと思ったんだがスレ違いなのでやめた。
864 :
名前は開発中のものです。 :04/12/25 23:45:35 ID:iPPTHJZt
BBXに伝説の男が帰ってきたな。 また荒しを巻き起こすのか?!
DIrectSoundBufferにリバーブエフェクトをかけたとき、 バッファに読み込んだ波形がリバーブの残響時間に比べて 短いときには…という話は、スレとは関係なさそうなのでやめた。
DirectX9.0c(December2004)入れたんだが VC6sp6で使おうとするとDShow.h内のstrsafe.hでstrcpy等が 無効にされちゃうわけけどstrncpyとかに直さないとだめですかね。 今は無効にされたやつをもう一度#undefしてからstdio.hを呼んで 対応してます。
直さなきゃダメだと思う。ライブラリ内で無効にされてるって事は本来は使えないってことだから それで動いてもたまたま動いてるだけって事になるんじゃないか? SDKのヘルプ等になんらかの記述があるなら別だが。
DecemberからはVC6サポート外だと思うから、 Octoberにも戻した方が無難。
無理やり使ってもいいことなさそうなんで直します。
Dx9SDKSummerからサンプルで提供されているEmptyProject、あれを実行すると出力ウィンドウに D3DX: Matrix should be 16-byte aligned for better performance という文が出ます。 構成をReleaseにすると消えるようなので気にしなくてもいいのかもしれませんが、自分が今まで組んでいたプログラムでは出力されていないので気になります。 この警告(?)がどういうことなのかご存知の方はいらっしゃいますか? ゲ板で聞くものなのか微妙ですが、一つよろしくお願いします。
>>869 ソースプリーズ
OctからExtra扱いなのは分かるし、
Decemberの次からWindows2000がサポート外になるのは明文化されてたけど、
VC6についての言及はあった?
あったと思うが。.NETのからみもあるしもうすぐXp以降が標準になるぞー。
>>873 http://www.microsoft.com/japan/msdn/directx/dxreadmej.asp コンパイラ サポート
このリリースを使った C++ アプリケーションの開発には、Visual Studio .NET 2002 以降が必要です。
Visual Studio 6 はサポートされていません。
DirectX Update を使ったマネージ アプリケーションの開発には、Visual Studio .NET 2003 と .NET Framework 1.1 が必要です。
64ビット アプリケーションの開発には、Microsoft Platform SDK が必要です。
64ビット サンプルをサポートする DirectX SDK はすべて対応する sample_makefile.x64 を持っています。
これらの makefile は AMD64 および Intel64 と互換性があります。
>>875 マジで助かる、ありがとう
さてさて、そのうち一気に金がかかるな…
877 :
名前は開発中のものです。 :04/12/26 21:20:20 ID:GuubXgM+
ダイレクトインプットを使おうと思って、ネット上からサンプル漁ってやってたのですが、 変数の宣言のところでエラーが出ます。 LPDIRECTINPUT8 lpDI; のところで、 宣言の構文エラー というエラーメッセージが出てコンパイルが通りません。 ググってたら2chの過去ログらしきものに行き当たって、 そこではVCに最初から入っている "dxguid.lib" というライブラリが原因だったようですが、 俺はBCCでやっているので心当たりがありません。 環境は、 BCC + DirectX SDK October 2004 + BCC用のDirectSDKのライブラリ(Decenber 2004 用) です。 リンクしているライブラリと、インクルードしているヘッダは以下の通りです。 ○ライブラリ d3d9.lib d3dx9.lib dxguid.lib dxinput.lib dxerr9.lib ○ヘッダファイル windows.h d3d9.h d3dx9.h dxerr9.h dinput.h よろしくお願いします。
DirectInput, DirectSound, DirectMusicは保守モード DirectPlayは旧式 DirectShowはプラットフォームSDKへ移動(昇格?) 結局残るのはDirectX Graphicsだけかい。
WGF
まあLonghornが出ればDirectX Graphicsさえも意識せずに使えるようになるんだろうな。
882 :
名前は開発中のものです。 :04/12/27 00:59:40 ID:UQRS3mEo
VRAMの使用容量と空き容量を取得したいです。どうすれば良いですか?
883 :
◆MMI5xmH9jw :04/12/27 01:21:24 ID:ECHGqOMQ
うんがんがれ
884 :
名前は開発中のものです。 :04/12/27 01:53:59 ID:UQRS3mEo
どのメソッドを用いれば取得できますか?教えてください!
>>882 D3DDEVINFO_RESOURCEMANAGERは?
俺は使ったことないし使うつもりもないから
YOUが検証してくれ
886 :
名前は開発中のものです。 :04/12/27 03:42:45 ID:UQRS3mEo
わたしのMobility RADEON 9600では
IDirect3DDevice9::CreateQueryでD3DERR_NOTAVAILABLEと怒られました
VRAMチェッカーというフリーソフトだとちゃんと取得出来ているようです
http://homepage3.nifty.com/YJ/ どなたかちゃちゃっと構造解析して教えてください!
888 :
名前は開発中のものです。 :04/12/27 04:53:31 ID:UQRS3mEo
CreateDeviceのBehaviorFlagsにD3DCREATE_DISABLE_DRIVER_MANAGEMENTを セットしてデバイス作成の後、先ほどのようにCreateQueryを試行しましたが D3DERR_NOTAVAILABLEが返ってきてしまいました。 教えていただいたようにflipcode内でも検索してみましたが ビデオメモリサイズの取得は先ほどのスレッドしかヒットしませんでした。 もっと教えてください!お願いします。
ヘルプぐらい読め
890 :
名前は開発中のものです。 :04/12/27 09:25:01 ID:EFQNPr54
DirectX 9.0 プログラマーズ リファレンスを読みました。 しかしこれにも同じことが書いてあるばかりでした。 他に読むべきヘルプはあるのでしょうか? わたしはそのヘルプを知りません。 他に有用な情報をお知りなのでしたら、どうか教えてください!
>>890 が言いたいのはプログラマーズリファレンスってのを読んだけど
散々がいしゅつのことしか書いてなかったぞ、あとなんか読むべきものはあるか?
ってことだろ。
国語の教科書
>>893 それだと母国語の教科書を読みふけってしまう可能性がある
895 :
シギュン :04/12/27 14:02:05 ID:gzSloWFz
2ちゃんねるの、皆様、始めまして。シギュン、といいます。 ダイレクトエックスを、やりたいと思っています。 マイコロソフトVISUALC+を使っています。 パソコンはVAIOです。ソフトウエアはウィンドウズです。 でも、遊び方が、よく分かりません。まず何からやればいいのか教えてください
三国人の
>>895 へ。まずは日本語を勉強しましょう。
>>886 のツールってDirectDrawから取得してるんじゃないの?
あとD3DQUERYTYPE_RESOURCEMANAGERはデバッグランタイム専用って書いてない?
899 :
877 :04/12/27 23:54:26 ID:mc8fGTfI
>>881 こんな感じです。
エラー E2141 main.cpp 76: 宣言の構文エラー
エラー E2141 main.cpp 77: 宣言の構文エラー
エラー E2268 main.cpp 227: 未定義の関数 'DirectInput8Create' を呼び出した(関数 InitDI(HWND_ *) )
エラー E2451 main.cpp 227: 未定義のシンボル IID_IDirectinput8(関数 InitDI(HWND_ *) )
エラー E2451 main.cpp 227: 未定義のシンボル lpDI(関数 InitDI(HWND_ *) )
エラー E2451 main.cpp 231: 未定義のシンボル DI8DEVCLASS_GAMECTRL(関数 InitDI(HWND_ *) )
エラー E2451 main.cpp 235: 未定義のシンボル lpDIDevice(関数 InitDI(HWND_ *) )
エラー E2451 main.cpp 235: 未定義のシンボル dfDIJoyStick(関数 InitDI(HWND_ *) )
エラー E2451 main.cpp 273: 未定義のシンボル lpDI(関数 _stdcallEnumJoystickCallback(const DIDEVICEINSTANCEA *,void *) )
エラー E2451 main.cpp 273: 未定義のシンボル lpDIDevice(関数 _stdcallEnumJoystickCallback(const DIDEVICEINSTANCEA *,void *) )
エラー E2451 main.cpp 303: 未定義のシンボル lpDIDevice(関数 _stdcall EnumAxesCallback(const DIDEVICEOBJECTINSTANCEA *,void *) )
エラー E2451 main.cpp 324: 未定義のシンボル lpDIDevice(関数 ReleaseDXG() )
エラー E2451 main.cpp 326: 未定義のシンボル lpDI(関数 ReleaseDXG() )
エラー E2451 main.cpp 412: 未定義のシンボル lpDIDevice(関数 GetJS() )
度々出てくる lpDI、lpDIDevice というのは、76、77行目で宣言している変数です。
たどり着いたのはそのスレじゃなくて、「鬱だ氏のう」というム板のほうのスレッドでした。
900 :
877 :04/12/27 23:59:54 ID:mc8fGTfI
>>899 いや、そのスレッドでした。
俺が検索したときにかかったのはそのスレの
>>186 辺りでした。
>>899 ヘッダ(dinput.h)が正しくインクルードされていないようにしか
見えない。あと多分dxinput.lib は dinput8.lib の間違い。
(BCCでは合ってるかも知らんけど)
>899 なぁDirectXのインクルードファイルのあるディレクトリはどうやって指定してる?
903 :
877 :04/12/28 01:34:22 ID:jn2YTfTS
>>901-902 ありがとうございます。
インクルードファイルのディレクトリ指定の確認をしたついでに
BCCに最初からついてるヘッダ一覧を見たらdinput.hがありました。
bcc32.cfgでBCCのインクルードファイルのほうが先に読み込まれていたのが原因のようでした。
bcc32.cfgのインクルードディレクトリの記述の順番を変えたらうまくいきました。
結局
>>881 のスレッドの
>>186 と同じことでした。
お騒がせしました。
>>903 おまいはDirectXより前にCを勉強汁。
エラーメッセージはコンパイラの気持ちになって考えろ。
よーし、お兄さんもDirectX勉強しちゃうぞ〜。
俺もいつまでもWEBオンリーと言うわけにはいかねぇからな。
とりあえず、無料で手に入るBCC+DirectX9.0で基本を学ぼうと思う。
いや、別にVisual〜.NETはあるんだが、まぁ、MS総合開発環境は性に合わんつうことで。
個人的にはC++よりC#でやりたいが、いまいち構成の作り方とかがわからんし、参考となるページがすくない。
今日はBCCの環境を構成してDirectXがちゃんと動くことを確認した。
>>903 こんな?
1111011100000111011000001101111
1110111111011110101111011110111
1110111111011100000111011110111
1111011111011011111011011101111
DirectX+Shaderのチュートリアル的なサイトを立ち上げようと思っているんですが、 既にそういうサイトでイイトコあったりします?いや、なんか、内容が被ると嫌だなと。 一応、有名どころのt-potとは被らない内容の予定です。
908 :
名前は開発中のものです。 :04/12/29 04:57:06 ID:TTCtTIem
空きVRAM量の取得でお世話になった者です。 その後、DirectDrawでやってみようとも思ったのですが それだけのためにDirectShowを組み込むのがめんどかったので テクスチャ作成でビデオメモリ量を計る力技でやってみました。 LPDIRECT3DTEXTURE9 tex[256]; for(int loop = 1;loop < 255;loop++) { if (D3D_OK != lpD3DDEV->CreateTexture(512,512,1,0,D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT, &tex[loop],0)) { AddConsole("%d[MByte] video memory",loop); break; } } for(loop--;loop > 0;loop--) tex[loop]->Release(); 実際に動かしてみると、最初はうまくいったと思っていたのですが よく見ると、私のグラボのVRAM128MBに対し、「176MB」も確保出来ていました。 これはどうしてなのでしょうか?いくらかがシステムメモリ上に確保されているのでしょうか? ちなみに、他のD3D系プログラムを同時起動させながらでは、ちゃんと上の数値は減っていきました。 引数を、他のD3DPOOLやD3DUSAGEでも試してみたのですが 一番VRAMに確保されていそうなのが、この引数でした。 DirectX9では、完全にVRAMだけに確保するようには指定出来ないのでしょうか?
DirectXでVRAMが制御できるならば 逆にVRAMへのデータ転送のDMA制御をPS2のプログラムの様に プログラマが制御するコードを書かなければならない それはチト敷居が高くなるので、 DirectXではプログラマがそんな事を意識しなくともよいように 抽象的にPOOLとかで説明されている筈(デバイスにとって最適な場所に確保される、とか…) どうしてもそんな酔狂な事がしたいなら nVidiaだのATIだののグラボメーカーのSDKでも落として それらしき物を探すしかないんじゃねーの
910 :
名前は開発中のものです。 :04/12/29 06:32:43 ID:TTCtTIem
おお全知全能のゲームプログラマ様、でしたら、もうこんな酔狂なことはいたしませんので スマートにIDIRECTDRAWをゲットする方法を教えてください。お願いします。
911 :
名前は開発中のものです。 :04/12/29 10:22:07 ID:zKillUal
t-potはチュートリアルというにはチト内容が高度だから、 今から作るならゲーム作りに特化した方向性というのもいいかもしれぬ。 DirectXの初期化から簡単な3Dゲームまでを段階的に行くとか・・・。 無論ポリゴン描画はHLSLを用いれば面倒なステート変更をソースにずらずら 書かなくても済むし、具体的な使い方として有用なものにならんかしら。
戻るボタン使ったらsageが消えてた・・・○∠\_
しつもーん。ID3DXLine::SetGLLines() って具体的には何が変わるんでげすか?
OpenGLチックな線になるでげす。
>>911 うわーん、怖いIDの人にレスされちゃったよ。キル・ユー。
チュートリアルサイトですが、とりあえず簡単なゲーム作成までを段階を追って進める
感じで考えてみます。ところで、どんなゲームの内容がいいでしょうかね?
リクエストがあったら考えて見ます。
まぁ、公開できるのはいつになるやらですが。
>>915 ここはひとつ建設的に応援してみる
個人的には、後発の利点を活かして洗練されたサンプルを公開して欲すぃ
FVFなんて時代遅れは無用だすよ
オーソドックスに簡単なパズルゲームなどがいいんでねぇ?
衝突判定とかキャラクタが絡みだすと途端に(解説が)煩雑になるし…
>>915 個人的にはゲームに用いられる各種エフェクトのサンプルなんかがあると嬉しい
背景用のシェーダプログラムとかはよくみるんだけれど、
チップエフェクト的なものはほとんどみかけないので…
のんびりがんばってくださいまし
ステート変更でもシェーダーでもメンドイって場面が多い事多い事
具体例を挙げてもらわんと本当に面倒なのか 単に無能なだけなのか判断できんよ。
エフェクト(DirectX用語におけるエフェクトじゃなくて煙とか爆発)ごとにα混合変えるときとか、 さまざまな描画処理を併用するとき。我慢するしかないんだろうけど
英語を訳せバカ
描画した総ポリゴン数を取得したいのですがどうしたらいいですか?
描画する前にカウントせよ。
ID3DXMesh::GetNumFaces メソッド
昔の保持モードってポリゴン数カウントしてくれるんだっけ
その程度の知識でそのサンプルを見てどうするつもりなんだ?背伸びしてみたいだけか? まずはDirectXのサンプルコード全てに目を通してからにしとけ。
背伸びも悪い事じゃないけどな。問題は英語すら理解できない知識の狭さ
LPDDSURFACEDESC2のDESCってdescriptionのことでしょうか?
そう。 MDXのクラス名を見ると分かるよ。 ネイティブのものと比較してみると、 それぞれの命名規約の微妙な違いが分かって面白い。
932 :
名前は開発中のものです。 :05/01/04 23:49:40 ID:VmW/Umnp
あるベクトルのX,YがわかっていてZを計算したいのですがかのうですか? 元のX,Yはスクリーン座標で転置行列をかけて3D座標にしてるのですが、転置前のZが解らないとうまく反映しないのでお願いします。
もう言ってる事全然判りません。出来れば貴方の年齢、職業が知りたいです。
つか、BBXとマルチかよ。マジ市ね。
>>932 確かに難解な質問文だなぁ
あんたには目の前で相談に乗ってくれるお師匠さんが必要だよきっと
>>931 マジレスすると、スクリーン座標でのZ値が解ってないとワールド座標に変換出来るわけないだろ・・・
>>932 BBXからのコピペでないと仮定すると、例のACライブラリー君が2chにまで進出か。
DirectXよりまずは日本語、それよりも小学校だけでもきちんと通って欲しいんだけど。
例のACライブラリー君 って誰だ。有名な人?
939 :
名前は開発中のものです。 :05/01/05 13:29:28 ID:o9PRau6T
DirectXについての書籍を買ってついてるサンプルをコピーして 実行したらすごく遅いのですがどうすれば早くなりますか? 自分で作ったプログラムは速く動くのにサンプルは遅い。 なぜ?
詳しく
アカデミックパッケージって大学の通信学生でも買えます? Visual Studio .NET theSpoke Premium Version2003 が欲しいのだが。
学生証があればOK
>>939 お前は自分が思ったことそのまま書くだけで相手に伝えようという気持ちが全くない書き込みをするやつだな。
>>944 その性質、ACライブラリー君と全く一緒だなw
>>942 まずはVS2005のベータが無料で使えるのでそれから始めたらどうだい?
2005は春ぐらいに発売されるけど今の所アカデミックは2005にアップグレードできるか解んないよ?
2005は春より後な気がするんだが…
つか例え目的がDirectXでもスレ違いだろ
Game Programming GEMS1-3, GPU Programming GEMS 4冊まとめて買った、財布が軽くなった。 Shader関係のまともな書籍希望。
>946 ごめんそれどこから落とせる? MSDN見てても日本語版落とせるとこがよくわからん。
>>950 まだウェブで落とせる日本語版はないと思ふ
.NETマガジンにVisualStudio2005 日本語β1がついてる号があるから
それを買えば、一通り日本語版で揃うかと。
>951 d。つか、そうなるとバックナンバーとりよせになるのか。めど。 2003買うつもりだったが、2005がでるまでVC6で耐え抜くか・・・。
954 :
名前は開発中のものです。 :05/01/07 00:53:36 ID:RWCHtkcv
REFで動いているサンプルはどうやったらそうじゃなく早く動かせる?
その機能に対応したグラカを買う
それ以外なにがあんだよw
DirectXって、これフリーの物ですか??
DirectXは有料 無料でインストールできるが、2週間後に認証処理をしなければならん クレジット決済しかできんから未成年なら親に頼め インストール時にIPアドレスがMicrosoftに送信されるんで 持ち逃げはできんから気をつけろ
そして伝説へ
961 :
名前は開発中のものです。 :05/01/09 11:51:13 ID:FR8TZ9zi
>>938 APIのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を削減。
出来が悪いリファレンスに意外とアクセス多いみたいです。
サイトリニュアールも視やにいれ変更していってます。
Direct3Dによってアプリケーションがフルスクリーン状態になっている時に タスク切り替えを行うと、そのアプリケーションはウィンドウ状態になりますが 表示が真っ白になってしまい、描画が全くされていないようです。 フルスクリーン←→ウィンドウ の切り替えは、どうすれば正常に動くのでしょうか? SDKのサンプルソースを見てみましたが、何をやっているのかわけわかめでした。 どなたか分かりやすい解説をお願いします。
>>962 フルスクリーン←→ウィンドウ のイベントが来るたびにデバイスを作り直さないと
だめじゃないかなぁ。
>>962 もうちっと詳しくいうとDirectX3Dの初期化をやり直す作業が必要になる。
なぜなら、画面切り替え時にDirect3DDeviceやらなにやらがぶっ壊されて使えなくなってるから。
つまり、フルスクリーンモードとウィンドウモード切り替え時に
一度Direct3Dを破棄して、ウィンドウモードを切り変えた後、もう一度Direct3Dを初期化する必要がある。
設計能力が未熟だと結構つらいのであきらめてしまうのも、それはそれでアリ。だと思う。
商品だとまずいかもね。(就職作品ならこだわらない。俺は)
>>662 ではないですが、作り直す必要ってあるんですか?
今まではPRESENT_PARAMETERやウィンドウを変更してResetしていました
基本的にはResetでいけるはずなのだが、 環境によって正常に働かないとの症状を時々目にするので、 確実にやるならデバイスを作り直した方が無難。 しかしそこまで切り替えに神経質になる必用があるかどうかは疑問。
>>965 BBXで検索かければ出てくるけど
壊れ方は2種類あってResetで復活可能なものと不可能なもの。
どういう状態がResetで復活可能なのか不可能なのかってのがわからないし、
作り直しに時間がかかるのは結局データのロードの部分だけなので
どっちの処理でもデバイスを作り直してしまっても特にチガイは無い。
ので、両方同じ処理にしてしまう人が多いようだ。というところでFA乙!
968 :
名前は開発中のものです。 :05/01/09 13:59:18 ID:x5QNnQAx
ちなみに「わからないし」ってのは「俺がよくわからない」 という意味なので調べりゃなんとかなるレベルかもしれない。 ただ、ウィンドウモードで動作中にDirect3Dを使った スクリーンセーバーなんてもの起動されたときの処理とか 色々と無茶なもん世の中にはたくさんあるから まあ、ある程度の可能性で線引きして諦めないとね。
確実にデバイスが壊れるのはスリープモードやサスペンドモードに入った時。 更に、Windowsモードでアプリケーション実行中にプロパティで色数変えられたりとかかなり泣ける。 デバイスの再作成はDirectXでもかなりの癌なのだがこれってManagedDirectXならなんとか なったりするのかな?
>>969 ManagedDirectXでも解決はしないけど、最近のSDKについてくる
サンプルフレームワークを使うと、何も考えなくて対応できる
>Windowsモードでアプリケーション実行中にプロパティで色数変えられたりとかかなり泣ける。
これもOK
973 :
962 :05/01/09 15:30:01 ID:s946grx7
皆様方、ご指導ありがとうございます。 最初にResetのほうを試してみたのですが、どうもうまくいかず 最終的には、D3Dの再初期化という形で落ち着きました。 DX9SDKSampleより少しコピペして、以下のような形になりました。 サスペンド等でも問題ないようです。どうもありがとうございました。 // 画面フリップ if ( FAILED(lpD3DDEV->Present(NULL,NULL,NULL,NULL)) ) bDeviceLost = TRUE; if( bDeviceLost ) { // Test the cooperative level to see if it's okay to render if( FAILED( hr = lpD3DDEV->TestCooperativeLevel() ) ) { // Check if the device needs to be reset. if( D3DERR_DEVICENOTRESET == hr ) { //デバイスの再作成を行います //Direct3D解放処理 //Direct3D初期化処理 //VRAMへの再ロード処理 } }else{ bDeviceLost = FALSE; } }
市販ゲームの対応状況を見る限り、「サスペンドなんてさせるほうが悪い」って感じだけどな。 あと、フルスクリーン中のAlt+Tabは対応してくれたほうがありがたいけど その前にウィンドウモード使わせて欲しいもんだ
チート対策と称した手抜きだろ
>>975 手抜きといいきれるほど楽な作業じゃない。
実際、Alt+Tabなんて一応はできるけど
「稀にハングアップしますよ?
まあ、特殊な状況においてで、かなり稀ですから勘弁しといてくださいよ。」
みたいなソフトは実はあると思うぞ。
一発ためしてみてできたからといって確実に成功しつづける
保障の無いソフトもあるのでセーブ前にやるのは危険だといっておこう。
ウィンドウモードならDirect3D使用のスクリーンセーバーはきっとけ。
多分保障はできないところのが多い。エロゲは別だけどねw
というかシステムのAlt+Tabを無効化して、 自前で切り替えルーチン書くのが普通だと思うけど
Direct3Dを使用したスクリーンセーバが、 わざわざ解像度の切り替えを行うようなものでなければ、 Direct3Dのデバイスを使うプロセスが起動したところで、 既存のデバイスはロストしないけど。
「普通」かどうかはしらんが、解像度を勝手に切り替えるスクリーンセーバーはみたことあるなあ。
3Dデバイスを使うとしてもカラーモードさえ適合していれば、 解像度切り替えは必要ないのに、切り替えを行っているものは結構あるみたいだけど、 何故いちいち切り替えるんだろう? 復帰するときにディスプレイが反応するまでのラグが気になってしょうがない。
起動時にどっちかでいいんでない それより中身だ
ゲームなら許せても漏れが作ってるビジネスアプリ(笑)では許されないかもしれんから 参考になった。板違いですまんがDirectXはゲーム専用ってわけじゃないってことで。
>>984 ム板のDirectXスレに常駐してるような奴は
Alt+Tabの不具合なんて許さないだろうなw
ここじゃなくて向こういった方がいいよ。
>>977 のソフトは何か危険な香りがする
昔、一瞬流行ってた気がする。ALT+TAB無効化。
>>986 なんかOSによってできなかった予感。(予感だけ確証無し)
NT系の場合は、ローレベルなキーボードのフックが必用。 これをやられるぐらいなら、素直にデバイスが復帰しない方がマシ。
通常では塞げないCtrl+Alt+Delまで禁止する場合だけど。
男らしく、フォーカスが無くなったら、PostQuitMessage()を投げる ALT+TABした瞬間に終了する。 男らしい!
>>990 わかってないなw
お前は真の男をみたことがないんだな。
真の男とはフルスクリーンモード+強制終了の禁止だ。
しかも、Alt+Tabでの復旧作業を行わないことだ。
Alt+Tabでゲームに戻っても画面は黒いまま、しかし、
ウィンドウモードに戻っても、Ctrl+Alt+Tabを禁止されているのでまったく終了できない。
これでWindowsを終了するまで絶対に終了できないゲームの完成だ。
Windowsより早く死んでなるものかという堅い決意が感じられる。正に男の中の男。
普通に考えたらバグだな
魔法の言葉 それは仕様
☆ チン マチクタビレタ〜 マチクタビレタ〜 ☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < 次スレまだ〜? \_/⊂ ⊂_ ) \_____________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | 愛媛みかん |/
サスペンドから復帰するとブルースクリーンに成るのだけは勘弁してくれ。
>>995 普通にDirect3Dを使ったスクリーンセーバーが途中で起動すると
ブルースクリーンになる俺のプログラムw
いやん、ここの男の作ったソフトなんてぜったい使いたくないわん。
優しさゲット
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。