나는 이것이 합리적으로 공통적 인 문제라고 가정하고 있으며, 본질적으로 좀 더 학문적 인 해결책이나 이와 같은 일반적인 문제에 사용되는 일반적인 방정식을 요구하고있다. 나는 큰 스파게티 엉망으로 보이는 것을 해킹 한 것으로 보인다. .매트릭스와 생성 된 타일 월드, 어떻게 가장자리를 생성합니까?
타일 월드의 가장자리를 생성하고 싶습니다. 기본 8 가장자리가 있습니다. 내 타일을 나타내는 int 배열이 있습니다. 0은 물, 1은 잔디입니다. 물과 잔디 사이를 전환하는 가장자리를 추가하고 싶습니다. 내 가장자리는 10에서 17 사이입니다.
int edges[3][3] =
{
{10, 11, 12},
{13, 0, 14},
{15, 16, 17}
};
가장 먼저 생각하는 것은이 것이 행렬과 유사하다는 것입니다. 내 그래픽 라이브러리에 3 행 3 열 개체가 있다는 것을 알고 있습니다. 매트릭스를 사용하거나 마스크를 사용하여 타일에 영리하게 가장자리를 적용하는 표준 작업이 있습니까?
가장자리를 병합하는 표준 공식이 있습니까? 예를 들어 오른쪽 하단이 잔디 타일과 겹치면 아마도 값을 변경하지 않을 것입니다. 그러나 오른쪽 하단이 겹치면 왼쪽 타일 하나를 잔디 (0)로 변경하고 싶습니다. 더 많은 개별 시나리오가 있으며 문제는 복잡해집니다.
잔디 타일을 생성 할 때 가장자리를 추가하기 위해 미리보기 기능이 필요하므로 내 타일 배열의 추가 구문으로 가장자리를 생성합니다. 그래서 나는 잔디 패치 가장자리에 가장자리를 추가 할 수있는 솔루션을 찾고 있습니다.
이것은 또한 앤티 앨리어싱을 생각 나게합니다. 해당 필드에 관련 수식이 있는지 궁금합니다.
이상적으로 솔루션이 최적 일 것입니다. 예를 들어, 위와 같은 마스크를 사용하고 배열의 모든 잔디 타일에 추가하여 모서리와면의 고유 한 값을 얻을 수 있으므로 가장자리 이미지로 변환 할 수 있습니다.
이전에 해 보았습니다! 롤, 난 정말 당신의 솔루션을, 덕분에 많이 맘에 들었어, 내가 정수로 비트를 이동에 대한 표준 매트릭스 작업이 있다고 가정? 배열을 사용하고 행렬을 사용하지 않고 행렬에 3x3을 저장하기위한 하드웨어 최적화가 없다고 가정합니다. – user3345413