Как я могу изменить шейдер в шаблоне iPhone OpenGL ES, чтобы получить этот эффект? - PullRequest
2 голосов
/ 03 июня 2010

Я пытаюсь изменить фрагментный шейдер, который является частью стандартного шаблона iPhone / XCode OpenGL ES. Я хочу сделать так, чтобы каждый второй ряд пикселей был прозрачным. У меня есть этот код до сих пор:

varying lowp vec4 colorVarying;

void main()
{
   gl_FragColor = vec4(colorVarying.x, colorVarying.y, colorVarying.z, floor(mod(gl_FragCoord.y, 2.0)));

}

Но когда я собираю и запускаю, я все равно получаю один и тот же квадрат, двигаясь вверх и вниз без других эффектов.

Вот мой вершинный шейдер (моя клавиатура сломалась, поэтому клавиши возврата нет! DOH!)

attribute vec4 position;
attribute vec4 color;

varying vec4 colorVarying;

uniform float translate;

void main()
{
    gl_Position = position;
    gl_Position.y += sin(translate) / 2.0;

    colorVarying = color;
}

Используя этот вершинный шейдер и фрагментный шейдер выше, я не получаю «эффекта линии сканирования», на который я надеялся. Я тестирую с использованием симулятора iPad, а также симулятора iPhone 3.1.3.

Что я здесь не так делаю? Я полный n00b в Glsl - я пытаюсь научить себя самым основам (начиная с этого урока ).

1 Ответ

0 голосов
/ 03 июня 2010

Можете ли вы также опубликовать свой вершинный шейдер? Предполагая, что он проходит через vec4 colorVarying, нет причин, по которым он не должен работать, если его заключить в одну строку, в отличие от двухстрочного кода в образце (опубликованном ниже)

float odd = floor(mod(gl_FragCoord.y, 2.0));
gl_FragColor = vec4(colorVarying.x, colorVarying.y, colorVarying.z, odd);

Единственное другое отличие, которое я вижу, это то, что вы указали lowp - попробуйте без него.

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