次のコードを使用してイメージを作成できます。
int width,height;
static VGImage engine_light_img = VG_INVALID_HANDLE;
// image
const unsigned char engine_light_bitmap_100_100[40000] =
{...};
width = 300;
height = 150;
engine_light_img = vgCreateImage(VG_sBGRA_8888,800,480, VG_IMAGE_QUALITY_BETTER);
vgImageSubData(engine_light_img, (const void *)(engine_light_bitmap_100_100+ (width * (height - 1)) * 4),width * -4,VG_sBGRA_8888, 0,40,width,height);
vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE);
vgDrawImage(engine_light_img);
vgFinish();
この関数 vgImageSubData を使用して、画像engine_light_bitmap_100_100[40000]のデータをロードしています。データはすでに定数であり、フラッシュ内のメモリを占有しています。
関数vgCreateImageを呼び出すたびに、800x400x4 バイトの RAM メモリがブロックされますか?