Below is my curet uploading and use of the texture from the renderer's onDrawFrame(GL10 go) method. I would simply like to call gl.glCompressedTexImage2D from another thread, oftentimes many milliseconds before the rendering thread is ready to be called. I place the rendering code within a try lock block and on other platform, I place the upload request within a lock block. If the renderer comes along why another thread is uploading the texture, it request that the context be rendered again and returns from the request without doing anything. When the renderer successfully enters the try lock block, then outside threads are blocked from updating the texture until the rendering thread completes it's work and releases the lock. This is very basic and works on smoothly on 4 other platforms, but my research so far has led me to a universal answer of "you can't do this". I imagine that I could if I wanted to kick the rendering in the realm of the NDK, but I thought I'd ask for an authoritative answer first ...
m_textureBuffer.rewind(); gl.glCompressedTexImage2D( GL10.GL_TEXTURE_2D, 0, GL10.GL_PALETTE8_RGBA8_OES, m_textureWidth, m_textureHeight, 0, m_textureSize, m_textureBuffer); gl.glColor4f( m_textureColor, m_textureColor, m_textureColor, 1); gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); On Sunday, July 1, 2012 12:26:01 AM UTC-7, Romain Guy (Google) wrote: > > Hi, > > How exactly are you uploading the texture on that other platform? Are you > simply doing an eglMakeCurrent() to reassign the GL context to another > thread or are you using an EGLImage? > > On Saturday, June 30, 2012 4:33:32 PM UTC-7, > gl...@wanderfulstorybooks.comwrote: >> >> Hello, >> >> I am optimizing an OpenGL-based application ported from that other >> major mobile OS and find that I cannot successfully access the GL >> context from anything other than the rendering thread of >> GLSurfaceView. What I CAN do on other platforms is upload my single >> (and large) texture to GL prior to needing to render the texture >> itself. This is a 640x480 8-bit RGB texture that takes some time to >> upload to the chip and needs to be done every time I realize a new >> frame of animation from the background system memory buffer. I'm sure >> you can appreciate the savings in execution time if I can perform this >> upload from another thread when I have nothing left to do but wait for >> GLSurfaceView's rendering thread to call me. All is synchronized >> safely as evidenced by the successful release of this software using >> this very same technique on that-other-platform-that-shall-not-be >> named. Things are very smooth and zippy on that platform, but Android >> currently suffers by comparison. Is there any way to do this? >> >> >> Thanks >> >> Glenn > > -- 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