[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 01/25 20:51 / Filesize : 266 KB / Number-of Response : 992
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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

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

【過去スレ】
DXライブラリ 総合スレッド
pc11.2ch.net/test/read.cgi/gamedev/1197468399/
DXライブラリ 総合スレッド 2008
pc11.2ch.net/test/read.cgi/gamedev/1224923873/
DXライブラリ 総合スレッド その3
pc11.2ch.net/test/read.cgi/gamedev/1238429676/
DXライブラリ 総合スレッド その4
pc11.2ch.net/test/read.cgi/gamedev/1249822550/


875 名前:名前は開発中のものです。 mailto:sage [2010/02/13(土) 22:38:54 ID:nVI35ftX]
そっか、ありがと。

876 名前:名前は開発中のものです。 mailto:sage [2010/02/14(日) 21:14:56 ID:9DOaOyQ2]
半透明処理で

ClearDrawScreen()
SetDrawBlendMode( DX_BLENDMODE_ALPHA, ・・・
DrawGraph(・・・
ScreenFlip()

って書いたら、1箇所使っただけなのにかなり処理が重くなる

DrawGraphが悪い?
フレームスキップするしかない?

877 名前:名前は開発中のものです。 mailto:sage [2010/02/14(日) 21:20:54 ID:lH/o5bwf]
いや、俺普通に何箇所も使うけど重くなんないよ?

本当にその四行だけで試してみた?

878 名前:名前は開発中のものです。 mailto:sage [2010/02/14(日) 21:21:28 ID:I7ZtRrpB]
フレームスキップは基本過ぎるだろ

879 名前:名前は開発中のものです。 mailto:sage [2010/02/14(日) 21:24:26 ID:9DOaOyQ2]
>>877

ClearDrawScreen()
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 )
DrawGraph(・・・ // 普通の画像
SetDrawBlendMode( DX_BLENDMODE_ALPHA, ・・・
DrawGraph(・・・ // 半透明させるの画像
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 )
DrawGraph(・・・ // 普通の画像
ScreenFlip()

こうやってます
画像を重ねる都合上、
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) を2回やってます
もっと効率よい方法があるんでしょうか?

880 名前:名前は開発中のものです。 mailto:sage [2010/02/14(日) 21:26:43 ID:9DOaOyQ2]
>>877
フレームスキップってどうやればいいでしょうか?
画面処理を別スレッドにして、処理時間オーバーしたら放棄、
でいいの?

881 名前:名前は開発中のものです。 mailto:sage [2010/02/14(日) 21:27:36 ID:9DOaOyQ2]
すみません
880 は >>878へのレスです

882 名前:名前は開発中のものです。 mailto:sage [2010/02/14(日) 21:32:50 ID:r2nQlTSv]
>>879
いちいち戻さない方が速いかも

883 名前:名前は開発中のものです。 mailto:sage [2010/02/14(日) 21:34:14 ID:I7ZtRrpB]
>>880
ググれば幾らかサンプルコードが出てくる。確か龍神録でも触れてたと思うし。
PC上で動くゲームを作るのなら秒間60回更新するように調整するのは基本中の基本。
DXLIBに限った話じゃない。CPU使用率が異常に高かったりしたら間違いなくこっちの問題でしょ。



884 名前:879 mailto:sage [2010/02/14(日) 21:58:05 ID:9DOaOyQ2]
3番目の↓
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 )
DrawGraph(・・・ // 普通の画像
が処理を重くしてる原因だったので、これを削ることにしました
ありがとうございます

龍神録というサイトを初めて知ったので、質問してよかった
>>883 ありがとうございます

885 名前:名前は開発中のものです。 mailto:sage [2010/02/15(月) 08:08:26 ID:BUryD20y]
何故そこだけ問題があったんだろう。気になる。


>873だが、色々な変形に対応させようと思うと結構面倒だな。引数も増えるし。
回転と拡縮だけにしてしまうか。

……とここまで書いて、
画像クラスを作ってしまえば簡単だということに気づいた。

886 名前:名前は開発中のものです。 mailto:sage [2010/02/15(月) 20:26:12 ID:ccjc3ij8]
平面だけでいいなら2*2行列に行列演算を繰り返して
最後にその4点にあわせてDrawModiGraphするってのが汎用的で記述もわかりやすくていいんじゃね?
どっかからできの良い数学ライブラリ持ってきてもいいし
回転拡大スライド程度なら簡単な行列計算だけに絞れるから自分で作ってもいい

887 名前:名前は開発中のものです。 mailto:sage [2010/02/15(月) 20:55:41 ID:BUryD20y]
行列とか完全に忘れてて愕然とした orz


>>886
結局のところ、妥協して回転、拡縮、左右/上下反転の3つだけ関数にしたんだが、
どっちかっていうと、コーディングよりも設計に悩んでた。

変形する順番によって最終的な結果が変わる場合があるから、
それらに対応しようとすると、その分だけ引数も増えるわけで、結果として使いにくい関数になっちゃうのよね。

で、画像をクラスにして

 ImageClass img;

 //中略

 img.rotate(3.14);    //180度回転
 img.extend(1.0,2.0);  //縦2倍
 img.rotate(1.57);    //90度回転
 img.draw(0,0);      //0,0に描画

とかでも良かったかな、と思った。


888 名前:名前は開発中のものです。 mailto:sage [2010/02/15(月) 21:00:03 ID:K58uOKXK]
・画像内での基準点の位置
・上の基準点が実際に描画される位置
・基準点を中心としたスケール
・基準点を中心とした回転角度
で十分だと思うけど

889 名前:名前は開発中のものです。 mailto:sage [2010/02/15(月) 21:57:09 ID:BUryD20y]
>>888
それだけで引数7つあるぜ?

各変形の優先度を決める(もしくは同じ変形を複数回行う)とか、
回転と拡縮以外の変形も出来るようにするなら、どれだけ増えるんだ。

890 名前:名前は開発中のものです。 mailto:sage [2010/02/15(月) 22:01:20 ID:8F/ucvej]
回転と拡大縮小って別に順不同じゃね
基点となる座標が変われば別だが

891 名前:名前は開発中のものです。 mailto:sage [2010/02/15(月) 22:17:52 ID:BUryD20y]
>>890
ゲームの都合上、縦横で別々に拡大率を設定できるようにする必要があった。


正方形を、90度回転させてから、横に2倍
□□ → ■□ → ■■□□
■■ → ■□ → ■■□□

横に2倍にしてから、90度回転
                ■□
□□ → □□□□ → ■□
■■ → ■■■■ → ■□
                ■□

みたいに変わる。

892 名前:名前は開発中のものです。 mailto:sage [2010/02/15(月) 22:23:00 ID:8F/ucvej]
>>891
それって渡す引数のほうを工夫すればいいんでねーの
二つ目は90度回転してから縦に二倍しても同じものを得られるわけだし

DrawExRotaGraph2(int x,int y,int cx,int cy,double ExtRateX,double ExtRateY,double Angle,int GrHandle,int TransFlag,int TurnFlag);
10個だな

893 名前:名前は開発中のものです。 mailto:sage [2010/02/15(月) 22:29:12 ID:BUryD20y]
>>892
質問、90度以外でも渡し方次第で出来る?



894 名前:名前は開発中のものです。 mailto:sage [2010/02/15(月) 22:31:47 ID:8F/ucvej]
>>893
出来るんじゃね

895 名前:名前は開発中のものです。 mailto:sage [2010/02/15(月) 22:57:23 ID:ccjc3ij8]
引数が多いと見苦しいし、書く順番でちょっと混乱しそう
それに回転と伸縮どっちが優先か見た目に明らかじゃないのも気になる

896 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 00:28:56 ID:ytIVItbu]
なんに使うのかがそもそも想像できない俺……。

897 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 03:07:21 ID:JDL3KQO6]
>>896
こんな感じでどう?
gamdev4.hp.infoseek.co.jp/cgi-bin/up/No_0079jpg.html

898 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 04:51:49 ID:iDbvu+FE]
>>897
( ゚д゚)ポカーン

899 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 05:23:23 ID:g5MLEwas]
ようやく理解できた

900 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 06:40:46 ID:OQUeahIO]
3Dでやれば簡単だぜ

901 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 09:20:21 ID:aK6xRRB6]
把握。
そういう力技、嫌いじゃないぜw

902 名前:898 mailto:sage [2010/02/16(火) 10:16:29 ID:JDL3KQO6]
すまん、いい例えが思い浮かばなかったんだw

903 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 10:17:15 ID:JDL3KQO6]
名前間違えた、897だ



904 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 11:28:24 ID:iwCPzVGw]
GetDrawStringWidthの第二引数StrLenはどういう意味があるのでしょうか?
マニュアルには
> StrLen として文字列の長さをわざわざ指定する ようにしたのは色々な側面から見て文字列の長さを指定できるよう にしたほうが良いと思ったからです。
と書いてありますが、どういうケースで指定が必要になるのか想像がつきません。

905 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 12:41:35 ID:ghUeZnk+]
>>904
DXライブラリの作者さんがそう考えただけで、別に必要なければ使わなければいいだけでは?
例を挙げておくとこんな感じ。第二引数は指定できなくても書けるけど複雑になってしまう。

char Str[] = "今日もいい天気だ";
int MaxWidth = 50; // この幅に収まるように描画したい
int MaxChar = 0; // MaxWidthに収まる最大文字数
for( int i = 0; i < strlen(Str); i++ )
{
 StrWidth = GetDrawStringWidth( Str , i ) ;
 if(StrWidth < MaxWidth)
 {
  MaxChar = i ;
 }
}
Str[MaxChar] = '\0' ;
DrawString( 0 , 0 , Str , GetColor( 255 , 255 , 255 ) ) ;

906 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 12:56:47 ID:iwCPzVGw]
>>905
なるほど、理解しました。

907 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 13:02:27 ID:JDL3KQO6]
辛うじて一度だけ使った記憶があるな。
メニュー画面だったかな。文字列をセンタリングして表示するのに利用した。

文字列の前後に空白や記号がある場合、
それらも含めた文字数で横の長さを決めると、ちょっとズレて見えることがある。


……ぶっちゃけた話、
他にも方法は色々あるだろうとか、メニュー画面くらい画像にしろよとか思うので
使う機会はあんまり無い気がする。


908 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 17:38:15 ID:S7mGVY2n]
C/C++以外からDLL経由で使おうとするとnull文字で終わってない文字列とか渡すのに便利です

909 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 21:28:56 ID:QXMNjoNk]
>>873
DrawModiGraph()とアフィン変換
アフィン変換 クラスでググるといいかもしれない

910 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 22:33:22 ID:7n/4grgh]
逆に文字列の長さよりもStrLenの方が短い場合とかに使うんじゃね?
デバッグ文表示で最後まで表示しないで途中で切ることとかよくあるんじゃね?

911 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 23:25:40 ID:b96KcuEj]
アフィン変換か・・・左右反転と拡大縮小って同時にできるもんなんだな、しらなかった
でもこれってソースになる元画像を読んでからやるの?格納してからメモリ上の画像をハンドルで指定して操作したりできるんだろうか

912 名前:名前は開発中のものです。 mailto:sage [2010/02/16(火) 23:50:46 ID:QXMNjoNk]
あ、左右反転もなのか
DrawModiBillboard3Dのがいいと思う

913 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 00:19:59 ID:BMwZx7QF]
>>912
いや自分は873ではないんだけれども、参考になったので書かせてもらった。横槍すまんね
DrawModiBillboard3Dって左右反転できるのか。x1を右上の座標、x2を左上の座標、x3とx4も同様に交換ってやれば反転するのかな?



914 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 02:18:28 ID:V7zWpnOB]
ゲームで銃の連射中の音を作りたい
例えば 「ドッギュウン」て音声のファイルがあったとする。
そのファイルを使って単発発射で「ドッギュウン」、連射で「ドッドッドッドッドッギュウン」ってなカンジにしたいんだけど
音声の再生中かを CheckSoundMemで調べて、再生してなかったら再生してもヨシってすると案の定
「ドッギュウン・ドッギュウン・ドッギュウン・ドッギュウン」ってカンジになってしまう。
なので、ソレをナシにすると1ループごとに再生するんであまりにも早くて
「ドドドドドドドドドドッギュウン」ってカンジになる。
音声の再生位置を調べて、ある程度達してたら再生ってやろうと思ったけどそんな関数は無かった。
だから適当に変数用意して3ループ目ごとに再生ってカンジにしようとしているんだけど…(ゴチャゴチャする気もするが)

一般的なゲームの場合ってこういう時どうしてるの?
音声を二つ「ドッドッドッド」「ドッギュウン」用意して、ボタン押しっぱなし時は「ドッドッド」、離す・もしくは一押しの時は「ドッギュウン」とか?




915 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 02:32:31 ID:ccv1Zplj]
ボタン押してる間「ドッ」をループ
離したら「ッギュウン」でいいんじゃねーの?

916 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 05:47:58 ID:9a0E55gk]
そんなめんどくさいことしなくても
弾の発射間隔を広げるか、数発ごとに発射音を鳴らすようにすればいいじゃん


917 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 06:26:15 ID:CMLdNZJw]
弾を撃つと開始されるカウンタを作って
そのカウンタが条件を満たしたとき音を鳴らせばいいんじゃないの?
1ループごとだと早すぎるんなら1おきにするとかもできる。

918 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 08:34:48 ID:MHINozGj]
>>912
自前で変形させるなら、2Dでも3D(ビルボード)でも大差なくない?

919 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 13:16:50 ID:WoQHqNki]
>一般的なゲームの場合ってこういう時どうしてるの?
FFのデータ見たら、あらかじめ重なった時の効果音も
組み合わせごとにいっぱい入ってて、意外だった
とかいう話を、どこかのスレで見たような、見なかったような。
手間と配布方式とかによって変わってきそう。

920 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 19:53:18 ID:b05sIrPr]
>>918
カメラ使って視点操作で楽できるからじゃね?


921 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 21:17:38 ID:MHINozGj]
ああ、なるほど。

カメラで視点操作ってことは、一括だよな。
メリットでもあるしデメリットでもあるという感じか。

922 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 22:06:32 ID:BMwZx7QF]
DrawModiBillboard3Dって描画位置が変にならない?
前にDrawBillboard3DをDrawModiBillboard3Dにそのまま置き換えてみたら同じ位置に描画されなかったから使うのやめちゃったんだけど

923 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 22:17:31 ID:V7zWpnOB]
>>915-917
多彩な案サンクス!やってみるよ俺



924 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 02:17:33 ID:artpUogb]
アフィン変換ってのとDrawModiGraphでよくね?
DrawModiGraphで左右反転は入れ替えで普通にできたよ。
アフィン変換の使いやすそうなクラス公開してたりするし、よくわからんまま使えそうだ。

925 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 16:24:17 ID:wXmsheL/]
スクリーンではなくバッファに描画するにはどうすればいいのでしょうか?
例えば、画像描画や文字列描画を組み合わせて描画する物である「メニューウインドウ」をバッファに描画して、
それを透過やら拡大縮小してスクリーンに描画したいです。

926 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 16:47:24 ID:S5tbEoCa]
>>925
hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1533
これでどう?

927 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 17:21:51 ID:wXmsheL/]
>>926
まさに求めていたものはこれです。
ありがとうございました。

928 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 18:10:44 ID:UX2j7dSO]
dxlibで書き込める画像って作れるのか・・・
レイヤーシステムどうやって作るのか悩んでたところだよ

929 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 18:19:30 ID:sI5JnKeC]
BaseImageでもやろうと思えば出来るんじゃない?
SoftImageにも転送付いてたような

930 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 18:37:31 ID:UX2j7dSO]
SoftImageは変形とかブレンドを自前でやんないといけなくて面倒だった気がする

931 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 18:41:04 ID:yr41/JmB]
>>897
の右側の魔法陣みたいな斜めにして回転、みたいな変換・表示するのにはどうすればいいかわからない・・・。
というか、アフィン変換した画像というか、DXライブラリでどうアフィン変換利用すれば良いかわからないんだけど、
誰か分かる人頼む・・・。

932 名前:873=897 mailto:sage [2010/02/18(木) 19:07:00 ID:7/BIGMNa]
結局アフィン変換がよくわからずに、三角関数で画像を変形させた俺。

おかしいな、大学は理系だったはずなんだけどなー。
行列なんて普通に使ってたはずなのに…… orz

933 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 19:28:11 ID:wsPY0Q5n]
>>931
斜めにして回転って2Dでやるほうが難しいんじゃないかな。
DrawModiBillboard3Dってカメラ関数使って斜めから見れるん?
>>897の魔方陣のように傾けて見れるならなんとかなりそうだけど。



934 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 19:30:18 ID:sI5JnKeC]
いわゆる「習う」数学は公式を持ってきた後に「解く」からいけない。そこが重要だと思ってしまう
解くのは別にコンピュータがやればいい。大切なのは解き方

935 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 19:40:26 ID:UX2j7dSO]
ひょっとして3Dつかって2Dゲーム作る方が楽なのかな
最近はそういうゲームも結構あるよね

936 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 19:43:40 ID:cSNnQmS/]
DXライブラリ使ってるならまさにその方式を使ってることになるけど

937 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 20:41:03 ID:S5tbEoCa]
>>931
つまり、画像を2回回転させて描画したいっていうことだよね?
DrawModiBillboard3D関数の引数x1, y1〜x4, y4に各頂点を2回回転させた座標を指定すればいけると思う。
ビルボードじゃなくてモデルとして扱った方が簡単なような気もするけど・・・

938 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 20:49:00 ID:7/BIGMNa]
>>937
自分みたいに3Dサッパリな人間には、モデルデータを用意するだけでハードルが高いからなあ。
そうなると、従来の画像で扱えるビルボードの方が良さそう。
あとは動的に画像を生成するような場合(スクリーンショットとか)にも向いているかもしれない。

モデルデータを使わずにやるなら、素直に2Dでも良いわけだが。


939 名前:937 mailto:sage [2010/02/18(木) 20:57:50 ID:S5tbEoCa]
すみません、>>937に書いた方法はウソでしたorz..
引数x1, y1〜x4, y4は2次元の変形しか指定できないし、DrawBillboard3D関数にはある引数Angleも無いので3次元の回転は無理そうです・・・
モデルにすればMV1SetMatrix関数で自由に変形できるんだけど・・・
>>931の作ってるゲームは2Dなの?
それなら斜めに傾いている画像を使って下さいw

940 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 21:04:10 ID:UX2j7dSO]
2Dだとやっぱり事前に描いて置いておくのが一番なのかな

941 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 21:07:33 ID:cSNnQmS/]
>>897みたいな効果を多用するならともかく
一部でしか使わないならそのために複雑な仕組み作りたくないでしょ

942 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 21:07:35 ID:7/BIGMNa]
2Dゲームなら、それこそ>937の方法で良いような気がするけどなー。

943 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 21:43:03 ID:6a8jaVSb]
俺もblederで即死したけど
メタセコなら普通に使えた



944 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 22:34:17 ID:7/BIGMNa]
少ない脳みそ絞って書いてみた。
3Dとかアフィン変換とかサッパリなので2Dで。
gamdev4.hp.infoseek.co.jp/cgi-bin/up/No_0080zip.html



945 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 23:17:57 ID:yr41/JmB]
>>944
マジ感謝・・・なんだが、サンプルコードなくて使い方を迷う

946 名前:名前は開発中のものです。 mailto:sage [2010/02/18(木) 23:44:29 ID:7/BIGMNa]
すまん、付け忘れた

extRate_xとextRate_yに1、hImgにグラフィックハンドル、残りの引数には0でも入れてくれれば
とりあえず動くと思う。

947 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 00:27:45 ID:u7/N0T5p]
俺がいつも使ってる拡張画像表示はこれ

void DrawExRotaGraphF(float ex, float ey, float xScale, float yScale, float Angle, int GrHandle, int TransFlag, int TurnFlag) {
int gx,gy;
float ix,iy,ca=cos(Angle),sa=sin(Angle);
GetGraphSize(GrHandle,&gx,&gy);
gx*=xScale/2; gy*=yScale/2;
VECTOR2D pos[4] = { { -gx, -gy}, { +gx, -gy}, { +gx, +gy}, { -gx, +gy} };
for (int i=0;i<4;i++) {
ix = pos[i].x*ca - pos[i].y*sa;
iy = pos[i].x*sa + pos[i].y*ca;
pos[i].x=ix+ex; pos[i].y=iy+ey;
}
if (!TurnFlag) DrawModiGraph((int)pos[0].x, (int)pos[0].y, (int)pos[1].x, (int)pos[1].y,
(int)pos[2].x, (int)pos[2].y, (int)pos[3].x, (int)pos[3].y, GrHandle, TransFlag);
else DrawModiGraph((int)pos[1].x, (int)pos[1].y, (int)pos[0].x, (int)pos[0].y,
(int)pos[3].x, (int)pos[3].y, (int)pos[2].x, (int)pos[2].y, GrHandle, TransFlag);
}

ていうかこのくらいDXライブラリも用意して欲しいところだが

948 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 00:28:54 ID:u7/N0T5p]
あ、VECTOR2Dはオリジナルだった
/* 2D用行列 */
typedef struct VECTOR2D {
float x,y;
} VECTOR2D;
まあ使わなくても二次元配列なりで出来るけどね

949 名前:944 mailto:sage [2010/02/19(金) 00:43:49 ID:zmDX76mU]
2Dの描画関数群を見てると、Zバッファ版なるものがあるんだけれど
これって何か上手く使えないかな。

公式BBSだと、マスク処理に使うって話があったけれど…


>>947
やってることは自分と同じ…かな? たぶん。
そっちの方がシンプルなコードだがw


950 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 01:11:24 ID:u7/N0T5p]
>>949
同じだね
縮小拡大前に回転するかしないかってのは入れる値を変えれば出来るし、縦の反転は180度回転させた後に左右反転すれば再現可能
自分はこれをよく使うので最低限のものだけを入れて、必要に応じてラッパー関数を使えばいい(まあこれ自体もmodiのラッパーだけど)

951 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 01:32:26 ID:zmDX76mU]
>>950
回転させてから拡大(縦横別倍率)ってどうやるの?

952 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 01:36:21 ID:u7/N0T5p]
拡大率を予めsincosにぶち込めばいい 「回転を見越して拡大縮小する」

953 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 02:17:39 ID:zmDX76mU]
先生、その見越し方が分かりません



954 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 10:00:47 ID:vzeC0aMv]
つかそういういくつもの変換を同時に適用するために
行列があるんだと思うが・・・行列を使わないなんて無駄に複雑になるだけだよ。

955 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 12:10:45 ID:zmDX76mU]
>>954
計算部分を自前でやってるだけで、やってることそのものは変わらない気がする

956 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 13:25:42 ID:zmDX76mU]
チラ裏で申し訳ない。
画像処理の入門書を読んでるんだが

(1)自前で行列(回転用行列、拡大用行列など)を用意
(2)それらを掛け合わせて、最終的な変形用の行列を作る
(3)変形用行列を関数に渡す

…みたいな感じだった。
行列をクラスにして、演算子のオーバーロードで簡単に加算や乗算が出来るようにするとか
そういう工夫がされているようだ。


あと、公式BBSでこんなの見つけた
hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=1033

957 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 13:34:25 ID:G1VFwFwU]
3D用の関数に行列使えるのがあるよ

958 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 13:37:37 ID:gvWv62bY]
上で話題にでてたアフィン変換だって2次元に特化した行列じゃんか
クラス公開されててちょっといじれば簡単に使えるのとかあったぞ
行列うんぬんよりクラスがわからんとか?

959 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 14:02:46 ID:az/+pLVO]
頂点の集合に行列を演算してできた形に描画するのはいいんだが
長方形の画像を自由変形して描画するアルゴリズムはいったいどうやって実装されてるんだろう
ピクセル単位で全部写像してたらすごく遅くなりそうだが他に方法も浮かばない

960 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 14:11:57 ID:uvqEn+/2]
専用のハードウェアにやらせてるんだから爆速
アルゴリズムとかいう次元じゃない

961 名前:名前は開発中のものです。 mailto:sage [2010/02/19(金) 14:17:06 ID:zmDX76mU]
>>957
3Dの方はあんまり見てなかったぜ。
これから勉強しないとな…。

>>958
クラスが分からないとかは流石に発想が飛躍しすぎじゃね?

>>959
テクニカルな最適化や、誤魔化しとかはやってるかもしれないけど、
基本的なやり方は同じで、あとはハードウェア様による力技なんじゃない?


962 名前:名前は開発中のものです。 mailto:sage [2010/02/24(水) 03:58:01 ID:qZkPMJuP]

LoadGraphを使う関数を繰り返し呼び出してると
例外が出て強制終了することがある
具体的には、
main(){

:
:
shop->open();

}
とメインの関数からクラスのメンバ関数を呼んだとき、
openを十回くらい呼び出すと、openを呼んで最初に出てくるLoadGraphで強制終了する
open内で何度もLoadGraphを呼び出しているが、最初のLoadGraph以外で強制終了したことはない
他のまったく別のクラスのメンバ関数でも、二回目に呼び出したときに
最初のLoadGraphで強制終了するので、
openでなくLoadGraphに問題があると思うんだけど
そもそもどういう状況でLoadGraphが例外出すか分かりませんか?

メモリ使用量を見る限りメモリリークなどはない
ちなみに使ってるのはBcc版

963 名前:名前は開発中のものです。 mailto:sage [2010/02/24(水) 04:03:15 ID:qXzrwIFO]
具体的の意味わかってんのかカス



964 名前:名前は開発中のものです。 mailto:sage [2010/02/24(水) 07:32:26 ID:Jsc/BFjh]
例外ってどんな例外? メッセージとか無い?
読み込んでる画像はどんな画像? ファイルサイズとかフォーマットとか。
メモリリークかどうかもどんな環境でどれくらいのサイズの画像を読み込んでるのか教えてくれないとこっちでは判断できない
もっと詳しく


965 名前:名前は開発中のものです。 mailto:sage [2010/02/24(水) 09:49:28 ID:RLyfmrNj]
全く具体的じゃないのに具体的には、とはこれいかに。

966 名前:名前は開発中のものです。 mailto:sage [2010/02/24(水) 09:53:22 ID:KFJm0GRx]
何が例外出すか分かりませんか?だよ
どういう状況で例外出すってエラーメッセージに全部書いてあるだろうが

967 名前:名前は開発中のものです。 mailto:sage [2010/02/24(水) 10:11:36 ID:a8pqqcvy]
エスパーしてみるに、
「最初のLoadGraph」に指定してるファイルが、
 
 (1)形式的に未対応のものを指定している
 (2)指定ファイルの内部フォーマットがおかしい

のどれかなんじゃないのかな?
「最初のLoadGraph」以外は成功してるって話だし。

968 名前:名前は開発中のものです。 mailto:sage [2010/02/24(水) 15:35:20 ID:etAIwZMZ]
DX_ライブラリ使っていたら
いつもなら「ch.」(chは構造体)で設定したパロメータが表示されたのに
今日使ってたら表示されなくなった。これってどこの設定変えれば元に戻るの?

969 名前:名前は開発中のものです。 mailto:sage [2010/02/24(水) 16:19:36 ID:AEul0BlH]
インテリセンスはよくぶっ壊れる

970 名前:名前は開発中のものです。 mailto:sage [2010/02/24(水) 16:56:28 ID:OQn9U246]
たまにJavaやるとEclipseの入力支援の賢さに感動する。

971 名前:名前は開発中のものです。 mailto:sage [2010/02/24(水) 17:28:51 ID:ROg57qmn]
いや普通にVS2008の方が賢いだろ C++はダメダメだが

972 名前:名前は開発中のものです。 mailto:sage [2010/02/24(水) 20:46:20 ID:LFTpl00q]
>IntelliSense
最近のは分からないけど、ちょっと変なことやると対応しなくなるしなあ。


973 名前:962 mailto:sage [2010/02/24(水) 20:46:27 ID:qZkPMJuP]
Bccのデバッガは見方がよく分からなかったのでVC++で原因を調べてみた
移植にかなり手間取ったけど、原因はnew,deleteでの
HEAP CORRUPTION DELETEDだった

ごめんよ、DXライブラリ



974 名前:名前は開発中のものです。 [2010/02/25(木) 00:10:24 ID:wGlYMdYr]
VS2008EEC#でDXLib使ってるけど、ゲーム開発はなんでC++が多いいのか・・・?
C#使いやすいと思うんだが・・・


975 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 00:27:31 ID:JfnFuENI]
C#とC++と、どっちも知らない人間(俺みたいな)が始めようとしたら
そりゃデフォルトで解説されてるC++使うよ。

976 名前:名前は開発中のものです。 [2010/02/25(木) 00:40:37 ID:rlWr6nuc]
>>974
>>975
素人はメモリ管理で苦労させられる
C#はライブラリの導入・セッティングまでも驚くほど簡単だ

977 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 00:43:57 ID:o6l4NITL]
むしろメモリ管理を隠蔽化されると不安になる

978 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 00:57:11 ID:xk33jNpg]
C#は動作速度どうなんだ?
あと.NETないと動かないんだっけ それはどうでもいいが

979 名前:名前は開発中のものです。 [2010/02/25(木) 01:15:00 ID:rlWr6nuc]
>>978
今のPCスペック考えると動作速度気にするのは意味無いかな
同人レベルならFFやメタルギアのような実写モーションやるわけではないし
HSPよりは圧倒的に速いよ、ニコ動見てもHSP+Easy3Dで3Dアクション作ってる奴がたくさん居る
C#もJavaもゲーム製作には十分過ぎる

980 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 01:40:51 ID:DXATdGPP]
>>974
>>975の理由もあるが、
単純に、C言語覚えたから次はorいよいよC++に〜とかって感じじゃない?
JAVAとかの経験がなければガベコレとかも知らないだろうし。
メモリ管理とかはまぁゲ製作以外で活かせる人なら勉強にもなるから良いやー、とか。

981 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 02:07:47 ID:hEXp+gEa]
C#は解析が簡単なんじゃないの?
改造し放題だと市販のゲームには向かないと思う

982 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 02:29:34 ID:8SXpDUIf]
>>974
公式サンプルがC言語で書かれているし、どれか一つ言語を覚えるとしたら自然にC言語になるんじゃないかな。
DXライブラリ自体もC言語で書かれてるしね。

>>981
難読化ツールというものがある。
それにC言語でも解析は可能なので市販する場合は独自に暗号化する必要がある。
特に画像、サウンド、シナリオテキストは見えてしまうとマズいので。

983 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 02:39:17 ID:hEXp+gEa]
そりゃデータは暗号化するだろうけど、それは言語とは関係ない話では?



984 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 05:08:59 ID:SPGhDv+7]
>>982
ぜってー使ったこと無いだろ>難(ry
あのスカスカ具合を見てから言えw
データも言語関係ないし

985 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 07:36:27 ID:fv/CwMlZ]
C++はWiondows標準のexeファイルを作成でき、そのまま実行できる
C#やJAVAはWindows非標準の中間ファイルしか作れず実行環境のインストールをユーザーに説明し、納得させ、実行させなければいけない
余計なソフトのインストールを嫌うユーザーは多い
速度よりも何よりもこの差があるからC#やJAVAは選ばれない

986 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 07:53:11 ID:xyh/cBvs]
インストーラーで強制インストールとかまんこい

987 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 08:25:15 ID:JegjOA7A]
デフォルトでインストール済()笑

988 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 08:29:09 ID:8SXpDUIf]
>>983
どの言語にしても暗号化は必要と言いたかったのだけど・・・

>>984
>あのスカスカ具合を見てから言えw
どの難読化ツールを使ったか知らないけど、それでスカスカだと感じたんならしょうがないね・・・
そこまでセキュリティが必要なものを作っている人もいないと思うけどなあ。

989 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 09:03:26 ID:PKMfSc2o]
>>981
現状の市販ゲームが改造し放題なのばかりなのに何言ってるんだ。


990 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 09:57:05 ID:8oJeVww7]
>>984
無料のやつしか使ったこと無いだろ

991 名前:名前は開発中のものです。 mailto:sage [2010/02/25(木) 10:40:15 ID:olOvytZe]
DXライブラリから話がずれてるぞ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<266KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef