안녕하세요 오늘 안드로이드펍 사이트에 갓 입문한 막장발컨이라고 합니다.


어플을 개발하는 도중에 궁금한 점이 있어서 혹시 여기에 대한 정보를 구할 수 있을까 해서 여쭤봅니다.


현재 개발하는 어플에 망원경 효과를 주기 위해 스텐실 버퍼와 SCISSOR(검색해서 가져다쓴 효과라 정확한 명칭을 모르겠네요) 라는 효과를 사용하는데요 


갤럭시S에서는 잘 나오는데 에뮬에서는 효과가 전혀 적용이 안되더라구요

에뮬에서 오픈GLES2.0을 지원하지 못한다는 얘기는 들었지만 위의 효과들은 GL10에 속한 메소드를 사용한 거라 1.0으로 보이는데

스텐실 계열은 에뮬에서 지원을 안하는 건지 궁금합니다.


그리고 위의 효과가 에뮬에서만 안되는 건지 다른 폰들 중에서도 스텐실이나 SCISSOR효과가 안먹을 수 있는 것인지 알고 싶습니다.


해당 부분 코드는 다음과 같습니다.


public void visit(GL10 gl) {

if(bZoomIn)

{

gl.glEnable(GL10.GL_STENCIL_TEST);

gl.glEnable(GL10.GL_ALPHA_TEST);

gl.glAlphaFunc(GL10.GL_GREATER, 0.0f);

gl.glClearStencil(0);

gl.glStencilFunc(GL10.GL_NEVER, 1, 1);

gl.glStencilOp(GL10.GL_INCR, GL10.GL_INCR, GL10.GL_INCR);

sprAimStencil.visit(gl);

gl.glDisable(GL10.GL_ALPHA_TEST);

gl.glStencilFunc(GL10.GL_NOTEQUAL, 0, 1);

gl.glStencilOp(GL10.GL_KEEP, GL10.GL_KEEP, GL10.GL_KEEP);

gl.glEnable(GL10.GL_SCISSOR_TEST);

float fScissorSize = fScopeSize * 2.0f;

gl.glScissor((int) getPosition().x

- (int) (fScissorSize*fScopeScale*0.5f),

(int) getPosition().y

- (int) (fScissorSize*fScopeScale*0.5f),

(int) (fScissorSize*fScopeScale),

(int) (fScissorSize*fScopeScale));

this.m_BG.visit(gl,1.0f,this.fScopeZoomScale);


ArrayList<CJunObject> arraySortedObjects = new ArrayList<CJunObject>();

for(int i=0,n=listJombieA.size();i<n;i++)

{

CJunObject obj = listJombieA.get(i);

if(obj!=null)arraySortedObjects.add(obj);

}

for(int i=0,n=listJombieD.size();i<n;i++)

{

CJunObject obj = listJombieD.get(i);

if(obj!=null)arraySortedObjects.add(obj);

}

for(int i=0,n=listBullet.size();i<n;i++)

{

CJunObject obj = listBullet.get(i);

if(obj!=null)arraySortedObjects.add(obj);

}

for(int i=0,n=listJombieHit.size();i<n;i++){

CJunObject obj = listJombieHit.get(i);

if(obj!=null)arraySortedObjects.add(obj);

}

if(arraySortedObjects.size()>1)

{

for(int j=1,m=arraySortedObjects.size();j<m;j++)

{

for(int i=0,n=arraySortedObjects.size()-1;i<n;i++)

{

CJunObject obj1 = arraySortedObjects.get(i);

CJunObject obj2 = arraySortedObjects.get(j);

if(obj1.m_fPosZ>obj2.m_fPosZ)

{

arraySortedObjects.set(i,obj2);

arraySortedObjects.set(j,obj1);

}

}

}

}

for(int i=0,n=arraySortedObjects.size();i<n;i++)

{

arraySortedObjects.get(i).visit(gl,this.fScopeZoomScale);

}


gl.glDisable(GL10.GL_SCISSOR_TEST);

gl.glDisable(GL10.GL_STENCIL_TEST);


sprAimCrossA.visit(gl,1.0f/480.0f*height);

sprAimCircle.visit(gl);

}

else

{

sprAimCrossB.visit(gl,1.0f/480.0f*height);

}

}


코코스2D 기반입니다.