В настоящее время я работаю над небольшим проектом на C ++ и OpenGL и пытаюсь реализовать инструмент выбора цвета, аналогичный тому, что используется в Photoshop, как показано ниже.
Однако у меня возникли проблемы с интерполяцией большого квадрата. При работе на моем настольном компьютере с 8800 GTS результат был аналогичным, но смешивание не было таким гладким.
Это код, который я использую:
GLfloat swatch[] = { 0,0,0, 1,1,1, mR,mG,mB, 0,0,0 };
GLint swatchVert[] = { 400,700, 400,500, 600,500, 600,700 };
glVertexPointer(2, GL_INT, 0, swatchVert);
glColorPointer(3, GL_FLOAT, 0, swatch);
glDrawArrays(GL_QUADS, 0, 4);
При переходе на мой ноутбук с Intel Graphics HD 3000 результат был еще хуже, без изменения кода.
Я думал, что OpenGL разделяет четырехугольник на два треугольника, поэтому я попытался отрендерить с использованием треугольников и самостоятельно интерполировать цвет в середине квадрата, но это все еще не совсем соответствует результату, на который я надеялся.