Как мне сказать, «какой» у меня пиксель?
Вы не пиксель. Вы фрагмент . Есть причина, по которой OpenGL называет их «Фрагментные шейдеры»; это потому, что они не являются пикселями еще . Действительно, они не только не могут стать пикселями (с помощью
discard
или тестов глубины или чего-либо еще), благодаря мультисэмплингу, несколько фрагментов могут объединяться, образуя один пиксель.Если вы хотите сказать, где находится ваш фрагментный шейдер в пространстве окна, используйте
gl_FragCoord
. Позиции фрагментов являются значениями с плавающей точкой, а не целыми числами, поэтому вам нужно тестировать с диапазоном, а не с одним значением «100, 100».Во-вторых, как мне получить значения из соседнего пикселя?
Если вы говорите о соседнем пикселе кадрового буфера, вы не . Фрагментные шейдеры не могут произвольно считывать данные из буфера кадров, как в своей собственной позиции, так и в соседней.
Если вы говорите о доступе к соседнему текселю из того, к которому вы обращались, то это просто вопрос смещения координаты текстуры, которую вы передаете
texture2D
. Вы должны получить размер текстуры (так как вы не используете GLSL 1.30 или выше, вы должны передать это вручную), инвертировать размер и либо добавить, либо вычесть эти размеры из компонента S и T координаты текстуры .
Для поиска элементов в этом:
$(':visible, any-selector', this)
$(this).find(':visible, any-selector')
, если вы хотите получить истинный или ложный результат:
if($(this).is(':visible, any-selector')){
alert('this is visible, or matches "any-selector"');
}
else{
alert('this is hidden, or doesn\'t match "any-selector"');
}
Для этого предназначен метод filter ():
$(this).filter(":contains(foo)");
$(this).filter(":visible")
Согласно документам:
Удаляет все элементы из набора совпадающих элементов, которые не соответствуют указанному выражению (ям) .
используйте этот синтаксис: jQuery (выражение, [контекст])
$(":contains(foo)", this)
$(":visible", this)
$("any-selector", this)