なぜVBは扱いが低いのか (200レス)
なぜVBは扱いが低いのか http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
154: 名前は開発中のものです。 [sage] 2013/01/31(木) 15:29:50.68 ID:NyoQQhH7 >いちいちロックしないと いけないので、面倒極まりないんですけど。 >俺が聞いたのはコーディングの話じゃない。アプリの速度だ。 生産性の話をしていたのに、突然実行速度の話に変わったな。 GCは主に生産性の向上を目的として導入されているのに、おかしな話だ。 まあGCが得意なパターンにマッチすれば速くもなる。 C++でRAIIだと重いdelete()が集中しがちだが、 GCだと実際に解放するのを後回しにして、 負荷が軽い頃合に並列GCが少しずつ解放してくれたりする。 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/154
155: 名前は開発中のものです。 [sage] 2013/01/31(木) 15:34:54.20 ID:NyoQQhH7 >DirectXライブラリならDX7ベースのものを作った。 ならライブラリを使っている限り、アプリケーション層ではAPI(dll)を呼ぶ必要はなく、 従ってロックなどしないはずだ。そうでなければライブラリに存在意義がない。 ライブラリを作ったような妄想に浸っていただけだったというオチだな。 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/155
156: 名前は開発中のものです。 [] 2013/01/31(木) 16:10:41.97 ID:wVU/jdLo 馬鹿だなあ、ライブラリ自体をVBで作ったんだ。 バックサーフェスのLockメソッドを実行して、引数の構造体からポインタを 取得し、APIの movememory を使って転送する。 ちなみにDX9のフレームバッファに直接書き込む場合は、メソッドがあるので APIは使わないようだが、ロックはしなければならない。 おまえさんのライブラリではどーやってんのかなあ?答えてないぞ。 なにしろ>>152で「DirectXラッパぐらい」って言ってんだから、「ぐらい」なんだろ。 簡単にできそうじゃねーか?当然作ってあるんだろ 強がっても本当はDirectXライブラリなんて作った事ないんだろ。まあ昨日までロックを 知らなかったんだから無理も無い。 そのくせ態度だけはでかいんだよな。ヒトを低脳よばわりとかして… GCが効果を出すのはごく限られた状況だけ、ほとんどは余計なプロセスが動くだけで STGなんかを作る人からは嫌われている。 GCがメモリをいじくりまわしても、無造作にメモリ使いまくるコード組んでりゃいつかは 足りなくなってスワップするし、ようはスワップがちょっと遅れて来るぐらいの効果しか期待できない。 とりあえず自分で「ぐらい」と言った「DXライブラリ」作ってみそ。そしたら少しは認めてやるわ。 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/156
157: 名前は開発中のものです。 [sage] 2013/01/31(木) 17:50:35.50 ID:NyoQQhH7 俺はお前の先生じゃないからな。 初心者に1から10まで教えたりはしない。 あと話がコロコロかわるわ、分散するわ、人の書いたことが理解できないわ、 そんなお前と話をしても漠然と広がるばかりで一向に収束しない。 理由は単純、ID:wVU/jdLoがなりふり構わず言い返したいだけだからだ。 何がしたいの?そんなにくやしかった? http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/157
158: 名前は開発中のものです。 [] 2013/01/31(木) 18:37:22.22 ID:wVU/jdLo 「DXライブラリなら作ってある!!」と言い返せないんだな。 そして「ロックを使わずにピクセルデータをバックサーフェスに転送できる!!」とも言えないんだな くやしいのう。くやしいのう。 >俺はお前の先生じゃないからな。 >初心者に1から10まで教えたりはしない。 じゃあひとつだけでいいよ。 ロックを使わずにピクセルデータをCPUからバックサーフェスに転送できる方法 とやらを教えてくれ。 コードを表示してこっちで試して正しく動作したらオマエの勝ちでいい。 できなければオマエの負け。 オレはロック使わないと絶対にできないと思ってる初心者だから、先生よろしくたのむよ …しかしコイツ本当に一度でもDirectXのコード組んだことあんのかよ? APIも使ったことないんじゃねーの? どっちが初心者だよまったく…バカじゃねーの? http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/158
159: 名前は開発中のものです。 [sage] 2013/01/31(木) 19:51:45.92 ID:NyoQQhH7 何言ってんだこいつ。日本語が不自由な上に統合失調症の傾向がある。 ロックするとか意味不明だし、プログラム向いてないから病院いっとけ。 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/159
160: 名前は開発中のものです。 [] 2013/01/31(木) 19:55:05.86 ID:PSRqcy7K VB使いって・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/160
161: 名前は開発中のものです。 [sage] 2013/01/31(木) 20:05:52.91 ID:NyoQQhH7 >ライブラリ自体をVBで作ったんだ。 こんな事書いてる辞典でお前がライブラリなんか作れないことは自明のこと。 一個一個ロックしてコールバック呼ぶ間抜けな姿が目に浮かぶわw DirectXで頂点バッファとかVRAM転送に関するロックと マネージコード(VB, C#, Java)のGCに関するロックは全く違う話だってのもわからないだろ? 初心者が強がったところでまたひとつ恥をかいてるよ。バカじゃねーの? http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/161
162: 名前は開発中のものです。 [sage] 2013/01/31(木) 20:14:38.35 ID:NyoQQhH7 >オマエの勝ちでいい。 そうだな。俺の完全勝利ってこと。 普通にロックなんて誰もしないものw おかしな知ったかぶりでGCを批判するぐらいなら 全部C++で書けばいんじゃないの? ロックせずにコールバック呼べるよ〜?w http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/162
163: 名前は開発中のものです。 [sage] 2013/01/31(木) 20:24:02.19 ID:NyoQQhH7 そう、ID:wVU/jdLoは完全に負けたんだよ。 俺のC#ライブラリを使う限り、誰もGCロックなんてしないし、 SlimDXやMDX、XNAなど普通のライブラリやフレームワークはみ〜んなそう。 ついで抽象度を高めればDirectXのロックもライブラリ層で消せますな。 低脳ライブラリではコールバックの名前が変わっただけで隠蔽性も何もなく、 ロックしてまわるそうです。一体何のためのライブラリなのか謎ですな(苦笑) http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/163
164: 名前は開発中のものです。 [] 2013/01/31(木) 20:31:31.28 ID:wVU/jdLo オマエ…DirectX7を知らないのか…絶句…アホ。 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/164
165: 名前は開発中のものです。 [sage] 2013/01/31(木) 20:35:28.34 ID:NyoQQhH7 ネイティブコードに関する規模の大きいライブラリを作るなら、 dll(C)側とコネクタとなるマネージコード側の両方を書くのは必須。 これ知識というより普通は気付く。 低脳にも理解できたかな? ひとつ勉強になっただろ。 先生にありがとうございましたって、しっかり頭下げとけよw http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/165
166: 名前は開発中のものです。 [sage] 2013/01/31(木) 20:38:03.52 ID:NyoQQhH7 こっちはDX9のDirect3Dを前提に話をしているが、 DirectDrawでも話の芯は全く同じだ。 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/166
167: 名前は開発中のものです。 [] 2013/01/31(木) 20:42:24.50 ID:wVU/jdLo じゃあオフスクリーンサーフェスにピクセル配列を転送するコード を書いてみろ。 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/167
168: 名前は開発中のものです。 [] 2013/01/31(木) 20:45:12.55 ID:wVU/jdLo >>156でも書いたが、取得できるのはポインタだぞ。その後どうするつもりだ? http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/168
169: 名前は開発中のものです。 [sage] 2013/01/31(木) 20:57:12.63 ID:NyoQQhH7 ハハハ、まだそんなこといってるのか。 DirectXなんて時間かかって面倒くさいだけで、 可能・不可能を論じれば誰でもできる簡単なことだからな。 完全勝利 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/169
170: 名前は開発中のものです。 [] 2013/01/31(木) 21:05:54.09 ID:wVU/jdLo アホすぎる…もういいよオマエは。 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/170
171: 名前は開発中のものです。 [sage] 2013/01/31(木) 21:35:46.32 ID:NyoQQhH7 >オフスクリーンサーフェスにピクセル配列を転送するコード 言い回しが古すぎるね。 Direct3D9ではIDirectSurfaceを直接操作せず、IDirect3DTexture経由で事足りる。 以下、テクスチャを1ドット毎白く塗りつぶす例。 D3DLOCKED_RECT lockRect; pTexture->LockRect(0, &lockRect, NULL, D3DLOCK_DISCARD); for(int y=0; y<h; y++) { for(int x=0; x<w; x++){ DWORD color = 0x00ffffff; BYTE* p = (BYTE*)lockRect.pBits + lockRect.Pitch*y + 4*x memcpy(p, &color, sizeof(DWORD)); } } pTexture->UnlockRect(0); http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/171
172: 名前は開発中のものです。 [sage] 2013/01/31(木) 21:38:38.53 ID:NyoQQhH7 ライブラリを作るなら、例えば次のようにラップされ、 ライブラリユーザーは"ロックなど不可視"なはずだ。 virtual void FillTexture(int rgbColor) = 0; http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/172
173: 名前は開発中のものです。 [sage] 2013/01/31(木) 21:42:04.76 ID:NyoQQhH7 あっちゃ〜、こりゃまた完全勝利してもうたわぁ〜。 低脳にも理解できたかな? ひとつ勉強になっただろ。 先生にありがとうございましたって、しっかり頭下げとけよw http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/173
174: 名前は開発中のものです。 [sage] 2013/01/31(木) 21:56:06.17 ID:NyoQQhH7 ID:wVU/jdLoが顔真っ赤にして唇を噛み締め、悔し涙を流すのも無理はない。 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/174
175: 名前は開発中のものです。 [] 2013/01/31(木) 22:00:58.85 ID:wVU/jdLo ではこちらはデータ転送部分だけだが、オレの書いたコードをあげよう void __stdcall s2sp15MoveMemory32SSE2( long ptrSrcZeroDTSC, long ptrDstZeroDTSC, long SrcWidth, long LinePlusByte,long StartTop, long WorkHeight ) // 同サイズでの32ビットカラーデータ転送。サイズは送り側 SrcWidth を、8の倍数にすること。 { __asm { mov ebx,LinePlusByte mov esi,ptrSrcZeroDTSC mov edi,ptrDstZeroDTSC mov eax,SrcWidth movd mm0,eax shl eax,2 // 32ビットなので4倍 mov ecx,StartTop mul ecx add esi,eax // ソース開始アドレス movd eax,mm0 shl eax,2 // 32ビットなので4倍 add eax,ebx // LinePlusByte mul ecx add edi,eax // デスティネーション開始アドレス movd eax,mm0 shr eax,2 // 4点ずつ処理する movd mm6,eax mov eax,WorkHeight add eax,ecx movd mm5,eax // エンドライン mov eax,ebx or eax,edi test eax,0xf jnz LL201 // アライメントNG http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/175
176: 名前は開発中のものです。 [] 2013/01/31(木) 22:01:39.38 ID:wVU/jdLo LL101: // アライメントOK movd eax,mm5 cmp eax, ecx je LL99 movd mm7,ecx movd ecx,mm6 LL102: dec ecx js LL120 movdqa xmm0,[esi] movntdq [edi],xmm0 add esi,16 add edi,16 jmp LL102 LL120: add edi,ebx // ダイレクトXでのライン加算 movd ecx,mm7 inc ecx jmp LL101 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/176
177: 名前は開発中のものです。 [] 2013/01/31(木) 22:02:19.43 ID:wVU/jdLo LL201: // アライメントNG movd eax,mm5 cmp eax, ecx je LL99 movd mm7,ecx movd ecx,mm6 LL202: dec ecx js LL220 movdqa xmm0,[esi] movdqu [edi],xmm0 add esi,16 add edi,16 jmp LL202 LL220: add edi,ebx // ダイレクトXでのライン加算 movd ecx,mm7 inc ecx jmp LL201 LL99: emms } return; } http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/177
178: 名前は開発中のものです。 [] 2013/01/31(木) 22:05:22.35 ID:wVU/jdLo movntdqは、ライト時にCPUキャッシュへの書き込みをキャンセルする命令だ。 書き込みを高速化できる。 http://mevius.5ch.net/test/read.cgi/gamedev/1284400196/178
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 22 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.006s