Fedora 10에서 최신 SDL/GFX 라이브러리를 사용하고 있으며 화면 표면에 PNG 또는 GIF 이미지를 렌더링하려고합니다. 투명 PNG를 전혀 표시 할 수 없었습니다. 그래서 투명 부분이나 스프라이트를 모든 흰색으로 바꿨습니다. (마젠타 색 255,0,255를 사용해 보았습니다.) .투명 스프라이트를 그리기 위해 SDL과 함께 GFX rotozoomSurface를 사용하는 적절한 방법은 무엇입니까?
SDL_Surface *image = load_image("sprite-white.png");
SDL_Surface *roto = SDL_DisplayFormat(image);
SDL_SetColorKey(roto, SDL_SRCCOLORKEY, SDL_MapRGB(roto->format, 255,255,255));
SDL_BlitSurface(roto, NULL, surface, &offset);
을하지만 스프라이트를 회전 할 때 그것은 모두 흰색 픽셀을 드롭하지 않습니다 흰색 투명 PNG 벌금이 코드를 사용하여 표시됩니다. 나는이와 위의 코드가 회전 교체 :
SDL_Surface *image = load_image("sprite-white.png");
SDL_Surface *roto = rotozoomSurface(image, rotation_degrees, 1, 1);
SDL_Surface *roto2 = SDL_DisplayFormat(roto);
SDL_SetColorKey(roto2, SDL_SRCCOLORKEY, SDL_MapRGB(roto2->format, 255,255,255));
SDL_BlitSurface(roto2, NULL, surface, &offset);
내가 좋은 픽셀의 일부 주위에 흰색 테두리와 끝까지. GIF 이미지는 동일한 결과를 제공합니다.
투명 PNG/GIF 파일을 사용하면 SDL_SetColorKey를 호출하지 않은 것을 제외하면 코드는 동일합니다. 그런 다음 PNG가 제대로 표시되지 않았습니다. 내가 발견 한 한 가지 이상한 점은 MS Paint에서 투명 PNG가 SDL에서와 같이 보였지만 김프/Photoshop 프로그램이 올바르게 열었습니다.
대상 표면을 설정하지 않은 것이 있습니까?
Google은별로 성과를 내지 못했지만, 좋은 예가 될 것입니다.
위의 코드는 동일한 결과를 얻었으므로 다른 png도 찾았고 원래 코드와 함께 잘 작동했습니다. 테스트를 위해 사용했던 PNG는 다소 나빴습니다. 감사! – amanda