Wirelissss maybe work

On Thursday, December 22, 2011, Romain Guy <romain...@android.com> wrote:
> There's no need to get the camera preview out of SurfaceTexture. The
whole point of SurfaceTexture is to let a producer like the camera render
into an OpenGL texture. Just use SurfaceTexture.
>
> To draw on top of TextureView, just add another view on top of it.
>
> On Dec 21, 2011 9:35 PM, "Brad Grimm" <sna...@gmail.com> wrote:
>
> Thanks for the post, it has been really helpful.
>
> But say I want to draw on top of a SurfaceTexture that is connected to
> a Camera via setPreviewTexture. I can get the SurfaceTexture by a
> SurfaceTextureListener. But if I just try to use
> eglCreateWindowSurface & eglMakeCurrent it fails due to the surface
> already being connected.
> 1) Is it possible to draw on this surface at all? Or does binding it
> to the camera make it impossible to do that.
> 2) If it isn't possible. Can the surface be used (or copied) quickly
> to an OpenGL texture and used in a separate surface? If so how?
> 3) If not, what would be the fastest way to get the camera preview out
> of a SurfaceTexture and into OpenGL?
> P.S. - I too followed suit and posted to StackOverflow:
>
http://stackoverflow.com/questions/8582090/possible-to-draw-on-surfacetexture-attached-to-camera
> On Nov 23, 11:45 am, plafayette <pierre.lafaye...@gmail.com> wrote:
>> Thanks for the quick response Romain and the sample code! Will give it
>> a try.
>>
>> On Nov 23, 12:17 pm, Romain Guy <romain...@android.com> wrote:
>>
>>
>>
>>
>>
>>
>>
>> > GLSurfaceView handles GL setup for you, whichTextureViewwill not do. A
>> >TextureViewcan be used as the native window when you create an EGL
>> > surface. Here is an example (the interesting part is the call
>> > to eglCreateWindowSurface()):
>>
>> >     @Override
>> >     public void onSurfaceTextureAvailable(SurfaceTexture surface, int
>> > width, int height) {
>> >         mRenderThread = new RenderThread(getResources(), surface);
>> >         mRenderThread.start();
>> >     }
>>
>> >     private static class RenderThread extends Thread {
>> >         private static final String LOG_TAG = "GLTextureView";
>>
>> >         static final int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
>> >         static final int EGL_OPENGL_ES2_BIT = 4;
>>
>> >         private volatile boolean mFinished;
>>
>> >         private final Resources mResources;
>> >         private final SurfaceTexture mSurface;
>>
>> >         private EGL10 mEgl;
>> >         private EGLDisplay mEglDisplay;
>> >         private EGLConfig mEglConfig;
>> >         private EGLContext mEglContext;
>> >         private EGLSurface mEglSurface;
>> >         private GL mGL;
>>
>> >         RenderThread(Resources resources, SurfaceTexture surface) {
>> >             mResources = resources;
>> >             mSurface = surface;
>> >         }
>>
>> >         private static final String sSimpleVS =
>> >                 "attribute vec4 position;\n" +
>> >                 "attribute vec2 texCoords;\n" +
>> >                 "varying vec2 outTexCoords;\n" +
>> >                 "\nvoid main(void) {\n" +
>> >                 "    outTexCoords = texCoords;\n" +
>> >                 "    gl_Position = position;\n" +
>> >                 "}\n\n";
>> >         private static final String sSimpleFS =
>> >                 "precision mediump float;\n\n" +
>> >                 "varying vec2 outTexCoords;\n" +
>> >                 "uniform sampler2D texture;\n" +
>> >                 "\nvoid main(void) {\n" +
>> >                 "    gl_FragColor = texture2D(texture,
outTexCoords);\n" +
>> >                 "}\n\n";
>>
>> >         private static final int FLOAT_SIZE_BYTES = 4;
>> >         private static final int TRIANGLE_VERTICES_DATA_STRIDE_BYTES =
5 *
>> > FLOAT_SIZE_BYTES;
>> >         private static final int TRIANGLE_VERTICES_DATA_POS_OFFSET = 0;
>> >         private static final int TRIANGLE_VERTICES_DATA_UV_OFFSET = 3;
>> >         private final float[] mTriangleVerticesData = {
>> >                 // X, Y, Z, U, V
>> >                 -1.0f, -1.0f, 0.0f, 0.0f, 0.0f,
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to