就是这两套顶点坐标和纹理坐标,请高手帮忙看看。
#if 0  
    // Galaxy Nexus 4.2.2  
    static GLfloat squareVertices[] = {  
        -1.0f, -1.0f,  
        1.0f, -1.0f,  
        -1.0f,  1.0f,  
        1.0f,  1.0f,  
    };  
  
    static GLfloat coordVertices[] = {  
        0.0f, 1.0f,  
        1.0f, 1.0f,  
        0.0f,  0.0f,  
        1.0f,  0.0f,  
    };  
#else  
 // HUAWEIG510-0010 4.1.1  
    static GLfloat squareVertices[] = {  
        0.0f, 0.0f,  
        1.0f, 0.0f,  
        0.0f,  1.0f,  
        1.0f,  1.0f,  
    };  
  
    static GLfloat coordVertices[] = {  
            -1.0f, 1.0f,  
            1.0f, 1.0f,  
            -1.0f,  -1.0f,  
            1.0f,  -1.0f,  
    };  
#endif 
 

解决方案 »

  1.   

    OpenGLES显示全屏纹理,不需要设置两套坐标吧
      

  2.   

    你是用SurfaceView来显示图像的吗?
    4.2.2的我没试过,但是之前的,用第一套坐标,我这里基本上的手机都是显示正常的
      

  3.   

    是的,用的GLSurfaceView来显示,Android系统版本为V4.1.2。
      

  4.   

    这个可以用,shader里完成yuv转rgb,利用硬件编程语言实现shader,GPU大概是可编程逻辑的,所以,我猜颜色空间转换是在硬件里完成的。非常疑惑的问题是,为什么要有两套顶点和纹理坐标呢,但是情况确实是这样的,我手头的手机,小米和中兴,确实需要利用这两套不同坐标,二者坐标如果互换,就会渲染到屏幕的右上角,但是奇怪的是,我如果在java层,用es2.0,来实现一个矩形,并且在上面贴纹理,不管是小米还是中兴手机,都只能使用第一套坐标,如果使用第二套坐标,就会渲染到屏幕的右上角。这真是很诡异啊,难道NDK和java不一样?
      

  5.   

    楼主, 请问解决了吗? 我现在在jni层直接显示YUV420数据,也遇到这个问题,很无奈啊如果楼主或者各位兄弟知道解决方案,还请指点下啊!!TKS