2016-03-10 1 views
0

Я пытаюсь сделать эту цветовую карту в OpenGLГладких цветов с GL_QUAD_STRIPS

COLOR_MAP

При использовании квадрациклов, результат выглядит отлично:

int colorArr[] = { 255, 224, 192, 160, 128, 96, 64, 32 }; 
gluOrtho2D(-2, 2, -2, 2); 
glPolygonMode(GL_FRONT, GL_FILL); 

glDisable(GL_COLOR_LOGIC_OP); 
glClear(GL_COLOR_BUFFER_BIT); 
glBegin(GL_QUADS); 
for (int i = 0; i < 8; i++) { 
    glColor3ub(colorArr[7 - i], 0, 0); 
    glVertex2f(-4, i - 4); 
    glVertex2f(4, i - 4); 
    glVertex2f(4, i - 4 + 1); 
    glVertex2f(-4, i - 4 + 1); 
} 
glEnd(); 

glEnable(GL_COLOR_LOGIC_OP); 
glLogicOp(GL_OR); 

glBegin(GL_QUADS); 
for (int i = 0; i < 8; i++) { 
    glColor3ub(0, colorArr[i], 0); 
    glVertex2f(i - 4, 4); 
    glVertex2f(i - 4, -4); 
    glVertex2f(i - 4 + 1, -4); 
    glVertex2f(i - 4 + 1, 4); 
} 
glEnd(); 

glFlush(); 

Но если я использую QUAD_STRIPS рисовать полигоны, цвет становится гладким между линиями:

int colorArr[] = { 255, 224, 192, 160, 128, 96, 64, 32 }; 
gluOrtho2D(-2, 2, -2, 2); 
glPolygonMode(GL_FRONT, GL_FILL); 

glDisable(GL_COLOR_LOGIC_OP); 
glClear(GL_COLOR_BUFFER_BIT); 

glBegin(GL_QUAD_STRIP); 
for (int i = 0; i < 8; i++) { 
    glColor3ub(colorArr[7 - i], 0, 0); 
    glVertex2f(-4, i - 4); 
    glVertex2f(4, i - 4); 
} 
glVertex2f(-4, 4); 
glVertex2f(4, 4); 
glEnd(); 

glEnable(GL_COLOR_LOGIC_OP); 
glLogicOp(GL_OR); 

glBegin(GL_QUAD_STRIP); 
for (int i = 0; i < 8; i++) { 
    glColor3ub(0, colorArr[i], 0); 
    glVertex2f(i - 4, 4); 
    glVertex2f(i - 4, -4); 
} 
glVertex2f(4, 4); 
glVertex2f(4, -4); 
glEnd(); 
glFlush(); 

У вас есть идея почему?

ответ

0

Четырехъядерная полоса рисуете является equivant к этому:

glBegin(GL_QUADS); 
for (int i = 0; i < 7; i++) { 
    glColor3ub(colorArr[7 - i], 0, 0); 
    glVertex2f(-4, i - 4); 
    glVertex2f(4, i - 4); 
    glColor3ub(colorArr[7 - i+1], 0, 0); 
    glVertex2f(4, i - 4 + 1); 
    glVertex2f(-4, i - 4 + 1); 
} 

Вы меняя цвет каждую 2 вершины и цвета интерполируются как атрибут к следующей/предыдущей точке.

Смежные вопросы