Трехмерные графики функций

Что такое драйвер Понять, что такое драйвер, мы попробуем на типовом примере взаимодействия прикладной программы с драйвером.
Код прикладной программы исполняется в пользовательском режиме работы процессора. В этом случае имеется ряд серьезных ограничений, связанных с доступом к памяти, аппаратным обеспечением и привилегированными инструкциями процессора. Когда возникает необходимость в преодолении этих ограничений, прикладная программа обращается к ядру ОС, код которого исполняется процессором в режиме ядра. Режим ядра лишен всех упомянутых ограничений. Для расширения функциональных возможностей ядра служат драйверы ядра (kernel mode drivers). Как они работают? Теоретическая механика Под вызовом драйвера здесь подразумевается не обычный вызов функции, а передача так называемого запроса ввода/вывода.

Включаем анимацию

Реакция на сообщение о том, что истек очередной квант времени в 33 миллисекунды (именно такую установку мы сделали в OnLButtonUp) выглядит очень просто. Увеличиваем углы поворота изображения на те кванты, которые вычислили в функции OnMouseMove и вызываем перерисовку окна. Так как при непрерывном вращении углы постоянно растут, то можно искусственно реализовать естественную их периодичность с циклом в 360 градусов. Однако с этой задачей успешно справляется OpenGL, и вы можете убрать код ограничения углов:

void COGView: :OnTimer (UINT nIDEvent)

{

//====== Если это был наш таймер

if (nIDEvent==l)

{

//====== Увеличиваем углы поворота

m_AngleX += m_dy;

m_AngleY += m_dx;

//====== Ограничители роста углов

if (m_AngleX > 360)

m_AngleX -= 360;

if (m_AngleX <-360)

m_AngleX += 360;

if (m_AngleY > 360)

m_AngleY -=360;

if (m_AngleY <-360)

m_AngleY +=360;

//====== Просим перерисовать окно

Invalidate(FALSE);

}

else

//=== Каркас приложения обработает другие таймеры

CView::OnTimer(nIDEvent);

}

Запустите и протестируйте приложение. Скорректируйте, если необходимо, коэффициенты чувствительности.

Курс лекций Сопротивление материалов