DirectDrawで質問
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNGこちらからサーフェスメモリを示すポインタを指定する
方法はないでしょうか。
自分で作成した配列にサーフェスを組み込みたいのです。
御教授よろしくお願いします。
0002名無しさん@お腹いっぱい。
NGNG00031
NGNGそ、そんなあっさり言わないでも。
以前はDDSD_LPSURFACEフラグを立てて指定できたみたいだし。
0004>1
NGNG0005名無しさん@お腹いっぱい。
NGNGちなみに、どんな得があるの?
00061
NGNG指定されたアドレスがありそこで
サーフェスを作らなければならないという前提があるからなのですが。
メリットといえば、BltFastを使った画像転送が早いということでしょうか。
memcpyでは話にならないくらい遅いので。
0007ヽ(?´ー`?)ノ
NGNGSystemMemoryにバッファとられたら、memcpyライクに処理するしかない気がするっス。
DMAサポートしてても、処理速度自体が上がるわけじゃないし。
想像するに、その「指定されたアドレス」とやらにグラフィックチップから
のアクセスがなんらかの方法で最適化されてるっていう環境なのかな。
でもそれってフレームバッファとどう違うんだろう
00081
NGNGなんか難しそうですが。
前提条件として、ある配列に画像データが収められていて、
それをDirectDrawで表示させたいのですが、memcpyでサーフェスに放り込むと
パフォーマンスが悪くなるため、その配列をサーフェスに組み込みたいわけです。
その配列のアドレスは別プログラムが指定するため
サーフェス作成時にアドレス指定したいのです。
どうも後からポインタの変更はできないみたいですし。
0009名無しさん@お腹いっぱい。
NGNG何でパフォーマンスが悪くなるの?
プログラムスタート時に一回この処理を行うだけでしょ?
あとは普通にサーフェイスを使うわけだし。
00101
NGNGそれが、元の画像データはカメラ映像の如く逐次更新されてしまうのですよ。
更新するたびにmemcpyしてたらBLTに比べたら遅くて遅くて。
0011名無しさん@お腹いっぱい。
NGNGREP MOVSD使いましょ。
00121
NGNGアセンブラですか、やったことないですが
試してみます。
0013名無しさん@お腹いっぱい。
NGNG0014名無しさん@お腹いっぱい。
NGNGそれができれば、アセンブラなど使わなくていいぞ。
00151
NGNG返事遅れてすみません、
DDSD_LPSURFACEフラグを立てて見たのですが
どうもアドレス指定ができません。DD_OKは返すのですが。
NT4.0上でプログラムしてるのですが、
DDSURFACEDESC2 構造体はNT5.0以降対応ということでショックを受けました。
0016名無しさん@お腹いっぱい。
NGNG0017名無しさん@お腹いっぱい。
NGNG無茶苦茶なことをいう厨房が・・・
確かめもせず何故そういう嘘八百を・・・
リリースモードでコンパイル結果を確かめてください
自分がいかに馬鹿なことを逝ったのか分かるでしょう
コンパイラの最適化を馬鹿にしてはいけません
VCの場合は条件さえ整えばfor文でさえrepに置き換えます
001811
NGNG見てみたら本当だ。デバッグモードでも十分激しいことやってるね。
嘘言ってスマソ。
0019名無しさん@お腹いっぱい。
NGNG486以降ってrepの方が遅かったりしなかったっけ?
よく覚えてないんで、すまむ
0020名無しさん@お腹いっぱい。
NGNGFPU Resister 使ったり(pentium)、
MMX Resister 使ったり(pentium mmx)、
SSE 使ったり(pentium2)、したほうが
速かったりしますが、そんな対してかわらんので
安定して速度のでる rep movsd でしょう。
0021名無しさん@お腹いっぱい。
NGNGアンロールはキャッシュミスりそう。
FPU MMX SSE はタスクまたはスレッド並列時に致命的。
あってる?間違ってたら訂正きぼーん。
■ このスレッドは過去ログ倉庫に格納されています