Android 용 OpenGL ES 2.0의 삼각형에 이미지를 표시하기위한 간단한 이미지 뷰어를 작성했습니다. 이러한 이미지에는 특정 색상이 있으며, 이는 어떤면에서는 검은 색으로 대체되어야합니다. 문제는 GL_LINEAR이 최소 및 최대화 필터에 사용되는 경우 교체해야하는 색상의 윤곽이 계속 표시된다는 것입니다. 내 필터에 GL_NEAREST를 사용하면 쉐이더가 너무 어려움없이 색상을 대체 할 수 있지만 이미지를 부드럽게 렌더링하지 않으며 확대/축소시 픽셀 화 된 모양을 유지합니다.쉐이더 코드 내에서 텍스처의 색상을 대체하려면 어떻게해야합니까?
이 유형의 작업을 수행하는 더 좋은 방법이 있는지 궁금합니다. 내가 가지고있는 아이디어는 다음과 같습니다.
- 조각 픽셀에서 한 번만 실행되는 셰이더를 만들고 조각 쉐이더에서 실제로 텍스처를 사용하기 전에 색을 바꿉니 까?
- 내 쉐이더를 다시 작성하여 GL_LINEAR이 사용되는 경우에도 작동하도록하십시오.
아무에게도 이것이 일반적으로 어떻게 수행되는지에 대한 단서를 줄 수 있습니까? 차라리이 작업을 쉐이더에서 수행해야하는 이유는 마스크 픽셀 색상이 항상 검은 색으로 유지되도록하는 것입니다.
저는 OpenGL ES 2.0을 처음 접했지만 어떻게 작동하는지 배우려고합니다. 그 점을 명심하고 배우도록 도와주세요. 미리 감사드립니다.
현재 알파 채널을 사용하고 있으며 원본 이미지를 옵션으로 편집하고 있습니까? 컬러 키잉보다 알파 채널을 사용하여이 작업을 수행하는 것이 더 적절할 수 있습니다. 그렇지 않으면 나는 더 좋은 방법을 생각할 수 없다. 나는 한계를 꽤 잘 설명했다고 생각한다. – Tim
Dalvik에서는 원본 이미지를 편집하는 데 시간이 많이 걸리며 오버 헤드가 발생하지는 않습니다. 현재 코드는 알파 채널에 아무 것도하지 않지만 우리가 표시하는 이미지는 실제로 16 비트 그레이 스케일입니다.이 비트는 RGB_565로 코딩하고 쉐이더에서 비트를 디코딩합니다. 좀 못생긴지만 일하는 것 같습니다. 최상의 결과는 이미지를 서버에서 사전 처리하고 클라이언트에서 색상 키잉을 전혀 시도하지 않는 것입니다. 우리는이 솔루션을 사용해야 할 수도 있습니다. – Thorinside
마스크 픽셀이 이미지에서 움직이지 않는다고 추가 할 수도 있습니다. 그들은 모두 같은 장소에 있습니다. 나는 또한 알파 텍스처를 만들려고 시도하고 그것을 사용하여 출력 픽셀의 알파를 설정한다고 생각하십니까? 아니면이 경우 윤곽선 문제를 볼 수 있습니까? – Thorinside