특정 영역 안쪽에 그려야 되는 케이스가 많아서 이런 부분들을 스텐실 버퍼로 구현하고 있었는데요
갤럭시S랑 갤럭시S2 에서는 정상 작동된 것을 확인했는데
옵티머스원에서는 스텐실 영역이 하얗게 칠해진 상태로 나오더라구요
에뮬레이터에서도 그렇게 나와서 내심 걱정은 했었는데
막상 터지고 나니 대체 어떤 폰에서 되고 어떤 폰에서 안되는지 기준이 명확하질 않더라구요
옵티머스 원이 안드로이드 2.2에 OpenGL2.0까지 지원이면 이게 안될 이유가 없는데....
참고로 스텐실 버퍼는 GL10으로 구현한 것입니다.
자답입니다.
밑에 스텐실 문제로 질문글을 올리신 분과 같은 setEGLConfigChooser를 선언하지 않은 것이 원인이었네요
단, 옵티머스원은 16비트 컬러까지 지원하는 관계로
setEGLConfigChooser(5,6,5,0,8,8);
이렇게 선언해야 하고,
setEGLConfigChooser(8,8,8,8,8,8);
이런 식으로 선언하면 냅다 꺼져버립니다.
다른 값도 이것저것 넣어봤는데 565를 넘어서는 컬러값이나 8을 넘는 스텐실 값을 넣으면
무조건 꺼져 버립니다.
위 565 옵션으로는 갤럭시S,갤럭시S2,옵티머스원까지 정상작동 되는 것이 확인되었습니다.
추가로 렌더링 하기 전에
gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT|GL10.GL_STENCIL_BUFFER_BIT);
이런 식으로 버퍼도 클리어 해줘야 하네요
코코스2D의 CCDirector에서는 GL10.GL_STENCIL_BUFFER_BIT 항목이 빠져 있기 때문에
visit선언을 오버라이드 해서 한번 더 호출하거나 CCDirector를 수정해야 합니다.
참고로 삼성 스마트 폰의 경우 setConfigChooser나 glClear의 GL_STENCIL_BUFFER_BIT 항목이 없어도
스텐실이 정상적으로 적용됩니다.
내부적으로 기본값이 스텐실을 사용하도록 잡혀 있나 보더라구요
명시적으로 스텐실을 꺼버려야 작동을 안하도록 되어있나 봅니다.