Какой самый простой способ рисовать треугольные градиенты, используя OpenGL ES 2.x - PullRequest
1 голос
/ 21 января 2012

Я запускал свою программу на телефоне Android, который использует OpenGL 1.x, и для генерации треугольных градиентов я использовал этот код:



    gl11.glEnableClientState(GL10.GL_COLOR_ARRAY);
    gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, colorPointerShadow);
    gl11.glColorPointer(4, GL10.GL_FLOAT, 0, 0);

Однако мой новый телефон, который использует OpenGL 2.0, похож на э-э-э-э-А нет, ты делаешь, а потом вылетает.Итак, как мне нарисовать основной градиент на треугольнике?Можно ли это сделать, не втягивая все в бизнес шейдеров?Спасибо за чтение!

1 Ответ

2 голосов
/ 21 января 2012

OpenGL ES 2.0 не имеет обратной совместимости с 1.1. Вам нужно писать шейдеры, но не пугайтесь. Ваш вершинный шейдер может быть очень простым, например:

attribute vec4 Pos, Color; // vertex shader inputs
varying vec4 vColor;       // vertex shader output
uniform mat4 MVP;          // model-view-projection matrix
void main() {
    gl_Position = MVP * Pos;
    vColor = Color;
}

А ваш фрагментный шейдер может быть еще проще:

varying lowp vec4 vColor;   // vertex shader output
void main() {
    gl_FragColor = vColor;
}

Если вы назначите уникальный цвет каждому углу треугольника, вы увидите градиент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...