Суббота, 21 Декабря 2024, 19:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
надо разобраться с шейдерами
afqДата: Среда, 25 Июля 2018, 05:59 | Сообщение # 1
Разработчик
Сейчас нет на сайте
Вот какая проблема. Есть такие шейдеры, которые я напишу ниже. Пока я знаю так как написано, и у меня множество вопросов возникает.
Код

const char *vShaderstr =
  "#version 300 es\n"
  "layout(location = 0) in vec4 a_color;\n"
  "layout(location = 1) in vec2 a_position;\n"
  "out vec4 v_color;\n"
  "void main()\n"
  "{\n"
  " v_color = a_color;\n"
  " gl_Position = a_position;\n"
  "}";
    const char *fShaderstr =
  "#version 300 es\n"
  "precision lowp float;\n"
  "in vec4 v_color;\n"
  "out vec4 o_fragColor;\n"
  "void main()\n"
  "{\n"
  " o_fragColor = v_color;\n"
  "}";

проблема в том, как я думаю, что vec4 это float. А мои данные такие.
Код

    glVertexAttribPointer ( 0, 4, GL_UNSIGNED_BYTE, GL_FALSE, 0, pixels );
    glVertexAttribPointer ( 1, 2, GL_INT, GL_FALSE, 0, vertices );
    glEnableVertexAttribArray ( 0 );
    glEnableVertexAttribArray ( 1 );
    glDrawArrays ( GL_POINTS, 0, max_draw );

по этому коду видно, что pixels состоит из байтов, четыре цвета на пиксель, то есть rgba, и координаты vertices, которые по x,y, то есть всего две координаты, и не float а int. Думаю в этом коде много проблем. Но как правильно надо?

Так как я разобрался с этим
Код

#if 0
    glVertexPointer ( 2, GL_INT, 0, vertices );
    glColorPointer ( 4, GL_UNSIGNED_BYTE, 0, pixels );
#endif

мне захотелось узнать больше, и попробывать с помощью шейдеров работать.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг