DXライブラリ 総合スレッド その10
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2011/08/18(木) 17:18:15.54ID:vXmrN4yDGUIのゲームを比較的容易に作成する事を可能にする、
「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/
DXライブラリ 総合スレッド その5
http://pc11.2ch.net/test/read.cgi/gamedev/1259912953/
DXライブラリ 総合スレッド その6
http://hibari.2ch.net/test/read.cgi/gamedev/1267108154/
DXライブラリ 総合スレッド その7
http://hibari.2ch.net/test/read.cgi/gamedev/1286180687/
DXライブラリ 総合スレッド その8
http://hibari.2ch.net/test/read.cgi/gamedev/1301818631/
DXライブラリ 総合スレッド その9
http://hibari.2ch.net/test/read.cgi/gamedev/1310904069/
0078名前は開発中のものです。
2011/08/23(火) 15:29:08.46ID:LpKAIWaDマップチップの描画処理です。
640*480に16*16のチップを3レイヤー分敷き詰めるとチップ無し
のマスもあるので平均して1500くらいの回数に。
で、内蔵グラフィックボードだと60fpsを割ったり割らなかったり。
一応透過pngをLoadDivGraphで読み込んだものを描画してるので
SetDrawBlendModeとかはしてないです。
0079名前は開発中のものです。
2011/08/23(火) 15:32:07.66ID:GFTNdbU80080名前は開発中のものです。
2011/08/23(火) 15:34:41.23ID:LpKAIWaD4096*768でARGB32の2.52MBのpngファイルです。
0081名前は開発中のものです。
2011/08/23(火) 15:36:09.16ID:gBJyAplF0082名前は開発中のものです。
2011/08/23(火) 15:37:05.17ID:GFTNdbU80083名前は開発中のものです。
2011/08/23(火) 15:38:11.89ID:Jx4cybJHマップチップの最適な描画法ってある気がするんだけどなー
0084名前は開発中のものです。
2011/08/23(火) 15:46:29.02ID:gBJyAplFあとバッファをうまく利用するとか
何とか描画回数を減らすように工夫するのがまず必要だと思う
全部16*16ってのはかなり非効率的だし
0085名前は開発中のものです。
2011/08/23(火) 16:03:28.86ID:5Swg8Sk+重かったのは俺が、ミスって毎ゲームループごとにLoadGraphしてた時だった
0086名前は開発中のものです。
2011/08/23(火) 16:04:12.77ID:gBJyAplFソースから2*2のような形をそのまま持ってくる場合はその都度Derivationする
カリングする(上のレイヤによって完全に塗りつぶされる場合は描画しない)
など
0087名前は開発中のものです。
2011/08/23(火) 16:05:11.97ID:LpKAIWaDLoadDivGraphの速度は遅くなるけど、ハンドル取得後の描画には
影響しないんじゃないかと思ってましたがどうなんでしょう。
>>84
ですよね。大きな画像を作ってそれに最初にマップチップを全部
描画しておいて、その大きな画像を描画するというのも考えたの
ですが、なにぶんゲーム中に一部のチップだけ差し替えたりという
要素があるのでできれば全チップ舐めて描画したいなと。
でもよく考えるとチップ差し替え時に大きな画像の方にそのチップ
だけ上描ききすれば良いですね。
0088名前は開発中のものです。
2011/08/23(火) 16:06:07.50ID:iSTnkg73640*480で16*16のマップチップを3枚重ねるやつ。
透過pngじゃなかったけど結構負荷がかかった記憶がある。
んで、諦めて一番裏の背景は諦めて一枚絵にしてしまったり、
オプションで二枚目の背景も消せるようにしたりしたなぁ。
まだDXライブラリ使い始めの頃だったけど。
描画の前に重なり具合を調べて、見えなくなる部分は描画しないとかいう手もありかもしれない。
0089名前は開発中のものです。
2011/08/23(火) 16:09:10.07ID:gBJyAplF画像サイズはVRAMとメインメモリでスワップが発生してるかどうかが問題かな
計算してみたら4096*768の32bitカラーで12MBの消費だから、それだけではスワップはしないと思うけど
0090名前は開発中のものです。
2011/08/23(火) 16:13:36.75ID:BZMGrITN最大テクスチャサイズは2048x2048だっけな、オンボなら1024x1024ぐらいに抑えたほうがいいだろうけど
元画像を幾つかに分割してソート掛けときゃ気持ちぐらいは速くなるかもね
0091名前は開発中のものです。
2011/08/23(火) 16:16:13.66ID:gBJyAplFそういえばそうだっけ
大きい画像は内部的に分割されるからまとめ描きがきかなくなる(と思う)ことを忘れてた
009272
2011/08/23(火) 16:17:17.68ID:LpKAIWaDちょっと1024*1024あたりに抑えたので試してみます。
あとやはり画像をまとめて1枚にしてしまおうかとも。
幸いにもアニメーションするマップチップは無いので。
0093名前は開発中のものです。
2011/08/23(火) 16:20:53.24ID:GFTNdbU80094名前は開発中のものです。
2011/08/23(火) 16:29:41.37ID:Jx4cybJHマップ移動時はその中から描画したいとこだけを描画するってどうだろう
アニメーションするチップがあるなら工夫必要だけど、これが最速な気がする
0095名前は開発中のものです。
2011/08/23(火) 16:31:44.49ID:GFTNdbU80096名前は開発中のものです。
2011/08/23(火) 16:42:31.81ID:gBJyAplFフィールドみたいにサイズがでかすぎるとVRAMから溢れそう
描画可能テクスチャに1画面分描画して、スクロールが発生する時に
スクロール先の部分を描画可能テクスチャに1ライン描画するとかどうだろう
プライマリサーフェスに転送する場合はxオフセットとyオフセットを設定すれば、
描画可能テクスチャ1枚で足りるし、描画時に4転送で済む
0097名前は開発中のものです。
2011/08/23(火) 17:04:15.97ID:zNqX2lyTオフセットだけだとはみ出すよね俺間違ってる?
0098名前は開発中のものです。
2011/08/23(火) 17:10:08.05ID:gBJyAplFうーん、説明しづらいから分かりにくくてすまんw
スクロールするときにスクロールアウトする部分に1ライン描画するって言う意味
そうすると描画可能テクスチャは頂点がスクロールした方向に1ラインずれる
つまり、最初の状態で0〜100を1回描画だとすると、5ラインスクロールしたら5〜100+0〜4の2回描画になるって具合
この場合オフセットは5ライン目
スクロールによるずれがx方向とy方向で生じるから、通常は都合4回の描画になる
実際にはスクロールする時のために上下左右に1ライン分のマージンが必要だけど
0099名前は開発中のものです。
2011/08/23(火) 17:16:54.74ID:gBJyAplF00,01,02,03,04,05
10,11,12,13,14,15
20,21,22,23,24,25
30,31,32,33,34,35
40,41,42,43,44,45
50,51,52,53,54,55
で右にスクロールすると、描画可能テクスチャは左1ラインがスクロールアウトするから上書きして
06,01,02,03,04,05
16,11,12,13,14,15
26,21,22,23,24,25
36,31,32,33,34,35
46,41,42,43,44,45
56,51,52,53,54,55
って形になる。バックバッファに転送するときは最初に01~55を左詰めで転送し、次に06~56を転送
0100名前は開発中のものです。
2011/08/23(火) 17:24:53.71ID:zNqX2lyT0101名前は開発中のものです。
2011/08/23(火) 17:26:09.22ID:m6CHMGJ4バグると移動中に描画オフセットが効かなくてそのままマップが変わって行くのが見えちゃうみたいなw
0102名前は開発中のものです。
2011/08/23(火) 17:30:00.21ID:gBJyAplFただ難点は、描画可能テクスチャを使うってことなんだよね
3.00になって公開関数になった(っけ?)から前よりは安定してるんだろうけど、
2.xx系列だと隠し関数扱いだったからなー
動作の安定性が問題
0103名前は開発中のものです。
2011/08/23(火) 19:59:00.13ID:VwHWQmS116*16で描画する場合は描画回数は増えるだろうけど全体では1画面分くらいしか描画しなくていいわけだからどっちの方がいいんだろ
一番手前のレイヤーとかほとんど透過色でほとんど描画しないんじゃないのか
てかMakeScreenで作ったバッファに透過色設定とかできたっけ
0104名前は開発中のものです。
2011/08/23(火) 20:24:26.48ID:XYlgGojw0105名前は開発中のものです。
2011/08/23(火) 23:30:59.29ID:5Swg8Sk+DrawGraphとかの座標の設定は、int x, int y ってなってるけど、
doubleの値を代入したりするとやっぱりバグるのか?
三角関数とか使って座標の計算とかしてるとどうしてもdoubleの値がでてきてしまうんだが
0106名前は開発中のものです。
2011/08/23(火) 23:35:10.20ID:lNTJHKH0自動的にintにキャストされる
float値を使いたい場合はDrawGraphFでおk
使い分けはまぁ色々試してみるといいかと
0107名前は開発中のものです。
2011/08/23(火) 23:57:38.50ID:lNTJHKH0描画モードがBILINEARの時にfloatでDrawすると各描画点の座標をfloatで計算してくれる
1pixel未満の単位で描画できるけど、描画画像がボケるから使い分けが必要
NEARESTの時にfloatでのDrawはやったことないから分からない
0108名前は開発中のものです。
2011/08/24(水) 00:01:48.23ID:ZKHBuIyW技術的には挑戦してみたいけど
0109名前は開発中のものです。
2011/08/24(水) 00:08:03.99ID:sfkaW6xvまぁ性能が低い場合の工夫だからね
ユーザー環境にばらつきがあって下限が低いPCゲーだとファミコンみたいな工夫も必要なのかと
0110名前は開発中のものです。
2011/08/24(水) 11:46:00.65ID:AJ4GFjC0そうだったか
doubleからint型に変換されるとバグる時あるけど、バグるときとバグらない時の
違いってなんなのかね
0111名前は開発中のものです。
2011/08/24(水) 12:03:34.50ID:L/387cHC全然関係ないところでバグってるって可能性が一番高い
あとint型は+20億〜-20億程度が保持できる値の範囲だから、キャスト前の値がそれを外れてるとバグる
他に良くある誤りとしては、printfで%d指定してるのにdoubleやfloat突っ込むと変な値が出るとか
0112名前は開発中のものです。
2011/08/24(水) 12:08:51.65ID:Y83dP7s90113名前は開発中のものです。
2011/08/24(水) 12:37:25.60ID:wddftNdY0114名前は開発中のものです。
2011/08/24(水) 12:55:33.53ID:L/387cHC丸め誤差が蓄積してintにしたときに大きくずれることはよくある
0115名前は開発中のものです。
2011/08/24(水) 13:35:52.82ID:/WAoNVeM0116名前は開発中のものです。
2011/08/24(水) 14:39:56.73ID:h8WNvxshttp://0xcc.net/blog/archives/000164.html
0117名前は開発中のものです。
2011/08/24(水) 14:53:30.67ID:/Zu3vBbU最近偶数丸めの四捨五入とか負の値の切り上げ切捨ては
理解してないと整数にしたときに違ってくるのはある
0118名前は開発中のものです。
2011/08/24(水) 15:18:28.07ID:rcSq7hqB0119名前は開発中のものです。
2011/08/24(水) 15:30:40.78ID:h8WNvxsh高度な物理演算でもさせるのなら別だけど、物理演算なら何か物理エンジン持ってきた方が手っ取り早いだろうし
0120名前は開発中のものです。
2011/08/25(木) 00:25:28.37ID:5/LIEyCj心が痛むけど便利だから仕方ない
0121名前は開発中のものです。
2011/08/25(木) 00:28:02.81ID:b/ivvO9jフリーでシェアウェアにも使える3Dの物理エンジンってあるかな
0122名前は開発中のものです。
2011/08/25(木) 00:31:33.05ID:u5dPaIVB0123名前は開発中のものです。
2011/08/25(木) 00:58:40.19ID:6F5H+2xZ0124名前は開発中のものです。
2011/08/25(木) 01:18:03.52ID:v0OE4j5b0125名前は開発中のものです。
2011/08/25(木) 19:31:31.34ID:r39pEB590126名前は開発中のものです。
2011/08/25(木) 19:43:51.78ID:+TzycFNm調べてみるサンクス
>>123
PhysXってゲフォ使ってないとダメとかそういう制限ないの?
>>124
Havokはシェアウェアに制限があったと思う
0127名前は開発中のものです。
2011/08/25(木) 19:46:15.26ID:0LquE4ljかなり重いが
0128名前は開発中のものです。
2011/08/25(木) 19:51:22.21ID:+TzycFNmGTA4なんかにも使われてるんだな
これももうちょい調べてみる
0129名前は開発中のものです。
2011/08/25(木) 20:36:10.22ID:x7GzGK8k0130名前は開発中のものです。
2011/08/25(木) 20:36:41.74ID:6F5H+2xZそんな制限あったら誰も使わねえよw
0131名前は開発中のものです。
2011/08/25(木) 20:55:20.29ID:+TzycFNmそうなんだ
数年前にnVidia以外のGPUを検知するとPhysXの機能が停止されるようになったとか見た記憶があったから
自動的に選択肢から外してたけど、いつの間にか解消されてたのね
0132名前は開発中のものです。
2011/08/25(木) 21:11:09.88ID:6F5H+2xZ何か勘違いしてるみたいだけどPhysXはGPU限定じゃないぞ?
GeForceならCPUより速くなるだけで
普通にCPUのみで常用出来るしUnityやUDKはPhysXがデフォ
0133名前は開発中のものです。
2011/08/25(木) 21:16:10.43ID:+TzycFNmなるほど、勉強になった
思ってる通り完全に勘違いしてたわ恥ずかしい限りで・・・
0134名前は開発中のものです。
2011/08/26(金) 03:17:13.81ID:V5GLTgJY0135名前は開発中のものです。
2011/08/26(金) 13:41:24.01ID:fnRCOkx60136名前は開発中のものです。
2011/08/26(金) 13:55:01.38ID:zU9uahDSテレビCM
0137名前は開発中のものです。
2011/08/26(金) 16:54:57.79ID:Er6UBVi7・・・あそこ東方多いなー
0138名前は開発中のものです。
2011/08/26(金) 22:58:00.36ID:4m9giPLQdoubleとintじゃメモリ長違うからな(double-8バイト、int-4バイト)
代入の時に(int)のようなキャスト文を記述するのがプログラムの基本だと思うけど
自動キャストにあまり期待しないほうがいいのでは
0139名前は開発中のものです。
2011/08/27(土) 05:50:17.26ID:btZbEZqZ3.05aの時にフォントが小さくなる不具合が修正されたとあったので、
この不具合を受けていたんだろうな。
0140名前は開発中のものです。
2011/08/28(日) 01:38:40.08ID:AIw4LN7/マジ糞
0141名前は開発中のものです。
2011/08/28(日) 01:50:59.35ID:uYFEtNkY0142名前は開発中のものです。
2011/08/30(火) 00:57:40.02ID:dYGP1w70気付いて直したいんだけど、これを直すとかなりの部分を直さなければならなくなる
どうしようか悩みどころだ
0143名前は開発中のものです。
2011/08/30(火) 01:06:28.73ID:bp0SD/cwそんなに大作志向のものでは無いのなら、適当に区切りをつけて終了するのがいいかもしれない
0144名前は開発中のものです。
2011/08/30(火) 01:55:16.10ID:tq3YpvUy糞すぎてもいいからそのまま完成させ、その答えは次回作る時に回す
0145名前は開発中のものです。
2011/08/30(火) 01:58:10.42ID:xRSeBrvk古いコードは触らず、新しく書く部分は新しいライブラリを使う
0146名前は開発中のものです。
2011/08/30(火) 04:01:10.54ID:9FnnhPv80147名前は開発中のものです。
2011/08/30(火) 15:15:28.85ID:dYGP1w70そもそも一つ実装するのに複数同じコード書かなきゃいけないのは、エレガントじゃなかった
始めた頃は、同じの書くだけか、とか思ってたんだが
意気込んで色々作ったから、結構大作にする予定だったけど
今回は、ある程度区切りがついたら終了しないにしても、次の作品に取りかかろうと思う
0148名前は開発中のものです。
2011/08/30(火) 15:23:57.82ID:heBciR2p0149名前は開発中のものです。
2011/08/30(火) 15:26:34.28ID:d7imXqz6素材を流用して次を大作にすればいいのさ
0150名前は開発中のものです。
2011/08/30(火) 15:29:14.00ID:YRKVbKQ00151名前は開発中のものです。
2011/08/30(火) 20:57:25.09ID:uDbZ2MEH2Dゲーム前提で、今作ってるゲームが完成するまでは、あんまり勉強に時間を割けられない。
0152名前は開発中のものです。
2011/08/30(火) 21:01:51.66ID:YRKVbKQ0その画像を半透明にずらしながら数枚置けばそういうことが出来る
軽くやりたいならシェーダを学べばいい
0153名前は開発中のものです。
2011/08/30(火) 21:15:37.01ID:gvz6W4Cu別の描画可能テクスチャにブラー掛けたいものを加算描画して、毎フレームクリアせずに減算で少しだけ全体を暗くする
そのテクスチャを画面に加算で合成すればおk
0154名前は開発中のものです。
2011/08/30(火) 22:09:15.00ID:bDw8yGHBオレは最初の勉強しながら書いた糞コードは途中で全部書き直した。
コードも短くなって綺麗になり、バグも直ったよ。
直しとけ
0155名前は開発中のものです。
2011/08/30(火) 22:10:19.14ID:2nPfiAyT分かります
0156名前は開発中のものです。
2011/08/30(火) 23:48:45.32ID:uDbZ2MEH>>152
ピンポイントで使う分には力技もアリっちゃありか
>>153
それ面白いな
0157名前は開発中のものです。
2011/09/01(木) 00:19:30.76ID:d4ENLr57特に選択画面とかメニュー周りのレイアウト考えて作るの嫌だわ
0158名前は開発中のものです。
2011/09/01(木) 00:20:51.61ID:4jMoOptS0159名前は開発中のものです。
2011/09/01(木) 00:43:11.59ID:m+HtDpTs0160名前は開発中のものです。
2011/09/01(木) 01:14:25.00ID:n1HPhJGE0161名前は開発中のものです。
2011/09/01(木) 01:52:07.28ID:f0r0b674どうせどれも似たようなもんだ
0162名前は開発中のものです。
2011/09/02(金) 21:26:41.41ID:iRfojymH夢精しちゃった
0163名前は開発中のものです。
2011/09/02(金) 21:29:21.25ID:S5AdhhfU0164名前は開発中のものです。
2011/09/02(金) 21:51:54.23ID:TqRuKmu/0165名前は開発中のものです。
2011/09/04(日) 17:57:58.28ID:CLWIhWsZメモリに読み込んでも展開する時のロード時間がMV1LoadModelとほとんど変わらない
マルチスレッドによるローディングのお供かと思ったがやっぱり他と競合するからなぁ
0166名前は開発中のものです。
2011/09/04(日) 18:23:24.33ID:R9jedfSLメモリ上に読み込んで編集したものを読み込んで使ったりするんじゃないの。
0167名前は開発中のものです。
2011/09/04(日) 18:28:01.69ID:VYFDdoqVでも実際はメモリからファイルとして読み込む関数はただひと通り用意してあるだけなんじゃないの?
独自アーカイブとか使いたい人居るでしょ
0168名前は開発中のものです。
2011/09/04(日) 18:34:14.15ID:zZOKw97r0169名前は開発中のものです。
2011/09/04(日) 19:10:16.22ID:Qw7jUkGk〜FromMem関係はだいたいそんな使い方をしてる
0170名前は開発中のものです。
2011/09/04(日) 20:53:06.84ID:CLWIhWsZメモリをいじくって管理できる人はすごいなぁ
0171名前は開発中のものです。
2011/09/04(日) 20:54:20.65ID:EQP0Z6gU皆さんはバージョン管理ってどうされてますか?
自分はバージョン管理ツールとか使えないので、テキストにコピーして日付とコメント入れてますw
0172名前は開発中のものです。
2011/09/04(日) 21:11:47.14ID:ZY2yQa2r自分は最近Dropboxを導入したので、そっちに任せてる。
勝手に履歴も取ってくれるし。
0173名前は開発中のものです。
2011/09/05(月) 00:30:50.09ID:fAUkDatV0174名前は開発中のものです。
2011/09/05(月) 00:41:25.19ID:fLF3yH4J0175名前は開発中のものです。
2011/09/05(月) 00:45:10.79ID:fAUkDatVごめん、訂正します
すげぇ便利、うんこ漏れた
0176名前は開発中のものです。
2011/09/05(月) 07:52:02.52ID:fLF3yH4J0177名前は開発中のものです。
2011/09/05(月) 11:38:05.84ID:4jVVMGID■ このスレッドは過去ログ倉庫に格納されています