2013-08-13 3 views
2

나는 캔버스는 이제 하드웨어 가속을 (주로)를 지원하는 것을 발견안드로이드 캔버스 하드웨어 가속

Hardware accleration

링크시.

나는 4.2.2 AOSP (API 레벨 17) 소스를 다운로드하고이 마침내 JNI를 통해 호출되는 것이기 때문에 외부/라이브러리에 의존/SRC/코어의 코드/sKCanvas.cpp

내가 sKCanvas.cpp에 도달 체크 Android Canvas 클래스에서 가져 왔습니다. 그러나

는 drawPosText()가이 기능을 하드웨어 가속 (오픈 GL) 코드에

를 사용한다 말한다. 그러나 sKCanvas.cpp에서이 함수를 검사했을 때 gl을 여는 것과 관련된 코드는 표시되지 않습니다.

나는 오해 했습니까? 이것은 나를 혼란스럽게합니다.

감사합니다. 당신은 소프트웨어 구현을 찾고 있습니다

답변

4

void SkCanvas::drawPosText(const void* text, size_t byteLength, 
         const SkPoint pos[], const SkPaint& paint) { 
LOOPER_BEGIN(paint, SkDrawFilter::kText_Type) 

while (iter.next()) { 
    SkDeviceFilteredPaint dfp(iter.fDevice, looper.paint()); 
    iter.fDevice->drawPosText(iter, text, byteLength, &pos->fX, 0, 2, 
           dfp.paint()); 
} 

LOOPER_END 

}. frameworks/base/libs/hwuiframeworks/base/core/java/android/view/

+0

감사 (HardwareRenderer.java, HardwareCanvas.java, GLES20Canvas.java 등 참조) 하드웨어 구현이다. GLES20Canvas가 HardwareCanvas를 확장한다는 것을 알았습니다. 네이티브 레이어에서 GLEs20Canvas.java가 액세스하는 파일을 아십니까? – Sam

+0

방금 ​​전 했어요 : frameworks/base/libs/hwui :) –

+0

고마워요. 한 가지 더 궁금한 점은, SkCanvas는 순수한 소프트웨어 구현입니까? 그렇다면 Android가 GLES20Canvas.java를 만드는 것이 합리적입니다. 그렇지 않으면 SkCanvas가 하드웨어 가속을 이용할 수 있다면 Canvas.java와 GLES20Canvas.java의 차이점은 무엇입니까? – Sam

관련 문제