2012-05-18 3 views
6

내가성능을 유지하면서 FloatBuffer의 내용을 변경하는 방법은 무엇입니까?

floatbuffer.put(float[]); 

를 사용하여 시도했다하지만 난 200 개 이상의 사각형, 각 프레임을 업데이트 개의 다른 텍스처 좌표를 모두 처리하고 같이 내 FPS가 크게 드롭, 게임은 너무 멀리 유체로된다.

y는 badlogicgames.com에서 언급 한 방법 중 floatbuffer를 사용하는 대신 intbuffer를 사용하지만, 버퍼의 "put"메소드의 순간에는 느린 것과 같습니다.

그렇다면 모든 플로트 버퍼를 어떻게 최상의 성능으로 업데이트 할 수 있습니까?

EDIT : "put"메소드 자체가 느리지는 않지만 문제는 새로운 float가 각 floatbuffer에 대해 초기화 될 때 문제가되는 대신에 그 안에 포함 된 각 요소의 값을 변경합니다. floatarray와 그 많은 GC 활동을 피합니다. 음, 나는 생각합니다.

답변

1

성능을 향상시키는 데는 여러 가지 방법이 있습니다. 간단히, 여기에 몇 가지 :

1) floatbuffer를 초기화하고,이 변환 각 각 프레임에 적용를 - 당신의 사각형이 화면을 가로 질러 이동하는 경우 floatbuffer에서 한 번에 배치하고 별도의 매트릭스를 적용 각자에게 변형. 이 방법에서는 floatbuffer를 한 번 채우고 각 턴마다 변형을 업데이트하면됩니다.

2) 플로트 버퍼에 고유 한 모양 만 넣으십시오. - 사각형이 서로 중복되는 경우 각 프레임마다 동일한 버퍼를 호출하여 메모리를 절약하십시오.

3) 꼭지점 버퍼 개체 및 인덱스 버퍼 개체 사용 -이 작업을 수행 한 것처럼 보이지만 데이터를 꼭지점 버퍼에 저장하고 배열의 인덱스를 사용하여 꼭지점을 호출하십시오.

아직 문제가있는 경우이 자습서를 참조하십시오. http://www.learnopengles.com/android-lesson-one-getting-started/

관련 문제