2014-11-12 5 views
0

안드로이드 장치의 화면에 표시되는 내용에 이미지 필터를 적용하고 싶습니다. 이미지 필터의 가장 간단한 예는 화면에 표시되기 바로 전에 프레임 버퍼에 적용된 세피아 필터 일 수 있습니다. 그리고 확실하게하기 위해, 나는이 효과 시스템을 내 응용 프로그램뿐만 아니라 넓게 원합니다.표시되기 바로 전에 프레임 버퍼에 필터를 적용하십시오.

답변

0

효과를 시스템 전체에서 적용하려면 필터를 적용하기 위해 SurfaceFlinger를 수정해야합니다.

Android 5.0 "Lollipop"에서 색맹 인 사람의 대비를 향상시키기 위해 출력을 수정하는 코드의 프로토 타입 구현을 볼 수 있습니다. Daltonizer 코드와 doDisplayComposition()에 연결되는 코드는 SurfaceFlinger.cpp입니다. 표면 구성 중에 효과가 적용되므로 결과적으로 Hardware Composer가 비활성화됩니다.

앱에서 시스템 전체를 수행 할 방법이 없습니다. 만약 그렇다면 시스템에 모든 종류의 혼란을 야기 할 수 있습니다.

+0

android 5.0에서는 RenderEngine을 사용하여 색상 행렬을 사용하여 색상 효과를 렌더링합니다. 나는 실제로 안드로이드 4.3에서 일하고있다 ... 나는 onFrameAvailable()과 몇 가지 다른 함수 내에서 버퍼를 수정하는 것과 같은 몇 가지 시도를 해봤지만 아무 것도 작동하지 않는 것처럼 보였다. 내가하고 싶은 것을 생각하면 올바른 방향으로 나를 가리킬 수 있는가? 안드로이드 4.3 – thunderbird

+0

당신은 아마도 GLES2 지원을 백 포트해야 할 것입니다. 'RenderEngine'은 GLES1과 GLES2가 작동하도록 허용되었지만 GLES1은 비 GPU 가속 에뮬레이터에만 사용되었습니다. GLES2 업데이트의 동기 중 하나는 원하는 효과를 낼 수있는 것이 었습니다. 대안은 GLES1에서 원하는 효과를내는 방법을 찾는 것입니다. – fadden

+0

OpenGL이나 GLES에 대해 전혀 모르겠다. 분명히 들여다 보겠다 ... 내가 관심이 있었던 것은 이전 지식이 없기 때문에 어떤 종류의 필터를 직접 적용 할 수있는 unsinged char 버퍼의 일종이었다. OpenGL 또는 GLES – thunderbird

관련 문제