【问题标题】:OpenGL Rendering issue on Samsung Devices三星设备上的 OpenGL 渲染问题
【发布时间】:2012-08-29 16:30:02
【问题描述】:

我有一个使用 OpenG-ES 2.0 绘制一些对象的应用程序。该应用程序无法在某些三星设备上呈现。我尝试调试,似乎顶点和片段着色器有问题。

这是我的着色器代码:
顶点着色器:

attribute vec3 Position; 
attribute vec4 SourceColor; 

varying vec4 DestinationColor; 

uniform mat4 Projection;
uniform mat4 Modelview;
uniform mat4 CordTransform;
attribute float flag;
attribute float clubColorFlag;

attribute vec2 TexCoordIn; // New
varying vec2 TexCoordOut; // New
varying float flagS;
varying float flagClubColorS;
void main(void) {   
        gl_Position = Projection * Modelview * vec4(Position,1.0);  
        flagS = flag;  
        flagClubColorS = clubColorFlag;  
        if (clubColorFlag == 1.0) {  
            DestinationColor = vec4(0.190,0.309,0.309,1.0);  
        }  
        else {   
            DestinationColor = SourceColor;  
        }  
        exCoordOut = TexCoordIn;  
        gl_PointSize = 1.0;  
    }

片段着色器:

varying lowp vec4 DestinationColor;

varying lowp vec2 TexCoordOut; // New
uniform sampler2D Texture; // New
varying lowp float flagS;
varying lowp float flagClubColorS;
void main(void) {

    gl_FragColor = DestinationColor;
    if(flagS == 1.0){
        gl_FragColor = DestinationColor;
    }
    else if (flagClubColorS == 1.0) {
        gl_FragColor = DestinationColor;
    }
    else if (flagS == 0.0){
        gl_FragColor = DestinationColor * texture2D(Texture, TexCoordOut); // New
    }
}  

我不确定是什么问题,但是如果我在片段着色器中注释掉 if-else 部分,我会得到纹理统一 -1。在其他情况下,它为零。两个着色器都编译没有任何错误。
跟精度有关系吗?请帮我调试问题。

【问题讨论】:

  • 我得到纹理统一 -1 你确定这是你的问题吗?如果你不在着色器中使用制服(它被注释掉了),那么编译器摆脱它是合法的。您的制服返回 -1,因为它没有在任何地方使用。
  • 我在调试时注释掉了该代码。即使该代码未注释,设备上的渲染也会失败。在这种情况下,纹理均匀度为 0。
  • 0 是制服的合法值,这没有错。

标签: android opengl-es-2.0


【解决方案1】:

我正在为稍后将要参考此内容的人回答我自己的问题。我可以解决这个问题。

问题不在任何一个着色器中。问题是,我使用glDrawElements() 方法来绘制带有顶点和索引缓冲区的对象。我用仅使用顶点缓冲区的glDrawArrays() 方法替换了这个调用,一切正常。

我仍然不确定确切的问题,但它可能会帮助长期为类似问题苦苦挣扎的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多