포인트가 내부에 있는지 확인해야합니다. 우리의 모양이 원이라면 쉽게 할 수 있습니다 :포인트가 내부에 있는지 확인하는 방법은 무엇입니까?
highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio));
highp float dist = distance(center, textureCoordinateToUse);
textureCoordinateToUse = textureCoordinate;
if (dist < radius) {
...
}
그러나 모양이 별, 육각형, 나선형 등일 경우 어떻게 될까요? 누군가 그것을 빨리 할 수있는 방법을 알고 있습니까? 알파 채널이있는 이미지를 도형으로 사용할 수 있습니까? 그것을하는 방법?
업데이트 : 지금 가장 좋은 옵션은 셰이더에 다른 텍스처를 전달하는 것입니다. 내가 어떻게 해? 이제 셰이더는 varying highp vec2 textureCoordinate;
및 uniform sampler2D inputImageTexture;
의 두 가지 속성을가집니다. 그리고 셰이더 코드 내에서 알파 채널을 검사하기 위해 다른 텍스처를 전달하려고합니다.
업데이트 2 : 셰이더에 셰이프를로드하려고했습니다 (그렇게 생각합니다). 저는 GPUImage 프레임 워크를 사용하고 있습니다. 그래서 제 모양으로 sampler2D를 유니폼으로 설정하고 알파 채널을 확인하려고했습니다. 괜찮습니까? 내 iPhone 5의 경우 외관이 좋지만 성능은 어떻습니까?
알고리즘 또는 기존 라이브러리에 대한 질문입니까? –
@EliAlgranti 해결책에 대한 질문입니다. 나는 OpenGL에 대한 경험이 없지만 이것에 대한 튜토리얼을 찾을 수는 없다. 기존의 라이브러리는 없지만 알파 채널이있는 .png를 매트릭스로 변환 한 다음 특수 픽셀의 알파를 확인하는 방법이 있기를 바랍니다. –
질문에있는 태그를 발견하여 좋은 답변을 드릴 수 없습니다.당신이 설명하는 문제는 다각형 (PIP) 문제로 알려져 있습니다. 이 이름을 사용하여 솔루션을 찾아보십시오. Wikipedia는이 문제를 해결하기위한 일반적인 알고리즘에 대한 자세한 정보와 설명을 제공합니다. (http://en.wikipedia.org/wiki/Point_in_polygon) –