on paper.. go gles2 too... that should work.. in theory. need to test.
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 13 Nov 2009 08:43:50 +0000 (08:43 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 13 Nov 2009 08:43:50 +0000 (08:43 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/evas@43659 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/modules/engines/gl_common/evas_gl_context.c
src/modules/engines/gl_common/evas_gl_texture.c

index c2293ee..65bf696 100644 (file)
@@ -309,10 +309,17 @@ evas_gl_common_context_target_surface_set(Evas_GL_Context *gc,
 #else   
    // FIXME: viewport goopies
    gc->change.size = 1;
+#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
+   if (gc->shader.surface == gc->def_surface)
+     glBindFramebuffer(GL_FRAMEBUFFER_OES, 0);
+   else
+     glBindFramebuffer(GL_FRAMEBUFFER_OES, surface->tex->pt->fb);
+#else
    if (gc->shader.surface == gc->def_surface)
      glBindFramebuffer(GL_FRAMEBUFFER_EXT, 0);
    else
      glBindFramebuffer(GL_FRAMEBUFFER_EXT, surface->tex->pt->fb);
+#endif   
    _evas_gl_common_viewport_set(gc);
 #endif   
 }
index 0ac6da6..e74ce00 100644 (file)
@@ -269,7 +269,18 @@ _pool_tex_render_new(Evas_GL_Context *gc, int w, int h, int intformat, int forma
    pt->dataformat = GL_UNSIGNED_BYTE;
    pt->references = 0;
 #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX)
-   // FIXME: XXX render-to-texture for gles2
+   glGenTextures(1, &(pt->texture));
+   glBindTexture(GL_TEXTURE_2D, pt->texture);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+   _tex_2d(pt->intformat, w, h, pt->format, pt->dataformat);
+   glGenFramebuffers(1, &(pt->fb));
+   glBindFramebuffer(GL_FRAMEBUFFER_OES, pt->fb);
+   glFramebufferTexture2DEXT(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, pt->texture, 0);
+   glBindFramebufferEXT(GL_FRAMEBUFFER_OES, 0);
+   glBindTexture(GL_TEXTURE_2D, gc->shader.cur_tex);
 #else
    glGenTextures(1, &(pt->texture));
    glBindTexture(GL_TEXTURE_2D, pt->texture);