2013-08-13 2 views
2

При ссылкеAndroid Холст аппаратное ускорение

Hardware accleration

я обнаружил, что холст теперь поддерживает аппаратное ускорение (в основном).

Я скачал источник 4.2.2 AOSP (API Level 17) и проверил код во внешнем/Skia/SRC/ядро ​​/ sKCanvas.cpp

Я достиг sKCanvas.cpp, потому что это наконец-то вызывается через JNI из класса Canvas от Android.

Однако, говорят drawPosText(), эта функция должна быть с помощью аппаратного ускорения (открытый ГЛ)

в коде. Но когда я проверил эту функцию в sKCanvas.cpp, я не вижу никакого кода, связанного с открытым gl.

Я ничего не понял? Это меня пугает.

Спасибо.

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 

}

ответ

4

Вы смотрите на реализацию программного обеспечения. Аппаратная реализация в frameworks/base/libs/hwui и frameworks/base/core/java/android/view/ (см HardwareRenderer.java, HardwareCanvas.java, GLES20Canvas.java и т.д.)

+0

Спасибо. Я заметил, что GLES20Canvas расширяет HardwareCanvas. Вы знаете, к какому файлу, к которому обращается GLEs20Canvas.java в свой собственный слой? – Sam

+0

Я только что сказал вам: frameworks/base/libs/hwui :) –

+0

Спасибо. еще один вопрос, заключается в том, что SkCanvas чисто программная реализация? если это так, то для Android имеет смысл создать GLES20Canvas.java. в противном случае, если SkCanvas также может воспользоваться аппаратным ускорением, то в чем разница между Canvas.java и GLES20Canvas.java? – Sam

Смежные вопросы