SurfaceView를 사용하여 게임을 제작중입니다.
대략적인 구조는 Activity에서 SurfaceView를 add하고, 쓰레드를 생성하여 Run()메소드에서 게임루프를 돌립니다.
근데 이미지 한장을 올려놓고 별다른 계산 없이 드로우만 하는데 갤럭시2에서 60프레임 정도 밖에 안나오네요..
이미지 대략 15장 정도 드로우시키고 이런저런 계산 처리 과정 넣고 하니 갤2에서는 40프레임정도, 노트에서는 12프레임 나오네요..ㅡㅡ;;
어느 부분을 최적화 해야 할지 감이 안오네요...
쓰레드의 Run()메소드는
@Override
public void run() {
while (onProgram)
{
runOnUpdate();
runOnRender();
}
Remove();
}
이런식이고.
runOnUpdate()는 이런저런 연산.<-이부분은 아무것도 안한다고 가정합니다.
runOnRender()부분은 드로우 부분입니다.
private void runOnRender() {
try
{
mCanvas = mSurfaceHolder.lockCanvas(null);
synchronized ( mSurfaceHolder )
{
Render();
}
}
finally
{
if ( mCanvas != null )
mSurfaceHolder.unlockCanvasAndPost(mCanvas);
}
}
저게 다입니다. Render()함수에서 실제 비트맵 이미지를 드로우 하구요.
별도의 프레임 제한은 뺀 상태입니다.
흠...난감하네요. 설마 실제 폰의 성능이 떨어지는 걸까요?
다른 게임들은 프레임 잘 나오는지 궁금하네요...