DXライブラリ 総合スレッド その8
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2011/04/03(日) 17:17:11.99ID:liTmPO3jGUIのゲームを比較的容易に作成する事を可能にする、
「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/
0498名前は開発中のものです。
2011/06/26(日) 10:12:05.33ID:lfYDudtNありがとうございます
0499名前は開発中のものです。
2011/06/27(月) 15:31:04.89ID:cfpgRrAjそんなカードにはお目に掛かったことないけど。
0500名前は開発中のものです。
2011/06/27(月) 22:42:22.18ID:txUEornUvoid 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:txUEornUvoid 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:jowqIwaVDrawFormatStringToHandleにうまく渡せていない
0503名前は開発中のものです。
2011/06/27(月) 22:53:02.36ID:HTROKHBnint 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てか、確かフォントハンドル作成は時間かかる処理だし、最初に一回だけやればいいだろ。
それでも作成しなおしたいんだったら、使わないフォントハンドルはちゃんと削除しといたほうが……。
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>ハンドルと実態は別だし
俺はよく解ってないまま使ってるw
まぁデータベースみたいなものが自動的に作られてて
ハンドルはそのキーってとこだろうという程度の認識で。
0507501
2011/06/28(火) 00:39:04.09ID:ACSn663zありがとうございます
そもそもグローバル変数をよく理解できず
それでいてそういう変数の操作ができず不便で戻り値を駆使して対応していたのですが
色々な問題が一気に解決した気分です
0508名前は開発中のものです。
2011/06/28(火) 20:28:42.91ID:ZHM0z8W2DrawBillboard3Dには半透明にする機能がないし
DrawPolygon3Dとかから自作すればいけるのか?
0509508
2011/06/28(火) 20:43:19.16ID:ZHM0z8W2SetDrawBlendModeはDrawBillboard3Dにも適用されてるのね
0510名前は開発中のものです。
2011/06/29(水) 10:50:26.63ID:IWHgyftAそんな物は無い?
0511名前は開発中のものです。
2011/06/29(水) 11:06:35.85ID:hq14Z64B0512名前は開発中のものです。
2011/06/29(水) 15:52:41.36ID:Ic6AYPGZむしろグローバル領域に頼らない心意気は大事だと思うます
とは言っても終始必要な情報をグローバルに置くのも一つの手なので
その時はヘッダファイルの宣言に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:OR33XjHH0514名前は開発中のものです。
2011/06/29(水) 17:34:17.72ID:FojZiLJkフォントハンドルは公開する必要ないんだから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初期化は0でなくー1でやるべきだと思うんだ。
0516名前は開発中のものです。
2011/06/29(水) 20:48:16.30ID:FojZiLJkごめんよ、DXライブラリもまともに使ったこと無かったんだよ
0517名前は開発中のものです。
2011/06/30(木) 22:55:45.34ID:XyQ/91Ao10個の頂点の情報をセットして、
必要に応じた頂点を好きなだけ選んでポリゴンを表示できますか?
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+VERTEX3D[]は固定なんだろうから
どっかに面単位でインデックス(ushort[])作っておいて
必要に応じて、コレクションに加えていけば
最後には出力用のインデックスつくれるんでない?
0519名前は開発中のものです。
2011/07/01(金) 17:30:13.08ID:CaYAyuRH0520名前は開発中のものです。
2011/07/02(土) 15:46:16.84ID:0iBc3qQuありがとうございます。
なんとか出来ました。
0521名前は開発中のものです。
2011/07/04(月) 04:00:41.46ID:r/eUUGPT{
処理
}
終了
ベタなプログラムだと思うのですが、処理内容が空白でも
CPU使用率が50%から下がらなくなる状況なんですが、そういうもんなんですか?
メモリの使用量も文字列を1行字表示させるだけでも他の数十MBも利用するみたいですが(DirectXの仕様?)
0522名前は開発中のものです。
2011/07/04(月) 04:20:53.26ID:z0yvy7kK0523名前は開発中のものです。
2011/07/04(月) 05:47:24.06ID:L5T6A+EW0524名前は開発中のものです。
2011/07/04(月) 06:26:28.25ID:G6zc5/1Tスリープしてないから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別プロジェクトからプチ検証プログラムを用意する程度だったもので
お騒がせしました
0527名前は開発中のものです。
2011/07/04(月) 17:24:01.94ID:oYSdKTV10528名前は開発中のものです。
2011/07/04(月) 21:05:40.94ID:eFYtq/Vk0529名前は開発中のものです。
2011/07/05(火) 01:14:14.15ID:N04GYWP+線分の衝突を判定使用と思った場合
HitCheck_Line_Triangleですべての面を調べるしかない?
なんとか、全部調べなくてもいい方法ないかな?
0530名前は開発中のものです。
2011/07/05(火) 09:17:05.50ID:hroFQGoE0531名前は開発中のものです。
2011/07/06(水) 08:40:28.87ID:sZ0Jgfi/LoadDivGraph( ) ;
で細切れにして、順番に画像を呼び出すのと
画像はそのままで
DrawRectGraph()範囲指定呼び出し
どちらが良いんでしょ
0532名前は開発中のものです。
2011/07/06(水) 11:20:53.20ID:B7jikDb2その程度で速度に大差はないし使いやすい方使えば
0533名前は開発中のものです。
2011/07/06(水) 13:04:15.22ID:JfOHYSdZ機能だけみるとDrawRectGraph()は
同じアニメーションを頻繁に繰り返す用途には向かない気がするが。
0534名前は開発中のものです。
2011/07/06(水) 21:42:56.02ID:u5JKS2Ez1度しか使わないなら大差ないからどっちでもいいかと。
普通は使い分ける意味ないからLoadDivGraphで統一。
0535名前は開発中のものです。
2011/07/07(木) 07:44:54.36ID:3tEv9Vp4ブルースクリーンになって落ちました
メモリがオーバーした(メインメモリはオーバーしない程度のはずだったけど)から
ブルースクリーンになったと思うのですが
PCのスペックの限界付近になったら処理を終了
(プログラム実行を終了)という感じはできるんですかね?
0536名前は開発中のものです。
2011/07/07(木) 08:35:16.28ID:RpRfHQr4つまり、一回だけあった現象なのか、同じ処理を実行すると必ずそうなるのか。
つぎに、その「大量に記憶」ってのは具体的にどれくらい?
どれくらいのサイズの画像をいくつくらい?
もし現象が再現可能なら、いくつくらいで落ちるか大雑把には調べられるよね?
最後に、メモリがハード的に壊れてないか調べてみた?
0537名前は開発中のものです。
2011/07/07(木) 09:39:14.65ID:3tEv9Vp4確かに再現性を調べてから質問すべきでした
画像は300*300の画像を300〜400枚ぐらいでした
0538名前は開発中のものです。
2011/07/07(木) 16:57:35.61ID:4fOFO6+S0539名前は開発中のものです。
2011/07/07(木) 17:00:07.62ID:4fOFO6+S0540名前は開発中のものです。
2011/07/07(木) 19:47:51.91ID:no4toLki> PCのスペックの限界付近になったら処理を終了
> (プログラム実行を終了)という感じはできるんですかね?
あなたがそうプログラムを書けばできます。
0541名前は開発中のものです。
2011/07/07(木) 20:05:58.01ID:Uh2+G3B1限界超えたら例外吐いて終了って実装が多いんじゃね。
ブルースクリーンってことはメモリの使い過ぎじゃないよ。
使い過ぎぐらいでそんなもん出てたまるかwww
OSのパフォーマンスモニタや、グラフィックボードのその手のツールを使うと
メモリ使用量等に関しては計測可能になるよ。
というかデバッグするのにツール使わないとか時間の無駄だから。
0542名前は開発中のものです。
2011/07/07(木) 20:22:39.95ID:gmLjpCrU0543名前は開発中のものです。
2011/07/07(木) 20:25:34.99ID:lEsBB3790544名前は開発中のものです。
2011/07/07(木) 21:32:54.19ID:H/eq5eChダイレクトXの仕様なのか
意識しないと200MB近くになっている
0545名前は開発中のものです。
2011/07/07(木) 22:16:01.19ID:eWsfc5od0546名前は開発中のものです。
2011/07/08(金) 01:42:59.92ID:gc4M+pbx0547名前は開発中のものです。
2011/07/08(金) 02:05:10.25ID:ju5ZjKNL0548名前は開発中のものです。
2011/07/08(金) 03:36:01.34ID:30NOFzMm物理的にメモリが逝ってるとか、変な領域にアクセスしようとしたとか
そっちのほうが、まだ説得力あるよ
0549名前は開発中のものです。
2011/07/08(金) 05:01:38.66ID:xNQ5LdqEタスクマネージャでメモリを確認した時
自分のゴミゲーのメモリ使用量がトップになるのがなんとも・・・・
紙芝居のエロゲーでさえ100〜150MBだからな
0550名前は開発中のものです。
2011/07/08(金) 05:43:04.35ID:0JQluf0w640x480x32bitの絵を一枚で1MBかかるし
0551名前は開発中のものです。
2011/07/08(金) 07:43:57.64ID:xNQ5LdqEその紙芝居より(見た目が)ショボい自分のゴミゲーが超えるってのがなんだかな〜っとw
2Dドットアニメーションってプログラムとしては扱いやすいけど沢山出すとメモリを喰うよな
まぁ、1キャラでもアニメーション分が増えるわけだから表面的な画像量より多く喰うのは当然なんだけど
小さい物体ならいいけど大きい物体となると尚更
やはり時代は3Dなのか?
0552名前は開発中のものです。
2011/07/08(金) 08:04:40.84ID:/2PwufA98ビットとかでも高速描画できるようにしとけばよかったのに
ハードの設計から思想的に間違ってるんじゃないの
0553名前は開発中のものです。
2011/07/08(金) 08:10:27.04ID:oAgC7u488ビットは厳しいんだよなw
仕様を要求できず、こっちが仕様に合わせる
0554名前は開発中のものです。
2011/07/08(金) 09:20:33.98ID:xNQ5LdqEつまり
100x100x8と100x100x32の画像を用意しても
DirectXの処理ではどちらも100x100x32で扱われているってこと?
0555名前は開発中のものです。
2011/07/08(金) 10:39:53.34ID:h8biwSeI0556名前は開発中のものです。
2011/07/08(金) 11:41:08.38ID:fMSwvY990557名前は開発中のものです。
2011/07/08(金) 12:24:31.59ID:TCgTz1P80558名前は開発中のものです。
2011/07/08(金) 13:57:50.74ID:qpC2wWl50559名前は開発中のものです。
2011/07/08(金) 14:48:33.35ID:TCgTz1P8フルカラーで最大1/8になる。
0560名前は開発中のものです。
2011/07/08(金) 16:42:47.16ID:+kwHfdXT対応グラボなら、圧縮された状態でキャッシュに持てるんだっけ?
0561名前は開発中のものです。
2011/07/08(金) 16:49:27.82ID:TCgTz1P8テクスチャキャッシュ上では展開されている。
対応自体はGeForce3とかの時代にはもうあったはず。
0562名前は開発中のものです。
2011/07/08(金) 16:51:10.89ID:0JQluf0w0563名前は開発中のものです。
2011/07/08(金) 16:57:39.20ID:xNQ5LdqE画像ファイルそのものがこちらで選択できない場合は無理だよね?
0564名前は開発中のものです。
2011/07/08(金) 17:01:48.03ID:vjhOwbGwそれがいっぱいになるくらいテクスチャ読み込むのっておかしいだろ……
512*512フルカラー1枚でキッカリ1MBだし……
小さなゲームなら起動時に画像全読み込みもOKだろうけど、
そこまで大規模なゲームなら、画像が必要になったときに読み込んだり要らなくなったら開放する仕組みを組むべき
0565名前は開発中のものです。
2011/07/08(金) 18:05:22.70ID:XTPS3PsK0566名前は開発中のものです。
2011/07/08(金) 21:58:11.82ID:TCgTz1P80567名前は開発中のものです。
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:0JQluf0w500MBくらいならそこらの市販ゲームでもやってるよね
VRAMに転送しすぎるとなんかやばそうな気がするけど
0570名前は開発中のものです。
2011/07/08(金) 23:01:14.52ID:xNQ5LdqE0571名前は開発中のものです。
2011/07/09(土) 00:21:03.51ID:l9Sp5oqE空間上に画像を描画したい時は
DrawPolygon3D
でやればいいんですかね。
DrawBillboard3D
は常にこっちを向いてくれちゃうみたいなんで。
こっち見んな。
0572名前は開発中のものです。
2011/07/09(土) 00:28:21.38ID:C+kMMCno描画するときは一時的にVRAMテクスチャ作って
それにコピーしてからスクリーンに描画する
0573名前は開発中のものです。
2011/07/09(土) 02:49:59.41ID:M4Li/NIF0574名前は開発中のものです。
2011/07/09(土) 04:38:53.10ID:ACvCBdpg空間上に画像を(○○で)描画したい時は、という風に使い分けるんだよ。
ビルボドードで表示したいときは、DrawBillboard3Dを使うだけ。
このへんは2Dでも同じ、というか全てにおいて同じでしょう。
0575名前は開発中のものです。
2011/07/09(土) 08:41:20.01ID:EUxsgPhf0576名前は開発中のものです。
2011/07/09(土) 13:38:11.51ID:aAP3Q2i0ときどきエラーをはくのだが、DXライブラリって
マルチスレッド対応じゃなかったの?
使ってるのはC#版です
0577名前は開発中のものです。
2011/07/09(土) 14:43:35.23ID:CiDrTx8qスレッドはエラー起こりやすい。このライブラリが原因と特定できたなら作者へ連絡すれば良い。
0578名前は開発中のものです。
2011/07/09(土) 16:53:02.35ID:aAP3Q2i0公式掲示板に再現可能なソースをつけてあげてきた。
ソースのほうに問題がありそうなら、みなさん指摘お願いします。
0579名前は開発中のものです。
2011/07/09(土) 17:28:30.71ID:BBj6JRevすぐ下にわかりやすい答えがあるみたいだが
0580名前は開発中のものです。
2011/07/09(土) 18:27:07.84ID:WzYTa9jFちょっと込み入ったことやろうとするとすぐ強制終了する
しかもエラーコードとかなくてエラー時にには関数が-1を返すだけだからそれ以上調べようがないしうんこすぎぶりぶり
0581名前は開発中のものです。
2011/07/09(土) 18:39:01.11ID:OlJ0mON70582名前は開発中のものです。
2011/07/09(土) 18:59:38.72ID:CiDrTx8qC#はしらんが。C++のコードない?
C++だったらデバッグて゜きるんだけども。
0583名前は開発中のものです。
2011/07/09(土) 19:01:55.39ID:gbiBau/k具体的に書いてみ、そしてソースコード添付。
そいから、あなたの動作環境を提示(PCハード情報、OS情報、など)
再現性のある情報を提供してくださいね
0584名前は開発中のものです。
2011/07/09(土) 19:22:46.74ID:7E7LKpx70585名前は開発中のものです。
2011/07/09(土) 21:01:44.35ID:BdkS/RBRモチベーションがあがらない
0586名前は開発中のものです。
2011/07/09(土) 21:59:58.74ID:S04z7kMsまったく使えなかったので諦めたな
0587名前は開発中のものです。
2011/07/09(土) 22:02:30.71ID:aAP3Q2i0ありがとん、マルチスレッドで使っちゃだめなのね
だとすると、データのロードとか初期化の作業とか
みなさん、どんな風に組んでるの?
0588名前は開発中のものです。
2011/07/09(土) 22:07:30.91ID:C+kMMCno最近出たDirect3D11の特徴がマルチスレッド対応だし。
DxLibのAPIを呼ぶのはメインスレッドのみに制限したほうがいい
0589名前は開発中のものです。
2011/07/09(土) 22:08:12.81ID:g5MhzaFIttp://www.dotup.org/uploda/www.dotup.org1773432.jpg
途中で色々浮気しながら2年目突入
0590名前は開発中のものです。
2011/07/09(土) 22:08:26.78ID:CiDrTx8q名前:管理人 日時:2010/03/29 06:45
描画を行うスレッドは一つにする必要があります。
MV1SetPosition や MV1SetAttachAnimTime や当たり判定などの描画を行わない関数は複数のスレッドから同時に呼んでも問題ありません。
http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=1693
0591名前は開発中のものです。
2011/07/09(土) 22:10:11.77ID:CiDrTx8q0592名前は開発中のものです。
2011/07/09(土) 22:15:02.27ID:GHbNRazyダンジョンRPGだと……
発表時期によってはウチの作品のライバルになりそうだ
0593名前は開発中のものです。
2011/07/09(土) 22:15:40.92ID:63ssXNtP早く解決レスつけてこいよ
つか質問する前に過去ログくらいあされよクズ
0594名前は開発中のものです。
2011/07/09(土) 22:17:28.85ID:GkFpt5d83Dモデルとかも作成してるんですか?
0595名前は開発中のものです。
2011/07/09(土) 22:18:25.06ID:CiDrTx8q{
// メモリに読み込んで消すだけ
int temp = DX.LoadGraph("testpatan02.png");
DX.DeleteGraph(temp);
}
0596名前は開発中のものです。
2011/07/09(土) 22:29:57.16ID:CrPOQxPl未だに2Dしか使えない俺はこの先困りそうだな……。
0597名前は開発中のものです。
2011/07/09(土) 22:33:27.59ID:aAP3Q2i0>>590をみると。データの読み込み(DX.LoadGraph)と書き込みと
描画(DrawBoxとDrawString)を同時にやるのが問題みたい
これにより、オレの「動いてかっこいいロード画面計画」は頓挫したわけだ・・・・
普通に止め絵でロード画面作るけどね。
■ このスレッドは過去ログ倉庫に格納されています