Нет «320x240 glOrtho canvas». Фактическое разрешение окна: 960x720.
Все, что вы делаете, - это увеличение координат примитивов, которые вы визуализируете. Таким образом, ваш код говорит, чтобы сделать линию от, например, (20, 20) до (40, 40). И OpenGL (в конечном счете) масштабирует эти координаты на 3 в каждом измерении: (60, 60) и (120x120).
Но это касается только конечных точек . То, что происходит посередине, по-прежнему основывается на том факте, что вы выполняете рендеринг в фактическом разрешении окна.
Даже если вы использовали glLineWidth
для изменения ширины ваших линий, это только исправило бы линию ширина. Это не повлияет на то, что растрирование линий основано на фактическом разрешении, которое вы выполняете. Таким образом, диагональные линии не будут иметь пикселированный вид, который вы, вероятно, захотите.
Единственный способ сделать это правильно - это правильно сделать это. Отобразите изображение, которое является фактическим 320x240, затем примените его к фактическому разрешению окна.
Вам нужно будет создать текстуру этого размера, а затем привязать его к объекту framebuffer . Привяжите FBO для рендеринга и рендеринга к нему (при этом размер окна просмотра установлен на размер изображения). Затем отвяжите FBO и нарисуйте эту текстуру в окне (с учетом окна просмотра).
Вы должны использовать второй вызов для включения таймеров:
Подробнее здесь
test('rateLimit', () => {
const action = jest.fn();
const doAction = rateLimit(action, 100);
doAction(); // This should increment the call count
doAction(); // This shouldn't, because 100ms hasn't elapsed yet
jest.runAllTimers();
doAction(); // This should increment the count again
jest.runAllTimers();
expect(action).toHaveBeenCalledTimes(2);
});
Ваш ограничитель скорости использует метод trailing
, в котором он отменяет любые текущие вызовы, когда поступают новые ... до тех пор, пока не истечет время ожидания, в этот момент вызывается функция.
Вам просто нужно снова продвинуть таймеры, чтобы снова вызвать функцию:
jest.useFakeTimers();
test('rateLimit', () => {
const action = jest.fn();
const doAction = rateLimit(action, 100);
doAction(); // This should increment the call count
doAction(); // This shouldn't, because 100ms hasn't elapsed yet
jest.advanceTimersByTime(101);
doAction(); // This should increment the count again
jest.advanceTimersByTime(101); // <= advance the timers again
expect(action).toHaveBeenCalledTimes(2); // Success!
});