2011-03-26 2 views
3

glColor3f() 및 GL_QUAD_STRIP을 사용하여 서로 옆에 2 개의 사각형을 그리지 만, 2 개의 사각형 사이에 색상이 희미 해지고있는 것 같습니다.이를 예방할 수있는 방법이 있습니까? 아니면 GL_QUAD_STRIP은 단순히 이런 종류의 것을 의미하지 않습니까? GL_QUADS가 더 적절하지만, 너무 쉽습니다.OpenGL GL_QUAD_STRIP이 glColor3f()와 함께 변합니다.

glBegin(GL_QUAD_STRIP); 

glColor3f(1.0f, 1.0f, 1.0f); 
glVertex3f(0.0f, 0.0f, 0.0f); 
glVertex3f(0.0f, 1.0f, 0.0f); 
glVertex3f(1.0f, 0.0f, 0.0f); 
glVertex3f(1.0f, 1.0f, 0.0f); 
glColor3f(0.0f, 0.0f, 0.0f); 
glVertex3f(2.0f, 0.0f, 0.0f); 
glVertex3f(2.0f, 1.0f, 0.0f); 
glColor3f(1.0f, 1.0f, 1.0f); 

glEnd(); 
+0

코드를 게시한다. –

+0

스크린 샷을 게시해야합니다. –

+0

GL 버전은 무엇입니까? – Bahbar

답변

7

일반적으로 색상은 각 쿼드가 아닌 각 꼭지점에 연결됩니다. 그래서 2 개의 꼭지점이 스트립의 2 쿼드 사이에서 공유되기 때문에, 여러분은 두 가지 모두에 사용되는 색상을 얻습니다. 그리고 관찰하고있는 "페이딩"을 보간이라고합니다.

그러나 특별한 경우에는 다음과 같은 OpenGL 모드가 있습니다. OpenGL에 색상을 전혀 삽입하지 말고 각 프리미티브의 마지막 꼭지점의 색상 만 가져올 수 있습니다 (여기에서는 쿼드). 완전한 원시적.

이는 the following state로 수행됩니다

glShadeModel(GL_FLAT); 
+0

고마워, 이건 내 코드에 대한 작동하지 않았다. glBegin() 전에 배치하고 여전히 가장자리를 들쭉날쭉하게 만들었습니다. – atx

+0

@maify : 그러면 렌더링하는 방법에 대한 더 많은 데이터를 제공해야합니다. (그리고 OpenGL에 glGetError에 오류가있는 경우). – Bahbar

0

당신이 glColor3f 전화를 걸 때마다 다른 색상으로 다른 glColor3f 전화 통화를 할 때까지 각각의 정점에 해당 색상을 연결합니다. 나는 GL_QUADS를 사용하고 이것 (watchwise order, 나는 믿는다)과 같은 두 개의 분리 된 쿼드로 분해 할 것이다 :

glBegin(GL_QUADS); 

glColor3f(1.0f, 1.0f, 1.0f); 
glVertex3f(0.0f, 0.0f, 0.0f); 
glVertex3f(0.0f, 1.0f, 0.0f); 
glVertex3f(1.0f, 1.0f, 0.0f); 
glVertex3f(1.0f, 0.0f, 0.0f); 

glColor3f(0.0f, 0.0f, 0.0f); 
glVertex3f(1.0f, 0.0f, 0.0f); 
glVertex3f(1.0f, 1.0f, 0.0f); 
glVertex3f(2.0f, 1.0f, 0.0f); 
glVertex3f(2.0f, 0.0f, 0.0f); 

glEnd(); 
관련 문제