Аппаратное ускорение 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, так далее.)

Другие вопросы по тегам