Я работаю над библиотекой openvg.На самом деле я работал для запуска этого кода с Code Blocks (на малине): https://github.com/raspberrypi/firmware/blob/master/opt/vc/src/hello_pi/hello_font/main.c
Я добился цвета рендеринга и увидел псевдонимы.Но я хочу написать текст на экране с использованием того же метода.Я проанализировал эту библиотеку: https://github.com/raspberrypi/firmware/blob/master/opt/vc/src/hello_pi/libs/vgfont/vgfont.h и попытался использовать функцию graphics_resource_render_text_ext()
, но я взял это сообщение в новом окне терминала:
Ошибка подтверждения: font.c: 176: gx_priv_render_text (): inited прервано
Мой сборочный компилятор это сообщение:
Путь Font.c: https://github.com/adafruit/rpi-firmware/blob/master/vc/sdk/opt/vc/src/hello_pi/libs/vgfont/font.c.
Я пошел 176. строка в font.c и попытался вызвать gx_font_init()
(окно терминала отмечает эту строку.), Но я не мог найти эту функцию нигде (я пытался найти в малины).Если я отменяю команду graphics_resource_render_text_ext()
, мой код работает хорошо.Почему я не могу использовать эту функцию?Мой код такой:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include "bcm_host.h"
#include "vgfont.h"
#include "openvg.h"
#include "egl.h"
#include "vgu.h"
#include "fontinfo.h"
#include "shapes.h"
#include "eglplatform.h"
#include "graphics_x_private.h"
int main()
{
GRAPHICS_RESOURCE_HANDLE img;
uint32_t width, height;
int LAYER = 1;
bcm_host_init();
int s;
s = gx_graphics_init(".");
assert(s == 0);
s = graphics_get_display_size(0, &width, &height);
assert(s == 0);
s = gx_create_window(0, width, height, GRAPHICS_RESOURCE_RGBA32, &img);
assert(s == 0);
graphics_resource_fill(img, 0, 0, width, height, GRAPHICS_RGBA32(0, 0, 0, 0x00));
graphics_display_resource(img, 0, LAYER, 0, 0, GRAPHICS_RESOURCE_WIDTH, GRAPHICS_RESOURCE_HEIGHT, VC_DISPMAN_ROT0, 1 );
while(1)
{
graphics_resource_fill(img, 0, 0,width, height, GRAPHICS_RGBA32(0,0,0,0x55));
graphics_resource_fill(img, 600, 500, 100, 50, GRAPHICS_RGBA32(0,0,0xff,0xaa));
graphics_resource_fill(img, 600, 400, 200, 50, GRAPHICS_RGBA32(0,0xff,0,0xaa));
graphics_resource_render_text_ext( img, 100, 100, 200, 200, GRAPHICS_RGBA32(0xff,0,0,0xdd), GRAPHICS_RGBA32(0, 0xff,0, 0xdd), "hello", strlen("hello"), 20); // This line has problem.
graphics_update_displayed_resource(img, 0,0,0,0);
}
graphics_display_resource(img, 0, LAYER, 0, 0, GRAPHICS_RESOURCE_WIDTH, GRAPHICS_RESOURCE_HEIGHT, VC_DISPMAN_ROT0, 0);
graphics_delete_resource(img);
printf("Hello world!\n");
return 0;
}
ПРИМЕЧАНИЕ: не изменил сообщение сборки компилятора, когда я отменил graphics_resource_render_text_ext()
, но код работал хорошо.