[WIN API] 2일차. 아이소 매트릭 문제 발생

|

[문제발생 : 15/03/10 16:35]

랜더링 되는 부분을 다음과 같이 별도의 함수화 하였다.

 

void cISO::DrawRecISO()

{

for (int cal = 0; cal < maxcal; cal++)
 {
  for (int row = 0; row < maxrow; row++)
  {
   MoveToEx(getMemDC(), tile[cal][row].rec.left , tile[cal][row].pivot.y, NULL);
   LineTo(getMemDC(),  tile[cal][row].pivot.x , tile[cal][row].rec.top);
   LineTo(getMemDC(),  tile[cal][row].rec.right, tile[cal][row].pivot.y);
   LineTo(getMemDC(),  tile[cal][row].pivot.x , tile[cal][row].rec.bottom);
   LineTo(getMemDC(),  tile[cal][row].rec.left , tile[cal][row].pivot.y);
  }
}

}

별다른 문제가 없어 보이는데, 렉이 엄청나게 생겼다.

 

 

아무래도 for문에 대한 부담으로 인한 렉인 듯 싶어, 다음과 같이 변경하였다.

 

void cISO::DrawRecISO(sTile* tile)
{
 MoveToEx(getMemDC(), tile->rec.left , tile->pivot.y, NULL);
 LineTo(getMemDC(),  tile->pivot.x , tile->rec.top);
 LineTo(getMemDC(),  tile->rec.right, tile->pivot.y);
 LineTo(getMemDC(),  tile->pivot.x , tile->rec.bottom);
 LineTo(getMemDC(),  tile->rec.left , tile->pivot.y);
}

아예 호출시 해당 타일의 주소를 직접 보내는 방식으로 2중 for문을 줄임으로써, 발생되는 렉을 해결하였다.

(자다 생각났음)

And