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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2011/04/03(日) 17:17:11.99ID:liTmPO3j
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/
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/
0471名前は開発中のものです。2011/06/19(日) 23:24:59.76ID:QvQuYc5r
>>497
アンチエイリアスかけるしかないかと。
例えばDS市販ソフトの立体ピクロス等でもそういう現象は起こる。

>>469
エラー内容コピペしてみたら?
そんなこと起こらないと思うけど…。
まさか別ファイルにしていてdxlib.hをインクルードし忘れてるなんてことはないよね。
0472名前は開発中のものです。2011/06/20(月) 00:16:31.08ID:dVR9UeT3
ユーザーがバグ修正のコード送ろうにも、バージョン管理システム使ってなかったらやりづらい
自分のところでも同じ部分を書き換えていたら、両方の変更を失わないようにするのが難しいし

>>459
色いろ問題あるよね、今でも

・Theora使う機能オフにしてビルドしようとすると、
#ifndefの使う場所が間違っているところがあるみたいで
無しだとビルドできない

・libpngは仕様変更のせいで1.5系ではビルドできない 1.4系は可

・デフォルトだと、
DxLib.hに#pragmaでリンクするライブラリを指定するようになっているけど、これやだ
ライブラリの名前が1つでも変わると、全てビルドし直しになる
(最新版だと名前が違っているから、自前でビルドするには全部変えないといけないや)
面倒でもプロジェクトの設定でやった方がいい希ガス


・あと、1998年からlibjpegは更新されていないって書いてるけど、最近も更新あったよ
0473名前は開発中のものです。2011/06/20(月) 00:24:37.41ID:ywcJPOE0
俺の場合は本家のコードに付け足すコードをインクルードしてビルドしてるだけだったなー
挙動を書き換えた別バージョンの関数を追加、って感じで
0474名前は開発中のものです。2011/06/20(月) 00:28:10.70ID:aBzdnlNy
>>470
その方法を試してみます
>>471
例のESCキーを押して実行窓は閉じれるのですが、
プロセス自体の終了ができていなく、タスクマネージャから消している状況です
dxlib.hはインクルードしています
0475名前は開発中のものです。2011/06/20(月) 04:41:56.67ID:KjWz6tWC
>>472
何か自分の言葉じゃないよね
本の受け売りか、学校の先生が言ってたそのまんまって感じ
0476名前は開発中のものです。2011/06/20(月) 21:36:16.92ID:z8kdzva4
>>474
もしかして DxLib_End(); でプロセスも終了してくれると思ってない?
メイン関数で終了するときに、 DxLib_End(); でDxlib周りの終了処理をして、
そのあとにメイン関数に return 0; で0を返してプログラムを終了してるわけ。

ということはメイン関数以外から直接は終了できないんじゃないかと思うよね。
それでは色々と面倒ということで stdlib.h に void exit(int status); という関数が用意されてる。
これはメイン関数に引数で渡した値を返す動作なので、 exit(0); としてやればよいということになる。

もし、 exit(0); でエラーが出るという話ならどういうエラーなのか書くこと。
0477名前は開発中のものです。2011/06/21(火) 03:54:32.19ID:Yq97GP/u
470のやり方を基本としておさえておいたほうがいいと思うぞ
04784672011/06/21(火) 19:29:12.62ID:63a9Z6UZ
>>471
アドバイスありがとん
DXライブラリでアンチエイリアスの指定ってできたっけ?

まぁ、色々いじって、解決させたので方法書いておきます
・SetCameraNearFarで手前クリップ位置を遠くしてみる
これでだいぶ軽減できました。でも見えるときは見える

・くっついた位置に描画されるポリゴンを描画しない
ブロック同士の境目のポリゴンを消しとけば、隙間なくうまってるように見える。
要するに何らかの加減で、縦方向のポリゴンの一部が見えてるってことらしい。
0479名前は開発中のものです。2011/06/23(木) 16:57:31.52ID:fyYcjHqX
LoadSoundMem 使うと、読み込むファイルの倍近くメモリ食うんだけどこんなもん?
0480名前は開発中のものです。2011/06/23(木) 17:32:53.79ID:QnDjyPpc
読み込んでるのが圧縮ファイルなら
SetCreateSoundDataTypeがDX_SOUNDDATATYPE_MEMNOPRESS(デフォルト)だからかもしれない
0481名前は開発中のものです。2011/06/23(木) 19:26:55.04ID:DnQjdRmc
おぉ、そんな設定があるんだ
知らんかった
0482名前は開発中のものです。2011/06/23(木) 19:36:12.62ID:fyYcjHqX
>>480
素早いレスポンスまじ助かる
用途に合わせて使ったらメモリ使用量がスゲー減ったよ
本当にありがとう
0483名前は開発中のものです。2011/06/23(木) 20:03:47.01ID:8jCWoIDE
描写の基礎中の基礎だと思うのですが

例えば落ち物パズルゲーム(ジャンル関係なく)

落下物を一番下まで置く
次の落下物

以下ループ

移動物は当然、描画→消す→再描画が必要になると思いますが
動かなくなった物もこのルーチンに組み込むしかないのでしょうか?
0484名前は開発中のものです。2011/06/23(木) 20:07:04.40ID:UJG7O4KB
>>483
そうだよ、毎回全部再描画
全消し&全再描画が基本
0485名前は開発中のものです。2011/06/23(木) 20:11:03.75ID:AbrHzuoP
一昔前のスペックのPCでも、60フレームで毎回数千枚画像を描画しても問題ないしな
ゲーム作り始めた人は大抵最初疑問に思うよな、コレ
0486名前は開発中のものです。2011/06/23(木) 20:22:51.26ID:5vtX6Rn6
むしろDxLibのサンプルを読むと、裏描画→スワップ→裏消す→ループの流れになってたから素直に馴染んでた。
0487名前は開発中のものです。2011/06/23(木) 20:40:33.33ID:3TDZtZ67
>>483

処理速度の遅い、昔のパソコンだと、いかに描画部分を減らすかが勝負だったから、
貴方の考えてるような事(動かないものは再描画しない)は重要だった。
ファミコン等で使われてるスプライトやBG機能はそういうのをハード的に処理する事で、
軽快な動きを実現させていた。

今のPCはそんな事考える必要ないくらいの処理速度なので、やってる人はいないでしょう。
もちろんできなくはないけどデメリットが多くてメリットは少ない。
0488名前は開発中のものです。2011/06/25(土) 11:42:26.53ID:cdu6xBQg
>>483
画面のほとんどが将棋みたいに静止してるゲームを除いて
削れる対象って少ないよ。(高速化が必要なゲームで使えない手法)

小さな領域で何回も描画すると遅くなるし。
0489名前は開発中のものです。2011/06/25(土) 11:49:53.47ID:cdu6xBQg
ハイポリゴンの3Dがぼけっと止まってるとかなら
描画した結果を写真みたいに1枚のテクスチャにしてしまうのが有効
0490名前は開発中のものです。2011/06/25(土) 21:53:53.82ID:uR7PC9MK
C#板で壁にぶち当たってきたので、ちょっと愚痴らせてくれ
万単位のVERTEX3Dを1フレーム毎に更新なんてできねーよ
テクスチャアニメーションはやるなってことでFAなんか?
0491名前は開発中のものです。2011/06/25(土) 21:59:20.43ID:GTitzTuX
今話題の京なら楽勝
0492名前は開発中のものです。2011/06/25(土) 23:29:58.84ID:9uA0GKJd
>ファミコン等で使われてるスプライトやBG機能はそういうのをハード的に処理する事で、
ハード機能だったのか〜

0493名前は開発中のものです。2011/06/26(日) 00:31:30.96ID:rnIFDOCy
串って、めだか信者なの?
0494名前は開発中のものです。2011/06/26(日) 02:35:51.59ID:lfYDudtN
3D関数のリファレンスページを見ているのですが、

>Vertex[ 0 ].pos = VGet( 100.0f, 100.0f, 0.0f ) ;
この100.0fや0.0fに付いているfはfloat型という意味なのでしょうか?
0495名前は開発中のものです。2011/06/26(日) 03:05:18.50ID:3ESIOFXK
はい、そうです。
0496名前は開発中のものです。2011/06/26(日) 08:34:43.38ID:7hazcZAF
>>492
今更かよ!そもそもスプライトはハードウェアの機能の事
DirectX等でいわれているスプライトはエミュレーションにすぎない
0497名前は開発中のものです。2011/06/26(日) 08:47:33.80ID:5F1hYASA
スプライト動かして背景に影響が出る以上、エミュレーションになってないと思うがw
ただ名前を借りてるだけだろう。
0498名前は開発中のものです。2011/06/26(日) 10:12:05.33ID:lfYDudtN
>>495
ありがとうございます
0499名前は開発中のものです。2011/06/27(月) 15:31:04.89ID:cfpgRrAj
スプライトはハードが対応してれば有効じゃなかったかな。
そんなカードにはお目に掛かったことないけど。
0500名前は開発中のものです。2011/06/27(月) 22:42:22.18ID:txUEornU
---------disp.h---------
void disp(){
int FontHandle;
FontHandle = CreateFontToHandle( "MS ゴシック" , 20 , 1 , DX_FONTTYPE_NORMAL );
DrawFormatStringToHandle(100,100,色,FontHandle,"テスト");
}

---------main---------
main(){
while(i== 0){
       Disp(); // ループ処理
        }
}
このようにプログラムを組んだらフォントハンドルの作成数が限界になってエラーになり
修正を加えました
0501名前は開発中のものです。2011/06/27(月) 22:44:11.62ID:txUEornU
---------moji.h---------
void moji(){
int FontHandle;
FontHandle = CreateFontToHandle( "MS ゴシック" , 20 , 1 , DX_FONTTYPE_NORMAL );
}

---------disp.h---------
#include "moji.h"
void disp(){
int FontHandle;
DrawFormatStringToHandle(100,100,色,FontHandle,"テスト");
}

---------main---------
#include "disp.h"

main(){
while(i== 0){
       Disp(); // ループ処理
        }
}

どうにも上手く動かないのですが、フォントの初期設定?とそのハンドルの使いまわし方がイマイチ理解できません
0502名前は開発中のものです。2011/06/27(月) 22:47:04.61ID:jowqIwaV
int FontHandleをグローバルにしないとそのハンドル値が保存されないので、
DrawFormatStringToHandleにうまく渡せていない
0503名前は開発中のものです。2011/06/27(月) 22:53:02.36ID:HTROKHBn
---------moji.h---------
int FontHandle;
void moji(){
FontHandle = CreateFontToHandle( "MS ゴシック" , 20 , 1 , DX_FONTTYPE_NORMAL );
}

---------disp.h---------
#include "moji.h"
void disp(){
DrawFormatStringToHandle(100,100,色,FontHandle,"テスト");
}

---------main---------
#include "disp.h"

main(){
while(i== 0){
       Disp(); // ループ処理
        }
}


詳しくは変数のスコープでググれ
0504名前は開発中のものです。2011/06/28(火) 00:06:09.15ID:kDrw83xo
moji()呼んでなくね?

てか、確かフォントハンドル作成は時間かかる処理だし、最初に一回だけやればいいだろ。
それでも作成しなおしたいんだったら、使わないフォントハンドルはちゃんと削除しといたほうが……。
0505名前は開発中のものです。2011/06/28(火) 00:13:40.34ID:VylbgPEM
あ、ほんとだ
---------main---------
#include "disp.h"

main(){
moji();
while(i== 0){
       Disp(); // ループ処理
        }
}

こうか

でもDXライブラリのハンドルは、感覚掴まないと難しいしな……
ハンドルと実態は別だし
0506名前は開発中のものです。2011/06/28(火) 00:24:09.17ID:kDrw83xo
>でもDXライブラリのハンドルは、感覚掴まないと難しいしな……
>ハンドルと実態は別だし

俺はよく解ってないまま使ってるw
まぁデータベースみたいなものが自動的に作られてて
ハンドルはそのキーってとこだろうという程度の認識で。
05075012011/06/28(火) 00:39:04.09ID:ACSn663z
無事解決しました
ありがとうございます

そもそもグローバル変数をよく理解できず
それでいてそういう変数の操作ができず不便で戻り値を駆使して対応していたのですが
色々な問題が一気に解決した気分です

0508名前は開発中のものです。2011/06/28(火) 20:28:42.91ID:ZHM0z8W2
半透明のビルボードが欲しいのだけど、なんかいい方法ないもんかな?
DrawBillboard3Dには半透明にする機能がないし
DrawPolygon3Dとかから自作すればいけるのか?
05095082011/06/28(火) 20:43:19.16ID:ZHM0z8W2
自己解決
SetDrawBlendModeはDrawBillboard3Dにも適用されてるのね
0510名前は開発中のものです。2011/06/29(水) 10:50:26.63ID:IWHgyftA
角っちょが丸い四角形がかける関数があるとか前にこのスレかどこかでみかけたんですが

そんな物は無い?
0511名前は開発中のものです。2011/06/29(水) 11:06:35.85ID:hq14Z64B
そんなものは無いっていう話ならこのスレで見た
0512名前は開発中のものです。2011/06/29(水) 15:52:41.36ID:Ic6AYPGZ
>>507
むしろグローバル領域に頼らない心意気は大事だと思うます
とは言っても終始必要な情報をグローバルに置くのも一つの手なので
その時はヘッダファイルの宣言にexternをつけて、対になるソースファイルに実態を定義する
>>501の例をdisp.hとdisp.cにまとめた場合こんな感じ。実際はもっと一意的な名前にする
---------disp.h---------
// 宣言
extern int FontHandle;
extern void set(void);
extern void disp(void);
---------disp.c---------
// 定義
int FontHandle = 0;
void set() { FontHandle = CreateFontToHandle( "MS ゴシック" , 20 , 1 , DX_FONTTYPE_NORMAL ); }
void disp() { DrawFormatStringToHandle(100,100,色,FontHandle,"テスト"); }
0513名前は開発中のものです。2011/06/29(水) 16:55:11.35ID:OR33XjHH
むしろ初期化関数とハンドル取得関数を作って一つのファイルで完結させるとか
0514名前は開発中のものです。2011/06/29(水) 17:34:17.72ID:FojZiLJk
C言語あまり使ってないから詳しくは知らないけど
フォントハンドルは公開する必要ないんだからstaticにして
dispに集約しても良いんじゃね?
それこそ関数ポインタか下のようにif文でsetなんて消したい。

//----disp.h----
void disp();
void disp2(int x, int y, char* moji);
//----disp.c----
static int FontHandl=0;//プログラム実行時に0に初期化される
void disp(){
if(!FontHandle){ FontHandle = CreateFontToHandle( "MS ゴシック" , 20 , 1 , DX_FONTTYPE_NORMAL ); }
DrawFormatStringToHandle(100,100,色,FontHandle,"テスト");
}
void disp2(int x, int y, char* moji){
if(!FontHandle){ FontHandle = CreateFontToHandle( "MS ゴシック" , 20 , 1 , DX_FONTTYPE_NORMAL ); }
DrawFormatStringToHandle(x,y,色,FontHandle,moji);
}
0515名前は開発中のものです。2011/06/29(水) 20:16:24.25ID:E6WBSwVS
どうでもいいけど、DXライブラリでのハンドル取得におけるエラー時の返り値は-1だから
初期化は0でなくー1でやるべきだと思うんだ。
0516名前は開発中のものです。2011/06/29(水) 20:48:16.30ID:FojZiLJk
>>515
ごめんよ、DXライブラリもまともに使ったこと無かったんだよ
0517名前は開発中のものです。2011/06/30(木) 22:55:45.34ID:XyQ/91Ao
DrawPolygonIndexed3D関数の使い方として
10個の頂点の情報をセットして、
必要に応じた頂点を好きなだけ選んでポリゴンを表示できますか?

VERTEX3D Vertex[10];

Vertex[0] = VGet(x0,y0,z0);

Vertex[9] = VGet(x9,y9,z9);
としておいて、描きたいようにIndexの配列の値を変える。
0518名前は開発中のものです。2011/07/01(金) 13:05:44.55ID:AzTVh6s+
>>517
VERTEX3D[]は固定なんだろうから
どっかに面単位でインデックス(ushort[])作っておいて
必要に応じて、コレクションに加えていけば
最後には出力用のインデックスつくれるんでない?
0519名前は開発中のものです。2011/07/01(金) 17:30:13.08ID:CaYAyuRH
そいやぁwikiどうなったの?
0520名前は開発中のものです。2011/07/02(土) 15:46:16.84ID:0iBc3qQu
>>518
ありがとうございます。
なんとか出来ました。
0521名前は開発中のものです。2011/07/04(月) 04:00:41.46ID:r/eUUGPT
while(特定のキーが押されるまで)

処理


終了

ベタなプログラムだと思うのですが、処理内容が空白でも
CPU使用率が50%から下がらなくなる状況なんですが、そういうもんなんですか?

メモリの使用量も文字列を1行字表示させるだけでも他の数十MBも利用するみたいですが(DirectXの仕様?)
0522名前は開発中のものです。2011/07/04(月) 04:20:53.26ID:z0yvy7kK
文字を表示するにはフォントを読み込む必要があるからじゃないの
0523名前は開発中のものです。2011/07/04(月) 05:47:24.06ID:L5T6A+EW
待つ場合は ProcessMessage() 通しておけよ
0524名前は開発中のものです。2011/07/04(月) 06:26:28.25ID:G6zc5/1T
>>521
スリープしてないからCPUの空き時間すべて判定と処理に回される
無限ループは待機なきゃwhile内の処理空白でもCPU使いまくるぞ
0525名前は開発中のものです。2011/07/04(月) 06:50:01.43ID:FPueCilM
だいたいの人がこんな感じにするんでね?

初期処理
SetDrawScreen(DX_SCREEN_BACK)
while(終了条件判定)

ProcessMessage()
任意の処理
ScreenFlip()

終了処理

終了
0526名前は開発中のものです。2011/07/04(月) 07:15:14.36ID:r/eUUGPT
単純にProcessMessage()を入れ忘れてました
別プロジェクトからプチ検証プログラムを用意する程度だったもので

お騒がせしました
0527名前は開発中のものです。2011/07/04(月) 17:24:01.94ID:oYSdKTV1
dx最強、他はゴミ
0528名前は開発中のものです。2011/07/04(月) 21:05:40.94ID:eFYtq/Vk
日本ではそうだねぇ
0529名前は開発中のものです。2011/07/05(火) 01:14:14.15ID:N04GYWP+
VERTEX3D[]とそのインデックスのshort[]で構成された面情報と
線分の衝突を判定使用と思った場合
HitCheck_Line_Triangleですべての面を調べるしかない?
なんとか、全部調べなくてもいい方法ないかな?
0530名前は開発中のものです。2011/07/05(火) 09:17:05.50ID:hroFQGoE
自前で空間カリングしかないんじゃないかな
0531名前は開発中のものです。2011/07/06(水) 08:40:28.87ID:sZ0Jgfi/
ドットアニメーションの画像があるとして

LoadDivGraph( ) ;
で細切れにして、順番に画像を呼び出すのと


画像はそのままで
DrawRectGraph()範囲指定呼び出し

どちらが良いんでしょ
0532名前は開発中のものです。2011/07/06(水) 11:20:53.20ID:B7jikDb2
LoadDivGraphでいいよ
その程度で速度に大差はないし使いやすい方使えば
0533名前は開発中のものです。2011/07/06(水) 13:04:15.22ID:JfOHYSdZ
測った事ないからわからんけど、
機能だけみるとDrawRectGraph()は
同じアニメーションを頻繁に繰り返す用途には向かない気がするが。
0534名前は開発中のものです。2011/07/06(水) 21:42:56.02ID:u5JKS2Ez
何度もアニメを回すならLoadDivGraphでしょ。
1度しか使わないなら大差ないからどっちでもいいかと。
普通は使い分ける意味ないからLoadDivGraphで統一。
0535名前は開発中のものです。2011/07/07(木) 07:44:54.36ID:3tEv9Vp4
LoadGraphで画像をメモリに大量に記憶させまくったら
ブルースクリーンになって落ちました
メモリがオーバーした(メインメモリはオーバーしない程度のはずだったけど)から
ブルースクリーンになったと思うのですが

PCのスペックの限界付近になったら処理を終了
(プログラム実行を終了)という感じはできるんですかね?
0536名前は開発中のものです。2011/07/07(木) 08:35:16.28ID:RpRfHQr4
そのブルースクリーンは再現可能なの?
つまり、一回だけあった現象なのか、同じ処理を実行すると必ずそうなるのか。

つぎに、その「大量に記憶」ってのは具体的にどれくらい?
どれくらいのサイズの画像をいくつくらい?
もし現象が再現可能なら、いくつくらいで落ちるか大雑把には調べられるよね?

最後に、メモリがハード的に壊れてないか調べてみた?
0537名前は開発中のものです。2011/07/07(木) 09:39:14.65ID:3tEv9Vp4
PCがぶっ壊れると困るので再現性は確認してませんが
確かに再現性を調べてから質問すべきでした

画像は300*300の画像を300〜400枚ぐらいでした
0538名前は開発中のものです。2011/07/07(木) 16:57:35.61ID:4fOFO6+S
グラボのメモリは足りてるのか?ブルースクリーンなどはグラボのドライバーが比較的おおい
0539名前は開発中のものです。2011/07/07(木) 17:00:07.62ID:4fOFO6+S
あと、物によるがテクスチャの容量計算は圧縮サイズで見積もってもあまり意味がない。
0540名前は開発中のものです。2011/07/07(木) 19:47:51.91ID:no4toLki
>>535
> PCのスペックの限界付近になったら処理を終了
> (プログラム実行を終了)という感じはできるんですかね?

あなたがそうプログラムを書けばできます。
0541名前は開発中のものです。2011/07/07(木) 20:05:58.01ID:Uh2+G3B1
>>535
限界超えたら例外吐いて終了って実装が多いんじゃね。
ブルースクリーンってことはメモリの使い過ぎじゃないよ。
使い過ぎぐらいでそんなもん出てたまるかwww

OSのパフォーマンスモニタや、グラフィックボードのその手のツールを使うと
メモリ使用量等に関しては計測可能になるよ。

というかデバッグするのにツール使わないとか時間の無駄だから。
0542名前は開発中のものです。2011/07/07(木) 20:22:39.95ID:gmLjpCrU
DXライブラリにビデオメモリを表示する関数がある
0543名前は開発中のものです。2011/07/07(木) 20:25:34.99ID:lEsBB379
めもりくりーなーとかでよくね?漏れとかそれで見てる
0544名前は開発中のものです。2011/07/07(木) 21:32:54.19ID:H/eq5eCh
何もしなくても70〜80MB喰うよな
ダイレクトXの仕様なのか

意識しないと200MB近くになっている
0545名前は開発中のものです。2011/07/07(木) 22:16:01.19ID:eWsfc5od
何いってんだよ・・・そんな訳無いじゃん!
0546名前は開発中のものです。2011/07/08(金) 01:42:59.92ID:gc4M+pbx
VRAMなのかメインメモリなのか
0547名前は開発中のものです。2011/07/08(金) 02:05:10.25ID:ju5ZjKNL
今の時代200MBなんてミジンコのようなもんじゃないの
0548名前は開発中のものです。2011/07/08(金) 03:36:01.34ID:30NOFzMm
VRAM圧迫でブルースクリーンはOSとDirectXの仕様的に考えにくいわ
物理的にメモリが逝ってるとか、変な領域にアクセスしようとしたとか
そっちのほうが、まだ説得力あるよ
0549名前は開発中のものです。2011/07/08(金) 05:01:38.66ID:xNQ5LdqE
>>547
タスクマネージャでメモリを確認した時
自分のゴミゲーのメモリ使用量がトップになるのがなんとも・・・・

紙芝居のエロゲーでさえ100〜150MBだからな
0550名前は開発中のものです。2011/07/08(金) 05:43:04.35ID:0JQluf0w
紙芝居はビットマップを全部メモリにキャッシュしたりすると結構食うんじゃない?
640x480x32bitの絵を一枚で1MBかかるし
0551名前は開発中のものです。2011/07/08(金) 07:43:57.64ID:xNQ5LdqE
最近の紙芝居はワイド画面にキャラだしまくりんぐで、結構喰うのはわかるけど
その紙芝居より(見た目が)ショボい自分のゴミゲーが超えるってのがなんだかな〜っとw

2Dドットアニメーションってプログラムとしては扱いやすいけど沢山出すとメモリを喰うよな
まぁ、1キャラでもアニメーション分が増えるわけだから表面的な画像量より多く喰うのは当然なんだけど
小さい物体ならいいけど大きい物体となると尚更

やはり時代は3Dなのか?
0552名前は開発中のものです。2011/07/08(金) 08:04:40.84ID:/2PwufA9
内部的に32ビットで扱ってるから容量食いまくるんだよな
8ビットとかでも高速描画できるようにしとけばよかったのに
ハードの設計から思想的に間違ってるんじゃないの
0553名前は開発中のものです。2011/07/08(金) 08:10:27.04ID:oAgC7u48
素材を作れず、吸い出しやネットで集めていると
8ビットは厳しいんだよなw

仕様を要求できず、こっちが仕様に合わせる
0554名前は開発中のものです。2011/07/08(金) 09:20:33.98ID:xNQ5LdqE
>内部的に32ビットで扱ってるから容量食いまくるんだよな
つまり

100x100x8と100x100x32の画像を用意しても
DirectXの処理ではどちらも100x100x32で扱われているってこと?
0555名前は開発中のものです。2011/07/08(金) 10:39:53.34ID:h8biwSeI
それどころか内部的には128x128x32になってる可能性もある。
0556名前は開発中のものです。2011/07/08(金) 11:41:08.38ID:fMSwvY99
い、いい加減なこと言うなよ!?
0557名前は開発中のものです。2011/07/08(金) 12:24:31.59ID:TCgTz1P8
DXTつかえよ、、、
0558名前は開発中のものです。2011/07/08(金) 13:57:50.74ID:qpC2wWl5
dxtってなに?
0559名前は開発中のものです。2011/07/08(金) 14:48:33.35ID:TCgTz1P8
いまどきの圧縮フォーマット。
フルカラーで最大1/8になる。
0560名前は開発中のものです。2011/07/08(金) 16:42:47.16ID:+kwHfdXT
>DXT
対応グラボなら、圧縮された状態でキャッシュに持てるんだっけ?
0561名前は開発中のものです。2011/07/08(金) 16:49:27.82ID:TCgTz1P8
VRAM上は圧縮されたまま。
テクスチャキャッシュ上では展開されている。

対応自体はGeForce3とかの時代にはもうあったはず。
0562名前は開発中のものです。2011/07/08(金) 16:51:10.89ID:0JQluf0w
でそれDXライブラリで使えるの?
0563名前は開発中のものです。2011/07/08(金) 16:57:39.20ID:xNQ5LdqE
DXTってファイルのフォーマットであって、
画像ファイルそのものがこちらで選択できない場合は無理だよね?
0564名前は開発中のものです。2011/07/08(金) 17:01:48.03ID:vjhOwbGw
今時のPCのVRAMの最低基準が128MBだとして、
それがいっぱいになるくらいテクスチャ読み込むのっておかしいだろ……
512*512フルカラー1枚でキッカリ1MBだし……
小さなゲームなら起動時に画像全読み込みもOKだろうけど、
そこまで大規模なゲームなら、画像が必要になったときに読み込んだり要らなくなったら開放する仕組みを組むべき
0565名前は開発中のものです。2011/07/08(金) 18:05:22.70ID:XTPS3PsK
300枚から400枚だろ。300×300なら512になっているかもなー
0566名前は開発中のものです。2011/07/08(金) 21:58:11.82ID:TCgTz1P8
その枚数ならストリーミングすべき
0567名前は開発中のものです。2011/07/08(金) 22:37:20.28ID:1piVrq/r
音声やムービーならストリーミングってのもわかるけど
画像ファイルでストリーミングってできるもんなの?
手動で順次読み込み機能を組めってこと?

参考にはならんかもしれないが
俺が知ってるDXライブラリ製ソフトで256x256の画像データを
1200個近く読み込んでいる(と思う)のあるけど
普通に動いてたよ。
何か工夫してるのかもしれないけど。
0568名前は開発中のものです。2011/07/08(金) 22:48:42.71ID:ANMV7PRG
それだけの量を一度に読み込む意図がわからんが・・・
面ごとに必要な分量を読んでるとかじゃなくて?
0569名前は開発中のものです。2011/07/08(金) 22:59:40.82ID:0JQluf0w
別にメインメモリに読み込む分にはなにも問題ないんじゃね?
500MBくらいならそこらの市販ゲームでもやってるよね
VRAMに転送しすぎるとなんかやばそうな気がするけど
0570名前は開発中のものです。2011/07/08(金) 23:01:14.52ID:xNQ5LdqE
メインメモリに送っているのかVRAMに送っているのかどうやって判断するんですか?
0571名前は開発中のものです。2011/07/09(土) 00:21:03.51ID:l9Sp5oqE
初歩の初歩なんですけど、
空間上に画像を描画したい時は
DrawPolygon3D
でやればいいんですかね。
DrawBillboard3D
は常にこっちを向いてくれちゃうみたいなんで。
こっち見んな。
■ このスレッドは過去ログ倉庫に格納されています