OpenGL

Поделись знанием:
Перейти к: навигация, поиск
OpenGL
Тип

API

Разработчик

Silicon Graphics, затем Khronos Group

Операционная система

Кроссплатформенное программное обеспечение

Последняя версия

4.5 (11 августа 2014)

Состояние

смотри Vulkan

Лицензия

Различные

Сайт

[www.opengl.org/ ngl.org]

К:Википедия:Статьи без изображений (тип: не указан)

OpenGL (Open Graphics Library) — спецификация, определяющая платформонезависимый (независимый от языка программирования) программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

Включает более 300 функций для рисования сложных трёхмерных сцен из простых примитивов. Используется при создании компьютерных игр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурирует с Direct3D.





Спецификация

На базовом уровне, OpenGL — это просто спецификация, то есть документ, описывающий набор функций и их точное поведение. Производители оборудования на основе этой спецификации создают реализации — библиотеки функций, соответствующих набору функций спецификации. Реализация призвана эффективно использовать возможности оборудования. Если аппаратура не позволяет реализовать какую-либо возможность, она должна быть эмулирована программно. Производители должны пройти специфические тесты (conformance tests — тесты на соответствие) прежде чем реализация будет классифицирована как OpenGL-реализация. Таким образом, разработчикам программного обеспечения достаточно научиться использовать функции, описанные в спецификации, оставив эффективную реализацию последних разработчикам аппаратного обеспечения.

Эффективные реализации OpenGL существуют для Windows, Unix-платформ, PlayStation 3 и Mac OS. Эти реализации обычно предоставляются изготовителями видеоадаптеров и активно используют возможности последних. Существуют также открытые реализации спецификации OpenGL, одной из которых является библиотека Mesa. Из лицензионных соображений Mesa является «неофициальной» реализацией OpenGL, хотя полностью с ней совместима на уровне кода и поддерживает как программную эмуляцию, так и аппаратное ускорение при наличии соответствующих драйверов.

Спецификация OpenGL пересматривается консорциумом ARB (Architecture Review Board), который был сформирован в 1992 году. Консорциум состоит из компаний, заинтересованных в создании широко распространённого и доступного API. Согласно официальному сайту OpenGL, членами ARB с решающим голосом на ноябрь 2004 года являются производители профессиональных графических аппаратных средств SGI, 3Dlabs, Matrox и Evans & Sutherland (военные приложения), производители потребительских графических аппаратных средств ATI и NVIDIA, производитель процессоров Intel, и изготовители компьютеров и компьютерного оборудования IBM, Apple, Dell, Hewlett-Packard и Sun Microsystems, а также один из лидеров компьютерной игровой индустрии id Software. Microsoft, один из основоположников консорциума, покинула его в марте 2003 года. Помимо постоянных членов, каждый год приглашается большое количество других компаний, становящихся частью OpenGL ARB в течение одного года. Такое большое число компаний, вовлеченных в разнообразный круг интересов, позволило OpenGL стать прикладным интерфейсом широкого назначения с большим количеством возможностей.

Курт Экли (Kurt Akeley) и Марк Сигал (Mark Segal) являются авторами оригинальной спецификации OpenGL. Крис Фрэзиер (Chris Frazier) редактировал версию 1.1. Йон Лич (Jon Leech) редактировал версии с 1.2 по версию 2.0.

Архитектура

OpenGL ориентируется на следующие две задачи:

  • Скрыть сложности адаптации различных 3D-ускорителей, предоставляя разработчику единый API.
  • Скрыть различия в возможностях аппаратных платформ, требуя реализации недостающей функциональности с помощью программной эмуляции.

Основным принципом работы OpenGL является получение наборов векторных графических примитивов в виде точек, линий и треугольников с последующей математической обработкой полученных данных и построением растровой картинки на экране и/или в памяти. Векторные трансформации и растеризация выполняются графическим конвейером (graphics pipeline), который по сути представляет собой дискретный автомат. Абсолютное большинство команд OpenGL попадает в одну из двух групп: либо они добавляют графические примитивы на вход в конвейер, либо конфигурируют конвейер на различное исполнение трансформаций.

OpenGL является низкоуровневым процедурным API, что вынуждает программиста диктовать точную последовательность шагов, чтобы построить результирующую растровую графику (императивный подход). Это является основным отличием от дескрипторных подходов, когда вся сцена передается в виде структуры данных (чаще всего дерева), которое обрабатывается и строится на экране. С одной стороны, императивный подход требует от программиста глубокого знания законов трёхмерной графики и математических моделей, с другой стороны — даёт свободу внедрения различных инноваций.

Расширения

Стандарт OpenGL, с появлением новых технологий, позволяет отдельным производителям добавлять в библиотеку функциональность через механизм расширений. Расширения распространяются с помощью двух составляющих: заголовочный файл, в котором находятся прототипы новых функций и констант, а также драйвер устройства, поставляемого разработчиком. Каждый производитель имеет аббревиатуру, которая используется при именовании его новых функций и констант. Например, компания NVIDIA имеет аббревиатуру NV, которая используется при именовании её новых функций, как, например, glCombinerParameterfvNV(), а также констант, GL_NORMAL_MAP_NV. Может случиться так, что определённое расширение могут реализовать несколько производителей. В этом случае используется аббревиатура EXT, например, glDeleteRenderbuffersEXT. В случае же, когда расширение одобряется консорциумом ARB, оно приобретает аббревиатуру ARB и становится стандартным расширением. Обычно расширения, одобренные консорциумом, включаются в одну из следующих спецификаций OpenGL.

Список зарегистрированных расширений можно найти в официальной базе расширений[1].

Дополнительные библиотеки

Существует ряд библиотек, созданных поверх или в дополнение к OpenGL. Например, библиотека GLU, являющаяся практически стандартным дополнением OpenGL и всегда её сопровождающая, построена поверх последней, то есть использует её функции для реализации своих возможностей. Другие библиотеки, как, например, GLUT и SDL, созданы для реализации возможностей, недоступных в OpenGL. К таким возможностям относятся создание интерфейса пользователя (окна, кнопки, меню и др.), настройка контекста рисования (область рисования, использующаяся OpenGL), обработка сообщений от устройств ввода-вывода (клавиатура, мышь и др.), а также работа с файлами. Обычно каждый оконный менеджер имеет собственную библиотеку-расширение для реализации вышеописанных возможностей, например, WGL в Windows или GLX в X Window System, однако библиотеки GLUT и SDL являются кроссплатформенными, что облегчает перенос написанных приложений на другие платформы.

Библиотеки GLEW (The OpenGL Extension Wrangler Library) и GLEE (The OpenGL Easy Extension library) созданы для облегчения работы с расширениями и различными версиями OpenGL. Это особенно актуально для программистов в Windows, так как заголовочные и библиотечные файлы, поставляемые с Visual Studio, находятся на уровне версии OpenGL 1.1.

OpenGL имеет только набор геометрических примитивов (точки, линии, многоугольники) из которых создаются все трёхмерные объекты. Порой подобный уровень детализации не всегда удобен при создании сцен. Поэтому поверх OpenGL были созданы более высокоуровневые библиотеки, такие как Open Inventor и VTK. Данные библиотеки позволяют оперировать более сложными трёхмерными объектами, что облегчает и ускоряет создание трёхмерной сцены.

GLM (OpenGL Mathematics) — вспомогательная библиотека, предоставляющая программистам на C++ классы и функции для выполнения математических операций. Библиотека может использоваться при создании 3D-программ с использованием OpenGL[2]. Одной из характеристик GLM является то, что реализация основана на спецификации GLSL. Исходный код GLM использует лицензию MIT.

Независимость от языка программирования

Для подтверждения независимости от языка программирования были разработаны различные варианты привязки (binding) функций OpenGL или полностью перенесены на другие языки. Одним из примеров может служить библиотека Java 3D, которая может использовать аппаратное ускорение OpenGL. Прямая привязка функций реализована в Lightweight Java Game Library[3], которая имеет прямую привязку OpenGL для Java. Sun также выпустила версию Java OpenGL (JOGL), которая предоставляет прямую привязку к Си-функциям OpenGL, в отличие от Java 3D, которая не имеет столь низкоуровневой поддержки. Официальный сайт OpenGL имеет ссылки на привязки для языков Java, Фортран 90, Perl, Pike, Python, Ada, Visual Basic и Pascal[4]. Имеются также варианты привязки OpenGL для языков C++ и C#[5].

История

Компьютерная графика нашла широкое распространение и применение в повседневной жизни. Учёные используют компьютерную графику для анализа результатов моделирования. Инженеры и архитекторы используют трёхмерную графику для создания виртуальных моделей. Кинематографисты создают спецэффекты или полностью анимированные фильмы («Шрек», «История игрушек» и др.). В последние годы широкое распространение получили также компьютерные игры, максимально использующие трёхмерную графику для создания виртуальных миров.

Распространению компьютерной графики сопутствовали свои трудности. В 1990-х разработка программного продукта, способного работать на большом количестве графического оборудования, была сопряжена с большими временны́ми и финансовыми затратами. Было необходимо отдельно создавать модули для каждого типа графических адаптеров, что порой приводило к размножению одинакового программного кода. Это сильно тормозило развитие и распространение компьютерной графики.

Silicon Graphics (SGI) специализировалась на создании высокотехнологического графического оборудования и программных средств. Являясь в то время лидером в трёхмерной графике, SGI видела проблемы и барьеры в росте рынка. Поэтому было принято решение стандартизировать метод доступа к графической аппаратуре на уровне программного интерфейса.

Таким образом появился программный интерфейс OpenGL, который стандартизирует доступ к графической аппаратуре путём смещения ответственности за создание аппаратного драйвера на производителя графического устройства. Это позволило разработчикам программного обеспечения использовать более высокий уровень абстракции от графического оборудования, что значительно ускорило создание новых программных продуктов и снизило на них затраты.

В 1992 году компания SGI возглавила OpenGL ARB — группу компаний по разработке спецификации OpenGL. OpenGL произошёл от 3D-интерфейса SGI — IRIS GL. Одним из ограничений IRIS GL было то, что он позволял использовать только возможности, поддерживаемые оборудованием; если возможность не была реализована аппаратно, приложение не могло её использовать. OpenGL преодолевает эту проблему за счёт программной реализации возможностей, не предоставляемых аппаратно, что позволяет приложениям использовать этот интерфейс на относительно маломощных системах.

В 1995 году была выпущена библиотека Direct3D от Microsoft. Вскоре Microsoft, SGI и Hewlett-Packard начали проект под названием Fahrenheit, который предусматривал создание более универсального программного интерфейса на основе Direct3D и OpenGL. Идея казалась достаточно обещающей, призванной навести порядок в области интерактивной трёхмерной графики, однако, в результате финансовых трудностей в SGI и отсутствия должной индустриальной поддержки, проект был закрыт.

OpenGL 2.0

В сентябре 2001 года 3DLabs раскрыла своё видение OpenGL 2.0.

ГоворилиК:Википедия:Статьи без источников (тип: не указан)[источник не указан 4273 дня], что, по сравнению с DirectX, главной проблемой OpenGL является консорциум (который и должен заниматься развитием OpenGL), в который входит большое количество компаний с различными интересами, что приводит к длительному периоду принятия новой версии спецификации. OpenGL версии 2.0 была представлена 3Dlabs в ответ на беспокойство относительно медленного и нечёткого направления развития OpenGL. 3Dlabs предложила ряд существенных дополнений к стандарту, наиболее значимым из которого было добавление к ядру OpenGL языка шейдеров GLSL (OpenGL Shading Language). Это позволяет программисту заменить фиксированный конвейер OpenGL небольшими программами на специальном языке для создания различных эффектов, таких, как bump mapping, normal mapping, parallax mapping, HDR и т. д.

Однако ещё до введения в стандарт OpenGL языка GLSL существовала возможность разрабатывать спецэффекты на языках ассемблера (расширения vertex_program, fragment_program) и Cg (NVidia C for Graphics). Многие предложенные возможности пока отсутствуют в версии OpenGL 2.0, хотя некоторые из них реализованы многими производителями в виде расширений.

OpenGL 2.1

Вышел в свет 2 июля 2006 года.

Добавлена поддержка GLSL версии 1.2

Новые расширения:

  • ARB_pixel_buffer_object - объект буфера может сохранять данные изображения, тем самым улучшая производительность преобразований изображения с помощью GPU;
  • EXT_texture_sRGB - позволяет указать цветовое значение пикселя из пространства цветов sRGB.

OpenGL 3.0

11 августа 2008 года Khronos Group представила новую версию спецификации OpenGL[6].

Поддерживают видеокарты: Radeon серии HD; GeForce 8, 9, GTX 100, GTX 200, GTX 300 и GTX 400 серий.

OpenGL 3.1

24 марта 2009 года Khronos Group анонсировала OpenGL 3.1. В новой версии произведена чистка компонентов, которые были объявлены устаревшими, но оставались в OpenGL 3.0 для сглаживания перехода на новую версию API (устаревшие компоненты возможно в дальнейшем использовать через расширение GL_ARB_compatibility).

OpenGL 3.2

3 августа 2009 года Khronos Group анонсировала OpenGL 3.2. Новая версия продолжает развитие стандарта OpenGL, чтобы дать разработчикам графики доступ к передовой функциональности GPU.

Поддерживают видеокарты: Radeon серии HD; GeForce 8000, 9000, GTX серий 200 и 400.

Нововведения:

  • Поддержка OpenGL Shading Language версии 1.50 (GLSL).
  • Порядок вершинных компонентов BGRA (GL_ARB_vertex_array_bgra) — теперь в шейдере можно читать 4-компонентные вершинные атрибуты в формате RGBA.
  • Команды отрисовки теперь позволяют модификацию базового индекса вершины (GL_ARB_draw_elements_base_vertex) — теперь легко можно использовать один набор вершинных буферов (для координат и прочих атрибутов) для хранения множества мешей (меньше переключений буферов — быстрее рендеринг).
  • Геометрические шейдеры (GL_ARB_geometry_shader4).

OpenGL 3.3

Представлена вместе с OpenGL 4.0 11 марта 2010 года. Позволяет максимально возможно приблизиться к функциональности OpenGL 4.0 на аппаратной базе предыдущего поколения.

OpenGL 4.0

11 марта 2010 года Khronos Group представила финальный вариант спецификации OpenGL 4.0 и языка шейдеров GLSL 4.0. OpenGL 4.0 полностью обратно совместим со старыми расширениями OpenGL, используя режим совместимости введенный в OpenGL 3.2[7].

Среди нововведений[8]:

  • Две новые ступени обработки шейдеров, что позволяет перенести обработку тесселяции с центрального процессора на GPU.
  • Прорисовка данных, сгенерированных OpenGL или такими внешними API, как OpenCL, без участия центрального процессора.
  • 64-разрядная двойная точность с плавающей запятой операций с шейдерами и ввода-вывода для увеличения точности и качества рендеринга.

OpenGL 4.1

26 июля 2010 года, Khronos Group анонсировала спецификацию OpenGL 4.1. Спецификация включает в себя обновление GLSL (GL Shading language) до версии 4.10.

Нововведения:

  • Полная совместимость с OpenGL ES 2.0 API.
  • Возможность опрашивать и загружать двоичные данные для объектов шейдерных программ.
  • 64-разрядные компоненты с плавающей точкой для вершинных шейдеров (повышается геометрическая точность).

Новые расширения:

  • Sync-объекты OpenGL, связанные с event-объектами OpenCL.
  • Возможность установить значения в буфере трафарета (stencil) во фрагментном шейдере.
  • Некоторые особенности для улучшения надёжности, например, при запуске WebGL-приложений.
  • Механизмы обратной связи для получения ошибок и предупреждений.

OpenGL 4.2

8 августа 2011 года Khronos Group опубликовала спецификацию OpenGL 4.2 и языка шейдеров GLSL 4.2[9].

Нововведения:

  • Поддержка изменения произвольной части сжатой текстуры, без повторной загрузки в GPU текстуры целиком.
  • Поддержка упаковки нескольких 8- и 16-разрядных значений в одно 32-разрядное значение для эффективной обработки шейдеров со значительным сокращением используемого объёма памяти и повышением пропускной способности.

OpenGL 4.3

6 августа 2012 года Khronos Group опубликовала на SIGGRAPH 2012 спецификации OpenGL 4.3[10][11]. Кроме новых возможностей, OpenGL 4.3 приносит поддержку нового типа шейдеров через расширение GL_ARB_compute_shader. Новая версия обратно совместима с предыдущими.

OpenGL 4.4

Поддерживается видеокартами: AMD/ATi Radeon HD 5000/6000/7000/8000 и 200 серии, Nvidia GeForce 400/500/600/700/980 серии.

22 июля 2013 года Khronos Group на SIGGRAPH в Анахайм, Калифорния опубликовала спецификации OpenGL 4.4[12].

OpenGL 4.5

Поддерживается видеокартами: AMD/ATi Radeon на базе архитектуры GCN, Nvidia GeForce 400/500/600/700/800/900 серии.

11 августа 2014 года Khronos Group на SIGGRAPH в Ванкувере, Канада опубликовала спецификации OpenGL 4.5[13].

Vulkan

Vulkan, ранее известный как glNext, будет являться основой для объединения OpenGL и OpenGL ES в один общий API, который не будет обратно совместим с существующими версиями OpenGL.

3 марта 2015 года на ежегодной конференции разработчиков GDC состоялся анонс игрового движка Source второго поколения — Source 2, который в свою очередь будет поддерживать Vulkan API[14].

См. также

Напишите отзыв о статье "OpenGL"

Примечания

  1. [oss.sgi.com/projects/ogl-sample/registry/ Registry (redirect)]
  2. [glm.g-truc.net/ GLSL + Optional features = OpenGL Mathematics (GLM). A C++ mathematics library for 3D graphics] (англ.)
  3. [lwjgl.org/ LWJGL] (англ.) — OpenGL-привязка для Java языка и другие компоненты для разработки игр
  4. [www.opengl.org/resources/bindings/ Programming Language Bindings to OpenGL]
  5. [www.exocortex.org/3dengine Exocortex | Computer graphics and simulation software]
  6. [www.opengl.org/news/comments/the_khronos_group_announced_today_it_has_released_the_opengl_30_specificati/ The Khronos Group announced today it has released the OpenGL 3.0 specification] (англ.). opengl.org (11 августа 2008). Проверено 5 июня 2009. [www.webcitation.org/61Cxbsz3d Архивировано из первоисточника 25 августа 2011].
  7. [www.khronos.org/news/press/releases/khronos-unleashes-cutting-edge-cross-platform-graphics-acceleration-opengl4 Khronos Unleashes Cutting-Edge, Cross-Platform Graphics Acceleration with OpenGL 4.0]. Khronos Press Releases (11 марта 2010). Проверено 11 марта 2010. [www.webcitation.org/61CxcWixl Архивировано из первоисточника 25 августа 2011].
  8. [www.opennet.ru/opennews/art.shtml?num=25759 Обзор новшеств OpenGL 4.0]. OpenNet (???). Проверено ???. [www.webcitation.org/61Cxd5h08 Архивировано из первоисточника 25 августа 2011].
  9. [www.khronos.org/news/press/khronos-enriches-cross-platform-3d-graphics-with-release-of-opengl-4.2-spec Khronos Enriches Cross-Platform 3D Graphics with Release of OpenGL 4.2 Specification]. Khronos Group (8 августа 2011). Проверено 7 августа 2012. [www.webcitation.org/61CxeMteU Архивировано из первоисточника 25 августа 2011].
  10. [www.khronos.org/news/press/khronos-releases-opengl-4.3-specification-with-major-enhancements Khronos Releases OpenGL 4.3 Specification with Major Enhancements]
  11. [www.pcgamer.com/2012/08/07/khronos-releases-opengl-4-3/ PCGamer, Khronos releases OpenGL 4.3]
  12. [www.khronos.org/news/press/khronos-releases-opengl-4.4-specification Khronos Releases OpenGL 4.4 Specification]
  13. [www.khronos.org/news/press/khronos-group-announces-key-advances-in-opengl-ecosystem Khronos Group Announces Key Advances in OpenGL Ecosystem]
  14. [www.valvesoftware.com/news/?date=1420099200,1451591999 Valve Announces Link, Source 2, SteamVR, And More At GDC]

Литература

  • Ron Fosner. OpenGL Programming for Windows 95 and Windows NT. Addison-Wesley. ISBN 0-201-40709-4
  • Mark Kilgard. OpenGL for the X Window System. Addison-Wesley. ISBN 0-201-48359-9
  • OpenGL Architecture Review Board и др. OpenGL Reference Manual: The Official Reference Document to OpenGL, Version 1.4. Addison-Wesley. ISBN 0-321-17383-X
  • Randi J. Rost. OpenGL Shading Language. Addison-Wesley. ISBN 0-321-19789-5
  • OpenGL Architecture Review Board и др. OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 2, Fifth Edition. Addison-Wesley. ISBN 0-321-33573-2
  • Ву М., Дэвис Т., Нейдер Дж., Шрайндер Д. OpenGL. Руководство по программированию. Библиотека программиста. Питер, 2006. ISBN 5-94723-827-6
  • Рэнди Дж. Рост. OpenGL. Трёхмерная графика и язык программирования шейдеров. Для профессионалов. Питер, 2005. ISBN 5-469-00383-3, 0-321-19789-5
  • Richard S. Wright, Benjamin Lipchak. OpenGL SuperBible. 3rd ed. SAMS Publishing. ISBN 0-672-32601-9
  • Ричард С. Райт мл., Бенджамин Липчак. OpenGL. Суперкнига = OpenGL SuperBible. — 3 изд. — М.: Вильямс, 2006. — С. 1040. — ISBN 5-8459-0998-8.
  • Дональд Херн, М. Паулин Бейкер. Компьютерная графика и стандарт OpenGL = Computer Graphics with OpenGL. — 3-е изд. — М.: Вильямс, 2005. — 1168 с. — ISBN 5-8459-0772-1.
  • Эдвард Энджел. Интерактивная компьютерная графика. Вводный курс на базе OpenGL = Interactive Computer Graphics. A Top-Down Approach with Open GL. — 2-е изд. — М.: Вильямс, 2001. — 592 с. — ISBN 5-8459-0209-6.

Ссылки

  • [www.opengl.org/ Официальный сайт] (англ.)
  • [www.opengl.org/registry/ Спецификации OpenGL] (англ.)
  • [developer.3dlabs.com/ Сайт 3Dlabs для разработчиков использующих OpenGL](недоступная ссылка — историякопия)
  • [www.g-truc.net/post-0320.html/ Англоязычный обзор возможностей OGL 4.1 от G-Truc] (англ.)
  • [www.3dnews.ru/software/opengl2/ OpenGL 2.0: программируемый, масштабируемый и расширяемый]
Уроки, примеры и дополнительные ресурсы
  • OpenGL в каталоге ссылок Open Directory Project (dmoz). (рус.) — Библиотеки статей по OpenGL.
  • [www.pzeta.org/opengl/ OpenGL Directory] (англ.) — список ресурсов, относящихся к OpenGL
  • [www.gpgpu.org/ Сайт программирования для GPU] (англ.)
  • [nehe.gamedev.net/ Уроки по OpenGL] на сайте GameDev.net (англ.)
  • [pmg.org.ru/nehe/ Уроки по OpenGL от NeHe] (рус.)
  • [www.compgraphics.info/OpenGL/ Теория 3D-графики с примерами на OpenGL] (рус.)
  • [www.codesampler.com/oglsrc.htm Уроки с примерами для разработчиков игр] (англ.)
  • [sjbaker.org/steve/omniv/opengl_lighting.html Основы OpenGL освещения] (англ.) — урок об освещении в OpenGL от Steve Baker
  • [jogl.dev.java.net/ JOGL] (англ.) — OpenGL-привязка для Java
  • [www.glscene.ru/ Надстройка над OpenGL для Delphi]
  • [gamedev.kz/?q=node/14 OpenGL. Введение] (рус.)
  • [openglsamples.sourceforge.net/ Уроки по OpenGL] на сайте openglsamples.sourceforge.net/ (англ.)
  • [code.google.com/p/gl33lessons/ Уроки по OpenGL 3] (рус.)


Отрывок, характеризующий OpenGL

– А Николаша где? Над Лядовским верхом что ль? – всё шопотом спрашивал граф.
– Так точно с. Уж они знают, где стать. Так тонко езду знают, что мы с Данилой другой раз диву даемся, – говорил Семен, зная, чем угодить барину.
– Хорошо ездит, а? А на коне то каков, а?
– Картину писать! Как намеднись из Заварзинских бурьянов помкнули лису. Они перескакивать стали, от уймища, страсть – лошадь тысяча рублей, а седоку цены нет. Да уж такого молодца поискать!
– Поискать… – повторил граф, видимо сожалея, что кончилась так скоро речь Семена. – Поискать? – сказал он, отворачивая полы шубки и доставая табакерку.
– Намедни как от обедни во всей регалии вышли, так Михаил то Сидорыч… – Семен не договорил, услыхав ясно раздававшийся в тихом воздухе гон с подвыванием не более двух или трех гончих. Он, наклонив голову, прислушался и молча погрозился барину. – На выводок натекли… – прошептал он, прямо на Лядовской повели.
Граф, забыв стереть улыбку с лица, смотрел перед собой вдаль по перемычке и, не нюхая, держал в руке табакерку. Вслед за лаем собак послышался голос по волку, поданный в басистый рог Данилы; стая присоединилась к первым трем собакам и слышно было, как заревели с заливом голоса гончих, с тем особенным подвыванием, которое служило признаком гона по волку. Доезжачие уже не порскали, а улюлюкали, и из за всех голосов выступал голос Данилы, то басистый, то пронзительно тонкий. Голос Данилы, казалось, наполнял весь лес, выходил из за леса и звучал далеко в поле.
Прислушавшись несколько секунд молча, граф и его стремянной убедились, что гончие разбились на две стаи: одна большая, ревевшая особенно горячо, стала удаляться, другая часть стаи понеслась вдоль по лесу мимо графа, и при этой стае было слышно улюлюканье Данилы. Оба эти гона сливались, переливались, но оба удалялись. Семен вздохнул и нагнулся, чтоб оправить сворку, в которой запутался молодой кобель; граф тоже вздохнул и, заметив в своей руке табакерку, открыл ее и достал щепоть. «Назад!» крикнул Семен на кобеля, который выступил за опушку. Граф вздрогнул и уронил табакерку. Настасья Ивановна слез и стал поднимать ее.
Граф и Семен смотрели на него. Вдруг, как это часто бывает, звук гона мгновенно приблизился, как будто вот, вот перед ними самими были лающие рты собак и улюлюканье Данилы.
Граф оглянулся и направо увидал Митьку, который выкатывавшимися глазами смотрел на графа и, подняв шапку, указывал ему вперед, на другую сторону.
– Береги! – закричал он таким голосом, что видно было, что это слово давно уже мучительно просилось у него наружу. И поскакал, выпустив собак, по направлению к графу.
Граф и Семен выскакали из опушки и налево от себя увидали волка, который, мягко переваливаясь, тихим скоком подскакивал левее их к той самой опушке, у которой они стояли. Злобные собаки визгнули и, сорвавшись со свор, понеслись к волку мимо ног лошадей.
Волк приостановил бег, неловко, как больной жабой, повернул свою лобастую голову к собакам, и также мягко переваливаясь прыгнул раз, другой и, мотнув поленом (хвостом), скрылся в опушку. В ту же минуту из противоположной опушки с ревом, похожим на плач, растерянно выскочила одна, другая, третья гончая, и вся стая понеслась по полю, по тому самому месту, где пролез (пробежал) волк. Вслед за гончими расступились кусты орешника и показалась бурая, почерневшая от поту лошадь Данилы. На длинной спине ее комочком, валясь вперед, сидел Данила без шапки с седыми, встрепанными волосами над красным, потным лицом.
– Улюлюлю, улюлю!… – кричал он. Когда он увидал графа, в глазах его сверкнула молния.
– Ж… – крикнул он, грозясь поднятым арапником на графа.
– Про…ли волка то!… охотники! – И как бы не удостоивая сконфуженного, испуганного графа дальнейшим разговором, он со всей злобой, приготовленной на графа, ударил по ввалившимся мокрым бокам бурого мерина и понесся за гончими. Граф, как наказанный, стоял оглядываясь и стараясь улыбкой вызвать в Семене сожаление к своему положению. Но Семена уже не было: он, в объезд по кустам, заскакивал волка от засеки. С двух сторон также перескакивали зверя борзятники. Но волк пошел кустами и ни один охотник не перехватил его.


Николай Ростов между тем стоял на своем месте, ожидая зверя. По приближению и отдалению гона, по звукам голосов известных ему собак, по приближению, отдалению и возвышению голосов доезжачих, он чувствовал то, что совершалось в острове. Он знал, что в острове были прибылые (молодые) и матерые (старые) волки; он знал, что гончие разбились на две стаи, что где нибудь травили, и что что нибудь случилось неблагополучное. Он всякую секунду на свою сторону ждал зверя. Он делал тысячи различных предположений о том, как и с какой стороны побежит зверь и как он будет травить его. Надежда сменялась отчаянием. Несколько раз он обращался к Богу с мольбою о том, чтобы волк вышел на него; он молился с тем страстным и совестливым чувством, с которым молятся люди в минуты сильного волнения, зависящего от ничтожной причины. «Ну, что Тебе стоит, говорил он Богу, – сделать это для меня! Знаю, что Ты велик, и что грех Тебя просить об этом; но ради Бога сделай, чтобы на меня вылез матерый, и чтобы Карай, на глазах „дядюшки“, который вон оттуда смотрит, влепился ему мертвой хваткой в горло». Тысячу раз в эти полчаса упорным, напряженным и беспокойным взглядом окидывал Ростов опушку лесов с двумя редкими дубами над осиновым подседом, и овраг с измытым краем, и шапку дядюшки, чуть видневшегося из за куста направо.
«Нет, не будет этого счастья, думал Ростов, а что бы стоило! Не будет! Мне всегда, и в картах, и на войне, во всем несчастье». Аустерлиц и Долохов ярко, но быстро сменяясь, мелькали в его воображении. «Только один раз бы в жизни затравить матерого волка, больше я не желаю!» думал он, напрягая слух и зрение, оглядываясь налево и опять направо и прислушиваясь к малейшим оттенкам звуков гона. Он взглянул опять направо и увидал, что по пустынному полю навстречу к нему бежало что то. «Нет, это не может быть!» подумал Ростов, тяжело вздыхая, как вздыхает человек при совершении того, что было долго ожидаемо им. Совершилось величайшее счастье – и так просто, без шума, без блеска, без ознаменования. Ростов не верил своим глазам и сомнение это продолжалось более секунды. Волк бежал вперед и перепрыгнул тяжело рытвину, которая была на его дороге. Это был старый зверь, с седою спиной и с наеденным красноватым брюхом. Он бежал не торопливо, очевидно убежденный, что никто не видит его. Ростов не дыша оглянулся на собак. Они лежали, стояли, не видя волка и ничего не понимая. Старый Карай, завернув голову и оскалив желтые зубы, сердито отыскивая блоху, щелкал ими на задних ляжках.
– Улюлюлю! – шопотом, оттопыривая губы, проговорил Ростов. Собаки, дрогнув железками, вскочили, насторожив уши. Карай почесал свою ляжку и встал, насторожив уши и слегка мотнул хвостом, на котором висели войлоки шерсти.
– Пускать – не пускать? – говорил сам себе Николай в то время как волк подвигался к нему, отделяясь от леса. Вдруг вся физиономия волка изменилась; он вздрогнул, увидав еще вероятно никогда не виданные им человеческие глаза, устремленные на него, и слегка поворотив к охотнику голову, остановился – назад или вперед? Э! всё равно, вперед!… видно, – как будто сказал он сам себе, и пустился вперед, уже не оглядываясь, мягким, редким, вольным, но решительным скоком.
– Улюлю!… – не своим голосом закричал Николай, и сама собою стремглав понеслась его добрая лошадь под гору, перескакивая через водомоины в поперечь волку; и еще быстрее, обогнав ее, понеслись собаки. Николай не слыхал своего крика, не чувствовал того, что он скачет, не видал ни собак, ни места, по которому он скачет; он видел только волка, который, усилив свой бег, скакал, не переменяя направления, по лощине. Первая показалась вблизи зверя чернопегая, широкозадая Милка и стала приближаться к зверю. Ближе, ближе… вот она приспела к нему. Но волк чуть покосился на нее, и вместо того, чтобы наддать, как она это всегда делала, Милка вдруг, подняв хвост, стала упираться на передние ноги.
– Улюлюлюлю! – кричал Николай.
Красный Любим выскочил из за Милки, стремительно бросился на волка и схватил его за гачи (ляжки задних ног), но в ту ж секунду испуганно перескочил на другую сторону. Волк присел, щелкнул зубами и опять поднялся и поскакал вперед, провожаемый на аршин расстояния всеми собаками, не приближавшимися к нему.
– Уйдет! Нет, это невозможно! – думал Николай, продолжая кричать охрипнувшим голосом.
– Карай! Улюлю!… – кричал он, отыскивая глазами старого кобеля, единственную свою надежду. Карай из всех своих старых сил, вытянувшись сколько мог, глядя на волка, тяжело скакал в сторону от зверя, наперерез ему. Но по быстроте скока волка и медленности скока собаки было видно, что расчет Карая был ошибочен. Николай уже не далеко впереди себя видел тот лес, до которого добежав, волк уйдет наверное. Впереди показались собаки и охотник, скакавший почти на встречу. Еще была надежда. Незнакомый Николаю, муругий молодой, длинный кобель чужой своры стремительно подлетел спереди к волку и почти опрокинул его. Волк быстро, как нельзя было ожидать от него, приподнялся и бросился к муругому кобелю, щелкнул зубами – и окровавленный, с распоротым боком кобель, пронзительно завизжав, ткнулся головой в землю.
– Караюшка! Отец!.. – плакал Николай…
Старый кобель, с своими мотавшимися на ляжках клоками, благодаря происшедшей остановке, перерезывая дорогу волку, был уже в пяти шагах от него. Как будто почувствовав опасность, волк покосился на Карая, еще дальше спрятав полено (хвост) между ног и наддал скоку. Но тут – Николай видел только, что что то сделалось с Караем – он мгновенно очутился на волке и с ним вместе повалился кубарем в водомоину, которая была перед ними.
Та минута, когда Николай увидал в водомоине копошащихся с волком собак, из под которых виднелась седая шерсть волка, его вытянувшаяся задняя нога, и с прижатыми ушами испуганная и задыхающаяся голова (Карай держал его за горло), минута, когда увидал это Николай, была счастливейшею минутою его жизни. Он взялся уже за луку седла, чтобы слезть и колоть волка, как вдруг из этой массы собак высунулась вверх голова зверя, потом передние ноги стали на край водомоины. Волк ляскнул зубами (Карай уже не держал его за горло), выпрыгнул задними ногами из водомоины и, поджав хвост, опять отделившись от собак, двинулся вперед. Карай с ощетинившейся шерстью, вероятно ушибленный или раненый, с трудом вылезал из водомоины.
– Боже мой! За что?… – с отчаянием закричал Николай.
Охотник дядюшки с другой стороны скакал на перерез волку, и собаки его опять остановили зверя. Опять его окружили.
Николай, его стремянной, дядюшка и его охотник вертелись над зверем, улюлюкая, крича, всякую минуту собираясь слезть, когда волк садился на зад и всякий раз пускаясь вперед, когда волк встряхивался и подвигался к засеке, которая должна была спасти его. Еще в начале этой травли, Данила, услыхав улюлюканье, выскочил на опушку леса. Он видел, как Карай взял волка и остановил лошадь, полагая, что дело было кончено. Но когда охотники не слезли, волк встряхнулся и опять пошел на утек. Данила выпустил своего бурого не к волку, а прямой линией к засеке так же, как Карай, – на перерез зверю. Благодаря этому направлению, он подскакивал к волку в то время, как во второй раз его остановили дядюшкины собаки.
Данила скакал молча, держа вынутый кинжал в левой руке и как цепом молоча своим арапником по подтянутым бокам бурого.
Николай не видал и не слыхал Данилы до тех пор, пока мимо самого его не пропыхтел тяжело дыша бурый, и он услыхал звук паденья тела и увидал, что Данила уже лежит в середине собак на заду волка, стараясь поймать его за уши. Очевидно было и для собак, и для охотников, и для волка, что теперь всё кончено. Зверь, испуганно прижав уши, старался подняться, но собаки облепили его. Данила, привстав, сделал падающий шаг и всей тяжестью, как будто ложась отдыхать, повалился на волка, хватая его за уши. Николай хотел колоть, но Данила прошептал: «Не надо, соструним», – и переменив положение, наступил ногою на шею волку. В пасть волку заложили палку, завязали, как бы взнуздав его сворой, связали ноги, и Данила раза два с одного бока на другой перевалил волка.
С счастливыми, измученными лицами, живого, матерого волка взвалили на шарахающую и фыркающую лошадь и, сопутствуемые визжавшими на него собаками, повезли к тому месту, где должны были все собраться. Молодых двух взяли гончие и трех борзые. Охотники съезжались с своими добычами и рассказами, и все подходили смотреть матёрого волка, который свесив свою лобастую голову с закушенною палкой во рту, большими, стеклянными глазами смотрел на всю эту толпу собак и людей, окружавших его. Когда его трогали, он, вздрагивая завязанными ногами, дико и вместе с тем просто смотрел на всех. Граф Илья Андреич тоже подъехал и потрогал волка.
– О, материщий какой, – сказал он. – Матёрый, а? – спросил он у Данилы, стоявшего подле него.
– Матёрый, ваше сиятельство, – отвечал Данила, поспешно снимая шапку.
Граф вспомнил своего прозеванного волка и свое столкновение с Данилой.
– Однако, брат, ты сердит, – сказал граф. – Данила ничего не сказал и только застенчиво улыбнулся детски кроткой и приятной улыбкой.


Старый граф поехал домой; Наташа с Петей обещались сейчас же приехать. Охота пошла дальше, так как было еще рано. В середине дня гончих пустили в поросший молодым частым лесом овраг. Николай, стоя на жнивье, видел всех своих охотников.
Насупротив от Николая были зеленя и там стоял его охотник, один в яме за выдавшимся кустом орешника. Только что завели гончих, Николай услыхал редкий гон известной ему собаки – Волторна; другие собаки присоединились к нему, то замолкая, то опять принимаясь гнать. Через минуту подали из острова голос по лисе, и вся стая, свалившись, погнала по отвершку, по направлению к зеленям, прочь от Николая.
Он видел скачущих выжлятников в красных шапках по краям поросшего оврага, видел даже собак, и всякую секунду ждал того, что на той стороне, на зеленях, покажется лисица.
Охотник, стоявший в яме, тронулся и выпустил собак, и Николай увидал красную, низкую, странную лисицу, которая, распушив трубу, торопливо неслась по зеленям. Собаки стали спеть к ней. Вот приблизились, вот кругами стала вилять лисица между ними, всё чаще и чаще делая эти круги и обводя вокруг себя пушистой трубой (хвостом); и вот налетела чья то белая собака, и вслед за ней черная, и всё смешалось, и звездой, врозь расставив зады, чуть колеблясь, стали собаки. К собакам подскакали два охотника: один в красной шапке, другой, чужой, в зеленом кафтане.
«Что это такое? подумал Николай. Откуда взялся этот охотник? Это не дядюшкин».
Охотники отбили лисицу и долго, не тороча, стояли пешие. Около них на чумбурах стояли лошади с своими выступами седел и лежали собаки. Охотники махали руками и что то делали с лисицей. Оттуда же раздался звук рога – условленный сигнал драки.
– Это Илагинский охотник что то с нашим Иваном бунтует, – сказал стремянный Николая.
Николай послал стремяного подозвать к себе сестру и Петю и шагом поехал к тому месту, где доезжачие собирали гончих. Несколько охотников поскакало к месту драки.
Николай слез с лошади, остановился подле гончих с подъехавшими Наташей и Петей, ожидая сведений о том, чем кончится дело. Из за опушки выехал дравшийся охотник с лисицей в тороках и подъехал к молодому барину. Он издалека снял шапку и старался говорить почтительно; но он был бледен, задыхался, и лицо его было злобно. Один глаз был у него подбит, но он вероятно и не знал этого.
– Что у вас там было? – спросил Николай.
– Как же, из под наших гончих он травить будет! Да и сука то моя мышастая поймала. Поди, судись! За лисицу хватает! Я его лисицей ну катать. Вот она, в тороках. А этого хочешь?… – говорил охотник, указывая на кинжал и вероятно воображая, что он всё еще говорит с своим врагом.
Николай, не разговаривая с охотником, попросил сестру и Петю подождать его и поехал на то место, где была эта враждебная, Илагинская охота.
Охотник победитель въехал в толпу охотников и там, окруженный сочувствующими любопытными, рассказывал свой подвиг.
Дело было в том, что Илагин, с которым Ростовы были в ссоре и процессе, охотился в местах, по обычаю принадлежавших Ростовым, и теперь как будто нарочно велел подъехать к острову, где охотились Ростовы, и позволил травить своему охотнику из под чужих гончих.
Николай никогда не видал Илагина, но как и всегда в своих суждениях и чувствах не зная середины, по слухам о буйстве и своевольстве этого помещика, всей душой ненавидел его и считал своим злейшим врагом. Он озлобленно взволнованный ехал теперь к нему, крепко сжимая арапник в руке, в полной готовности на самые решительные и опасные действия против своего врага.
Едва он выехал за уступ леса, как он увидал подвигающегося ему навстречу толстого барина в бобровом картузе на прекрасной вороной лошади, сопутствуемого двумя стремянными.
Вместо врага Николай нашел в Илагине представительного, учтивого барина, особенно желавшего познакомиться с молодым графом. Подъехав к Ростову, Илагин приподнял бобровый картуз и сказал, что очень жалеет о том, что случилось; что велит наказать охотника, позволившего себе травить из под чужих собак, просит графа быть знакомым и предлагает ему свои места для охоты.
Наташа, боявшаяся, что брат ее наделает что нибудь ужасное, в волнении ехала недалеко за ним. Увидав, что враги дружелюбно раскланиваются, она подъехала к ним. Илагин еще выше приподнял свой бобровый картуз перед Наташей и приятно улыбнувшись, сказал, что графиня представляет Диану и по страсти к охоте и по красоте своей, про которую он много слышал.
Илагин, чтобы загладить вину своего охотника, настоятельно просил Ростова пройти в его угорь, который был в версте, который он берег для себя и в котором было, по его словам, насыпано зайцев. Николай согласился, и охота, еще вдвое увеличившаяся, тронулась дальше.
Итти до Илагинского угоря надо было полями. Охотники разровнялись. Господа ехали вместе. Дядюшка, Ростов, Илагин поглядывали тайком на чужих собак, стараясь, чтобы другие этого не замечали, и с беспокойством отыскивали между этими собаками соперниц своим собакам.
Ростова особенно поразила своей красотой небольшая чистопсовая, узенькая, но с стальными мышцами, тоненьким щипцом (мордой) и на выкате черными глазами, краснопегая сучка в своре Илагина. Он слыхал про резвость Илагинских собак, и в этой красавице сучке видел соперницу своей Милке.
В середине степенного разговора об урожае нынешнего года, который завел Илагин, Николай указал ему на его краснопегую суку.
– Хороша у вас эта сучка! – сказал он небрежным тоном. – Резва?
– Эта? Да, эта – добрая собака, ловит, – равнодушным голосом сказал Илагин про свою краснопегую Ерзу, за которую он год тому назад отдал соседу три семьи дворовых. – Так и у вас, граф, умолотом не хвалятся? – продолжал он начатый разговор. И считая учтивым отплатить молодому графу тем же, Илагин осмотрел его собак и выбрал Милку, бросившуюся ему в глаза своей шириной.
– Хороша у вас эта чернопегая – ладна! – сказал он.
– Да, ничего, скачет, – отвечал Николай. «Вот только бы побежал в поле матёрый русак, я бы тебе показал, какая эта собака!» подумал он, и обернувшись к стремянному сказал, что он дает рубль тому, кто подозрит, т. е. найдет лежачего зайца.
– Я не понимаю, – продолжал Илагин, – как другие охотники завистливы на зверя и на собак. Я вам скажу про себя, граф. Меня веселит, знаете, проехаться; вот съедешься с такой компанией… уже чего же лучше (он снял опять свой бобровый картуз перед Наташей); а это, чтобы шкуры считать, сколько привез – мне всё равно!
– Ну да.
– Или чтоб мне обидно было, что чужая собака поймает, а не моя – мне только бы полюбоваться на травлю, не так ли, граф? Потом я сужу…
– Ату – его, – послышался в это время протяжный крик одного из остановившихся борзятников. Он стоял на полубугре жнивья, подняв арапник, и еще раз повторил протяжно: – А – ту – его! (Звук этот и поднятый арапник означали то, что он видит перед собой лежащего зайца.)
– А, подозрил, кажется, – сказал небрежно Илагин. – Что же, потравим, граф!
– Да, подъехать надо… да – что ж, вместе? – отвечал Николай, вглядываясь в Ерзу и в красного Ругая дядюшки, в двух своих соперников, с которыми еще ни разу ему не удалось поровнять своих собак. «Ну что как с ушей оборвут мою Милку!» думал он, рядом с дядюшкой и Илагиным подвигаясь к зайцу.