Я рендеринг 2 треугольников, чтобы сделать квадрат, используя один вызов отрисовки с GL_TRIANGLE_STRIP.
Я вычисляю положение и уф в шейдере с:
vec2 uv = vec2(gl_VertexID >> 1, gl_VertexID & 1);
vec2 position = uv * 333.0f;
float offset = 150.0f;
mat4 model = mat4(1.0f);
model[3][1] = offset;
gl_Position = projection * model * position;
проекция является регулярнойортографическая проекция, соответствующая размеру экрана.
В фрагментном шейдере я хочу нарисовать каждую первую строку пикселей синим цветом, а каждую вторую линию пикселей красным цветом.
int v = int(uv.y * 333.0f);
if (v % 2 == 0) {
color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
} else {
color = vec4(0.0f, 0.0f, 1.0f, 1.0f);
}
Это работает нормальнооднако, если я использую смещение, которое даст мне субпиксельный перевод:
offset = 150.5f;
2 треугольника не получат соответствующие значения uv, как показано на этом рисунке:
Что я делаю не так?