이문장이 있거든여..
근데 이문장은 1초에 70번정도 호출 됩니다..
근데 for~Loop을 돌리니깐 여간 느린게 아닙니다...
게임이서 화면상의 특정 위치에 칼라 인덱스을 읽어 그걸 미리 정의된
칼라인덱스(ATable)에 맞게 수정 하는 겁니다..
근데 이문장땜에 프레임이 20정도가 낮아 집니다.
달리 방도가 없을 까여?
type
PAByte = array of Byte;
var
ATable : array [0..255, 0..255] of byte;
procedure aa;
begin
for y := YPos to (YPos + ImgWidth) - 1 do
begin
for x := XPos to (XPos + ImgWidth) - 1 do
begin
PAByte(Source)[y * ddsd.lPitch + x] :=
ATable[PAByte(Source)[y * ddsd.lPitch + x],
PAByte(Target)[(y - YPos) * ddsd1.lPitch +
((x - XPos) + (ImgWidth * index))]];
end;
end;
end;
1초에 70번 정도면 아래와 가치 최적화 하면 될거 가튼데여...
type
PAByte = array of Byte;
var
ATable : array [0..255, 0..255] of byte;
procedure aa;
var
mX, mY : Byte;
begin
mX := XPos + ImgWidth - 1;
mY := YPos + ImgWidth - 1;
for y := YPos to mY do
begin
for x := XPos to mX do
begin
PAByte(Source)[y * ddsd.lPitch + x] :=
ATable[PAByte(Source)[y * ddsd.lPitch + x],
PAByte(Target)[(y - YPos) * ddsd1.lPitch +
((x - XPos) + (ImgWidth * index))]];
end;
end;
end;
해놓은거 보면 쉽져? ^^
"최적화" 라는 내용만 다룬 책들이 많이 있어여...
꼭 필요하면, 함 사보세여..^^
타락천사...