Войти
Мобильные платформыФорумОбщее

OpenGL ES 2.0 и шейдеры (2 стр)

Страницы: 1 2
#15
0:00, 8 мая 2013

gammaker
> А что, это обязательно?

Пожалуй, отвечу словами mrt, который несколькими постами ранее сказал:
> Как по мне, если в OpenGL можно что-то не указывать... лучше это указать! :D

:)


#16
0:02, 8 мая 2013

Роман Шувалов
> выключен ли CULL_FACE (если ты его не трогал - из-за, например, ошибки в
> драйвере он может быть по умолчанию выставлен не так, как ты задумал)

Вершины у меня везде в одном порядке, т.е. либо все рисуется либо все не рисуется, но на верочку сделал:

  glEnable(GL_CULL_FACE);
  glCullFace(GL_BACK);
  glFrontFace(GL_CW);

... Явно указал слот для текстуры, завтра потестят.

Шейдер, который "отображается":

// vertex
#version 100

uniform mat4 prj;
uniform float x;
uniform float y;

attribute vec4 vx;
attribute vec2 tc;

varying vec2 uv;

void main(void)
{
  uv = tc;
  vec4 pos = vx;
  pos.x += x;
  pos.y += y;
  gl_Position = prj*pos;
}

// fragment
#version 100

precision lowp float;

uniform sampler2D tex;

varying vec2 uv;

void main(void)
{
  vec4 mid = texture2D(tex, uv);

  if(mid.a<0.5)
    discard;

  gl_FragColor = vec4(1,1,1,1);
}

Который не отображается - выше постом.

#17
0:08, 8 мая 2013

RmzVoid
> но на верочку сделал:
На верочку лучше наоборот отключать, в этом случае рисоваться будут обе стороны.

> discard;
Избегай дискардов. Тормозучая штука. Лучше влючить блэндинг и рисовать с нулевой альфой. И вообще вместо if'a можно использовать функцию step, результат которой запихивать в альфу.

Анализировать твой код сейчас уже не могу, башка не соображает, спать пора. Сравни построчно рабочий и нерабочий и добавляй/удаляй по 1 строчке из рабочего в нерабочий. Может что узнаешь.

#18
2:36, 8 мая 2013

попробуй вместо texture2D просто texture - был один раз станный эффект.

#19
11:18, 8 мая 2013

Добавил в процедуру рендера после кадого вызова ГЛ проверку ошибок (glGetError()) девайс ведет себя неодыкватно. При наличии ошибки должен показываться мессадж бокс как на скрине выше. Видимо ошибки есть и от большого количества месаджбоксов телефон зависает. Как остановить рендер пока месадж бокс активен? Месаджбокс и рендер естесно происходят в разных потоках.

#20
12:04, 8 мая 2013

Ошибки выводи в logcat.

#21
12:48, 8 мая 2013

Роман Шувалов
я не могу людям устанавливать ADB :) У себя то я именно так и делаю, но у меня все работает.

#22
13:21, 8 мая 2013

Насчет glUniform1i(tex, 0).
На самом деле, по умолчанию, стоит всегда первый текстурный юнит, так что суетиться не следует, если не используешь больше одной текстуры в шейдере. Но где-нибудь на этапе инициализации все же на всякий проставить не помешает. Ибо OpenGL.

Роман Шувалов
> Пожалуй, отвечу словами mrt, который несколькими постами ранее сказал:
хехе, хороший пост :)

#23
19:13, 8 мая 2013

Посмотри как в Linderdaum Engine сделано это - там одни и те же шейдеры идут и на GL3 Core и на GLES 2, путём небольшого препроцесса.

#24
11:56, 10 мая 2013

Просто ппц... не обратил внимания на описание glDrawElements в качестве типа можно указывать только GL_UNSIGNED_BYTE or GL_UNSIGNED_SHORT и по старинке запилил INT.
А текст то я рисую с помощью DrawArrays поэтому вот так вот :)

Страницы: 1 2
Мобильные платформыФорумОбщее

Тема в архиве.