void GLPainter::draw_surface(const DrawingRequest& request) { const Surface* surface = static_cast<const SurfaceRequest*>(request.request_data)->surface; if(surface == NULL) { return; } GLTexture* gltexture = static_cast<GLTexture*>(surface->get_texture().get()); if(gltexture == NULL) { return; } GLSurfaceData *surface_data = static_cast<GLSurfaceData*>(surface->get_surface_data()); if(surface_data == NULL) { return; } GLuint th = gltexture->get_handle(); if (th != s_last_texture) { s_last_texture = th; glBindTexture(GL_TEXTURE_2D, th); } intern_draw(request.pos.x, request.pos.y, request.pos.x + surface->get_width() * 1.001f, // Avoid seams between background textures request.pos.y + surface->get_height() * 1.001f, surface_data->get_uv_left(), surface_data->get_uv_top(), surface_data->get_uv_right(), surface_data->get_uv_bottom(), request.angle, request.alpha, request.color, request.blend, request.drawing_effect); }