summaryrefslogtreecommitdiffstats
path: root/distrib/android-emugl/host/libs/libOpenglRender/ColorBuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'distrib/android-emugl/host/libs/libOpenglRender/ColorBuffer.h')
-rw-r--r--distrib/android-emugl/host/libs/libOpenglRender/ColorBuffer.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/distrib/android-emugl/host/libs/libOpenglRender/ColorBuffer.h b/distrib/android-emugl/host/libs/libOpenglRender/ColorBuffer.h
new file mode 100644
index 000000000..9a919c367
--- /dev/null
+++ b/distrib/android-emugl/host/libs/libOpenglRender/ColorBuffer.h
@@ -0,0 +1,60 @@
+/*
+* Copyright (C) 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+#ifndef _LIBRENDER_COLORBUFFER_H
+#define _LIBRENDER_COLORBUFFER_H
+
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+#include <GLES/gl.h>
+#include "emugl/common/smart_ptr.h"
+
+class ColorBuffer
+{
+public:
+ static ColorBuffer *create(int p_width, int p_height,
+ GLenum p_internalFormat);
+ ~ColorBuffer();
+
+ GLuint getGLTextureName() const { return m_tex; }
+ GLuint getWidth() const { return m_width; }
+ GLuint getHeight() const { return m_height; }
+
+ void subUpdate(int x, int y, int width, int height, GLenum p_format, GLenum p_type, void *pixels);
+ bool post();
+ bool bindToTexture();
+ bool bindToRenderbuffer();
+ bool blitFromCurrentReadBuffer();
+ void readback(unsigned char* img);
+
+private:
+ ColorBuffer();
+ void drawTexQuad();
+ bool bind_fbo(); // binds a fbo which have this texture as render target
+
+private:
+ GLuint m_tex;
+ GLuint m_blitTex;
+ EGLImageKHR m_eglImage;
+ EGLImageKHR m_blitEGLImage;
+ GLuint m_width;
+ GLuint m_height;
+ GLuint m_fbo;
+ GLenum m_internalFormat;
+};
+
+typedef emugl::SmartPtr<ColorBuffer> ColorBufferPtr;
+
+#endif