Есть ли без затенения способ рисовать несколько точек с разными размерами, используя glDrawArrays ()? - PullRequest
0 голосов
/ 21 ноября 2018

Я рисую облако точек с разными цветами точек следующим образом:

    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_COLOR_ARRAY);


    glVertexPointer(3, GL_FLOAT, 0, vertices.get());
    glColorPointer(3, GL_FLOAT, 0, colors.get());


    glDrawArrays(GL_POINTS, 0, n);


    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_COLOR_ARRAY);

есть ли способ указать glDrawArrays (или шейдер по умолчанию) использовать другое состояние клиента для размера каждой точки

1 Ответ

0 голосов
/ 21 ноября 2018

Если бы это было, это было бы ужасно неэффективно!

  1. Использовать программируемый конвейер в основном контексте => OpenGL 3.3 и выше.
  2. Создать буфер со всеми вашими вершинами (вашими точками).
  3. Создатьбуфер с размерами каждой точки.
  4. Передача буферов 2 и 3 в ваш вершинный шейдер.Присвойте размер глобальному gl_PointSize.

Если вы не получаете то, что я предлагаю, вы должны начать с изучения современного способа рендеринга OpenGL:)

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