I'm converting an app I've written from Canvas to OpenGL, and not having too
hard of a time yet.

However, I've run into one snag that I can't seem to get around.  My old app
was threading image loads, because there are a ton of them, however, it
looks like the OpenGL implementation protects itself to a single thread.  I
have a basic loadBitmap() function as follows:
    protected static void loadBitmap(GLSprite sprite, int resourceId) {
        int textureName = -1;
        if (mContext != null && mGl != null) {
            mGl.glGenTextures(1, mTextureNameWorkspace, 0);

            textureName = mTextureNameWorkspace[0];
            mGl.glBindTexture(GL10.GL_TEXTURE_2D, textureName);

            mGl.glTexParameterf(GL10.GL_TEXTURE_2D,
GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
            mGl.glTexParameterf(GL10.GL_TEXTURE_2D,
GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);

            mGl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,
GL10.GL_CLAMP_TO_EDGE);
            mGl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,
GL10.GL_CLAMP_TO_EDGE);

            mGl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE,
GL10.GL_REPLACE);

            Bitmap bitmap = BitmapFactory.decodeResource(r, resourceId);


            GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);

            mCropWorkspace[0] = 0;
            mCropWorkspace[1] = bitmap.getHeight();
            mCropWorkspace[2] = bitmap.getWidth();
            mCropWorkspace[3] = -bitmap.getHeight();

            sprite.setTextureName(textureName);
            sprite.setSize(bitmap.getWidth(), bitmap.getHeight());

            bitmap.recycle();

            ((GL11) mGl).glTexParameteriv(GL10.GL_TEXTURE_2D,
GL11Ext.GL_TEXTURE_CROP_RECT_OES, mCropWorkspace, 0);

            int error = mGl.glGetError();
            if (error != GL10.GL_NO_ERROR) {
                // Logging
            }
        }


This is based heavily off of the SpriteMethodTest in apps-for-android.  If I
make a call to this function from the thread that mGl was created from,
everything goes fine.  However, if I thread the calls to this function, the
calls to glGenTextures() fail with a varying error code (changes with each
run).  I haven't been able to find any information regarding how to deal
with this...

Any help?
Thanks
- Dan

--~--~---------~--~----~------------~-------~--~----~
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