Аппаратное ускорение Android Canvas
По ссылке
Я обнаружил, что Canvas теперь поддерживает аппаратное ускорение (в основном).
Я скачал исходный код 4.2.2 AOSP(API Level 17) и проверил код в external/skia/src/core/sKCanvas.cpp
Я дошел до sKCanvas.cpp, потому что он, наконец, будет вызываться через jni из класса Android Canvas.
Однако, скажем, drawPosText(), эта функция должна использовать аппаратное ускорение (open gl)
в коде. Но когда я проверил эту функцию в sKCanvas.cpp, я не увидел никакого кода, связанного с open 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
}
1 ответ
Вы смотрите на реализацию программного обеспечения. Аппаратная реализация находится в frameworks/base/libs/hwui
а также frameworks/base/core/java/android/view/
(увидеть HardwareRenderer.java
, HardwareCanvas.java
, GLES20Canvas.java
, так далее.)