トップページgamedev
1001コメント354KB

DXライブラリ 総合スレッド その16

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2013/06/30(日) 23:57:05.06ID:j62MvD3e
Cを習得した程度のスキルでも、ゲームのグラフィックを比較的容易に描画する事のできる、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

【公式】
http://homepage2.nifty.com/natupaji/DxLib/

【関連スレ】
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
ゲームプログラムなら俺に聞け(プログラム技術板)
http://toro.2ch.net/test/read.cgi/tech/1366526476/

●DXライブラリではなくDirectXの質問ならこっちへ
【C++】DirectX初心者質問スレ【C】(プログラム技術板)
http://toro.2ch.net/test/read.cgi/tech/1370015791/
0524名前は開発中のものです。2013/10/01(火) 22:07:38.33ID:IljiT9fF
個人制作ゲーで通りぬけが起きると一気にバギーなイメージになってモチベ落ちるよね
いかに安定したクオリティを感じさせるかも腕の内だろうか
0525名前は開発中のものです。2013/10/01(火) 23:58:16.66ID:JV6pAl2h
前フレーム座標と直線で結んでその直線との当たり判定を見るってばっちゃが逝ってた
0526名前は開発中のものです。2013/10/02(水) 01:35:17.03ID:j4eVbLO2
なんか最近急にゲームを起動すると数回に一回の割合でフリーズして強制終了するしかなくなる
現象が起こるんだが他にも似たような現象起こるやついるか?
0527名前は開発中のものです。2013/10/02(水) 07:41:55.08ID:12JVqAEu
それだけの説明で理解できるわけないだろ。

DXライブラリを最新に更新したら、とか条件があるならまだしも。
0528名前は開発中のものです。2013/10/02(水) 09:36:28.97ID:j4eVbLO2
それもそうだな。とりあえず以前のバージョンに戻して検証中
他に分かってることはDxLib_Init()を呼び出した直後にフリーズするってことくらいかな
0529名前は開発中のものです。2013/10/02(水) 15:36:21.39ID:M6jp0IGi
>>526
Windowsメッセージを送ってないとか?
0530名前は開発中のものです。2013/10/02(水) 19:23:19.87ID:BEx3yg+7
以前このスレで
VMのwindows内で起動したらマルチメディアタイマーの精度計測に失敗して
起動しなかった、っていう事例があった気がする

まずはログを見て、起動処理のどこで止まってるか
確認するがよろしかろう
0531名前は開発中のものです。2013/10/02(水) 20:12:13.70ID:j4eVbLO2
恐らく原因はこれだと思うけど一か月以上前に作ったやつだし今まで平気だったのにな
起動時の設定をダイアログボックスでやる際のウィンドウ処理とかが関係してるみたい。・・・多分。
0532名前は開発中のものです。2013/10/02(水) 20:52:21.57ID:LX4kyIfI
>>531
http://jihi4541.blog.fc2.com/blog-entry-3.html
これ?
0533名前は開発中のものです。2013/10/02(水) 22:53:47.44ID:j4eVbLO2
直ったと思ったら直ってなかった・・・
ログはwindows/syswow64/wer.dllを読み込みました。Cannot find or open the PDB fileで止まってた
再起動してデバッグしたら
ファイル追跡ログ ファイルに Unicode バイト オーダー マーカーが見つかりませんでした。って出た
いっそのこと起動部分を作り直してみるか・・・
0534名前は開発中のものです。2013/10/02(水) 23:39:04.47ID:j4eVbLO2
全部コメントアウトしてもダメだった・・・止まってる場所も変わるみたいだし
もうお手上げだな。いっそのことVC2012に移行してみるか・・・XPに対応しなくなるけど
0535名前は開発中のものです。2013/10/03(木) 00:40:00.03ID:KUDPieY2
全部コメントアウトしてダメだったって事は
予想してた箇所は全くの見当違いであって
他にもっと単純なバグがある、って事じゃないのかな。
0536名前は開発中のものです。2013/10/03(木) 03:09:38.93ID:VsufsxKa
毎回エラー箇所が変わる状態になって最近書いた部分見直したら
配列オーバーだったってことなら一度ある

今はなぜか宣言追加しても生成されないバグに悩まされてる
例えば新しくint x;x=1;って書いてデバッグするとxが値もポインタももってない
リビルドすると直る
この症状に原因あるなら教えてください
0537名前は開発中のものです。2013/10/03(木) 03:15:29.35ID:7ILxSOK4
コンパイルに含めない設定になってるとか
0538名前は開発中のものです。2013/10/03(木) 06:48:15.87ID:XsYxUmPH
>>531
「これ」って何?

>>533
ログってIDEの出力ウィンドウじゃなくてDxlibがexeと同じ所に吐き出すログの事だぞ。

>>534
「全部」って何?
0539名前は開発中のものです。2013/10/03(木) 09:14:50.87ID:cUvGeNvK
新規プロジェクトを作って、そこに今までのソースファイルぶち込んでみたら、
何事も無かったかのように動いたって経験もあるので、どうしてもダメだったら試行の候補にでも追加しておくれ。
0540名前は開発中のものです。2013/10/03(木) 10:35:01.11ID:gPI1v/3E
>>533
Windowsアプリケーションは
約60分の1秒の間隔でWindowsにメッセージを送り続ける必要があります
メッセージを送らなくてもプログラムは起動しますが
その場合、動作がどんどん重くなり誤動作を起こす原因にもなります

ゲームが重くなる、起動するだけで現象が起こる
それらの状況からWindowsメッセージではないかと思いました
1フレームという間隔で送り続ける必要があるので
60フレーム(1秒)も送らなけば、もう完全に重たくなるのではと
0541名前は開発中のものです。2013/10/03(木) 10:42:21.98ID:meWLRvQ9
>>536
PCの時計くるってない?
0542名前は開発中のものです。2013/10/03(木) 11:06:19.70ID:PZbKFv8R
>>534
引っ張ってるライブラリ、パスの通ってるライブラリについて、
32bitと64bit混在してないか?

> Cannot find or open the PDB fileで止まってた

↑これが気になったので。
0543名前は開発中のものです。2013/10/03(木) 12:48:03.54ID:yn64SXNB
>>541少なくとも1分以上狂ってはいない
発生回数は今のところ3回
1回目のとき3時間くらい時間使って諦めてリビルド
原因放置はしたくないけど後回しにしてた
0544名前は開発中のものです。2013/10/03(木) 17:55:27.38ID:KUDPieY2
単純に、特定の条件で無限ループに陥ってるとかそんなバグじゃないのかな。
0545名前は開発中のものです。2013/10/03(木) 19:27:01.40ID:LTHD4yMi
デバッグ中forやifでエラーでて止まるってエラーが最初(結論はint nが生成されずnが見つからない)
また起きたら宣言初期化周りもう一度調べてみるよ
現象の検証ばっかしててあんまり見てなかった気がする
ヘッダ含めて生成されないんだから最初のInitialzeまでかnewまわりに原因があるはずだよな
0546名前は開発中のものです。2013/10/03(木) 20:53:45.93ID:Ulbekmlp
どうせメモリを壊してるんだろ
ポインタを理解してないクズが
0547名前は開発中のものです。2013/10/03(木) 21:28:16.99ID:QMWQESyx
ウィンドウ外に画像を描画する処理とウィンドウと画像の当たり判定調べて描画の有無を判断するのってどっちが処理速いの?
描画コストがどのくらいかかるのか全然把握出来てないのだけど
0548名前は開発中のものです。2013/10/03(木) 22:36:24.81ID:edQZBgYu
その辺は気にせずともDirectXがいい感じにやってくれてるはず。
0549名前は開発中のものです。2013/10/04(金) 00:51:22.69ID:qihA5f5F
3Dモデルを画面に表示させたり、
キー入力に合わせて回転するみたいな簡単な事はできるようになってきたけど、
設定メニューとかのようなGUIが作れない。
そもそもどう作ればいいの?
ダイアログに表示するような釦を用意するだけで手間なんだけど、
全部自作してるの?
0550名前は開発中のものです。2013/10/04(金) 01:45:50.25ID:Ql0gzuVh
>>548
そうなのか…
下手に弄るよりは任せた方が簡潔に書けるね
0551名前は開発中のものです。2013/10/04(金) 08:57:28.28ID:8I+rYF1p
>>550
純粋に表示だけならレンダリング処理のパスが省略されるはず。
ただゲームプログラミングで考えた時、裏で自分でしてる論理処理の方は視界の外の部分は省略したりするよな。
「重さ」のネックは大抵そっちにあるから。
0552名前は開発中のものです。2013/10/05(土) 01:56:11.12ID:swZovpC2
ライセンス取るのが辛い
なんでこんな仕様にしたのか
0553名前は開発中のものです。2013/10/05(土) 02:38:04.19ID:swZovpC2
ごめんね誤爆なの
0554名前は開発中のものです。2013/10/05(土) 07:04:12.45ID:42i+ls1b
3dで、カメラの後ろ側にあるオブジェクトは、画面のドットから飛ばしたレイの衝突判定対象にする?
カメラの真後ろにあるオブジェクトに対してレイを飛ばした時の判定なんてほぼ無駄なわけじゃん
0555名前は開発中のものです。2013/10/05(土) 07:30:15.10ID:zPZwPgbh
>>554
まず対象オブジェクトがカメラの後ろにあるかを判定する必要があるけど、それって結局レイ飛ばすなり「平面-オブジェクト」で判定するわけじゃん。
で、その後レイで衝突判定とるの?
他の処理の都合であらかじめオブジェクトがカメラの後ろにあるかどうか解ってる特殊な事情が絡まない限り、全探索するしかなくね?
0556名前は開発中のものです。2013/10/05(土) 09:23:08.63ID:0JH/7YRj
カメラの位置と方向ベクトルに対して、明らかに表示角の外にいる物は、
より細かい計算するより前に対象外として一律処理スキップとかするけど俺
0557名前は開発中のものです。2013/10/05(土) 09:25:26.82ID:0JH/7YRj
>>554
画面のドットからレイ飛ばすってのがなんか引っ掛かるけど、俺は表示物じゃなくて論理管理レベルでの計算で >>556 する。
0558名前は開発中のものです。2013/10/05(土) 13:42:34.85ID:U+9bHzcQ
俺が初心者で無能なだけかもしれないけど
>>554って環境マップとか使って擬似的な反射でも考えない限り全く無縁の話じゃないの?
光源が後ろにない限りカメラより後ろのオブジェクトが描画結果に影響することはないんじゃない?
乱反射の部分は環境光ってファクターで擬似的に表してるんだし

っていうか>>556の方が効果は大きそうだし
描画時間計測したことあるけど、ライティング関係の処理はDirectXだかDXlibだか分からんが自動で弾いてくれてるっぽいぞ
ビルボードを視野外(近く)に置いたときと、視野内の無限遠に置いた時がほとんど同じで、視野内の近くに置いた時より格段に軽かった

的外れの恥ずかしいレスじゃありませんよーに
0559名前は開発中のものです。2013/10/05(土) 18:25:07.74ID:zPZwPgbh
>>558
それって、レイトレースとかの文脈のレイ?
>>554の言うレイは普通の半直線の事を指してると思うんだけど。
DXライブラリスレでレイトレースとか出る話題じゃないし…。

マウスクリックでオブジェクト選択みたいな処理を実装するために半直線と交差判定取ってるんだけど、
カメラの後ろにあるオブジェクトまで交差判定とるのって無駄じゃね?

って話だと思ってたけどあってるよね?
0560名前は開発中のものです。2013/10/05(土) 18:48:29.96ID:zPZwPgbh
あと>>556のカメラの位置と方向ベクトルでプレ処理って話だけど、
位置ベクトル+方向ベクトル=平面
だよ。
要するにカメラの後ろ=nearクリップ平面の負の領域ってことだし。


if ( !CollidePlaneObject(nearClipPlane, obj) ) return; // プレ処理(カメラの後ろにあるか判定)

if ( !CollideRayObject(ray, obj) ) return; // レイ交差判定(本ちゃん判定)

って感じだと思うんだけど、平面-オブジェクトの判定とレイ-オブジェクトの判定って計算的に殆ど同じだから、
最初のプレ判定あんま意味なくね?計算省いてるようで実は二重に計算してね?
というのが>>555で言いたかったこと。
0561名前は開発中のものです。2013/10/05(土) 18:49:58.53ID:TrZUJRMY
ウィンドウモードで起動時に
ウインドウ枠の「×」をクリックした時に
DxLib_End関数を評価させる方法はないでしょうか?

それとも「×」をクリックして終了した時に
自動的にDxLib_End関数が評価されるように設計されているのでしょうか?
0562名前は開発中のものです。2013/10/05(土) 20:10:30.39ID:0JH/7YRj
>>560
二度判定されるのは事実だけど、無駄じゃない。
複雑な形状を持つオブジェクトの中身に対する細かい判定とは別に、
そのオブジェクトが置かれるグローバル座標を原点とする半径や最大立法体で判定して、先に一回「明らかな範囲外」を落とすんだよ。
実際に運用されてる有名な例で言うと、bulletphysics等がそう。
0563名前は開発中のものです。2013/10/05(土) 20:13:55.33ID:0JH/7YRj
ちなみに >>560 のように「意味無くね」って思う事があるとしたら、初歩的な立体しか扱わず、
視野内での計算と視野外での計算が完全に同じで事足りるケースだけ
0564名前は開発中のものです。2013/10/05(土) 20:38:31.68ID:OUqe1t+L
>>559
ひいいドットから出るレイとか言うからレイトレーシングの方だと思ってた恥ずかしい
このスレって突然DirectXの話題になったりCの話題になったり結構カオスだから勘違いしてましたごめんなさい
0565名前は開発中のものです。2013/10/08(火) 03:59:08.46ID:FyCpCW0B
テクスチャじゃない加工済み3Dアニメーション(例 爆発エフェクトとか)って描画どうしたらいい?
1加工済みアニメを3D空間or画面に2D描画(ペラペラだけど我慢orカメラとの角度固定)
2加工済みアニメを透明なマテリアルにテクスチャアニメーションとして張り付けてx→3D描画
3アニメーションまで読み込んでその場でエフェクトを作る
今まで視点固定なので1で作っていて、次は3D視点のものを作ろうと思ってて、描画方法考えています。
2そもそもテクスチャアニメーションをx化できるのか、あと球の中心とかあると張り付け不可。
3リアルタイムの負荷&処理方法実装の難しさとか、シェーダの延長でなんとかするしかない?
先人様がいらっしゃれば知恵を分けてほしいです。
0566名前は開発中のものです。2013/10/08(火) 08:37:39.25ID:uzXpM02K
3Dゲームでエフェクト(爆発表現)の仕方
1)カメラ固定で2Dゲームのように見える場合に爆発連続2Dアニメを2D画面に描画する。
2)カメラが自由移動するフル3Dゲームにおいて、板ポリゴン上に爆発連続2Dアニメを表示する。
3)3Dゲームで爆発表現を3Dで表現する。

色々あるけどね、
@ビルボードを使うのが良い。スプライトを使って、3D場所の関係で大きさを変えて
2D画面にスプライトとして爆発2Dアニメを表示する。単純で効果的。
A板ポリゴンに爆発2Dアニメを描画するのもありだけど、光の放射反射などの影響が大きい。
Bポリゴンだけで爆発を表現する、これは計算でポリゴンを動かすので
表現方法として有りだろう。地味な表現になるから、シェーダを加えたくなるだろう。
Cシェーダーで表現するのが最新式だが、古いPCだと動かないかもしれない。
派手な演出も出来るし、最終的に2Dの部分での演出もできる。
以上が一般的な手法です。

簡単で効率的なのが、スプライトによるビルボード手法。
色々な方法があるから、試してみると良い。場面によって違うだろうからね。

ここに、エフェクトのデモがある。参考になるだろう
http://www.sbcr.jp/support/8594.html
0567名前は開発中のものです。2013/10/08(火) 11:02:19.63ID:E8v6Sv+Z
PSレベルなら板ポリに画像貼るって分かるけどPS2レベルになるとわけわからんよね
あとシェーダーシェーダー言われるけど意味が全く分からない
シェーダーってどこかで落とすツールか?って感じ
0568名前は開発中のものです。2013/10/08(火) 11:18:41.58ID:jcgEteQj
「シェーダで」って言うのは「プログラムで」って言う意味と作業場所以外変わらんから説明不足感すごいよね
0569名前は開発中のものです。2013/10/08(火) 11:21:39.17ID:Fb0fwir5
PS2も大差ないだろ
基本的に板ポリの量が増えるだけ
0570名前は開発中のものです。2013/10/08(火) 11:49:21.01ID:8bfY/fC5
>>556
詳しく説明&サンプル感謝します
開ける環境に戻ったら勉強します。
しばらくビルボート式を用いて、他のことも含めて余裕がでてきたらシェーダを学ぼうと思います。
何年後のことやら…
0571名前は開発中のものです。2013/10/08(火) 11:50:03.23ID:8bfY/fC5
>>566だミス失礼
0572名前は開発中のものです。2013/10/08(火) 12:19:08.14ID:E8v6Sv+Z
>>568
腕を重点的に鍛えたいけどどうすればいい?って聞いたら筋トレしろって言われるのと同じだよね
ここ以外でもシェーダーは具体的なの見たことないな
0573名前は開発中のものです。2013/10/08(火) 12:53:20.88ID:ttaYSeAJ
>>572
OpenGL関係のスレとか、さもなきゃ書籍でも見たらいいのでは
一応補足しておくと、OpenGLのglslとDirectXのhlslは別物だけど、考え方は同じだよ
0574名前は開発中のものです。2013/10/08(火) 12:55:13.56ID:ttaYSeAJ
あ、スレじゃなくてサイト。素でtypo
何も知らない状態で待ってても見かけないと思う。
例えればプログラミングの基礎編にある物じゃなく、必要な人が利用する応用編の範疇の世界だから
0575名前は開発中のものです。2013/10/08(火) 13:01:23.14ID:t3akdCKp
俺なんて爆発表現は球体ポリゴンに、それっぽいテクスチャ拾ってきて材質設定して貼るだけだぞ
で、エフェクト中は球体を回転させながら透明度だけ弄る
頂点を操作するアニメーションなんてできないし
0576名前は開発中のものです。2013/10/10(木) 18:23:43.43ID:8tsX4vRv
>>512-513
亀だけど、それ当たりで考えるとビリヤードのブレイクショットの配置みたいに
静止しててくっついてる状態でちょっとめんどくさくなると思う
0577名前は開発中のものです。2013/10/11(金) 00:20:35.39ID:6kBrNmzO
接触してる相手の運動ベクトル見て振る舞いを決めればええんや
0578名前は開発中のものです。2013/10/11(金) 00:39:09.42ID:+9JMgRHw
>>575
もう板ポリのテクスチャ変更して3Dドットみたいにしちゃうのか
試してみよう
0579名前は開発中のものです。2013/10/11(金) 08:33:37.25ID:KkfuXsaC
3次元の音響ライブラリってないですか?
音を拾う座標指定して、音量とか減衰率とか反響とか設定できて簡単なやつ
0580名前は開発中のものです。2013/10/11(金) 09:13:37.91ID:RGakvLAz
なんでそれをDXライブラリスレで聞くんだ?

それはともかくとして、そんなライブラリがあるとしたらXAudio2のラッパということになるだろうけど、そんなのは現在ないっぽい

BASS Audio Libraryという3Dサウンドの使える比較的シンプルなライブラリがあるっぽいが、
日本語のドキュメントは殆どと言っていいほどないみたいなので自力で調べられない人には使えないだろう
0581名前は開発中のものです。2013/10/11(金) 09:26:57.30ID:kG8mPrPa
>>579
この本に具体的に解説してあるから、実装しなさい。

DirectX9必携: 鎌田 茂雄: 本
0582名前は開発中のものです。2013/10/16(水) 23:39:32.53ID:Rf7cBVFP
C#+DXライブラリでやってるんだけど
スクリーンに黒色で塗りつぶしたところがDrawGraphで透過Trueにしても透過しない
なぜじゃー
0583名前は開発中のものです。2013/10/16(水) 23:50:58.42ID:AJwC2plj
ブレンドモードは?
0584名前は開発中のものです。2013/10/16(水) 23:55:26.73ID:09GDCNSk
DxLibを利用した開発で、デバッグしようとすると
数度に一回マウス以外完全にフリーズしてしまいます。

VSの一番下部の青い所がF5を押してデバッグ開始するとそこがオレンジになって、
そこに AudioSes.dll シンボルがどうたら 
と表示されて読み込み中?のまま、マウスポインタは動かせるのですがそれ以外の動作ができなくなります。
タスクマネージャーの起動もできずになって直接電源切るしかなくなります。
このままではHDが死んでしまいそうです。
何が原因かわかる方いらっしゃいませんか?

ぐぐっても、似たような症状の方は見つかるのですが
解決策が出てないのしか見つからないです。
VS Express for Desktop利用です。
windows7 64bitが問題なのかともおもうのだけど。
0585名前は開発中のものです。2013/10/17(木) 00:03:15.56ID:rXL4X8+O
俺が遭遇したことあるトラブルはエレコムのUSBパッドくらいだな
0586名前は開発中のものです。2013/10/17(木) 09:25:56.10ID:c674Ibx6
>>583
NoBlend
0587名前は開発中のものです。2013/10/17(木) 10:41:25.53ID:p0PD90TH
なめとんか
0588名前は開発中のものです。2013/10/17(木) 11:06:13.46ID:WfFtC5GU
>>584
DxLib関係ないと思うが
システムごと死ぬのは十中八九デバイスドライバが悪い
64bitなら32bit用のドライバで動いてる奴が悪さしてるとかひょっとしたらあるかも
0589名前は開発中のものです。2013/10/17(木) 15:23:43.00ID:c674Ibx6
Noblendだと透過色って機能せんの?
ドウイウコトナノ・・・
0590名前は開発中のものです。2013/10/17(木) 16:06:04.12ID:G8MUlgiH
透過シナイ画像表示関数ッテ存在価値アルノ?
画像全体に透過処理するんならモード変えろ
0591名前は開発中のものです。2013/10/17(木) 16:14:55.88ID:5lApwyFA
数レス前も読んでなかったすまん…
諦めて最初から透過しとけば?
0592名前は開発中のものです。2013/10/17(木) 16:57:54.53ID:c674Ibx6
いろいろ試してみたけど透過色はBMPとJpg読み込みのときだけ機能して
他のスクリーンやスクリーンをGetDrawScreenGraphでMakeGraphでつくったハンドルに移しても機能せず
アルファ付き画像でアルファ指定してやらんと透過せんのね
微妙すぎぃ
0593名前は開発中のものです。2013/10/17(木) 17:05:56.17ID:2Y9zA1MX
GDIのフォーマット(pixel辺りのビット数)についてちゃんと理解した上で扱ってれば特に問題無い気もする
0594名前は開発中のものです。2013/10/17(木) 17:27:20.11ID:c674Ibx6
面倒だけどマスク画像作って一回ブリーチングしてから描画することにしたわ
サンクス
05955842013/10/18(金) 02:10:22.43ID:Fdn5BT6n
>>588
DxLib使わなければ固まらなかったんでそこばっかり調べてたのですが、
なるほどと、いろんなものアップデートかけたけど状況変わらずでした。

解決ってわけじゃないけどBCCに移行したら
一時間くらい作業してみてるけど再発せず。
VSが悪かったってことなんだろうか?

ただ、すげー使いにくい。
0596名前は開発中のものです。2013/10/18(金) 16:05:43.20ID:wI1cKsI5
最小限のプログラムでも発生するなら、そうかもねー。
設定変えればいけるかもしれんけど
0597名前は開発中のものです。2013/10/18(金) 18:23:23.35ID:N5DQXWku
え、DXライブラリって、
64bitか32bitかで支障あるん?
64bit用なんてありましたっけ?
0598名前は開発中のものです。2013/10/18(金) 21:10:30.89ID:HCxtnSqx
VSのExpress版使ってると64bitビルド出来ないから32bit版しか知らない
05995842013/10/19(土) 00:04:03.03ID:QcOl7SCF
>>595
自己レス。
おそらく本当に解決したので一応ご報告。

BCCでも固まりました。
というか、デバッガで固まったのでそこを重点的にぐぐったら、
同様の症状でDRM関連のCYMON.SYSを消したら直ったというページを発見出来たので、
削除したらおそらく今度こそ本当にたぶん解決。
同様の事案で悩んでる人たちに伝えたい。

>64bit云々は同様の件で困ってる人がほとんど64bitのOSだったので怪しんだだけです。
結果的に関係なかった。
DxLibも関係なかった。
0600名前は開発中のものです。2013/10/19(土) 00:05:41.25ID:cL2pDxD5
乙 結構有益な情報だわ
0601名前は開発中のものです。2013/10/19(土) 01:03:15.68ID:5grMyEOo
サイモンシスって読めばいいの?
0602名前は開発中のものです。2013/10/19(土) 01:16:15.10ID:+1vXIvno
Are you going to Scarborough Fair?
0603名前は開発中のものです。2013/10/21(月) 18:41:36.26ID:w8555t4z
初心者です
よくリファレンスでFPS固定させるコードとかあるけどSetWaitVSyncFlag()で垂直同期するんじゃだめなんですか?
あとFPSによってゲームスピードが変わる云々という記述を見ますが、何故フレームで計算するんです?
私はGetNowCount()で計算しているんですが、何かまずい事でもあるのでしょうか
0604名前は開発中のものです。2013/10/21(月) 18:47:51.14ID:/u23XyM9
>SetWaitVSyncFlag()で垂直同期するんじゃだめなんですか?
ダメ。垂直同期がない環境もある

>何故フレームで計算するんです?
時間に応じて可変フレームに対応するゲームを作るのは大変だから

>私はGetNowCount()で計算しているんですが、何かまずい事でもあるのでしょうか
パーフェクトに組めるなら問題ないけど、初心者には無理だと思う

あとです?で止めずにちゃんとですか?って書けよデコスケ
0605名前は開発中のものです。2013/10/21(月) 18:58:35.56ID:w8555t4z
>>604
>時間に応じて可変フレームに対応するゲームを作るのは大変だから
何故ですか?可変フレームなら尚更フレームで計算より時間で計算した方が良いと思うのですが
あ、この場合の計算って言うのは例えば○秒で画像Aをy軸に+1するみたいな計算です
0606名前は開発中のものです。2013/10/21(月) 19:03:06.05ID:/u23XyM9
>>605
フレーム固定処理ってのは○秒の部分を16.6666...ミリ秒に固定してるだけだぞ
一定時間毎に処理するならフレーム処理と変わらない
0607名前は開発中のものです。2013/10/21(月) 19:06:38.76ID:/tZQoOAW
回せるだけ回したらマシンパワーの無駄食いだから
0608名前は開発中のものです。2013/10/21(月) 19:07:14.69ID:sMEbtuV5
たぶん質問の書き方がおかしくて話が伝わってない

FPS固定よりも可変フレームレートの方が良い
開発が少し面倒くさい程度で、デメリットがない

垂直同期はテアリングが起きないのが最大の利点
ただしフレーム数がモニターに依存するようになるから
結局可変フレームレートに対応するようなプログラムを書く必要があって面倒くさい

だから最も初心者向けサイトは基本的に
作りやすい60FPS固定にしてフレーム基準で計算するようにしてる
しかもデメリットは垂直同期しないために起こるテアリングくらいしかない
0609名前は開発中のものです。2013/10/21(月) 19:15:43.93ID:w8555t4z
そもそもフレームってそんなに重要なもの何ですか?
DXライブラリ使っててフレームレートを意識した事が全くなくて、リファレンスなどを見て何故そこまでしなければいけないのかと困惑している次第で
0610名前は開発中のものです。2013/10/21(月) 19:17:01.12ID:xXi4ljOj
フレーム数を時間代わりにすると環境によってはカクカクになります?
0611名前は開発中のものです。2013/10/21(月) 19:20:20.12ID:/u23XyM9
可変フレームレートって、ネトゲでもなきゃCPUが貧弱だった頃の名残じゃないのか?
処理落ちするとしたらほぼ確実に描画が原因な今の時代だと、固定フレーム+フレームスキップがベターだと思う
0612名前は開発中のものです。2013/10/21(月) 19:29:53.55ID:/u23XyM9
フレームスキップじゃないな
固定フレーム+描画スキップな

世の中のゲームの大半が60フレーム固定なのにはちゃんと理由があるわけで

・60フレーム以上のフレームレートにしても、人間が見るぶんには特に滑らかだと感じない
・CPUが成長したので処理で60フレームでないゲームなんてありえない

作るのが動的なゲームである限り、固定フレームを捨てるメリットはないというのが俺の持論
0613名前は開発中のものです。2013/10/21(月) 19:42:40.65ID:70y1g1SQ
60フレーム出ないゲームなんてありえないって言い方はおかしいが、
とりあえず言いたい事はわかる
0614名前は開発中のものです。2013/10/21(月) 19:48:43.62ID:1CRFZwZl
60フレームを確保しているのは、ゲーム機の格闘ゲームくらいです。
ゲーム機で他のジャンルは ほとんどが30フレーム

パソコンの場合は、強力なPCもあれば、非力なPCもあるので
色々な手段を使って、最低限のフレームレートを確保しようとする。
また、負荷変動が多々にあるので、それに対処する必要も或る。
0615名前は開発中のものです。2013/10/21(月) 19:52:47.30ID:xXi4ljOj
たいして難しくないんだからFPSと垂直同期くらい設定可能にしておけよw
0616名前は開発中のものです。2013/10/21(月) 19:53:04.57ID:sMEbtuV5
>>609
何を質問したいのかがよくわからない
可変フレームレート(時間単位での処理)でできてるならそれで大丈夫だよ

>>612
60フレームと120フレームでは明らかに違うから見た瞬間にわかるよ
120と240は俺自身は比べたことがないけど恐らくそれも感じ取れるだろう
実際に今のテレビのほとんどが240フレーム表示を採用してるからね

2万のネットブックとかで動かすユーザーなんかが絶対にいるから
ゲーム用PCで1000fpsくらい出せるようなゲームでも、20fpsとかになることはざらにある
0617名前は開発中のものです。2013/10/21(月) 19:55:43.22ID:/lNEn8aD
正直60でない化石の配慮なんて無駄
広大な3Dマップを切り替えなしのリアルタイムで読み込むタイプならあって損はないかもね
60より必要あるのはレート120やら144やら使う格ゲーFPSガチ勢くらい
それ以外のジャンルなら頭動かすだけ無駄
やりたければ勝手にどうぞの世界
0618名前は開発中のものです。2013/10/21(月) 20:04:47.68ID:w8555t4z
これでも十分勉強になるのですが
私が言いたかったことは
例えばここの
http://dixq.net/g/03_02.html

while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && gpUpdateKey()==0 ){

DrawGraph( 0, Count% 50, Handle, TRUE ); // 周期 50カウント でループ表示する
DrawGraph( 100, Count%100, Handle, TRUE ); // 周期 100カウント でループ表示する
DrawGraph( 200, Count%150, Handle, TRUE ); // 周期 150カウント でループ表示する

Count++; // カウンタ加算

}

こんな処理をしたとして「PCスペックによって時間が変わっちゃうからFPS固定しよう」とか言ってるなら最初から時間測れば良いのでは?
と思ったって事です
0619名前は開発中のものです。2013/10/21(月) 20:08:41.83ID:/u23XyM9
初心者はやっぱり明後日の方向で悩んでるから怖いな
そんな単純なもんじゃないから、フレーム固定で作っておけ
0620名前は開発中のものです。2013/10/21(月) 20:11:54.34ID:1CRFZwZl
パソコンの負荷は一定では無く、不規則に変動するのですよ。
それが、個別に全部が違う挙動をする。
0621名前は開発中のものです。2013/10/21(月) 20:14:02.72ID:w8555t4z
すいませんスペックじゃなくてリフレッシュレートです

http://dixq.net/g/03_14.html
0622名前は開発中のものです。2013/10/21(月) 20:19:16.36ID:/u23XyM9
リフレッシュレートは60や120だけじゃなくて50や75や72や85もあるんだぞ
ズレるわ
0623名前は開発中のものです。2013/10/21(月) 20:23:20.98ID:sMEbtuV5
>>618
そのサイトは初心者向けだから可変フレームレートは難しい
また、その章までに書いたプログラムすべてを変更する必要がでるから避けてるんだよ

>>608にも書いたけど時間を計って可変フレームレートにするのは良いことだよ
一応処理落ちについての話題が出たから例として触れておくと、
極端な処理落ちが発生したときに可変フレームレートだと衝突判定のすり抜けが起こることが
予期されるからそれを防止するためのメカニズムを考えないといけなかったりとか
とにかくプログラム書くのがFPS固定に比べて面倒くさい
0624名前は開発中のものです。2013/10/21(月) 20:27:42.27ID:r1lqBEdn
FF3のエンカウント時エフェクトみたいな
1フレーム毎に画面が白黒⇔カラーを繰り返すみたいなエフェクトを実装するとき
可変フレームレートだと白黒のままになったりカラーのままになったりで
おかしな表示になるんじゃないんですか
■ このスレッドは過去ログ倉庫に格納されています