Вы можете использовать эту функцию:
function isInteger(value) {
return (value == parseInt(value));
}
Она вернет true, даже если значение является строкой, содержащей целочисленное значение.
Итак, результаты будут:
alert(isInteger(1)); // true
alert(isInteger(1.2)); // false
alert(isInteger("1")); // true
alert(isInteger("1.2")); // false
alert(isInteger("abc")); // false
Попробуйте очищать буфер шаблона глубины после каждого рендеринга четырехугольника.
Для запуска пиксельного шейдера должен быть какой-то вид вершинного ввода и обработки вершин (фиксированная функция или шейдер). Поставляете ли вы вершинный шейдер, и если да, уверены ли вы, что он выполняет то, что ожидает пиксельный шейдер? Как выглядит ваш вызов отрисовки?
Вероятно, стоит взглянуть на PIX-трассировку вашего приложения, чтобы узнать, в каком состоянии находится устройство при попытке использовать пользовательский эффект.
Сначала создайте текстуру, затем визуализируйте первый шейдер непосредственно в этой текстуре. Наконец, визуализируйте второй шейдер с текстурой в качестве входных данных для Backbuffer.