DXライブラリ 総合スレッド その3
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/03/31(火) 01:14:36ID:IgyJcgapGUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。
DXライブラリの詳細ついては
http://homepage2.nifty.com/natupaji/DxLib/
を参照して頂きたい。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。
過去スレ:DXライブラリ 総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1197468399/
DXライブラリ 総合スレッド 2008
http://pc11.2ch.net/test/read.cgi/gamedev/1224923873/
0074名前は開発中のものです。
2009/04/05(日) 21:49:08ID:8VF6BH4Eおおサンクス。
C#使ってるからそのまま使えないのが残念……。
つかこれ勝手に使って良い?
0075名前は開発中のものです。
2009/04/05(日) 22:41:49ID:ey93yQqE変な方向に行くのは元のアルゴリズムが花びらだった名残だったり
>>74
どうぞ
0076名前は開発中のものです。
2009/04/05(日) 22:53:50ID:HuaUBP84綺麗だなぁ。
横だが自分も使わせて貰う。
0077名前は開発中のものです。
2009/04/05(日) 23:24:32ID:8VF6BH4Ethx!
0078名前は開発中のものです。
2009/04/11(土) 23:15:22ID:wcB4somL次はシェーダーについて学ぼう
0079名前は開発中のものです。
2009/04/12(日) 16:12:18ID:/tRhsb/ahttp://dixq.net/g/#s5
↑これ導入しても無理だった
0080名前は開発中のものです。
2009/04/12(日) 17:11:30ID:lSUbUSsj0081名前は開発中のものです。
2009/04/12(日) 17:13:14ID:mpmptjcJてかScreenFlipが重いなんて話あったっけ?
単に君の作ってるプログラムが遅くて、60FPSを保ててないのに
垂直同期信号待ちをさせたままって話じゃなくて?
0082名前は開発中のものです。
2009/04/12(日) 17:17:52ID:XXYdX/zb0083名前は開発中のものです。
2009/04/12(日) 17:40:07ID:29TC1pPK0084名前は開発中のものです。
2009/04/12(日) 17:49:43ID:9LgVxSaT実行ファイルのプロパティ開いて、「互換性」→「WindowsXP SP2互換」にチェックを入れてみる。
もしかしたら幸せになれるかもしれない。
0085名前は開発中のものです。
2009/04/12(日) 17:53:25ID:43thkbhn遅くするための処理を導入して重くなったとはどういうことなんだ?
0086名前は開発中のものです。
2009/04/12(日) 19:31:53ID:4cs7HNP3たぶん初心者っぽいからこんなことをあえて言うけど
まずリフレッシュレートとプログラムのfpsを比較しないとね
0087名前は開発中のものです。
2009/04/13(月) 00:15:55ID:GN8f0M0n0088名前は開発中のものです。
2009/04/15(水) 15:18:06ID:I8P/Rh48あのコード量を移植するのは並大抵じゃないとおもうが、作者ガンバレ!
0089名前は開発中のものです。
2009/04/15(水) 16:13:43ID:3g1BJoyHPen4 の 1.6GHz だけど
0090名前は開発中のものです。
2009/04/15(水) 16:37:47ID:I8P/Rh48CPUが100%になるのがいやならVsync待ちを切ればいい。(ティアリングが発生するし、ゲームの速度も変わってしまう)
正しい設計はVsync待ちは有効で、なおかつFPS管理をし60fpsになるようにフレーム毎に適度にsleepを入れること。
0091名前は開発中のものです。
2009/04/15(水) 18:32:01ID:lTpXHjBQ0092名前は開発中のものです。
2009/04/15(水) 20:06:35ID:OTuGa66kモニタのリフレッシュレートが60でない時はどうなるのかな。
0093名前は開発中のものです。
2009/04/15(水) 20:43:14ID:1cQMYjlB>前回の ScreenFlip から 10ミリ秒以下しか時間が経過していない場合のみ Sleep で処理を一時停止するようにしています
>>92
60fpsになるように管理してるんだから60fpsになるだろーがw
0094名前は開発中のものです。
2009/04/15(水) 21:18:20ID:I8P/Rh48フルスクリーンにできる or デフォルトのリフレッシュレートが50 であるのであれば、Vsync有効。
ウィンドウモードでリフレッシュレートが60以外の場合は、ティアリングを犠牲にしてVsync切る。
(ウィンドウモードで垂直同期に合わせてしまうとティアリングの線が毎フレーム同じようなところにできてしまって、逆にきたなくなってしまう)
現状、DirectX7ベースのDXライブラリではウィンドウモードでのVsync無効だから、どうしようもないぜ。
0095名前は開発中のものです。
2009/04/15(水) 21:20:12ID:I8P/Rh48あと、50じゃなくて60。
0096名前は開発中のものです。
2009/04/15(水) 21:20:56ID:lTpXHjBQ0097名前は開発中のものです。
2009/04/15(水) 21:21:42ID:lTpXHjBQ0098名前は開発中のものです。
2009/04/15(水) 21:43:40ID:OTuGa66kだからどう管理するのかなーと。
単純に「1/60秒 - 前回のScreenFlipから経過した時間」でSleepかけると
モニタのリフレッシュレートが70の時、いざScreenFlipしようとした時には
すでに1フレーム経過しちゃうんだから、次のVsync信号待ちまで待っちゃうよね。
そしたら1フレーム 2/70 秒になって 35FPSって事なっちゃうのでは。
いや、当然こんな事解決する方法はあるんだろうけど
俺の頭じゃ難しくて。
0099名前は開発中のものです。
2009/04/16(木) 02:52:38ID:12a1chsH>ウィンドウモードでのVsync無効だから
って言われるけどウィンドウモードで、どう見てもScreenFlipでVsync待った方が明らかにティアリングなしできれいなんだがなぜ?
リフレッシュレートを変えても同じ。
ただ、fps調整無しでリフレッシュレートのfpsになるように単純にVsyncを待った場合、
ウィンドウモードよりフルスクリーンの方が明らかに滑らか(高fps)を体感できる。もうよくわかんない。
0100名前は開発中のものです。
2009/04/16(木) 02:58:08ID:uc3ezfKA0101名前は開発中のものです。
2009/04/16(木) 05:02:47ID:XS+5u9bOOSはVistaかい?
VistaだとDesktopWindowManagerが自動でティアリング防止するように描画順を待機するようになるからティアリング無いかもね。(未検証でゴメン)
詳しくはここ。http://d.hatena.ne.jp/enra/20081014#p2
で、XPでDirectX7環境だとティアリングが発生します。でもXPでもDirectX9が検出できた場合に限ってScreenFlipで垂直同期待ちになる模様。
(もしくはティアリングが発生していても、線がウィンドウの領域と被ってないので見えてないだけかもしれない)
0102名前は開発中のものです。
2009/04/16(木) 05:18:57ID:WR6HuXg0なるほどなるほど
VSync まちでいろいろやってるループより sleep の方が軽いのは当然てことか
0103名前は開発中のものです。
2009/04/16(木) 05:27:06ID:12a1chsH2000/XPです。
下方向に高速スクロールする画面で、Vsync同期/非同期を切り替えられるようにしてます。
明らかに違いが出てきますね。
ティアリングに敏感な人なら確実に分かると思います。
同期してないとガリガリしてるような気がします。
でも、フルスクリーンの方がさら〜って感じでさらにきれいに見えるのも謎。
60Hzと70Hzじゃ描画回数が違うので当然なんだけど。(見た目にも描画回数が多いのがはっきりわかる)
でもこれはウィンドウモードとフルスクリーンじゃ絵柄自体の大きさが違うので錯覚してるだけかも。
>でもXPでもDirectX9が検出できた場合に限ってScreenFlipで垂直同期待ちになる模様。
これはかなり興味深いですね。初めて聞きました。
ウィンドウモードでも間違いなく同期してると思ってる派なので調べてみます。
0104名前は開発中のものです。
2009/04/16(木) 15:55:17ID:U7PVHoMj>70の時は1/70だから1/60よりも速いからその分だけ待てばいいのでは
そしたら70FPSになるんじゃないか。
70FPSは60FPSより1秒間に10フレーム多い事になるから、
6フレームごとに1回、空待ちさせれば60FPSを実現させる事はできるけど、
ゲームの処理時間が、「60FPSだと余裕があるが、70FPSだと足りない」
って時に処理落ちがひどくなる。
0105名前は開発中のものです。
2009/04/16(木) 19:22:11ID:/YbqE5Rhって本に間違いってないですか?
何度書き直しても、サンプルプログラムにエラーが発生します
(P118です)
0106名前は開発中のものです。
2009/04/16(木) 19:37:00ID:D5YSrYi0よくわからないけど、4章-01の最後、P125まで全部入れてひとつのプログラムだぞ。
・main.cpp
・gameframe.h
・gameframe.cpp
0107名前は開発中のものです。
2009/04/16(木) 19:41:32ID:D5YSrYi0gameframe.h の先頭で、#include "DxLib.h" 宣言しておかないとむりぽ
これ、本文に書いてない。
P120上の画面写真のプログラムには、しれっと入ってるけど。
0108名前は開発中のものです。
2009/04/16(木) 20:44:04ID:uc3ezfKA0109名前は開発中のものです。
2009/04/16(木) 23:14:39ID:BmH0FmoL誤植多いそうです
0110名前は開発中のものです。
2009/04/16(木) 23:53:51ID:LfSelEBA0111名前は開発中のものです。
2009/04/17(金) 00:52:02ID:EZBCVXFEint nowtime = GetNowCount();
static int oldtime = 0;
static int frametime = 1000 / 60
int diftime = nowtime - oldtime;
while(1)
{
if(diftime >= frametime)
{
oldtime = nowtime;
break;
}
else
{
Sleep(1);
nowtime = GetNowCount();
diftime = nowtime - oldtime;
}
}
こんな感じでScreenFlip()の前に書いてみて。
今ちょっと60Hz以外選べない環境なので今は確かめられないけど、
たしか以前試したときはちゃんと60Hz以外でも60fps出てたはずだよ。
0112名前は開発中のものです。
2009/04/17(金) 05:23:57ID:WaZv4/Kc0113名前は開発中のものです。
2009/04/17(金) 05:51:08ID:Zvoaz6Vb俺もそんな気がしてきた
0114名前は開発中のものです。
2009/04/17(金) 09:10:19ID:Ulw/lN4/CPU使用率100%から0%になった/(^o^)\ナンテコッタイ
例えばタイトル画面とか即時性のない入力待ちの時って
ちょっと長めにSleep入れたりするほうがいいのかな?
20msぐらいなら問題ないのだろうか・・・
0115名前は開発中のものです。
2009/04/17(金) 09:45:55ID:0V/Re1GH>ちょっと長めにSleep入れたりするほうがいいのかな?
少なくとも俺は入れてる。
>20msぐらいなら問題ないのだろうか・・・
全然問題ないと思う。
もっと入れてもいいくらいでしょ。
実際にやってみて自分でストレス感じるなら減らせばいい。
0116名前は開発中のものです。
2009/04/17(金) 13:46:09ID:WaZv4/Kc20msぐらいなら大丈夫だけどね。
0117名前は開発中のものです。
2009/04/17(金) 16:20:15ID:Zvoaz6Vb0118名前は開発中のものです。
2009/04/17(金) 19:34:30ID:LNYxAbHWあと音楽のループ再生する時はScreenFlipを毎フレーム呼ぶ必要があるみたいだし
0119名前は開発中のものです。
2009/04/17(金) 20:21:09ID:jcPGGnUFマジサンクス
0120名前は開発中のものです。
2009/04/17(金) 20:22:40ID:xbUmRi3d0121名前は開発中のものです。
2009/04/17(金) 20:22:58ID:erDEgGZV0122名前は開発中のものです。
2009/04/17(金) 22:03:28ID:EZBCVXFE音楽再生とScreenFlipは関係ないと思うよ。
CPUが100%になるのは明らかに異常だからちゃんとProcessMessage()かSleep()出来てるか確かめた方がいいよ。
たぶんウィンドウ自体をドラッグすらままならない状態だと思うから。
OSにタスクさえ返してあげられてればCPUが多少高くても気にしなくていいと思うけどなぁ。
ゲームって常駐させたり多重起動させたりするものじゃないし。
0123名前は開発中のものです。
2009/04/17(金) 22:17:35ID:ZoeUfmZ70124118
2009/04/18(土) 02:18:14ID:k17DhjXo素で間違えてたorz
何と言う勘違い 恥ずかしい限りです しばらくROMってます
0125名前は開発中のものです。
2009/04/18(土) 21:37:09ID:okbqytId片側のディスプレイだけ明らかに画面がぼやけるんだけど
DirectXの設定かビデオカードの設定がおかしいんだよなこれ?
0126名前は開発中のものです。
2009/04/18(土) 22:23:48ID:okbqytIdSetEmurationやSetGraphModeで画面を引き延ばすと起こるっぽい
ディスプレイの設定なのかよく分からん・・・
0127名前は開発中のものです。
2009/04/19(日) 00:37:44ID:BefQR+3B同意求められても答えられる人ほとんどいないんじゃない?
0128名前は開発中のものです。
2009/04/20(月) 22:52:47ID:eX32oi4P0129名前は開発中のものです。
2009/04/21(火) 15:00:56ID:UkM4PCidScreenFlipは裏画面と表の内容を交換するで
ScreenCopyは裏画面の内容を表に上書きコピーなんだったんだなー
0130名前は開発中のものです。
2009/04/24(金) 01:45:21ID:Zjz+Ahwz0131名前は開発中のものです。
2009/04/25(土) 02:57:38ID:jgu2I7ssシャギるな。俺もだ。
設定次第ではどうにかなるのかもしれんけど。
どっちにせよわざわざウィンドウを引っ張って画面を跨らせることもなかろう。
0132名前は開発中のものです。
2009/04/27(月) 18:31:23ID:FIDn8lAk0133名前は開発中のものです。
2009/04/27(月) 21:58:22ID:z25pzrXj0134名前は開発中のものです。
2009/04/28(火) 00:04:23ID:eksjqOvu大学生が入門書に読んでちょうどいいレベルだろコレ
0135名前は開発中のものです。
2009/04/28(火) 00:10:39ID:HkJlrRjH0136名前は開発中のものです。
2009/04/28(火) 00:34:07ID:m4cMSkq6俺はBASICがせいぜいだったが、
マシン語とかやってる友人もいたし
決して無理じゃないだろう。
0137名前は開発中のものです。
2009/04/28(火) 00:45:01ID:NnZtX6wz0138名前は開発中のものです。
2009/04/28(火) 01:53:08ID:OFMPoMrl0139名前は開発中のものです。
2009/04/28(火) 08:20:28ID:6tVcbqW6簡単に作れるように自前ライブラリ用意してるけど
そのせいでDxLib関数なのか自前関数なのかごっちゃになってるし。
間に20章ぐらい入れて10本以上ゲーム作って、本の厚さが倍になってもいいぐらい。
0140名前は開発中のものです。
2009/04/28(火) 09:19:39ID:nBjz8W9Wそしたら、値段も倍になるがな
0141名前は開発中のものです。
2009/04/28(火) 10:17:56ID:eksjqOvu小学生 ゲーム遊ぶのおもしれえwww
中学生 ツクールおもしれえwww
高校生 VisualBASICとかC言語を始めるか
大学生 C++とかJAVAで2Dゲームでも作るか
20代 3Dゲーム、オンラインゲーム作るよ!
30代 何でこんな仕事を選んだんだろう……
40代 クビになった。新しい仕事探すか……
50代 息子よ。おれは昔、ゲーム開発をやっててなあ
60代 年金安いのう……
70代 孫よ。わしは昔、ゲーム開発を(ry
80代 開発の仲間……もうみんなこの世におらん……
90代 ゲーム? 何のことかいね
100代 「おじいちゃん! それはご飯じゃないよ、ゲームだよ!」
晩年 「おじいちゃんは亡くなる前に、大好きな『ハレハレユカイ』を唄っていました」
0142名前は開発中のものです。
2009/04/28(火) 10:28:58ID:FvUt88Xp0143名前は開発中のものです。
2009/04/28(火) 16:15:43ID:6TTz0S/cいまここ
0144名前は開発中のものです。
2009/04/28(火) 22:07:41ID:MfOPTYG9これいじる方法はDXライブラリには無いんですか?
0145名前は開発中のものです。
2009/04/28(火) 22:15:25ID:GpFUP3xeつSetGraphMode
0146名前は開発中のものです。
2009/04/28(火) 22:24:39ID:MfOPTYG9ありがとうorz
すみません。ウインドウモードの項ばかり探してました
0147名前は開発中のものです。
2009/04/28(火) 23:44:24ID:AAXsWLBJ0148名前は開発中のものです。
2009/04/29(水) 00:04:40ID:fznxD5WLやあ、俺
0149名前は開発中のものです。
2009/04/29(水) 00:57:49ID:8JDzhdlg何でこんな仕事を選んだんだろう……相談する同僚がいない
>30歳 ←いまここ
俺
0150名前は開発中のものです。
2009/04/29(水) 12:12:40ID:0KNrHYhz中学生 PC98買ってもらってtakeruとかでゲーム買ったりベーマガ買ってBASICで遊ぶ
高校生 女遊びでPCなんていじらない
大学生 にはならずにバイト生活。PCなんて無縁
20代 実家に帰るとWindows98とネットがあったので暇だったのでいじってみる。
ここでwebの世界やプログラミング熱再発。色々物色する。
そしてそのまま引きこもり。
30代 ←もうすぐここ
0151名前は開発中のものです。
2009/04/29(水) 12:23:18ID:Id8MNKk30152名前は開発中のものです。
2009/04/29(水) 13:15:43ID:0KNrHYhz0153名前は開発中のものです。
2009/04/29(水) 14:34:34ID:DcEbzAT60154名前は開発中のものです。
2009/04/29(水) 14:49:56ID:eqm+L+6k0155名前は開発中のものです。
2009/04/29(水) 15:17:03ID:GO8Ds4lj0156名前は開発中のものです。
2009/04/29(水) 19:22:33ID:sy8jjFeIプランナーや絵描きなどで生きられるだけの資産がなければ、そのままスクラップだ
ゲーム会社も高齢化が進んでて、新しい概念が作れなくなってきている
0157名前は開発中のものです。
2009/04/29(水) 19:25:35ID:eqm+L+6k新しい概念が作れないのはゆとりが増えたから
0158名前は開発中のものです。
2009/04/29(水) 20:32:14ID:2b50vk1R0159名前は開発中のものです。
2009/04/29(水) 21:37:02ID:Dpfb2ylv0160名前は開発中のものです。
2009/04/30(木) 00:27:05ID:JN4PBkevDXライブラリで実現できますでしょうか?
GetDragFilePath()の使い方がいまいちわかりません。
ご教授お願い致します_ _
0161名前は開発中のものです。
2009/04/30(木) 00:58:25ID:qZvDrEy3D&Dに関しては、GetDragFilePathでググって出てきたページの内容を見る限り、
この関数は毎フレーム呼び出し、戻り値はD&Dされていれば0、されていなければ-1となる。
D&Dされてたら、引数で渡したバッファにD&Dされたファイルのパスが入ってくる。
ちなみにD&Dされたファイルの個数はGetDragFileNum()で取得できる。
複数ある場合は、その数だけGetDragFilePathを呼べば1つずつファイルパスを取得できる。
ちなみにこれらは毎フレームに一度DragFileInfoClear()で初期化してから使うべき。
ただ情報が古い可能性もあるし、実際試したわけじゃないから、
今のDXライブラリでできるかどうかは知らない。
0162名前は開発中のものです。
2009/04/30(木) 01:05:34ID:qZvDrEy30163名前は開発中のものです。
2009/04/30(木) 01:56:07ID:JGk3snwAint WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow){
ChangeWindowMode(TRUE);
SetMainWindowText("(´・ω・`)");
if(DxLib_Init() == -1 ){return -1;}
int open,tdn,cc;char file[256];
SetDragFileValidFlag(TRUE);SetDrawScreen(DX_SCREEN_BACK);SetFontSize(32);
while(ProcessMessage()==0){
ClearDrawScreen();
open=GetDragFilePath(file);//D&Dでファイル獲得する open:ファイル獲得が成功か失敗か判定
if(open==-1&&CheckMusic()==0)DrawFormatString(0,100,-1," なんか音楽を食わせろ!ESCキーで終了");
if(CheckMusic()==0&&cc==0){SetMainWindowText("(´・ω・`)");cc=1;}
if(CheckMusic()==1)DrawFormatString(0,100,-1," 音楽を止めるのならスペースを押せ!");
if(CheckHitKey(KEY_INPUT_SPACE)==1)StopMusic(); //スペースで音楽を止める
if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break; //エスケープで終了
if(open!=-1){ //ファイル獲得成功
cc=0;SetMainWindowText(file);tdn=PlayMusic(file,DX_PLAYTYPE_LOOP);}
ScreenFlip();Sleep(20);
//音楽ファイル以外を食わせた場合w
if(tdn==-1){MessageBox(NULL,"(゚Д゚)ゴルア!"," それ再生できねーし",0x0000030);StopMusic();break;}
DragFileInfoClear();
}
InitSoundMem();
DxLib_End() ;
return 0 ;
}
0164名前は開発中のものです。
2009/04/30(木) 02:04:43ID:JN4PBkev>>163さんにはサンプルまでご用意いただいて感激です!
これでBGMをプレイヤーに指定させることができます。
即レス感謝!ありがとうございました!!
0165名前は開発中のものです。
2009/04/30(木) 09:08:28ID:QAaf0WGA0166名前は開発中のものです。
2009/04/30(木) 13:16:31ID:Nu0gAO100167名前は開発中のものです。
2009/05/01(金) 08:16:49ID:OvJuayUs見栄えや諸々の理由で画像ファイルとして文字を作ることにした。
インストールされてるフォントを使って12x16のサイズのカタカナを
ほぼそのまま描いてるんだけど、どうしてもエッジが目立っちゃう。
縁取りとか、影とか、ぼかしとか色々試したんだけど難しい。
みんなはどうやってるの?あと、デザインとか凝ったりするの?
0168名前は開発中のものです。
2009/05/01(金) 09:46:27ID:g5JaObohその辺は、普通に。 まずは、見栄えとかよりも、完成が先だしね。
「文字 CG 講座」とか「ロゴ 制作」とかで検索すrば、やりたい事の方法が見つかると思う。
0169名前は開発中のものです。
2009/05/01(金) 10:22:40ID:SX1l7Niwセリフとかそんなヤツなら、何も工夫せずにそのままDrawStringで表示してる。
>デザインとか凝ったりするの?
デザインが大事なのは理解してるが、センスが壊滅的なので
あきらめて最低限で済ませてる。
0170名前は開発中のものです。
2009/05/01(金) 14:38:00ID:OvJuayUsありがとう。俺もデザインが壊滅的です。
しょぼ画像で今まで普通にやって来たんだけど、
先日ゲーセンで業務用のゲームを見たのがいけなかったw
最近はフォントを一文字ずつ手打ちでドット修正して、
気付いたら4、5時間経ってて結局上手くいかなかったとかあって。
まあでも、「この方法では出来ない」っていうのが少し分かったのは収穫だけどw
ゲーム作るのってやっぱり色々な知識が必要だね。
0171名前は開発中のものです。
2009/05/01(金) 21:45:00ID:n+u5dqvm0172名前は開発中のものです。
2009/05/02(土) 08:08:52ID:Sn/Kauilそれで飯食っている奴がいるくらいだから奥が深いよな。
フォントの選定とか字間とか決めるだけでも大変。
0173名前は開発中のものです。
2009/05/02(土) 13:50:47ID:BkuXnv3v台詞に使って日本語漢字とかまでなるとやってられないから普通に既存フォントのでやってるな。
フリーのフォントいくらでもあるから、それ使えばいいんじゃないか?
テキストに文字書いておけば、指定フォントのを画像ファイルにして出力するソフトなかったっけか。
■ このスレッドは過去ログ倉庫に格納されています