Texture.h revision 22158e139a3d6c6a9787ca0de224e9368f643284
1/* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#ifndef ANDROID_UI_TEXTURE_H 18#define ANDROID_UI_TEXTURE_H 19 20#include <GLES2/gl2.h> 21 22namespace android { 23namespace uirenderer { 24 25/** 26 * Represents an OpenGL texture. 27 */ 28struct Texture { 29 Texture() { 30 cleanup = false; 31 } 32 33 /** 34 * Name of the texture. 35 */ 36 GLuint id; 37 /** 38 * Generation of the backing bitmap, 39 */ 40 uint32_t generation; 41 /** 42 * Indicates whether the texture requires blending. 43 */ 44 bool blend; 45 /** 46 * Width of the backing bitmap. 47 */ 48 uint32_t width; 49 /** 50 * Height of the backing bitmap. 51 */ 52 uint32_t height; 53 /** 54 * Indicates whether this texture should be cleaned up after use. 55 */ 56 bool cleanup; 57}; // struct Texture 58 59class AutoTexture { 60public: 61 AutoTexture(const Texture* texture): mTexture(texture) { } 62 ~AutoTexture() { 63 if (mTexture && mTexture->cleanup) { 64 glDeleteTextures(1, &mTexture->id); 65 delete mTexture; 66 } 67 } 68 69private: 70 const Texture* mTexture; 71}; // class AutoTexture 72 73}; // namespace uirenderer 74}; // namespace android 75 76#endif // ANDROID_UI_TEXTURE_H 77