なぜVBは扱いが低いのか (200レス)
1-

151: 名前は開発中のものです。 [] 2013/01/31(木) 08:48:10.87 ID:wVU/jdLo(1/13) AAS
cZuhgiqX
どうやらロックの意味は理解できたようだな。ひとつ勉強になっただろ。

では逆に問う。君はGCの利点として何か実感できるものがあるのか?

GCのある言語とそうでない言語で同じ動作をするプログラムを組んだとして、
あきらかにGCの優位性を感じる場面に遭遇できるのはどのようなケースだ?

ちなみに自分はVB5からのユーザーだが、APIは当たり前のように使っている。
152
(1): 名前は開発中のものです。 [sage] 2013/01/31(木) 12:02:16.21 ID:NyoQQhH7(1/17) AAS
直接ネイティブを呼びまくること自体が低脳のすることだといってるのに
ロックの意味もわかってないからあちこちでロックしまくってるわけだろ。
普通の人はそんなことしないので、ロックするといわれてもわかりません。

DLL、SQLとかVBの外にあるものは隔離して
VBのみで完結しているように設計を作るのは基本。

>APIは当たり前のように使っている。
Win32のことか?DirectXラッパぐらい作ってから言えよw

>GCの利点として何か実感できるもの
スマートポインタ(参照カウンタ)を使うようなケース。
153
(1): 名前は開発中のものです。 [] 2013/01/31(木) 12:36:26.25 ID:wVU/jdLo(2/13) AAS
DirectXライブラリならDX7ベースのものを作った。ところで、その口ぶりなら当然
自分もそのぐらいは作ったんだろうな。CPUで演算したデータをバック・スクリーン
サーフェスに転送する場合、ロックもかけず、APIも使わず、どーやーって
転送しているんだ?おしえてくれよ。

スマートポインタ使うと、アプリの速度が上がるとでも言いたいのか?
俺が聞いたのはコーディングの話じゃない。実行上の有利性だ。
154: 名前は開発中のものです。 [sage] 2013/01/31(木) 15:29:50.68 ID:NyoQQhH7(2/17) AAS
>いちいちロックしないと いけないので、面倒極まりないんですけど。
>俺が聞いたのはコーディングの話じゃない。アプリの速度だ。
生産性の話をしていたのに、突然実行速度の話に変わったな。
GCは主に生産性の向上を目的として導入されているのに、おかしな話だ。

まあGCが得意なパターンにマッチすれば速くもなる。
C++でRAIIだと重いdelete()が集中しがちだが、
GCだと実際に解放するのを後回しにして、
負荷が軽い頃合に並列GCが少しずつ解放してくれたりする。
155: 名前は開発中のものです。 [sage] 2013/01/31(木) 15:34:54.20 ID:NyoQQhH7(3/17) AAS
>DirectXライブラリならDX7ベースのものを作った。
ならライブラリを使っている限り、アプリケーション層ではAPI(dll)を呼ぶ必要はなく、
従ってロックなどしないはずだ。そうでなければライブラリに存在意義がない。
ライブラリを作ったような妄想に浸っていただけだったというオチだな。
156
(1): 名前は開発中のものです。 [] 2013/01/31(木) 16:10:41.97 ID:wVU/jdLo(3/13) AAS
馬鹿だなあ、ライブラリ自体をVBで作ったんだ。

バックサーフェスのLockメソッドを実行して、引数の構造体からポインタを
取得し、APIの movememory を使って転送する。

ちなみにDX9のフレームバッファに直接書き込む場合は、メソッドがあるので
APIは使わないようだが、ロックはしなければならない。

おまえさんのライブラリではどーやってんのかなあ?答えてないぞ。

なにしろ>>152で「DirectXラッパぐらい」って言ってんだから、「ぐらい」なんだろ。
簡単にできそうじゃねーか?当然作ってあるんだろ

強がっても本当はDirectXライブラリなんて作った事ないんだろ。まあ昨日までロックを
知らなかったんだから無理も無い。

そのくせ態度だけはでかいんだよな。ヒトを低脳よばわりとかして…

GCが効果を出すのはごく限られた状況だけ、ほとんどは余計なプロセスが動くだけで
STGなんかを作る人からは嫌われている。

GCがメモリをいじくりまわしても、無造作にメモリ使いまくるコード組んでりゃいつかは
足りなくなってスワップするし、ようはスワップがちょっと遅れて来るぐらいの効果しか期待できない。

とりあえず自分で「ぐらい」と言った「DXライブラリ」作ってみそ。そしたら少しは認めてやるわ。
157
(1): 名前は開発中のものです。 [sage] 2013/01/31(木) 17:50:35.50 ID:NyoQQhH7(4/17) AAS
俺はお前の先生じゃないからな。
初心者に1から10まで教えたりはしない。

あと話がコロコロかわるわ、分散するわ、人の書いたことが理解できないわ、
そんなお前と話をしても漠然と広がるばかりで一向に収束しない。
理由は単純、ID:wVU/jdLoがなりふり構わず言い返したいだけだからだ。
何がしたいの?そんなにくやしかった?
158: 名前は開発中のものです。 [] 2013/01/31(木) 18:37:22.22 ID:wVU/jdLo(4/13) AAS
「DXライブラリなら作ってある!!」と言い返せないんだな。

そして「ロックを使わずにピクセルデータをバックサーフェスに転送できる!!」とも言えないんだな

くやしいのう。くやしいのう。

>俺はお前の先生じゃないからな。
>初心者に1から10まで教えたりはしない。

じゃあひとつだけでいいよ。
ロックを使わずにピクセルデータをCPUからバックサーフェスに転送できる方法
とやらを教えてくれ。

コードを表示してこっちで試して正しく動作したらオマエの勝ちでいい。
できなければオマエの負け。

オレはロック使わないと絶対にできないと思ってる初心者だから、先生よろしくたのむよ

…しかしコイツ本当に一度でもDirectXのコード組んだことあんのかよ?
APIも使ったことないんじゃねーの?

どっちが初心者だよまったく…バカじゃねーの?
159: 名前は開発中のものです。 [sage] 2013/01/31(木) 19:51:45.92 ID:NyoQQhH7(5/17) AAS
何言ってんだこいつ。日本語が不自由な上に統合失調症の傾向がある。
ロックするとか意味不明だし、プログラム向いてないから病院いっとけ。
160: 名前は開発中のものです。 [] 2013/01/31(木) 19:55:05.86 ID:PSRqcy7K(1) AAS
VB使いって・・・
161
(1): 名前は開発中のものです。 [sage] 2013/01/31(木) 20:05:52.91 ID:NyoQQhH7(6/17) AAS
>ライブラリ自体をVBで作ったんだ。
こんな事書いてる辞典でお前がライブラリなんか作れないことは自明のこと。
一個一個ロックしてコールバック呼ぶ間抜けな姿が目に浮かぶわw

DirectXで頂点バッファとかVRAM転送に関するロックと
マネージコード(VB, C#, Java)のGCに関するロックは全く違う話だってのもわからないだろ?
初心者が強がったところでまたひとつ恥をかいてるよ。バカじゃねーの?
162: 名前は開発中のものです。 [sage] 2013/01/31(木) 20:14:38.35 ID:NyoQQhH7(7/17) AAS
>オマエの勝ちでいい。
そうだな。俺の完全勝利ってこと。
普通にロックなんて誰もしないものw

おかしな知ったかぶりでGCを批判するぐらいなら
全部C++で書けばいんじゃないの? 
ロックせずにコールバック呼べるよ〜?w
163: 名前は開発中のものです。 [sage] 2013/01/31(木) 20:24:02.19 ID:NyoQQhH7(8/17) AAS
そう、ID:wVU/jdLoは完全に負けたんだよ。
俺のC#ライブラリを使う限り、誰もGCロックなんてしないし、
SlimDXやMDX、XNAなど普通のライブラリやフレームワークはみ〜んなそう。
ついで抽象度を高めればDirectXのロックもライブラリ層で消せますな。

低脳ライブラリではコールバックの名前が変わっただけで隠蔽性も何もなく、
ロックしてまわるそうです。一体何のためのライブラリなのか謎ですな(苦笑)
164: 名前は開発中のものです。 [] 2013/01/31(木) 20:31:31.28 ID:wVU/jdLo(5/13) AAS
オマエ…DirectX7を知らないのか…絶句…アホ。
165: 名前は開発中のものです。 [sage] 2013/01/31(木) 20:35:28.34 ID:NyoQQhH7(9/17) AAS
ネイティブコードに関する規模の大きいライブラリを作るなら、
dll(C)側とコネクタとなるマネージコード側の両方を書くのは必須。
これ知識というより普通は気付く。

低脳にも理解できたかな? ひとつ勉強になっただろ。
先生にありがとうございましたって、しっかり頭下げとけよw
166: 名前は開発中のものです。 [sage] 2013/01/31(木) 20:38:03.52 ID:NyoQQhH7(10/17) AAS
こっちはDX9のDirect3Dを前提に話をしているが、
DirectDrawでも話の芯は全く同じだ。
167: 名前は開発中のものです。 [] 2013/01/31(木) 20:42:24.50 ID:wVU/jdLo(6/13) AAS
じゃあオフスクリーンサーフェスにピクセル配列を転送するコード
を書いてみろ。
168: 名前は開発中のものです。 [] 2013/01/31(木) 20:45:12.55 ID:wVU/jdLo(7/13) AAS
>>156でも書いたが、取得できるのはポインタだぞ。その後どうするつもりだ?
169: 名前は開発中のものです。 [sage] 2013/01/31(木) 20:57:12.63 ID:NyoQQhH7(11/17) AAS
ハハハ、まだそんなこといってるのか。
DirectXなんて時間かかって面倒くさいだけで、
可能・不可能を論じれば誰でもできる簡単なことだからな。

完全勝利
170: 名前は開発中のものです。 [] 2013/01/31(木) 21:05:54.09 ID:wVU/jdLo(8/13) AAS
アホすぎる…もういいよオマエは。
171
(2): 名前は開発中のものです。 [sage] 2013/01/31(木) 21:35:46.32 ID:NyoQQhH7(12/17) AAS
>オフスクリーンサーフェスにピクセル配列を転送するコード
言い回しが古すぎるね。
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);
172: 名前は開発中のものです。 [sage] 2013/01/31(木) 21:38:38.53 ID:NyoQQhH7(13/17) AAS
ライブラリを作るなら、例えば次のようにラップされ、
ライブラリユーザーは"ロックなど不可視"なはずだ。

virtual void FillTexture(int rgbColor) = 0;
173: 名前は開発中のものです。 [sage] 2013/01/31(木) 21:42:04.76 ID:NyoQQhH7(14/17) AAS
あっちゃ〜、こりゃまた完全勝利してもうたわぁ〜。

低脳にも理解できたかな? ひとつ勉強になっただろ。
先生にありがとうございましたって、しっかり頭下げとけよw
174: 名前は開発中のものです。 [sage] 2013/01/31(木) 21:56:06.17 ID:NyoQQhH7(15/17) AAS
ID:wVU/jdLoが顔真っ赤にして唇を噛み締め、悔し涙を流すのも無理はない。
175
(1): 名前は開発中のものです。 [] 2013/01/31(木) 22:00:58.85 ID:wVU/jdLo(9/13) AAS
ではこちらはデータ転送部分だけだが、オレの書いたコードをあげよう

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
1-
あと 25 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.009s