다른 액터와 교차하는 액터가 있습니다. 그리고 그 부분을 잘라 내야합니다. 터치 한 다른 객체를 기반으로 텍스처를 자르는 방법은 무엇입니까?
위
이 사각형은 이미지의 배우가 라인을 따라 무작위로 나타날 수 있습니다 또한 이미지의 배우입니다.
그리고 이것은 내가 얻고 자했던 결과의 샘플입니다. libgdx로 이것을 달성하는 방법에 대한 조언이 필요합니다.
[편집]
으로 내가 버퍼에 그리는 FBO를 사용하는 것을 시도하고 좋습니다. 아래는 현재 작업중인 코드입니다.
@Override
public void draw(Batch batch, float parentAlpha) {
fbo.begin();
getStage().getViewport().apply();
Gdx.gl.glClearColor(0f,0f,0f,0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.draw(trLine,position.x,position.y);
batch.flush();
fbo.end();
getStage().getViewport().apply();
batch.draw(fbo.getColorBufferTexture(),0,0);
}
나는 버퍼로 무승부를 버퍼링하고 나중에 그릴 수 있어요하지만 다른 크기 될 일이. 아래는 생성 및 fbo의 처분에 대한 코드입니다. 그리기 루프 외부에 있습니다. [FBO 해결]
fbo = new FrameBuffer(Pixmap.Format.RGBA8888,getStage().getViewport().getWidth(),getStage().getViewport().getHeight(),false,true);
는 아래 FBO 작업 한 부호화하지만 예상대로 혼합 작동되지 않는다. 작동 할 때까지 계속 노력할 것입니다.
fbo.begin();
Gdx.gl.glClearColor(0f,0f,0f,0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(trLine,position.x,position.y);
batch.end();
int srcFunc = batch.getBlendSrcFunc();
int dstFunc = batch.getBlendDstFunc();
batch.enableBlending();
batch.begin();
batch.setBlendFunction(GL20.GL_ONE, GL20.GL_FUNC_REVERSE_SUBTRACT);
for(int i = 0 ; i < cropRectangles.size() ; i++){ batch.draw(cropTexture.get(i),cropRectangles.get(i).x,cropRectangles.get(i).y);
}
batch.end();
fbo.end();
getStage().getViewport().apply();
//reset blending before drawing the desire result
batch.begin();
batch.setBlendFunction(srcFunc, dstFunc);
batch.draw(fbo.getColorBufferTexture(),0,0);
batch.end();
그러나 출력에는 블렌딩 효과가 없습니다. 흰색으로 채워진 사각형입니다.
드디어 제대로 방정식을 적용
[이 해결 FULL CODE]하고 나는이 후 그릴 다른 것들에 영향을주지 않도록를 재설정 할 수.
fbo.begin();
Gdx.gl.glClearColor(0f,0f,0f,0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(trLine,position.x,position.y);
batch.end();
int srcFunc = batch.getBlendSrcFunc();
int dstFunc = batch.getBlendDstFunc();
batch.enableBlending();
batch.begin();
batch.setBlendFunction(GL20.GL_ONE, GL20.GL_ONE_MINUS_SRC_ALPHA);
Gdx.gl.glBlendEquation(GL20.GL_FUNC_REVERSE_SUBTRACT);
for(int i = 0 ; i < cropRectangles.size() ; i++){
batch.draw(cropTexture.get(i),cropRectangles.get(i).x,cropRectangles.get(i).y);
}
batch.end();
batch.flush();
fbo.end();
Gdx.gl.glBlendEquation(GL20.GL_FUNC_ADD);
getStage().getViewport().apply();
batch.begin();
batch.setBlendFunction(srcFunc, dstFunc);
batch.draw(fbo.getColorBufferTexture(),0,0);
batch.end();
위의 예가 없기 때문에 사진의 일부를 잘라내는 것이 무슨 뜻인지 잘 모르겠습니다. 마지막 그림에서 선과 직사각형을 그릴 것입니다. 스테이지를 사용하는 경우 액터를 그려야하는 순서대로 스테이지에 추가해야 함을 의미합니다. 레이어를 나타내는 그룹 (https://stackoverflow.com/a/17558220/506796 – Tenfour04
)을 사용하면 프레임이 투명 해지고 프레임 아래에 개체가 거의 없기 때문에이 작업을보다 쉽게 제어 할 수 있습니다. 특정 배우를 만질 때 줄무늬를 만들 수있는 방법이 있습니까? –
가위는 어떻게 작동하는지 거의 이해하지 못했지만 가위를 뒤집을 수있는 다른 방법이 있습니까? 직사각형을 넣고 선의 일부를 잘라내는 것처럼? (라인 만) –