2013-08-31 2 views
1

투명 픽셀이없는 배경과 투명한 픽셀이있는 일부 스프라이트가 있습니다. 다음 libGDX 워드 프로세서, 나는 이런 식으로 뭔가를하고 있어요 :libGDX enableBlending을 변경할 때마다 시작/종료가 필요합니까?

spriteBatch.begin(); 
spriteBatch.disableBlending(); 
spriteBatch.draw(background, ...); 
spriteBatch.enableBlending(); 
spriteBatch.draw(sprite, ...); 
spriteBatch.end(); 

그러나, 나는 당신이 때마다 종료/시작 사용할 필요는 제안이 블로그 게시물을 읽어 보시기 바랍니다.

http://www.rengelbert.com/tutorial.php?id=179&show_all=true

spriteBatch.disableBlending(); 
spriteBatch.begin(); 
spriteBatch.draw(backgroundRegion, 0, 0, 320, 480); 
spriteBatch.end(); 

spriteBatch.enableBlending(); 
spriteBatch.begin(); 
spriteBatch.draw(someTextureRegion1, 10, 30); 
spriteBatch.draw(someTextureRegion2, 50, 20); 
spriteBatch.draw(someTextureRegion3, 30, 90); 
spriteBatch.end(); 

이 정말 필요합니까?

내 코드가 작동하는 것 같습니다. 오류는보고되지 않지만 두 번째 예제보다 좋게 작동하는지 테스트하는 방법을 모르겠습니다.

답변

3

블렌딩을 활성화/비활성화하면 일괄 처리가 플러시됩니다 (이는 end/begin을 호출하는 것과 실질적으로 동일합니다). 어쨌든 이런 일이 발생했음을인지하고 있어야 할지라도 스스로 직접해야 할 필요는 없습니다. 따라서 end/begin을 호출 할 필요는 없지만 혼합을 최소한으로 유지해야합니다.

+0

감사합니다. 블렌딩이 활성화 된 상태에서 단일 800x480 텍스처를 렌더링하는 것의 차이보다 플러싱이 더 비쌉니까? –

+2

플러싱은 블렌딩과 관련이 없습니다. 블렌딩 (또는 텍스처)을 변경하면 플러시가 발생하여 배치 (그 시점까지)가 렌더링됩니다. 따라서 플러시는 값 비싼 연산으로 간주되지만 단일 텍스처 렌더링은 상대적으로 (단지 4 개의 정점 만) 더 비쌉니다. – Xoppa

관련 문제