mirror of
https://github.com/brl/mutter.git
synced 2024-12-02 12:50:53 -05:00
fccd626604
meta-texture-rectangle and meta-shaped-texture both create textures with GL_TEXTURE_RECTANGLE_ARB as the target using direct GL calls. This patch moves that code into a shared utility function in a separate file instead. The function resolves the required GL symbols dynamically instead of linking to them directly so that if Clutter eventually stops linking to -lGL mutter will continue to build. The function also splits the texture creation into a separate texture creation and data upload stage so that it can use cogl_texture_set_region to upload the data. That way it can avoid clobbering the glPixelStore state and it can let Cogl do any necessary format conversion. The code preserves the old value of the rectangle texture binding instead of clobbering it because Cogl expects to be able to cache this value to avoid redundant glBindTexture calls. Finally, the function uses cogl_object_set_data to automatically destroy the GL texture when the Cogl texture is destroyed. This avoids having to have special code to destroy the cogl texture. https://bugzilla.gnome.org/show_bug.cgi?id=654569
46 lines
1.5 KiB
C
46 lines
1.5 KiB
C
/*
|
|
* texture rectangle
|
|
*
|
|
* A small utility function to help create a rectangle texture
|
|
*
|
|
* Authored By Neil Roberts <neil@linux.intel.com>
|
|
*
|
|
* Copyright (C) 2011 Intel Corporation
|
|
*
|
|
* 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, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*/
|
|
|
|
#ifndef __META_TEXTURE_RECTANGLE_H__
|
|
#define __META_TEXTURE_RECTANGLE_H__
|
|
|
|
#include <cogl/cogl.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
CoglHandle
|
|
meta_texture_rectangle_new (unsigned int width,
|
|
unsigned int height,
|
|
CoglTextureFlags flags,
|
|
CoglPixelFormat format,
|
|
GLenum internal_gl_format,
|
|
GLenum internal_format,
|
|
unsigned int rowstride,
|
|
const guint8 *data);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* __META_TEXTURE_RECTANGLE_H__ */
|