Код: Выделить всё
pix[x,y] = blend( texel, pix[x, y + 100] )
Как это может произойти, когда адрес назначения и адрес источника — одно и то же, я не знаю. Хуже всего то, что когда это смещение находится за пределами памяти целевой текстуры, я получаю мусор. Я также видел смещение в горизонтальном направлении. Я использую GLES20.GlBlendFunc( GLES20.GlSrcAlpha, GLES20.GlOneMinusSrcAlpha); для параметра смешивания, который делает то, что я хочу, за исключением неправильного адреса пикселя, поэтому я думаю, что его изменение в любом случае не поможет.< /p>
Чтобы продемонстрировать эффект (см. ниже), я отрисовал полупрозрачный четырехугольник поверх всей текстуры. (всего лишь gl_FragColor = { 0,0,0,0.2 }). Как вы можете видеть, он смешивает пиксели, расположенные примерно на 100 пикселей ниже, вызывая слабое дублирование изображения и смешивание мусора, когда эти пиксели находятся за пределами памяти целевой текстуры.
Это происходит не на всех телефонах, которые я пробовал, но на некоторых бывает. На одном телефоне смешивание было не смещением, а смешиванием пикселей из предыдущего кадра?!? (может быть, обратный буфер?) Я не верю, что предыдущий буфер вызывает проблему смещения, поскольку я визуализировал увеличение числа в каждом кадре, и одно и то же число было реплицировано при смешивании смещения.
Моей первой мыслью было создать текстуру назначения сила 2 квадрата, но без радости.
Тоже пробовал
GLES20.GlClearColor( 0,0,0,1 );
GLES20.GlClear( GLES20.GlColorBufferBit | GLES20.GlDepthBufferBit | GLES20.GlStencilBufferBit );
< /code>
На старте просто чтобы убедиться, что мы начинаем с чистого сланца. Обратите внимание на глубину или буферы трафарета не используются - они просто признаки моего отчаяния.
Я действительно надеюсь p>
Подробнее здесь: https://stackoverflow.com/questions/793 ... ha-blended