2009-04-06 6 views
5

다음 스 니펫은 회색 사각형을 그립니다.OpenGL에서 정점의 불투명도를 설정하려면 어떻게해야합니까?

glColor3b(50, 50, 50); 

glBegin(GL_QUADS); 
glVertex3f(-1.0, +1.0, 0.0); // top left 
glVertex3f(-1.0, -1.0, 0.0); // bottom left 
glVertex3f(+1.0, -1.0, 0.0); // bottom right 
glVertex3f(+1.0, +1.0, 0.0); // top right 
glEnd(); 

내 응용 프로그램에는이 정사각형 뒤에 컬러 큐브가 있습니다.

사각형을 (그리고이 사각형 만) 불투명하게 만들려면 어떤 기능을 사용해야합니까?

+0

관련 http://stackoverflow.com/questions/1617370/opengl-alpha-transparency –

답변

9

당 색상을 설정할 수 있습니다

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

그리고 당신의 렌더링 기능에, 그 glColor4f가 확인 glColor3f 대신에 사용하고 4 번째 인수를 필요한 불투명도 수준으로 설정하십시오.

glColor4f(1.0, 1.0, 1.0, 0.5); 

glBegin(GL_QUADS); 
glVertex3f(-1.0, +1.0, 0.0); // top left 
glVertex3f(-1.0, -1.0, 0.0); // bottom left 
glVertex3f(+1.0, -1.0, 0.0); // bottom right 
glVertex3f(+1.0, +1.0, 0.0); // top right 
glEnd(); 
2

glColor4f (float r, float g, float b, flaot alpha);
(아마도 clColor4b 일 수도 있습니다)
블렌딩이 활성화되어 있는지 확인하십시오.

2

사용 glColor4 대신 glColor3 (당신은 이전 vertexcolor을 저장할 glGet의 *를 포함 할 수있는 비 알파 afterwads에 색상을 재설정해야합니다). 예를 들어 :

glBlendFunc(GL_SRC_ALPHA,GL_ONE); 
glColor4f(1.0f,1.0f,1.0f,0.5f); 
+0

감사합니다. 흠, 나를 위해 일하는 것 같지 않습니다, 내가 뭘 잘못 할 수 있을까? –

2

당신은이 두 줄을 사용하여 init 함수에서 정점

glBegin(GL_QUADS); 
glColor4f(1.0, 0.0, 0.0, 0.5); // red, 50% alpha 
glVertex3f(-1.0, +1.0, 0.0); // top left 
// Make sure to set the color back since the color state persists 
glVertex3f(-1.0, -1.0, 0.0); // bottom left 
glVertex3f(+1.0, -1.0, 0.0); // bottom right 
glVertex3f(+1.0, +1.0, 0.0); // top right 
glEnd(); 
관련 문제