2012-08-24 4 views
0

OpenG-ES 2.0으로 일부 개체를 그리는 응용 프로그램이 있습니다. 일부 삼성 장치에서 응용 프로그램이 렌더링되지 않습니다. 디버깅을 시도했는데 정점 및 조각 셰이더에 문제가있는 것 같습니다. 나는 문제가 무엇인지 확실하지 않다삼성 기기의 OpenGL 렌더링 문제

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

그러나 나는 질감의 유니폼을 얻을 -1 내가 언급하는 경우 :
버텍스 쉐이더 :

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; 
    } 

조각 쉐이더 여기

내 쉐이더 코드 fragment shader의 if-else 부분을 꺼내십시오. 다른 시나리오에서는 0입니다. 두 쉐이더는 오류없이 컴파일됩니다.
정밀도와 관련이 있습니까? 문제를 디버그하도록 도와주세요.

+1

* 텍스처가 균일 해집니다. -1 *이 문제가 확실합니까? 셰이더에서 유니폼을 사용하지 않으면 (주석 처리되어 있음) 컴파일러가 제거 할 수 있습니다. 유니폼은 아무데도 사용되지 않기 때문에 -1을 반환합니다. – Tim

+0

디버깅 중에 코드를 주석 처리했습니다. UN 코드 주석을 사용하더라도 장치에서 렌더링이 실패합니다. 그런 경우 텍스쳐 유니폼은 0입니다. – Ashwini

+1

0은 유니폼에 대한 합법적 인 값입니다. 아무 문제가 없습니다. – Tim

답변

-1

나는 이것을 나중에 언급 할 사람들을 위해 나 자신의 질문에 대답하고있다. 문제를 해결할 수있는 종류의 방법이 있습니다.

문제는 두 쉐이더 중 하나에 없습니다. 문제는, glDrawElements() 메서드를 사용하여 버텍스 및 인덱스 버퍼를 사용하여 객체를 그리는 것이 었습니다. 나는이 호출을 버텍스 버퍼만을 사용하는 glDrawArrays() 메쏘드로 바꾸었다.

정확한 문제는 아직 확실하지 않지만 비슷한 문제에 오래 걸리는 사람에게 도움이 될 수 있습니다.