Ошибка OpenGL-ES TRIANGLE_STRIP - PullRequest
       0

Ошибка OpenGL-ES TRIANGLE_STRIP

0 голосов
/ 30 января 2011
    float coords[] = {
              -1.0f,  1.0f, 0.0f,  // 0, Top Left
              -1.0f, -1.0f, 0.0f,  // 1, Bottom Left
               1.0f, -1.0f, 0.0f,  // 2, Bottom Right
               1.0f,  1.0f, 0.0f,  // 3, Top Right
    };


    float texCoords[] = { 
            0.0f, 0.0f, 
            0.0f, 1.0f, 
            1.0f, 1.0f, 
            1.0f, 0.0f, 
        };

при розыгрыше:

gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, coords.length/dimension);

рисуй нормально, но

gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, coords.length/dimension);

это рисует только половину квадрата, почему?

1 Ответ

3 голосов
/ 30 января 2011

Для того, чтобы это работало, порядок точек должен быть: TL, BL, TR, BR.

Когда вы указываете веер, точки идут вокруг самой первой точки. Каждый треугольник состоит из этой самой первой точки, следующей точки в списке и последней точки из предыдущего треугольника.

С полосой все по-другому. Полосовые треугольники используют последние две точки из предыдущего и нового в списке. Это имеет побочный эффект: каждый треугольник имеет противоположную обмотку (CW, чем CCW, затем CW снова и т. Д.).

enter image description here

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