2011-08-18 8 views
0

OpenGL을 사용하여 iPad 용 2D 게임을 만들려고합니다. OpenGL을 처음 접했을 때 새로운 점이 있습니다.OpenGL ES에서 2 개의 투명한 Texture2D 겹치기

내 그리기 코드는 다음과 같습니다

static CGFloat r=0; 
r+=2.5; 
r=remainder(r, 360); 

glLoadIdentity(); 
//you can ignore the rotating and scaling 
glRotatef(90, 0,0, -1); 
glScalef(1, -1, 1); 
glTranslatef(-1024, -768, 0); 

glClearColor(0.3,0.8,1, 1.0); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 


glEnableClientState(GL_VERTEX_ARRAY); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glEnable(GL_TEXTURE_2D); 
glEnable (GL_BLEND); 
glBlendFunc (GL_ONE,GL_ONE_MINUS_SRC_ALPHA); 

[texture drawInRect:CGRectMake(512-54, abs(sin(((r+45)/180)*3.14)*500), 108, 108)]; 
[texture drawInRect:CGRectMake(512-54, abs(sin((r/180)*3.14)*500), 108, 108)]; 

("텍스처"투명한 배경을 가진 Texture2D입니다) 내가하는 방법을 알아야 모든 그것을 만들되도록 주위에 파란색 상자 텍스처가 다른 하나를 덮지 않습니다.

답변

0

좋아하는 이미지 편집기에서 텍스처 이미지를 열고 알파 채널에서 파란색 영역을 0 % 불투명 (0)으로 설정하면됩니다. SRC_ALPHA 부분은 GL_ONE_MINUS_SRC_ALPHA이며 원본 텍스처의 알파 값을 의미합니다.

가능성은 32 비트 색상을 사용하고 있으며,이 경우 4 개의 채널, 빨간색, 녹색, 파란색 및 알파 용 8 비트 채널을 사용할 수 있습니다.

+0

저는 이미지 (http://i55.tinypic.com/34rsv9l.png)가 완전히 투명하다는 것을 100 % 확신합니다. – milo

+0

당신은 아마도 32 비트 컬러를 사용하고 있다고 말했습니까? 그게 어떤 영향을 미칠까요? – milo

+0

아니, 32 비트가 좋을거야. 파란색을 본다고했는데 다른 파란색 배경보다 투명해야하는 배경에 파란색 배경색이 보입니다. 그게 네 추첨 명령 인 것 같아. 투명도를 사용하면 가장 먼 쪽의 폴리곤을 먼저 렌더링해야합니다. 따라서 새로운 투명 영역이 배경과 블렌드 될 때 프레임 버퍼에 프레임 버퍼가 이미 존재합니다. 그렇지 않으면 배경과 혼합되어 다른 배경을 그립니다 하지만 투명해야하는 영역에 의해 가려집니다. –

관련 문제