Android GLSurfaceView OpenGL ES с линейно-градиентным фоном?

с помощью этого кода я могу очистить фон и добавить цвет:

gl.glEnable(GL10.GL_DEPTH_TEST);    
gl.glClearColor(0.0f, 0.25f, 0.35f, 1.0f);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

Как я могу изменить это, чтобы иметь фон с линейным градиентом? например Белый цвет вверху и синий цвет внизу?


person user1405328    schedule 19.05.2012    source источник


Ответы (1)


Нет способа очистить градиент, но я бы просто нарисовал цветной квадрат вместо очистки цвета:

void drawFrame() {
   glDisable(GL_DEPTH_TEST);
   //draw screen aligned quad with color gradient 
   //    (top two vertices white, bottom two blue)
   drawGradientQuad();

   glClear(GL_DEPTH_BUFFER_BIT); //no need to clear color

   glEnable(GL_DEPTH_TEST);
   //draw rest of scene
}
person Tim    schedule 19.05.2012
comment
Я ничего не могу найти о GL_QUADS? - person user1405328; 19.05.2012
comment
@user1405328 user1405328 Ваш комментарий является утверждением, а не вопросом, и я не понимаю, о чем вы говорите. Если вас что-то смущает, уточните. - person Tim; 19.05.2012
comment
Извини. DrawGradientQuad(); это реальная функция или это только пример? Я нашел сайт. Я думаю, это то же самое, что вы сказали. Но это не работает. opengl.org/discussion_boards/showthread.php/ - person user1405328; 19.05.2012
comment
@ user1405328 Нет, это не настоящая функция, это просто псевдокод. Я предполагал, что вы знаете, как рисовать простые фигуры самостоятельно. Если вы не знаете, как это сделать, я уверен, что вы можете найти множество руководств и ресурсов по рисованию треугольников и четырехугольников. - person Tim; 19.05.2012