Этих потенциальных сложностей можно избежать, если использовать простую инструментальную библиотеку, как мы делали это при обсуждении некоторых вопросов в главе 2. Такая инструментальная библиотека должна поддерживать выполнение базовых функций, которые существуют в том или ином виде в любой операционной системе, - открытие окна приложения, работа с клавиатурой и мышью, создание меню. В данной главе мы воспользуемся именно таким подходом, хотя он и не позволяет использовать с максимальной эффективностью весь спектр функциональных возможностей каждой отдельной операционной среды.
Мы будем по-прежнему использовать термин система окон (windowing system) в том же смысле, что и в главе 2, подразумевая под ним какую-либо операционную среду, способную формировать окна приложений, например среду X Window, Microsoft Windows или операционную систему компьютеров Macintosh. Те графические программы, которые будут рассмотрены в этой главе, заполняют область окна, выделенного приложению, действуя в среде одной из перечисленных операционных систем. Та терминология, которая уже устоялась в литературе по операционным системам, может иногда приводить к путанице, особенно при использовании термина "окно". Но вы всегда можете рассматривать окно OpenGL как частный случай окна операционной системы, например X Window. Использование инструментальной библиотеки GLUT позволит нам избежать сложностей, связанных с взаимодействием системы окон, менеджера окон и графической системы. Как и те программы, которые мы рассматривали в главе 2, новые графические программы также не будут зависеть от конкретной платформы, если только на ней функционирует своя версия библиотеки GLUT.
Начнем изложение материала этой главы с описания нескольких типов устройств ввода и способов организации взаимодействия с пользователем на их базе. Затем будет рассказано о том, как эти устройства можно применять в сетевых системах класса "клиент/сервер". После
Ввод и взаимодействие с пользователем
этого будут описаны пакет API, обеспечивающий минимально необходимый набор функций взаимодействия, и простая графическая программа на его основе.