Типы устройствDevice types

Типы устройств Direct3D включают устройства слоя абстрагирования оборудования (слой HAL) и средство программной прорисовки.Direct3D device types include Hardware Abstraction Layer (hal) devices and the reference rasterizer.

Устройство HALHAL Device

Устройство слоя HAL — основной тип устройств. Оно поддерживает растеризацию с аппаратным ускорением, а также аппаратную и программную обработку вершин.The primary device type is the hal device, which supports hardware accelerated rasterization and both hardware and software vertex processing. Если компьютер, на котором запущено приложение, оснащен видеоадаптером с поддержкой Direct3D, приложение должно использовать его для операций Direct3D.If the computer on which your application is running is equipped with a display adapter that supports Direct3D, your application should use it for Direct3D operations. Устройства слоя HAL Direct3D полностью или целиком реализовывают модули преобразования, освещения или растеризации в оборудовании.Direct3D hal devices implement all or part of the transformation, lighting, and rasterizing modules in hardware.

Приложения не обращаются к видеоадаптерам напрямую.Applications do not access graphics adapters directly. Они вызывают функции и методы Direct3D.They call Direct3D functions and methods. Direct3D обращается к оборудованию через слой HAL.Direct3D accesses the hardware through the hal. Если компьютер, на котором запущено приложение, поддерживает слой HAL, максимальной производительности на нем можно достичь с помощью устройства слоя HAL.If the computer that your application is running on supports the hal, it will gain the best performance by using a hal device.

Эталонное устройствоReference Device

Direct3D поддерживает дополнительный тип устройств — эталонное устройство или средство программной прорисовки.Direct3D supports an additional device type called a reference device or reference rasterizer. В отличие от программного устройства, средство программной прорисовки поддерживает все компоненты Direct3D.Unlike a software device, the reference rasterizer supports every Direct3D feature. Это устройство предназначено для отладки, а потому доступно только на компьютерах с установленным пакетом SDK DirectX.This device is intended to be used for debugging purposes and is therefore only available on machines where the DirectX SDK has been installed. Поскольку эти компоненты реализованы программно и в большей степени для высокой точности, а не скорости, получение результатов — процесс небыстрый.Because these features are implemented for accuracy rather than speed and are implemented in software, the results are not very fast. Средство программной прорисовки использует особые инструкции ЦП при любой возможности, но оно не предназначено для розничных приложений.The reference rasterizer does make use of special CPU instructions whenever it can, but it is not intended for retail applications. Средство программной прорисовки следует использовать только для тестирования компонентов или демонстрации.Use the reference rasterizer only for feature testing or demonstration purposes.

HAL и ссылки на устройстваHAL vs. REF Devices

Устройства слоя абстрагирования оборудования (HAL) и устройства средства программной прорисовки (REF) — это два основных типа устройств Direct3D. Первый тип основан на поддержке оборудования и отличается высокой производительностью, но может не поддерживать некоторые компоненты. Второй тип не использует аппаратное ускорение, а потому работает медленно, но гарантированно поддерживает весь набор компонентов Direct3D без каких-либо отклонений.HAL (Hardware Abstraction Layer) devices and REF (REFerence rasterizer) devices are the two main types of Direct3D device; the first is based around the hardware support, and is very fast but might not support everything; while the second uses no hardware acceleration, so is very slow, but is guaranteed to support the entire set of Direct3D features, in the correct way. Как правило, вам потребуется использовать только устройства слоя HAL, но если вы используете расширенные возможности, не поддерживаемые вашим графическим адаптером, возможно, придется обратиться к средству программной прорисовки.In general you'll only ever need to use HAL devices, but if you're using some advanced feature that your graphics card does not support then you might need to fall back to REF.

Вам также может потребоваться использовать средство программной прорисовки, если устройство слоя HAL выдает неверные результаты, то есть вы уверены в правильности кода, но результат не соответствует ожидаемому.The other time you might want to use REF is if the HAL device is producing strange results - that is, you're sure your code is correct, but the result is not what you're expecting. Поведение устройства средства программной прорисовки гарантированно будет верным, поэтому есть смысл проверить приложение на этом устройстве и посмотреть, останутся ли ошибки в поведении.The REF device is guaranteed to behave correctly, so you may wish to test your application on the REF device and see if the strange behavior continues. Если ошибки исчезли, то либо (а) приложение считает, что видеоадаптер поддерживает возможности, которые он на самом деле не поддерживает, либо (б) ошибка связана с драйверами.If it doesn't, it means that either (a) your application is assuming that the graphics card supports something that it doesn't, or (b) it's a driver bug. Если приложение не работает даже с устройством средства программной прорисовки, ошибка кроется в самом приложении.If it still doesn't work with the REF device, then it's an application bug.

Аппаратная и программная обработка вершинHardware vs. Software Vertex Processing

Фактически, аппаратная и программная обработка вершин применима только к устройствам слоя HAL.Hardware versus Software vertex processing only really applies to HAL devices. При продвижении вершин по конвейеру их необходимо преобразовывать (с помощью матриц мира, представления и проекции поочередно) и освещать (с помощью встроенных источников света D3D). Этот этап обработки известен как T&L (преобразование и освещение).When you push vertices through the pipeline, they need to be transformed (by the world, view, and projection matrices in turn) and lit (by D3D's built-in lights) - this processing stage is known as T&L (for Transformation & Lighting). Аппаратная обработка вершин означает, что это выполняется в оборудовании, если оно поддерживается оборудованием; Следовательно, обработка вершин программного обеспечения выполняется в программном обеспечении.Hardware vertex processing means this is done in hardware, if the hardware supports it; ergo, Software vertex processing is done in software. Рекомендуется сначала попробовать создать устройство аппаратного преобразования и освещения. В случае неудачи следует попробовать создать смешанное устройство, а если это также не удастся, попробуйте создать средство программной обработки.The general practice is to try creating a Hardware T&L device first, and if that fails try Mixed, and if that fails try Software. (Если последний вариант не увенчается успехом, завершите работу с ошибкой.)(If software fails, give up and exit with an error.)

См. такжеRelated topics

УстройстваDevices