【C++】 DirectX初心者質問スレ Part15 【C】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/11/27(火) 16:56:40これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
【C++】 DirectX初心者質問スレ Part14 【C】
http://pc11.2ch.net/test/read.cgi/tech/1189257706/
0153デフォルトの名無しさん
2007/12/24(月) 22:48:550154デフォルトの名無しさん
2007/12/24(月) 23:54:06どうすれば直りますか?
0155デフォルトの名無しさん
2007/12/25(火) 00:28:43何かを間違っているから。
0156デフォルトの名無しさん
2007/12/25(火) 05:24:580157デフォルトの名無しさん
2007/12/25(火) 05:29:570158デフォルトの名無しさん
2007/12/25(火) 05:49:020159デフォルトの名無しさん
2007/12/25(火) 06:32:380160デフォルトの名無しさん
2007/12/25(火) 08:12:48つttp://pc11.2ch.net/test/read.cgi/tech/1187922645/
0161デフォルトの名無しさん
2007/12/25(火) 09:11:08改造して四角形を表示させたいのですが、うまくいきません。
CUSTOMVERTEX vertices[] = に
{ 50.0f, 50.0f, 0.5f, 1.0f, 0xff0000ff, },
を追加することで頂点を4つにし、
Void Render()内の
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); を
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
にすることで、2つの三角形を連続して描画し、結果的に四角形になるかと思ったのですが
三角形一つしか表示されません。
また、
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); を
g_pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLESTRIP, 0, 0, 4, 0, 2 );
にすることで上記と同じ効果になるのかと思ったのですが、今度は三角形自体消えてしまいます。
どうしたら四角形が表示されますか?
0162デフォルトの名無しさん
2007/12/25(火) 09:26:56SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE)
0163161
2007/12/25(火) 10:00:08あと頂点の順番?がおかしかったみたいで |X| ←こんな形になったけど、頂点入れ替えたら四角形になりました!
ありがとうございます!  ̄
0164デフォルトの名無しさん
2007/12/25(火) 10:35:15頂点の順序が間違ってたのが原因、って事?
0165161
2007/12/25(火) 10:52:03三角形が一つしか表示されないという問題は
->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
で解決したんですが、今度は頂点の順番がおかしいせいか欠けた四角形になったんです。
/| と |\ の三角形の組み合わせで |X| こんな形に
 ̄  ̄  ̄
0166デフォルトの名無しさん
2007/12/25(火) 14:42:39どうでもいいけどoct2004は9.0cだったと思うが
0167デフォルトの名無しさん
2007/12/25(火) 15:46:06作らないでDrawPrimitiveUP()で描画するのとどっちが速いですか?
頂点バッファは頂点数が多いほど効果を発揮すると聞いたような気がするのですがどうなのでしょうか?
0168デフォルトの名無しさん
2007/12/25(火) 15:57:450169デフォルトの名無しさん
2007/12/25(火) 20:21:12DrawPrimitiveUPのほうが早いですよ。
多くの方が様々なOSやビデオカードで検証済みです。
とか言ったらこいつは何も考えずにDrawPrimitiveUP使うんだろな。
0170デフォルトの名無しさん
2007/12/25(火) 22:21:13ありがとうございます。
やはり、頂点バッファは頂点数が多いほど効果を発揮すると言う事でしょうか?
0171デフォルトの名無しさん
2007/12/25(火) 22:23:17そうです。Microsoftが検証済みです。
0172デフォルトの名無しさん
2007/12/26(水) 01:31:37私も同じ事やろうとしたけど、どうも上手くいかないですね
でもこの人の作ったゲームだと実装されているっぽいし…
本当にSetDialogBoxModeを使ってるのかなぁ
この関数使ってまともにメニューが表示できた人っていますか?
というかフルスクリーンのメニュー表示はみなさんどうやってます?
0173デフォルトの名無しさん
2007/12/26(水) 01:40:451.普通のステート変更を最小限に抑えて変更する
2.(CreateStateBlock()で)キャプチャしたステートブロックを毎回適用する
3.カスタムステートシーケンス(BeginStateBlock()〜End...()まで)を適切に使用する
と三つのやり方があると思うんですが、
何も考えずに2.のやり方でも効率的にできるんでしょうか。
それとも多少のやりくりは必要なんでしょうか。
ピュアデバイスだとステート変更は変更するたびに行われるんでしたっけ?
ステートブロックの仕組みとかがわからないのでちょっと迷ってます。
0174デフォルトの名無しさん
2007/12/26(水) 02:30:210175デフォルトの名無しさん
2007/12/26(水) 02:47:540176デフォルトの名無しさん
2007/12/26(水) 03:02:270177デフォルトの名無しさん
2007/12/26(水) 04:01:190178デフォルトの名無しさん
2007/12/26(水) 07:20:42やり方が分からないんであれば、どっちが効率的?などと聞くんじゃなく素直にやり方そのものを質問すべき。
0179デフォルトの名無しさん
2007/12/26(水) 13:52:410180デフォルトの名無しさん
2007/12/26(水) 14:13:55Dx6まではコロコロ変化させずに、同じレンダリングステートのメッシュやターゲットを纏めて
レンダリングしたり、ステートの変化が最小になる順番でステート郡をレンダリングしてたりしたんだけど、
ステートブロックを使えば、複数のレンダリングステートの変化を一度にデバイスに適用出きるので、
上記の事をあまり意識しなくて良いレンダリングループが作れるようになったわけ。
でも、別にレンダリングするターゲットやステートの種類によってはステートブロックを使わなくても
そんなに処理が重くならないのも事実で、自分が作成しているプログラムでステートの変更が
重い処理だな、と思ったらステートブロックを試してみれば良いんじゃないの?
GPUとGPUへのバスの帯域、レンダリングするプリミティブの数、ステートの変更量といった要因が
あって、トータルで考える必要があるから、なんでもかんでも管理するのは効率的ともいえないし、
大規模エンジンを作るのに、ステートの管理コストを嫌って管理しないのも効率が逆に悪くなるし。
ケースバイで。効率的ってのは目的が無いと決定しない項目だから。
0181デフォルトの名無しさん
2007/12/26(水) 14:22:58そうなんだが、それを自分で試そうとしない輩が多すぎるな
0182デフォルトの名無しさん
2007/12/26(水) 19:19:34キャラクターのアニメーション等をさせる場合、
画面を毎秒60とか30フレームとかで更新、のような処理をしなければならないと思うのですが
その毎回の画面の更新タイミングはどのような手順で取るのでしょうか
0183デフォルトの名無しさん
2007/12/26(水) 19:38:29自分で試せ
0184デフォルトの名無しさん
2007/12/26(水) 19:49:080185デフォルトの名無しさん
2007/12/26(水) 19:57:160186デフォルトの名無しさん
2007/12/26(水) 19:58:02それを自分で試せ
0187デフォルトの名無しさん
2007/12/26(水) 20:00:240188デフォルトの名無しさん
2007/12/26(水) 20:06:30自分で試せよ
0189デフォルトの名無しさん
2007/12/26(水) 20:19:19>>187に言うなよ!w
0190デフォルトの名無しさん
2007/12/26(水) 20:21:58というnVidiaあたりのプレゼン資料なかったっけ
0191180
2007/12/26(水) 20:58:26まあ、実はステートブロックは、固定パイプライン時代の産物だから、基本的に
レンダリングステートなんてほとんど変えずに、シェーダでやれってのがDirectX9以降の
正しいGPUの使い方なんだと思う。
こんなの、実は悩むところじゃないと思うな。
固定パイプライン使ってても、レンダリングステートの変更なんて大した
負荷になってないっぽいもんね。所詮DirectX7時代の話だし。
一々ステートブロック作らなくても十分高速に動いてるし。
ステートブロックの解説も怪しいところあるから、普通利用を避けるんじゃないかな。
>>173は何故こんな事に疑問を持ったのか、謎だ。
(どこかの処理で実際に遅くなった、とかならわかるけど。)
0192173
2007/12/26(水) 23:38:39実装前にセオリーとか聞きたいなって…荒れさせたようでごめん
忘れて
>>180さん、なんかすいません…とても参考になりました…どうもでした
>>180さん、ごめん、俺のせいで
0194182
2007/12/27(木) 00:22:56ありがとうございます。_tWinMainの中でtimeGetTimeを使って
60分の1秒を数える方法を使ってみました
Windowsゲーは同期とかはキニシナイでいいんでしょうかね
>>193
いえいえキニシナイでください
0195デフォルトの名無しさん
2007/12/27(木) 02:19:50いや、同期取らないと駄目だろ。
0197デフォルトの名無しさん
2007/12/27(木) 03:00:18要は1フレームでどんだけ時間が進んだかで
アニメーションの進行速度を変えればいいわけだから
そんでフレームの終わりにフリップすれば
0198デフォルトの名無しさん
2007/12/27(木) 03:15:47あれってどうやって実装してるの?
フレーム間の時間をグローバル変数にでも格納して参照するんだろうか。
0199デフォルトの名無しさん
2007/12/27(木) 04:22:17d3d8.hとかはあるのに。
どうすればいいんだろ。どっかでDirectX8SDKを見つけてこないと駄目かな?
0200デフォルトの名無しさん
2007/12/27(木) 04:41:190201デフォルトの名無しさん
2007/12/27(木) 07:28:08まあ9x系対応とかだとDx9のOct2006までじゃないとダメらしいが
0202デフォルトの名無しさん
2007/12/27(木) 10:23:51リリースノートくらい読めよ・・せっかく日本語に訳してくれてるんだから。
------
この DirectX SDK には次のコンポーネントは含まれていません
Direct3D8 およびそれ以前の全てのバージョン
Direct3D RM
・・・・・・
これらのコンポーネントを使いたい開発者は、
MSDN から August 2007 DirectX SDK をダウンロードする必要があります。
~~~~~~~~~~~~~~~~~~~~~~~~~
0203デフォルトの名無しさん
2007/12/27(木) 10:26:150204デフォルトの名無しさん
2007/12/27(木) 11:12:48>>200
>>202
サンクス。
とりあえず古いバージョン拾ってみよう。古いバージョンで上書き出来ればいいけど
>>203
そうなの?
結局XPの初期状態とかで動かないのかな?
0205デフォルトの名無しさん
2007/12/27(木) 11:56:09だからリリースノートを読めと。
----
すべてのプラットフォームでのインストール上の注意
・現在の DirectX SDK をインストールする前に、DirectX SDK の前バージョンを削除することを推奨します。
----
どのバージョンがどのOSに対応しているかも全てリリースノートに書かれている。
0206デフォルトの名無しさん
2007/12/27(木) 12:19:57一度受けた注意を怠るわ、質問している立場なのに偉そうだわ。
d3dx8.hの話にしても、>>104-105 で出てた話題なのに、
同じスレ内ですら検索かけてないし。
0207デフォルトの名無しさん
2007/12/27(木) 14:19:571フレームに頂点バッファ一括ロック→memcpy→アンロック→DrawIndexedPrimitive
としているのですが、3000個描画するとシーン時間が6〜7ms程掛かってしまいます(それなりに良いスペックのPCで)
6000ポリゴン程度の描画でこんなに時間が掛かるはずがないと思うのですがやり方が間違っているのでしょうか?
0208デフォルトの名無しさん
2007/12/27(木) 14:40:20どの処理に一番時間がかかってるのか
もうちょっと絞り込んだ方がいいんじゃない?
0209デフォルトの名無しさん
2007/12/27(木) 14:43:440210デフォルトの名無しさん
2007/12/27(木) 16:53:43ロックを止めて、ダミーバッファにmemcpyする処理に置き換えてフレームレートを計測したら?
あと、頂点バッファは、まとめてる?ロックがボトルネックなら、頂点をまとめて1フレームにロックする回数を
1回にしてしまった方が良いよ。
それと、毎回コピーする頂点の計算処理は重くない?
0211デフォルトの名無しさん
2007/12/27(木) 20:04:19ネットを漁り、アキバでDirectX関連の参考書を読みふけりましたが
どこもこの問題についてはあえて避けてるようにしか思えません
SetDialogBoxModeをマスターされました神様、いらっしゃいましたらお願いします
とりあえず、フルスクリーンでメニューとダイアログが表示できるようになればいいので
いい解決方を知っている方でも大歓迎です
0212デフォルトの名無しさん
2007/12/27(木) 20:05:35どこをいじればいいか教えてください。
0213デフォルトの名無しさん
2007/12/27(木) 20:16:28全ソース付のサンプル、か。
google code search で SetDialogBoxMode で検索したら結構引っかかったんだけど、やってみた?
検索結果の始めのほうはラッパのヘッダとか意味ないのばっかだけど
結果の後の方まで見てみると結構有用っぽいのがちらほら。Lunaとかも引っかかってたり。
ただライブラリ系ばっかでサンプルになるかどうかは分からん。
0214207
2007/12/27(木) 20:43:50やはり描画部分が結構重いみたいです…
1フレーム当たりの時間が
ロック/memcpy/Drawを一切しない → 80μs
ロック→16000頂点分memcpy→アンロックでDrawしない → 450μs
一つ上の条件でスプライトを2000個描画 → 3210μs
いずれも他の描画以外の処理を含む時間で、memcpyは実際には描く分だけのサイズで行うので最悪条件でテストしています
0215デフォルトの名無しさん
2007/12/27(木) 21:46:38っていうのも測った方がいいと思う。
頂点データがないのはアレなんで、計測外で初期化時にでも放り込んでおいて。
0216デフォルトの名無しさん
2007/12/27(木) 21:56:46GPUが忙しいのか、CPUが忙しいのか、プログラムが悪くってどっちも
遊んでる状態になってるのか、それを切り分けないと始まんないと思う。
あと、スペックに対しての期待値がどれくらいで、3210はどの位そこから遅いのか?
SDK付属ドキュメントの「Direct3D API 呼び出しの正確なプロファイル」あたりは一回読んでる?
0217デフォルトの名無しさん
2007/12/27(木) 22:23:55今てきとーに使ってみたら一応表示はできるみたいだがのー。
D3DPRESENTFLAG_LOCKABLE_BACKBUFFER忘れてるとかそんなオチじゃないよね?
しかし案の定XPとVistaじゃ挙動違うっぽいし、あんまし深入りしたくねぇなこれ。
0218デフォルトの名無しさん
2007/12/27(木) 22:35:28あんまりメリット感じないから使った事無いや。
0219デフォルトの名無しさん
2007/12/27(木) 23:35:170220デフォルトの名無しさん
2007/12/28(金) 02:02:20まぁちょっとだけならわかるけど
つっこんでは分からねぇ
0221デフォルトの名無しさん
2007/12/28(金) 03:43:50頂点テクスチャフェッチのためにVertexShaderでtex2Dlod(Sampler,float4(In.tex,0,1))すると真っ黒になってしまいます
float4(In.tex,0,0)、float4(0,0,0,1)などでも同様でした
テクスチャのフォーマットはA32B32G32R32Fで、SM3.0にも対応しているのですが
tex2Dlodなどでぐぐってみたところ、MSのフォーラムなどで似たような症例がありましたが解決策がよくわからず・・・
原因に何か心当たりある方はいないでしょうか?
0222221
2007/12/28(金) 04:29:27MinFilter = Point;
MagFilter = Point;
MipFilter = None;
AddressU = Clamp;
AddressV = Clamp;
です
0223デフォルトの名無しさん
2007/12/28(金) 12:36:06この立体地図をプログラムで描画したいのですが、躓いてしまいました
今手元には等高線が書かれた白地図があるので
「等高線ごとに領域を分割し、各々に高さを与える」
といった処理にしようと思ったのですが、等高線ごとに領域を分割というのがどうしたらよいのか見当がつきません
このような処理の実現のしかたを教えてください
よろしくお願いします
0224デフォルトの名無しさん
2007/12/28(金) 13:06:56・等高線が作る一つの輪を1リングとし、リング毎の高さと領域情報を保持
・高さの同じリングをまとめたものを1グループとして管理する
・グループ毎にY座標を変えて表示する
でいいだろ
もちろん、外壁も表示するのには各リングの輪郭線から頂点を自動算出して
外壁ポリゴンも作らんといかんけど
0225デフォルトの名無しさん
2007/12/28(金) 14:00:343次元空間内の物体をピック処理をして、マウスの移動量で移動させたいのですが
ピックするところまでいったのですが
その後マウスの移動分動かすのはどうしたらいいのかわかりません。
初期値→移動後のマウス座標を得て、それをどのように3次元空間の座標に戻すのか
視点が回転したときに、xyzの移動量と向きはどうしたらいいのか
この二つがわからなくて壁に当たってしまいました。
ご指南お願いします
0226デフォルトの名無しさん
2007/12/28(金) 15:16:38視点から注視点の面上にあるポイントを結んだ物がマウスポインタのベクトル。
そのベクトルを対象オブジェクトまで伸ばし、ベクトルが変化した分だけ移動させればいい。
0227デフォルトの名無しさん
2007/12/28(金) 16:45:150228デフォルトの名無しさん
2007/12/28(金) 16:48:14| お断りします |
|________|
ハ,,ハ ||
( ゚ω゚)||
/ づΦ
0229デフォルトの名無しさん
2007/12/28(金) 17:02:14質問が抽象的すぎ
>斜め投影した場合
>投影されたCG
>歪んで
それぞれ具体的に
0230デフォルトの名無しさん
2007/12/28(金) 17:16:14誘導
つttp://pc11.2ch.net/test/read.cgi/tech/1187922645/
自分の質問を読んで、他人が内容を把握出来なければ、
ただでさえ少ない回答が0になるだけだよ。
>>223
>>224
もし、等高線毎に外周形状のみ与え、後は自動って言うのなら、
等高線が穴を含む形状の場合にめんどくさくなると思う。
形状に含まれる穴の数(トポロジー)に応じて、輪郭に対する
三角分割のアルゴリズムが変わるんじゃないかな?
穴が無ければD3DPT_TRIANGLEFANで外周頂点を与えれば良いので楽だが・・。
0231224
2007/12/28(金) 17:42:08山の事しか考えてなかったな
穴がある形状を考えるのを忘れてた
まあ、そもそも論として線だけ書かれたデータをそのまま読み込んで
処理しようとすんなら無理があるわな
0232デフォルトの名無しさん
2007/12/28(金) 18:33:17等高線の領域ごとにハイトデータで塗って
細分化した平面ポリゴンに適用すればできる
線のみからでもハイトデータを領域の関数で割り当てればできなくもない
自分ができないだけなのに威張ってるプログラマってカコワルイよね
0233デフォルトの名無しさん
2007/12/28(金) 19:39:05デプスバッファの深度を書き込む/書き込まない
というのがあったのですが、そうすることでどうなるのでしょうか
デプスバッファ、というバッファ(1枚?)にZ値を書き込むというのはわかったのですが
書き込まないと、そこはどうなるのでしょうか?
いまいち何をしてるのか、したいのかが把握できなくて
0234デフォルトの名無しさん
2007/12/28(金) 19:39:36Xファイルを読み込んでCGを画面の中央に描画しているのですが、
そのCGを映しているカメラの位置をキー操作で変更できるようにしています。
で、カメラの位置を変更した場合に、
http://www.beamax.co.jp/Projec/PROJECframe.html の「斜め投影」の項にあるように歪んでみえるようにしたいのです。
D3DXMatrixIdentity(&m_view);
D3DXMatrixLookAtLH(&m_view,
&D3DXVECTOR3( cameraX, cameraY, cameraZ),//カメラの位置
&D3DXVECTOR3( 0.0f, 0.0f, 0.0f),//カメラの向き
&D3DXVECTOR3( 0.0f, 1.0f, 0.0f));//カメラの傾き
pD3DDevice->SetTransform(D3DTS_VIEW, &m_view);
一部ですが今こんな感じでカメラ配置をしています。
cameraX,cameraY,cameraZ はキー操作で増減するようにしています。
プログラムは、ソフトバンクの「DirectXゲームグラフィックスプログラミングVer.2.1Vista」という本を参考にしています。
よろしくお願いします。
0235デフォルトの名無しさん
2007/12/28(金) 19:57:46そりゃ失礼。
0236デフォルトの名無しさん
2007/12/28(金) 19:58:400237デフォルトの名無しさん
2007/12/28(金) 20:10:41最終的にスクリーンに描画するときに
各ピクセルに色を塗ると同時にそこにある物体が
カメラからどれくらいの距離にあるかをZバッファに記録しておく
そうすると
別の物体を同じピクセルに描画しようとしたときに
Zバッファの値を参照して
以前の値よりカメラに近ければ
新たな色を塗りZバッファの値も書き直す
以前より奥にあるものなら色をぬらない、という処理が可能になる
これをしないと後から描画したものでどんどん色を上書してしまうので
奥にあるはずのものが手前にあるものの上に描画されてしまう
したがって描画するときに奥にあるものから描画するというようなソート処理が必要になる
0238デフォルトの名無しさん
2007/12/28(金) 20:38:08それはビューの設定とは無関係
カメラの位置を変えたって、そんな変化は起こさないだろ
オブジェクト側を調整しろ
0239デフォルトの名無しさん
2007/12/28(金) 20:45:34つまり
______
|近 遠 近 …
|
Z値が書き込まれていって、それを参照するわけですね。
これは2次元平面に射影された状態ですよね
ある物体○△□が 奥行き方向に1列に並んでたとき
物体ごとにデプスバッファに
○ 書き込む 遠い
△ 書き込まない ↓
□ 書き込まない 近い
としたら、最終的に一番近いのは□ですが、○が描画される、ということになるのですよね?
0240デフォルトの名無しさん
2007/12/28(金) 22:27:37?
線のみから求めてるわけじゃないじゃん
結局手動で山と穴の区別をつけたデータが必要だろ?
0241223
2007/12/28(金) 22:31:06皆さんありがとうございます
231さんが仰るように「線だけ書かれたデータをそのまま読み込んで処理」というものを想定していました
穴を含む形状については今は考えず、概形が出来上がった後に改めて考えることにします
頂点テクスチャフェッチなど初めてきく言葉が沢山あるので、まずは片端から調べてみます
ありがとうございました
0242デフォルトの名無しさん
2007/12/28(金) 22:41:03違う
基本的に描画関数を呼んだ順に描画されるので
○△□の順番で描画した場合は問題ないが
□△○や△□○の順で描画した場合
一番遠いところにあるはずの○が一番上に描画されてしまう
それを防ぐために先に近いものが描画されていたら
それより遠いものを描画しないためのもの
0243デフォルトの名無しさん
2007/12/28(金) 22:56:49何度もありがとうございます。その点は理解できました。
描画の時にデプスバッファに書き込む物体と
書き込まない物体が混在したときにどうなるのでしょうか。
そこがわからなくて。
最終的にデプスバッファに書き込んでいる物体がちゃんとならんで
デプスバッファに書き込まない物体は描画順ということになるのですよね
0244デフォルトの名無しさん
2007/12/28(金) 22:58:38>>217
ありがとうございます
そのオプションをつけてウィンドウスタイルなどをいじってみたら、
開発環境のXPマシンだと、一応は表示されるようにはなりました
ですが、フルスクリーン→ウィンドウへと切り替えた場合に
ウィンドウ化しなかったり、古い98マシンで試してみた所
メニューを表示した瞬間に画面が激しくちらつくようになってしまったり
ダイアログは表示されなかったりと、挙動が酷くおかしいようです
とりあえずもう少しだけ教えていただいたサンプル等と見比べて
頑張ってみようと思います
最近のエロゲーとか、ホントこれどうやってるんでしょう?
やっぱり、DirectXで描画したなんちゃってメニュー&ダイアログなんですかねぇ
0245デフォルトの名無しさん
2007/12/28(金) 23:07:580246デフォルトの名無しさん
2007/12/28(金) 23:23:28とりあえず今入ってるはぴねすってエロゲーはDirectXで動作してるし
フルスクリーンメニューもちゃんと出てる
0247デフォルトの名無しさん
2007/12/28(金) 23:28:550248デフォルトの名無しさん
2007/12/28(金) 23:32:23ゲーム画面が変化しているやつは見た事無いから、
そこに解決の糸口があるんじゃないかな。
0249デフォルトの名無しさん
2007/12/28(金) 23:47:570250デフォルトの名無しさん
2007/12/28(金) 23:50:33ちらつくとか表示されないとか馬鹿なことをぬかしているわけじゃないよな?
0251デフォルトの名無しさん
2007/12/29(土) 00:13:29ちらつく、というのはWin98環境の方だけで、XPでは画面上に
しっかりと表示されているので、それはないかと思います
>>248
いくつかフルスクリーンメニューのあるゲームを起動してみたところ
どうもメニューが出た時に画面が下にずれているものが多いようです
なんとなく思うのは、これはDirectXでのフルスクリーンモードではなくて
実際にはウィンドウモードなのではないかと。
画面いっぱいのクライアント領域をもつメニュー付きの通常ウィンドウを作って、
必要に応じてウィンドウを縦方向にずらしてメニュー表示しているのでは?
それが可能だとすると、環境によって挙動があやしげなSetDialogModeに
たよるよりも安定しそうな気もします
SetDialogModeはおいといて、まずこの方法でできるかどうか試してみようかと思います
0252デフォルトの名無しさん
2007/12/29(土) 00:53:25■ このスレッドは過去ログ倉庫に格納されています