mirror of
https://github.com/brl/mutter.git
synced 2024-11-27 18:40:40 -05:00
a4a688ed83
The old requirement that multiple MetaBackgroundActor objects be layered on top of each to produce blended backgrounds resulted in extremely inefficient drawing since the entire framebuffer had to be read and written multiple times. * Replace the MetaBackground ClutterContent with a plain GObject that serves to hold the background parameters and prerender textures to be used to draw the background. It handles colors, gradients, and blended images, but does not handle vignetting * Add vignetting to MetaBackgroundActor directly. * Add MetaBackgroundImage and MetaBackgroundImageCache to allow multiple MetaBackground objects to share the same images By removing the usage of ClutterContent, the following optimizations were easy to add: Blending is turned off when the actor is fully opaque Nearest-neighbour filtering is used when drawing 1:1 The GLSL vignette code is slightly improved to use a vertex shader snippet for computing the texture coordinate => position in actor mapping. https://bugzilla.gnome.org/show_bug.cgi?id=735637
39 lines
1.3 KiB
C
39 lines
1.3 KiB
C
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
/*
|
|
* Utilities for use with Cogl
|
|
*
|
|
* Copyright 2010 Red Hat, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef __META_COGL_UTILS_H__
|
|
#define __META_COGL_UTILS_H__
|
|
|
|
#include <cogl/cogl.h>
|
|
|
|
CoglPipeline * meta_create_texture_pipeline (CoglTexture *texture);
|
|
|
|
typedef enum {
|
|
META_TEXTURE_FLAGS_NONE = 0,
|
|
META_TEXTURE_ALLOW_SLICING = 1 << 1
|
|
} MetaTextureFlags;
|
|
|
|
CoglTexture *meta_create_texture (int width,
|
|
int height,
|
|
CoglTextureComponents components,
|
|
MetaTextureFlags flags);
|
|
|
|
#endif /* __META_COGL_UTILS_H__ */
|