Series 60 Developer Platform 2.0 (Symbian OS 7.0) поддерживает не зависящее от устройства API, реализующий поддержку аппаратного ускорения 2D графики. Поддержка акселерации графики встроена в существующий Graphics API, таким образом, само приложение не знает о том, что использует ускорение.

API аппаратного ускорения представляет собой набор операций, которые выполняются либо аппаратными средствами (например, отдельным графическим процессором), либо программным способом (оптимизированные алгоритмы для работы с графикой). Приложение не знает, поддерживается ли устройством аппаратное ускорение или используется его программная реализация. Для программы это не имеет значения.

В дополнение к Графическому API, API аппаратного ускорения 2D графики реализует следующие функциональные возможности и концепции:

  • Аппаратные изображения (RHardwareBitmap). CFbsBitmap дополнен методами CreateHardwareBitmap и HardwareBitmapHandle. RHardwareBitmap реализует интерфейс для создания аппаратных изображений вашей среды.
  • Маски, прозрачность, альфа смешение и bit blit (TGopBitBltMasked, TGopBitBltTransparent, TGopBitBltAlphaBitmap, TGopBitBltAlphaChannel, TgopBitBlt.)
  • Масштабируемость (TGopScaledBitBltAlphaBitmap, TGopScaledBitBltAlphaChannel, TGopScaledBitBlt, TGopScaledBitBltMasked, TgopScaledBitBltTransparent.)
  • Эффект постепенного изменения для заданной области (TGopFadeRect, TgopFadeParams.)
  • Заполнение полигонов одним цветом или образцом. (TGopFilledPolygon, TgopFilledPolygonWithPattern.)
  • Заполнение прямоугольников одним цветом, образцом или с использованием поразрядных операций. (TGopFilledRect, TGopFilledRectWithPattern, TgopFilledRectUsingDrawMode.)

Вышеописанные операции реализуются с помощью двух классов, являющихся потомками абстрактного класса CGraphicsAccelerator.

  • CHardwareGraphicsAccelerator: Позволяет работать с RHarwareBitmap. В зависимости от устройства используются или аппаратные, или программные реализации, или смешанный вариант.
  • CSoftwareGraphicsAccelerator: Обеспечивает выполнение описанных операций неаппаратным средствам CFbsBitmap.

Каждая TGop* операция выполняется методами CGraphicsAccelerator::Operation. Вы можете выполнить либо одну операцию, либо последовательность операций, составив из список, для реализации предопределенного эффекта.

Замечание. Некоторые операции могут оказаться недоступными или доступными с ограничениями. Перед тем как их использовать, необходимо выполнить с помощью CGraphicsAccelerator::Capabilities проверку.

Ниже приведен пример операции bit blit.

void CMyGameView::MyHwBlitL(CFbsBitmap* iMySourceBitmap)
{
CFbsBitmap* iMyBitmap=new(ELeave) CFbsBitmap();
CleanupStack::PushL(iMyBitmap);
iMyBitmap->CreateHardwareBitmap(Rect().Size(), EColor64K, KUidMyGameApp);
// Используется 16-битная палитра
// Создаем с помощью fbsbitmap аппаратное изображение
RHardwareBitmap iMyHwBitmap(iMyBitmap->HardwareBitmapHandle());
// Создаем ускоритель для аппаратного изобрпжения
CHardwareGraphicsAccelerator* iMyHwAccel=
CHardwareGraphicsAccelerator::NewL(iMyHwBitmap);
// Создаем bit blit операцию.
TGopBitBlt myBlitOperation(TPoint(0,0),// Адресат
TAcceleratedBitmapSpec(iMySourceBitmap),// Источник
// Область с источником
TRect(0,0,40,40));
// Выполняем операцию;
// Область iMySourceBitmap копируется в iMyBitmap
iMyHwAccel->Operation(myBlitOperation);
CleanupStack::PopAndDestroy();
}

Перевод:aRix




Наши соцсети

Подписаться Facebook Подписаться Вконтакте Подписаться Twitter Подписаться Google Подписаться Telegram

Популярное

Ссылки

Новости [1] [2] [3]... Android/ iOS/ J2ME[1] [2] [3]) Android / Архив

Рейтинг@Mail.ru Яндекс.Метрика
MobiLab.ru © 2005-2018
При использовании материалов сайта ссылка на www.mobilab.ru обязательна