2012-07-03 2 views
0

복사/클립 블릿 (표면의 작은 부분을 스프라이트 시트로 블 리팅하는 spritesheets)의 알파 채널을 보존하는 문제가 발생했습니다. 나는 다양한 솔루션을 시도했지만 최종 결과는 투명성이 있어야만하는 모든 표면이 완전히 불투명 해지는 것입니다 (알파 마스크는 흰색이됩니다).알파 채널을 사용하여 SDL_Surfaces 복사하기

그럼 내 질문은 알파 채널을 포함하여 RGBA SDL_Surface를 다른 새로운 표면 (RGBA)으로 어떻게 복사하나요? 그리고 다른 점이 있다면 RGBA 표면의 한 섹션을 새로운 RGBA 표면 (원본 표면의 잘린 부분과 동일한 크기)으로 복사하는 방법, 타일 시트 블라이 팅 (ala tilesheet blitting)입니다.

SDL_BlitSurface가 알파 채널을 블렌딩 한 것처럼 보입니다. 예를 들어 타일 시트를 새 표면으로 복사하고 싶을 때 (물론 비어 있습니다. SDL이 검정색 또는 기본적으로 흰색), 알파 마스크를 잃어 버리므로 타일이 마침내 화면에 blitted되면 화면에 무엇이든지 블렌드되지 않습니다.

SDL_DisplayFormatAlpha는 알파 마스크가있는 서페이스를 복사하는 데 적합하지만 클립 매개 변수를 사용하지 않으며 일부만 복사하지 않고 전체 표면을 복사하기 때문에 문제가됩니다.

답변

0

이전에이 문제가 있었으며 아직 공식 답변을 얻지 못했습니다. 그러나 나는 그것을 할 수있는 유일한 방법은 자신의 복사 기능을 작성하는 것입니다 생각합니다. http://www.libsdl.org/docs/html/sdlpixelformat.html 이 페이지는 SDL_Surface가 색상 정보를 저장하는 방법을 이해하는 데 도움이됩니다. 8 비트 위아래 색상에는 큰 차이가 있습니다.

관련 문제