Я не настолько опытен с WebGL (думаю, та же проблема может быть переведена в OpenGL). Я рендерил свои объекты, используя вершины и фрагментный шейдер. По сути, все шейдеры получают входной цвет для вершины и просто передают его без изменений до фрагмента, поэтому выполните следующие шаги:
In vertex shader, amongst other things:
attribute vec4 aVertexColor;
varying vec4 vColor;
.................
vColor = aVertexColor;
..................
In shader color:
varying vec4 vColor;
...........
gl_FragColor = vColor;
Теперь это работает нормально. Однако из того, что я вижу, интерполяция для фрагментов по умолчанию является линейной, и я хотел бы изменить ее на ближайшую. Теперь я пытаюсь сделать:
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
Но, похоже, это не имеет никакого эффекта, даже если я, например, изменю gl.NEAREST на gl.LINEAR, это абсолютно ничего не меняет, насколько я могу судить. Перезаписывает ли шейдер какие-то вещи, и поэтому я не получаю желаемого эффекта?
Теперь я прикрепил полученный результат. Теперь я нацеливаюсь на треугольник в трех областях разного цвета (так же, как вершины). Поэтому в моем случае я стремлюсь к ~ 1,3 синему, ~ 1,3 зеленому, ~ 1,3 красному без каких-либо промежуточных цветов. Есть намеки?
Вот что я хочу получить: