diff --git a/Fltk/drawContextFltkCairo.cpp b/Fltk/drawContextFltkCairo.cpp index 3b7ac09ae12580da69426959724ab763651c329f..031d49455be035c3e30e716af7501dbed833e3a4 100644 --- a/Fltk/drawContextFltkCairo.cpp +++ b/Fltk/drawContextFltkCairo.cpp @@ -37,6 +37,7 @@ static void _data2gl (int width, int height, unsigned char *data, glDisable (GL_DEPTH_TEST); glEnable (GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture (GL_TEXTURE_RECTANGLE_ARB, _textureId); glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_ALPHA, width, height, 0, GL_ALPHA, GL_UNSIGNED_BYTE, data); @@ -111,6 +112,9 @@ void drawContextFltkCairo::drawString(const char *str) cairo_move_to(cr, 1-extent.x_bearing, 1-extent.y_bearing); cairo_set_source_rgba(cr, 1, 1, 1, 1); cairo_show_text(cr, str); + + if(!_textureId) glGenTextures (1, &_textureId); + _data2gl(cairo_image_surface_get_width(surface), cairo_image_surface_get_height(surface), cairo_image_surface_get_data(surface), @@ -147,7 +151,7 @@ drawContextFltkCairo::drawContextFltkCairo() { _surface = cairo_image_surface_create(CAIRO_FORMAT_A8, 100, 100); _cr = cairo_create(_surface); - glGenTextures (1, &_textureId); + _textureId = 0; _currentFontId = -1; }