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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2009/12/04(金) 16:49:13ID:7SKA4I5z
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

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

【過去スレ】
DXライブラリ 総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1197468399/
DXライブラリ 総合スレッド 2008
http://pc11.2ch.net/test/read.cgi/gamedev/1224923873/
DXライブラリ 総合スレッド その3
http://pc11.2ch.net/test/read.cgi/gamedev/1238429676/
DXライブラリ 総合スレッド その4
http://pc11.2ch.net/test/read.cgi/gamedev/1249822550/
0342名前は開発中のものです。2009/12/26(土) 17:54:19ID:E9OJHMux
3Dゲーム創りたいんだけど、最近3D対応したばかりのDXライブラリより
EASY3DとかSeleneのほうがいいのかな?
ここで聞くのは野暮だと思うけど、2DゲームでDXライブラリを使って良かったので、
3D機能についての現状を知りたい。
0343名前は開発中のものです。2009/12/26(土) 18:16:38ID:t2+el/7e
>>341
もう解決してるけどそういう「何フレーム化に一度」の処理は、1Fごとに++するTimeみたいな変数を作って、
if (Time%60==0)みたいに使ったほうが良い
特にGetNowCountは音ゲー作るかFPS計測する時など1ミリ秒のズレも許されない時以外はあまり使うべきではない
0344名前は開発中のものです。2009/12/26(土) 20:29:54ID:R/WYZk+C
>>342

DXlib 3D使ったことない
Selene 使ったことない
Easy3D HSP版だけ使った

HSPで3Dは楽だし結構いろんなことできるしよかったよ
ただ演算多くなる場合は断然cが速すぎ
0345名前は開発中のものです。2009/12/26(土) 22:19:58ID:UrPNO9E9
>>342
基本的な機能は揃っているし十分3Dゲームを作れるよ。
ニコ動でDXライブラリを使って作られた3Dゲームが公開されているので一度見てみるといいよ。
しかし、Seleneと比較するとやや機能不足な点もある。
シェーダー、ポストエフェクト、GUI、物理エンジン、スプライト(パーティクル)など。
特にシェーダーが使えないというのはレンダリングの品質に大きく差が出る。(PS3とPS2ぐらい違う)
逆に言えばDXライブラリの方が扱いが簡単なので、3D初心者ならこっちの方が向いてると思う。
0346名前は開発中のものです。2009/12/26(土) 23:51:39ID:FO5uRkla
あと、空間分割とかないな
無いものは自前で実装すりゃいいけど、その頻度が増えると
DXライブラリで無理して作ってる感じになる
ならSeleneとか他の3Dが充実してるライブラリ使ったほうがいい
もしくはDirectX直
どの程度のものを作るかによるってことだな

>>332
FBXならBlenderが良いよ
X、FBX,、PMD+VMDの話題は前にも見た気がする
0347名前は開発中のものです。2009/12/27(日) 00:12:09ID:kPK58Sfx
>>346
そこらへんがDXライブラリじゃ駄目といわれる所以だよね
出来なくても無いけど2Dほど簡単ではないし、それならちょっと頑張って他のライブラリ使ったほうがずっと天井が高い
0348名前は開発中のものです。2009/12/27(日) 00:28:01ID:MBrvOJgD
結局このライブラリは3Dに関してはまだ遅れているってことなのかな
つい最近対応したばかりだから仕方ない話だといえばそれまでなんだけど
03493322009/12/27(日) 01:02:13ID:bc5V7EbG
>>346
>X、FBX,、PMD+VMDの話題は前にも見た気がする
情報ありがとう。
前スレ見てなかったけど、Blenderの出力したFBXは問題ないようですね。
ただUIが独特で個人的には使いにくかったので・・・
あとToyStudioの出力したXファイルも問題ないみたいなのでこっちも良いかも。
03503462009/12/27(日) 01:27:46ID:GGjOngEr
>>347
つっても、あくまで現時点ね
>>348が言うように、3D対応されたばかりで機能が足らないのは仕方ない
個人的には期待してる
PMD化するのは手間だけど
PMD+VMDは3Dを扱う敷居がぐっと下がる
モーションが連番で別ファイルになってるのも、使ってみればかなり便利
最終的にはMV1にしてもいいしね
3D機能の充実は時間かかるだろうけど、作者にはがんばってもらいたい
0351名前は開発中のものです。2009/12/27(日) 13:06:29ID:2vbWXkV1
でもあまり機能が充実しすぎるとお手軽ライブラリじゃなくなるのよね。
高機能で簡単、というのはただ単に高機能というだけよりよっぽど作るのが難しい。
DXライブラリはお手軽なところが受けてるだろうから、あまり機能追加しすぎて複雑にならないことを祈る。
0352名前は開発中のものです。2009/12/27(日) 14:00:34ID:uhSQPV5X
DXライブラリの3Dライブラリは、安定するまでに2年くらい必要だろう

同程度のライブラリでDrakGDKを使ってれば良いと思う。
C言語の初級からでも扱える3Dライブラリで難易度が低い
これで3Dの技術を身に付けて、
2年後くらいにDXライブラリ3Dを始めるのもよい

3Dは表面化されない小さいトラブルが多い。
そして、わけのわからん専門用語も出てくるし....
0353名前は開発中のものです。2009/12/27(日) 17:13:24ID:z8YG6h4b
今サンプルを参考にちょろっと創った感じだと、現時点でもかなり簡単に
ある程度のレベルのものは創れそうだよ。
少なくとも64以上のものは簡単に作れるだろうし、努力しだいではPS2レベルのも出来るんだろう。
本格的に目指すのでない限りは更新速度や質問できる環境などを考えると、
DXライブラリでぜんぜんいいと思った。
まだ3Dモデルを動かすとこまでしかやってないけどね。
0354名前は開発中のものです。2009/12/27(日) 17:59:53ID:yZAsy6xS
直接質問できる環境は大きいよな
しかし管理人さんって何者なんだろうな
0355名前は開発中のものです。2009/12/27(日) 18:49:06ID:8drOPqxx
作者って14歳の中のひとなんだろうか…
0356名前は開発中のものです。2009/12/27(日) 18:51:42ID:A9L3SGsA
クラスとか使ってC++に最適化されたDxLibも作って欲しいわ
0357名前は開発中のものです。2009/12/27(日) 18:56:35ID:8drOPqxx
Dx.
まで入力したら入力補間で命令がズラっと出るという夢をみた。
いや、まぁ自分で改造すればいいのかもしれんけど…
0358名前は開発中のものです。2009/12/27(日) 19:16:58ID:z8YG6h4b
これってブラーとか鏡(レンダリングした結果をテクスチャに)とかはまだ実装されてない?
0359名前は開発中のものです。2009/12/27(日) 20:07:35ID:M0Cw0Z6W
>>357
DxLib::
0360名前は開発中のものです。2009/12/27(日) 20:23:19ID:LDM1qCXB
すいませんこのソフトってオブジェクト指向を理解してないと利用できないのでしょうか?
0361名前は開発中のものです。2009/12/27(日) 20:32:01ID:jKh1EiXg
自分はHSPから移動してきたので
変数は全てグローバル変数で管理して
各ファンクションもサブルーチンとしてしか認識していなかったが
普通に作れた
0362名前は開発中のものです。2009/12/27(日) 20:37:49ID:bc5V7EbG
>>358
「ブラー」はモデルを半透明にして重ねて描画じゃダメ?
「鏡」は3Dに限らず描画先を指定できないと思うので無理そう。

>>360
C言語の知識だけで十分だよ。
まあ、14歳でも使えるらしいので。
0363名前は開発中のものです。2009/12/27(日) 21:54:18ID:mBfODTUH
ガチで99%の変数をグローバルにして
ゲーム完成させたらソースコードが12000行とかになって悶絶した
クラス使わないなら関数化は必須に近い・・・
VCの左画面様様だわ
0364名前は開発中のものです。2009/12/27(日) 22:06:33ID:8drOPqxx
俺もHSPから移行組だったからグローバル当たり前が染み付いていたけど
アクセス制限が邪魔なら全部publicでもいいからクラス使った方が
変数名とか関数名の管理が楽だぞ
0365名前は開発中のものです。2009/12/28(月) 01:07:57ID:3r1xx2ry
>>358
>ブラーとか鏡
今試してみたら3Dでも、SetDrawScreen()でテクスチャにも
レンダリングできたよ。管理人さんが昨日直してくれたバージョンだと
DrawExtendGraph()でも表示できた。
ずらしたり拡大縮小すれば、DirectXの本とかに良く載っているAAや
被写界深度の表現も出来そうな感じ。

できないのはテクスチャをロックしてピクセル単位でいじること
じゃないかな。つまりブラーや鏡とかは可能だけどレンダリングした
画像にポスト処理とかはできない…と思う。

ただこのへんの処理やソートとかは、DirectX直接いじる時と同じで
自分で実装しないといけないぽいので、その意味では既出のように
低レベル(ハード寄り)なので2D機能よりは敷居高い部分あるかも。
0366名前は開発中のものです。2009/12/28(月) 03:34:23ID:9l/NWr9W
すみません。
このエラーは何が原因なんでしょうか?

LINK : fatal error LNK1104:DxLib_VC2005用.exe' を開くことができません。
0367名前は開発中のものです。2009/12/28(月) 03:42:52ID:/F5FiFDi
良い感じにPMDの問題報告→修正されてきてるな
0368名前は開発中のものです。2009/12/28(月) 07:59:40ID:TSFI1pm5
>>366
DXライブラリのエラーではない、以上。


変な場所で実行してるんじゃなければ、
exeファイルのパーミッション確認しとけ。
0369名前は開発中のものです。2009/12/28(月) 10:27:15ID:9l/NWr9W
わかりました。ありがとうございます。
0370名前は開発中のものです。2009/12/28(月) 11:44:34ID:Us5hvkZh
>>362
14歳より歳いってて、Cは授業で少しくらいの自分がいまいち理解できないとちょっと悲しくなるタイトルだと思うんだ。
0371名前は開発中のものです。2009/12/28(月) 11:45:38ID:dBTW62Xp
俺なんか14歳以下どころか猫以下だぜ・・・
0372名前は開発中のものです。2009/12/28(月) 11:49:28ID:jpOTUZve
あの猫高知能すぎだよな…
0373名前は開発中のものです。2009/12/28(月) 11:57:25ID:yuCthtY8
>>365
SetDrawScreen関数は任意のテクスチャを描画先に指定できないと思うんですがやり方があるんでしょうか?
0374名前は開発中のものです。2009/12/28(月) 12:43:57ID:u/qep0of
あんなレベルの猫や猿が標準だったら今頃世界から人間滅ぼされてるよな・・・
0375名前は開発中のものです。2009/12/28(月) 12:58:13ID:3EFD++9F
俺は逆にグローバル関数出来るだけ使わないように拘ってたが
色々面倒になってグローバルも積極的に使うようにしたがな
0376名前は開発中のものです。2009/12/28(月) 12:59:10ID:3EFD++9F
間違えた
×グローバル関数
○グローバル変数
まあどうでもいいことだけど
0377名前は開発中のものです。2009/12/28(月) 13:16:08ID:jpOTUZve
最新(掲示板)の奴、ウィンドウの拡大縮小すると変にならね?
0378名前は開発中のものです。2009/12/28(月) 13:46:53ID:yuCthtY8
>>377
掲示板(2009/12/27(Sun) 13:35)に投稿されているバージョンで試してみたけど確かに挙動が違う。
ウィンドウの拡縮が反映されてないね。
0379名前は開発中のものです。2009/12/28(月) 14:29:28ID:vxFbJ2Ow
ifってeles使わなくてもifで固めればeles使う必要あるのかな?
0380名前は開発中のものです。2009/12/28(月) 14:41:43ID:TSFI1pm5
>>379
どこから突っ込めばいいんだい?
0381名前は開発中のものです。2009/12/28(月) 14:49:03ID:YIPGDrjp
日本語からじゃない?
0382名前は開発中のものです。2009/12/28(月) 14:54:14ID:jpOTUZve
スレチって所からだな
0383名前は開発中のものです。2009/12/28(月) 15:42:28ID:0XgsQP9X
>>379
とりあえずマジレスするが
まずスレチな
次にelseな
elseを使わないと想定していないエラーが起きる場合もあるから
else ifって形にするべき
0384名前は開発中のものです。2009/12/28(月) 15:43:55ID:vxFbJ2Ow
すいませんでした。
else ifのところのelseをぬいてもおなじように動いたので、
いるのかなと思って
C言語のすれにいきます。
0385名前は開発中のものです。2009/12/28(月) 15:46:54ID:vxFbJ2Ow
ですよね、些細な疑問にマジレスありです。
すっきりしました^^

0386名前は開発中のものです。2009/12/28(月) 16:46:29ID:EmomTfPw
友蔵心の俳句
03873652009/12/28(月) 17:40:27ID:3r1xx2ry
>>373
試したことはないけどpng等から作ったテクスチャとか
「任意なテクスチャ」には無理だと思う。

たぶんテクスチャにレンダリングしたい時は、描画可能な
テクスチャを専用で作らないといけないはず。
具体的には、SetDrawValidAlphaChannelGraphCreateFlag()等で
指定してから、MakeGraph()で作ったテクスチャになら
レンダリングできる。
あとはそのテクスチャを普通にDrawGraph()とかで描画できるけど
UVやビルボードに使えるかはまだ試してないので分からない。

このへんを含めてリファレンスには載っていない関数も
かなり多いので、Dxlibのソースや公式掲示板の過去ログ
とか見ると使い方も含めていろいろ発見あるかも。
03883732009/12/28(月) 18:48:57ID:yuCthtY8
>>387
ありがとうございます。
SetDrawScreen関数はMakeGraph関数で作成したグラフィックも指定できるんですね。
リファレンスに書かれていない機能だったとは・・・
0389名前は開発中のものです。2009/12/28(月) 18:52:49ID:dBTW62Xp
ほうほうそれは知らんかった
なんで隠すんだろうな
0390名前は開発中のものです。2009/12/29(火) 00:11:37ID:MjH8+OO8
関係ないスレだろうけど、ぐぐって検索したらここが見つかったのでここで書く。

「ゲームプログラマになる前に覚えておきたい技術」のシングルトンが変

普通シングルトンといったらpublic static getInstance()内部で初回呼び出し時に
インスタンスを作成するのに、別にインスタンス作成のためのpublic static create()というメソッドがある。

そして、クラス外部のどこかでcreate()を呼び出してインスタンスを作成している。
二回createしたら落ちるだとさ。つまり複数インスタンスをcreateするコードをかけてしまう。
これでは、実行時に落ちるとはいえ、コンパイル時にエラーを検出できない。

たとえば、複数のプログラマが、コードの一部分を分担してそれぞれ作っているときに
それぞれがcreate()していると、コードを分けている段階では問題なくても
一つにマージしたときにエラーが発生するというシナリオが起きてしまう。
0391名前は開発中のものです。2009/12/29(火) 00:18:26ID:IYgt3GZP
あの本は結構適当だからな
0392名前は開発中のものです。2009/12/29(火) 01:19:32ID:0CS2MVBj
セガの限界です
教育担当者ですらその程度
だからあそこまで落ちぶれた
0393名前は開発中のものです。2009/12/29(火) 02:24:27ID:RokfBydo
Singleton の構築|Code++
ttp://ameblo.jp/woooh-p/entry-10031871696.html

2回create()を呼び出すと落ちるのは問題だが
初期化関数を別に用意したほうがいい場合もある
0394名前は開発中のものです。2009/12/29(火) 10:12:58ID:Mul0eZVk
まあシングルトンなんか使う時点で…
0395名前は開発中のものです。2009/12/29(火) 10:14:09ID:qD3DEd6e
シングルトンは普通に使うだろ
0396名前は開発中のものです。2009/12/29(火) 10:31:45ID:Mul0eZVk
とりあえずシングルトンにしとけばオブジェクト指向っぽいしどこからでもアクセスできて便利と思ってる奴が多すぎる
グローバル変数だと意識して使うのは勝手だけどさ
0397名前は開発中のものです。2009/12/29(火) 11:41:51ID:4TKwhtv1
SEGAはプログラマが悪いんじゃなくて企画が悪いんじゃね?
0398名前は開発中のものです。2009/12/29(火) 12:33:29ID:MJuE+QA3
宣伝が悪い
0399名前は開発中のものです。2009/12/29(火) 12:33:57ID:IYgt3GZP
つまりなにもかも悪いのか
0400名前は開発中のものです。2009/12/30(水) 18:16:44ID:UY2bjnZL
ChangeFontType(DX_FONTTYPE_ANTIALIASING_EDGE);
↑でフォントを変更すると異常に重くなる。
これ以外で文字も目立たせる方法ってあります?
たくさんの色つかってる背景なので、文字が目立たなくて見にくい
0401名前は開発中のものです。2009/12/30(水) 18:19:27ID:61sxYcJT
CreateFontToHandle
0402名前は開発中のものです。2010/01/01(金) 10:45:01ID:OYP4V88L
VC++確かにべんりだーー。
{}のつながりがわかるじゃないか。
bccのときはこめんとひっつでした。
ただぎょうがわかればいいな〜〜
0403名前は開発中のものです。2010/01/01(金) 10:49:31ID:usKzGBmk
一度VC#やVB触ったらVC++なんかゴミにしか感じられなくなるけどな
0404名前は開発中のものです。2010/01/01(金) 10:52:44ID:tpzydI5S
VC#やVBも機械語と比べたらゴミにしか感じられないけどな
0405名前は開発中のものです。2010/01/01(金) 12:36:09ID:WC0TdB7O
>>402
メニューの[ツール]->[オプション]->[テキストエディタ]->[C/C++]->[全般]
で行番号をチェック
0406名前は開発中のものです。2010/01/01(金) 13:08:58ID:/td8CeQE
>>402
それはお前のインデントが悪い
0407名前は開発中のものです。2010/01/01(金) 15:11:34ID:7pzjYUfB
VC#やVBってVC++より遅いんだろ?
それにVC#はガベジなんちゃらというので急に重くなるそうじゃないか
アクションとかシューティングに向くの?
0408名前は開発中のものです。2010/01/01(金) 15:26:26ID:rtNA4Eqo
その通りだからC++でやりなよ
0409名前は開発中のものです。2010/01/01(金) 16:19:43ID:oXGgPpta
>>407
.NETのガベージコレクションは優秀だから重くなることは無いよ
Xbox360では多少難あるけどね
実行速度遅くて困るなんてことは今の時代のPCスペックじゃ有り得ないそ
Javaのゲームも余裕で動く時代だし
アクション、シューティングもネットブックで動かせたよ
0410名前は開発中のものです。2010/01/01(金) 16:32:52ID:i5316gGW
勝手に動いたガベコレが2フレームくらい時を止めても困る
0411名前は開発中のものです。2010/01/01(金) 16:44:58ID:usKzGBmk
今時そんな細かい処理速度が表に出てくるほどのゲームを作るのは大変だぞ
そんなカツカツの高負荷のゲーム作るんだったらそもそもDXライブラリなんか使うべきじゃないしな
それはともかく>>403は単にIDEの出来だけを言ったつもりだった
0412名前は開発中のものです。2010/01/01(金) 16:48:57ID:qgsN6nSc
VC#()笑 VB()爆
0413名前は開発中のものです。2010/01/01(金) 17:46:25ID:+lDteCCN
ゼタセカンドでさえ遅れるのを許されない設計の場合

まず
・設計を改める
 削れる処理はないか。
 もっと速い処理はないか。  特に算術演算はコンパイラでさえ最適化しきれない「なにがやりてーんだタココラ」って効率の悪いコードになりがち。
 セオリーから外れてないか。 ウェイトを「カウントアップ」でやろうとしてないか。

などを見直し、それでもダメだ!1ヨクトセカンドでも遅れるのは許されぬ!ってとき

ハードウェアとダチ公になる


のだ。
遅れるってのは結局「OSのスリープに頼っているから」である。
OSのスリープはもちろんOSがやることなので「今は特に眠くないです。」といったらスリープしてもらえない。
そこをハードウェアとダチトモコレクションすることで、強制的にスリープするのだ。
0414名前は開発中のものです。2010/01/01(金) 17:52:47ID:+lDteCCN
格闘ゲームだったら体力が0になったとき義塾大学になるのはもちろんだが、
気絶などのステータスもある。何のモーションのとき何が何でキャンセルできるのか

そういうことも常に演算する対象だが、これを

if(cancell_OK == 1)

とかやってるやつは基本がなってない。

char  cancell_OK, cancell_NG, cancell_only_special・・・・・・・

などと延々必要になるではないか。
ステータス管理の変数は1つにまとめろ。それは可能である。


というふうに、効率の悪いコードになっているのを改めることでだいぶ良くなる。

0415名前は開発中のものです。2010/01/01(金) 18:19:25ID:Xn7CcDBA
>ステータス管理の変数は1つにまとめろ。それは可能である。
へぇ〜どうなるの 40文字以内で教えてください
0416名前は開発中のものです。2010/01/01(金) 18:20:21ID:ulJ3MFDL
>ウェイトを「カウントアップ」でやろうとしてないか。
これについて教えて下さい
0417名前は開発中のものです。2010/01/01(金) 18:20:50ID:+lDteCCN
結局のところ、格闘ゲームにおけるステータスってのは0か1しかない。
分かるだろ。の
0418名前は開発中のものです。2010/01/01(金) 18:22:58ID:qgsN6nSc
>>414
cancell…

ステータスはビット演算でやってもいいが可読性が著しく低いから、
boolの配列作って0〜nの数字をそれぞれステータス名でenumしてる
スパゲッティどころか脳髄の如く絡まってるコード持って自慢げにメモリ使用量が〜〜とか言ってる奴いるとぶん殴りたくなる
というかぶん殴る
0419名前は開発中のものです。2010/01/01(金) 18:23:47ID:+lDteCCN
カウントアップウェイト

信じられないことに、いまだに良く見るんだが
for(i=0, i < During; i++)

のこと。逆も然り。
for(i=During; i !=0; i--)

のような


これ数えてる間、CPUがずっとそれに占有されるだろ
これじゃウェイト、スリープの意味がない。
0420名前は開発中のものです。2010/01/01(金) 18:25:49ID:ulJ3MFDL
>>419
これ駄目なの?普通に使ってた
代わりにどう書けばいいの?
0421名前は開発中のものです。2010/01/01(金) 18:27:56ID:+lDteCCN
ウェイトやスリープってのは、

「何もしないんだから、その間他の処理をさせよう」

ってのが基本だ。また、そうでないとウェイトしてる間他の何の処理もできないから
極端に言えば画面が停止することになる。


普通は、OS越しに駆動するゲームだったらOSに用意されるスリープ命令を使う。
OSがない組み込みなどで動かすゲームなら、割り込みを使う。
0422名前は開発中のものです。2010/01/01(金) 18:38:45ID:ulJ3MFDL
0423名前は開発中のものです。2010/01/01(金) 19:16:43ID:CHW7ms0X
ループ処理の話かと思った
0424名前は開発中のものです。2010/01/01(金) 19:24:26ID:Xn7CcDBA
unsigned long stat;
#define CANCEL_OK 0x00000001
,,,
 if (stat & CANCEL_OK)
 ...
 else if (stat & CANCEL_NG)
 ...
とか書くのかな

>boolの配列作って0〜nの数字をそれぞれステータス名でenumしてる
みたいなほうが好きだ
ただ例にあげてるとおりに格闘ゲームだとするとキャラクターの1フレームごとの変数の数が増えるのをきらうのはわかる
0425名前は開発中のものです。2010/01/01(金) 19:28:11ID:DuVCrQzJ
>OSがない組み込みなどで動かすゲームなら、割り込みを使う。

GBAとかMSXとか古いゲーム機の時のことでしょ
懐かしいな
0426名前は開発中のものです。2010/01/01(金) 19:28:36ID:+lDteCCN
時間軸で考えると、
例えば「1時間後に働けよ」というのがスリープの考え方。

「じゃあその1時間何をするか」。
1時間、ずーっと1,2,3,4,5,6,7,8,・・・・と声に出して数え上げるとする。
これじゃ、なんか用事があっても何も出来ない。

「じゃあ本でも読むか」となれば、別の処理(本を読んで知識を得る)が出来る。

どっちやっててもシステム時間として1時間は過ぎるが
片方は「実質的に意味のあることを何もしてないのにパワーだけ食う」
片方は「実質的に何もしないんだから別のことをする」

どっちが効率的か分かるだろう
0427名前は開発中のものです。2010/01/01(金) 19:31:29ID:+lDteCCN
また、ループも

for(i=0; i < During; i++){
 Plus += Exactly;
}

ではなく、
if(During == FuckingAss){
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
}

などとしたりすることがある。
基本的にコッチのほうが速いからだ。
CPUとコンパイラにもよるが。
0428名前は開発中のものです。2010/01/01(金) 19:32:53ID:ulJ3MFDL
>>427
へー
0429名前は開発中のものです。2010/01/01(金) 19:35:16ID:ulJ3MFDL
でも1000回のループとかだと、1000行書いてたらさすがにソース長くなって鬱陶しいよね
大体何回までのループなら>>427の↓のパターンで書いてもいいの?
0430名前は開発中のものです。2010/01/01(金) 19:37:18ID:+lDteCCN
デッドライン、つまりここまでに必ず処理終えろ!っていう最終期限が決まってるシステムでは
forループではなく、こういうふうな展開したループもどきが使われることも多い。

難点は、見た目素人っぽいこと

それ以外は何してるか分かりやすくていいのだが
「こっちのほうが速いよ」ってことをなかなか認めてもらえないのが難といえば難


これを、デッドラインまで繰り返す
デッドラインが決まっているということはおおよそのアタリがつくし、
そんなに長いループにもならない。なってはいけない。
0431名前は開発中のものです。2010/01/01(金) 19:42:28ID:+lDteCCN
まあこういう小ネタは
「もっと軽くしたい」ってときの最終手段なので

根本から遅いのであれば設計を見直したほうがいいよ
0432名前は開発中のものです。2010/01/01(金) 19:44:49ID:Xn7CcDBA
>ID:+lDteCCNが考える中で
じゃあWindowsのDXライブラリで
たとえば1フレーム50ミリ秒にするのにSleepを使わない最適なメインループはどういうの
公式のサンプルがいいのなら「それ」といってくれればいいです
0433名前は開発中のものです。2010/01/01(金) 19:46:30ID:qgsN6nSc
マジレスするとDXライブラリ使うような環境でこんな事を考える必要は無い
0434名前は開発中のものです。2010/01/01(金) 19:48:17ID:ulJ3MFDL
>boolの配列作って0〜nの数字をそれぞれステータス名でenumしてる
これ具体的にどんな感じで書けばいいの?
0435名前は開発中のものです。2010/01/01(金) 19:50:56ID:+lDteCCN
俺やったら、スリープはCPUに直結する。
例えばPowerPCはタイマユニットを持っているので
これに値を入れてカウントさせる。アンダーフローと同時に割り込みが入る。
その割り込みでタスクを駆動させる。

こういうハード寄りもいいとこのタイマ管理ってのはアプリで使うもんじゃないというし、
まあそれもそうだろうが実現する場合これが一番いいのだ。

ハードウェアのタイマクロック計上はタスクじゃないので、一切影響を及ぼさない。
普通OSのスリープは多かれ少なかれCPUのパワーを食うが
俺のやるタイマは一切食わない。割り込み処理のオーバーヘッドは微々たるもの。
0436名前は開発中のものです。2010/01/01(金) 19:52:10ID:ulJ3MFDL
>>435
全然わからんからサンプルソースで説明しておくれ
0437名前は開発中のものです。2010/01/01(金) 19:54:51ID:OvIEzR2y
wwwwww
DXライブラリのスレでPowerPCwwww

面白いヤツだなお前
0438名前は開発中のものです。2010/01/01(金) 20:05:29ID:+lDteCCN
PowerPCは例えだし
サンプルといっても、やりたい事を記した関数しかないのだがw

割り込みはソフトウェアじゃない。
割り込みは、ベクタ方式の場合ベクタベースからオフセットしたところにプログラムカウンタが来るだけだから
別にソースで表すもんじゃない。
また、PowerPCならベクタじゃない。
0439名前は開発中のものです。2010/01/01(金) 20:07:18ID:rctl5BXb
割り込みベクタとか。正月でやっぱらったロートルPGが集まるスレはここか?
0440名前は開発中のものです。2010/01/01(金) 20:08:35ID:rctl5BXb
やっぱらったって酔っぱらったなw
俺も飲んでるがなww
0441名前は開発中のものです。2010/01/01(金) 20:10:31ID:+lDteCCN
でもハード寄りプログラムは面白い。
普通あんまり使わないウォッチドッグタイマ

どうしても更新したいのに処理が終わらなかったとき
これで強制的に更新したりできる
たまにはハード寄りのオブジェクトを作ってみても面白い
■ このスレッドは過去ログ倉庫に格納されています