2012-01-04 3 views
0

내가 작업하고있는 게임에서 if() 문과 같이 SFML2에서 두 개의 스프라이트를 비교하고 싶습니다. 예를 들어, 모든 검은 색 픽셀 중 하나의 회색 픽셀이있는 큰 1280x1024 이미지를 가질 수 있습니다. 그런 다음 두 개의 별도 스프라이트가 있습니다. 하나는 회색 픽셀 혼자이고 다른 하나는지도입니다. 지도에서 회색 픽셀 만 자르고 두 가지를 비교합니다. 사실이라면 다른 것들을 수행합니다.스프라이트 비교?

여기에 내가 무엇을보고 있습니까? 이것이 가능한가? 그렇다면 어떻게?

+2

당신이하는 일과 그 이유를 잘 모르지만 픽셀 대 픽셀 대형 스프라이트를 비교하고 싶지는 않습니다. 충돌 탐지의 목적을 위해서 당신은 똑똑하고 덜 계산적 인 것을 사용해야합니다. 객체 좌표를 비교한다. –

답변

2

알렉스는 스프라이트를 검사하는 똑똑한 방법이 있다고 말합니다. 당신은 단지 하나의 픽셀을 확인하기 위해 당신이 메모리에 1.3MBytes를로드하는 기압을 할 메모리에 전체 이미지를로드하기 때문에

  1. 는 이미지 내에서 하나의 픽셀을 참조하지 않는 아니라 파일 이름을 비교 ?
  2. 리소스에 UID가 있으면 해당 리소스를 사용하는 경우 모든 리소스를 리소스 관리자에 저장하고 UID를 통해 리소스를 참조하십시오.

수 2는 무엇보다도 바람직하지만 다른 많은 방법이

편집이 있습니다 : 의견에 따라, 당신은 않을 것 "작물"픽셀에서, 당신은 단지 메모리 및 사용에 이미지를로드 할 것 이미지 클래스를 사용하여 한 위치에서 픽셀의 색상을 가져옵니다. 다음은 예를

sf::Image* map = MapSprite->GetTexture()->CopyToImage() 
if (map->GetPixel(666,666) == sf::Color::Black) 
{ 
    //Funky stuff here 
} 

참고가 될 것입니다 : 당신은 SFML2 언급 그래서이 문서의 세트에서이다, 1.6

Edit2가 다를 수 있습니다 : 그것은 그래서 희망 SMFL을 잠시 사용했습니다되어 있기 때문에 코드 스 니펫이 적어도 방향을 알려줍니다.

+0

이것은 정말로 도움이되지 않습니다. 1280x1024 치수가 한 가지 예 였으므로지도를 만드는 것이 더 중요합니다. – Lemmons

+0

사용할 파일을 결정하려고합니까? – CStreel

+0

지도 이미지를 읽으면 특정 위치에 개체가 생성됩니까? – CStreel