glDrawTexiOES错误代码1281

时间:2012-11-06 09:25:46

标签: android iphone opengl-es

在真正的Android设备上使用 glDrawTexiOES 时,我正在使用错误代码1281。我没有得到这个错误,一切正常工作在bluestacks(模拟器等)这些是我的选择......:

if ( gl == null ){
            Log.e("OpenGL ERROR! ID:0", "gl objects is NULL");return -1;
        }

        int TexIDStorage[] = new int[1];
        lastBitmapsWidth   = bitmap.getWidth();
        lastBitmapsHeight  = bitmap.getHeight();
        // Generate ID for texture that will be initialized.
        gl.glGenTextures(1, TexIDStorage, 0);
        // Next 2 lines are binding generated ID in cache to set and initialize texture.
        gl.glBindTexture(GL10.GL_TEXTURE_2D, TexIDStorage[0]);
        // Next 7 lines. Decides what to do when image getting smaller or bigger.
        if(SmoothVision == true){   //GL_LINEAR  - slow but smooth vision
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);   
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);   
        }else{                      //GL_NEAREST - fast and sharp vision
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_NEAREST);
        }
        // Next 2 lines. Decides what to do if images are smaller then height or width of drawing area: Repeat them.
        gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);//GL_CLAMP_TO_EDGE//GL10.GL_CLAMP_TO_EDGE
        gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);//GL_REPEAT
        // Next line for transparency
        gl.glEnable(GL10.GL_BLEND);
        // Initialize image to the binded cache ID.(Push bitmap into GPU)
        GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
        // Crop part of image so the device will draw only given pixels and not the whole image.
        ((GL11) gl).glTexParameteriv(GL10.GL_TEXTURE_2D, GL11Ext.GL_TEXTURE_CROP_RECT_OES,
                                     new int[] { 0, bitmap.getHeight(), bitmap.getWidth(), -bitmap.getHeight() }, 0);
        bitmap.recycle();
        gl.glFlush();

        if (gl.glGetError() == GL10.GL_NO_ERROR){
            varLoadedImageCount++;
            arrLastLoadedIDs[varLastLoadedIDc] = TexIDStorage[0];
            varLastLoadedIDc++;
        }
        else
            Log.e("OpenGL caching ERROR! ID:1!", "GL Texture Loading Failed   ("+ Num +"):" + gl.glGetError());

        // Return ID of image in cache so I can call it from cache when I needed.
        return TexIDStorage[0];

这是绘图功能......:

    gl.glBindTexture(GL10.GL_TEXTURE_2D, testIDs[5]);
    gl.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
    gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);           //GL10.GL_ONE ... No border near resized images.
    ((GL11) gl).glTexParameteriv(GL10.GL_TEXTURE_2D, GL11Ext.GL_TEXTURE_CROP_RECT_OES, cropArr, 0);
    System.out.println("x:"+infArr[0]+"y:"+infArr[1]+"w:"+infArr[2]+"h:"+infArr[3]);
    ((GL11Ext) gl).glDrawTexiOES(infArr[0], infArr[1] + infArr[3], 0, infArr[2], -infArr[3]);
    System.out.println("GLDraw...:"+gl.glGetError());

问题: ((GL11Ext)gl).glDrawTexiOES(infArr [0],infArr [1] + infArr [3],0,infArr [2], -infArr [3] );


我的图像是2的力量...... 我知道有些设备无法填补缺失的选项,有些设备也可以。我认为我的设备有同样的问题。知道什么可以这个吗?谢谢你的回复......

1 个答案:

答案 0 :(得分:0)

问题是:我正在向glRendering函数发送负值...