두 개의 레이어를 그립니다. 정적 배경 텍스처 및 투명 파트가있는 텍스처 (png). 나는 아무 문제없이 배경을 정확하게 볼 수있다. 내가 뭘하고 싶은지는 상단 레이어의 투명 부분을 투명하게 볼 수 있도록 런타임에 변경되는 크기의 폴리곤 (직사각형)을 그려서 맨 위 레이어를 수정하는 것입니다.다각형이 OpenGL ES에있는 다각형이있는 곳에 투명하게 텍스처를 그리기 위해 그립니다.
나는 아이폰 용으로 Cocos2d를 사용 중이며 작성자 (# 6 참조)가 solution을 찾았으나 그의 예제에서는 다른 PNG 파일을 마스크로 사용하고 있습니다. 가변 높이와 너비로 런타임에 투명한 부분이 만들어지기 때문에 이미지가 작동하지 않습니다. 이미지 (마스크)를 반복해서 그리는 오버 헤드는 계속 생각할 것입니다.
나는 이것을 잠시 동안 연구했고, 폴리곤을 알파 채널로 그리는 것에 대해 이야기하는 사람이 몇 명 있었고이 폴리곤을이 채널로 끌어 와서 약간 투명하게 만들지는 못했다. 더 밝은 색상.
난 그냥 간단하게 뭔가를 놓친 거지 바라고 :
이 또한 어쩌면 읽기 .... 내가 GL_ONE GL_ZERO GL_ALPHA_FROM_SRC 등의 diffrent 조합의 톤을 시도 RenderTexture *mBurnLayer = [RenderTexture renderTextureWithWidth:512 height:512];
Sprite *burn = [Sprite spriteWithFile:@"bg-new.png"];
[burn setPosition:cpv(480/2,320/2)];
[mBurnLayer setPosition:cpv(256,256)];
[mBurnLayer begin];
glColorMask(TRUE, TRUE, TRUE, TRUE);
[burn visit];
glColorMask(TRUE, TRUE, TRUE, FALSE);
[mBurnLayer end];
[self addChild:mBurnLayer];
[mBurnLayer begin];
glColorMask(FALSE, FALSE, FALSE, TRUE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
glColor4ub(1, 1, 1, 0.5);
glLineWidth(10);
CGPoint vertices[] = { ccp(100,100), ccp(100,200), ccp(200,200), ccp(200,100) };
drawPoly(vertices, 4, YES);
glColorMask(TRUE, TRUE, TRUE, TRUE);
을 그냥를 필요 텍스처 클립? 셰이더 없이도 가능합니까? iPhone 3GS는 쉐이더를 처리 할 수 있지만 이전 버전은 쉐이더를 처리 할 수 없다는 것을 알고 있습니다.