Dxgi_swap_chain_desc structure

Наиболее распространенные проблемы с файлом dxgi.dll

Существует несколько типов ошибок, связанных с файлом dxgi.dll. Файл dxgi.dll может находиться в неправильном каталоге файлов на вашем устройстве, может отсутствовать в системе или может быть заражен вредоносным программным обеспечением и, следовательно, работать неправильно. Ниже приведен список наиболее распространенных сообщений об ошибках, связанных с файлом dxgi.dll. Если вы найдете один из перечисленных ниже (или похожих), рассмотрите следующие предложения.


  • dxgi.dll поврежден
  • dxgi.dll не может быть расположен
  • Ошибка выполнения — dxgi.dll
  • Ошибка файла dxgi.dll
  • Файл dxgi.dll не может быть загружен. Модуль не найден
  • невозможно зарегистрировать файл dxgi.dll
  • Файл dxgi.dll не может быть загружен
  • Файл dxgi.dll не существует

dxgi.dll

Не удалось запустить приложение, так как отсутствует файл dxgi.dll. Переустановите приложение, чтобы решить проблему.

Проблемы, связанные с dxgi.dll, могут решаться различными способами. Некоторые методы предназначены только для опытных пользователей. Если вы не уверены в своих силах, мы советуем обратиться к специалисту

К исправлению ошибок в файле dxgi.dll следует подходить с особой осторожностью, поскольку любые ошибки могут привести к нестабильной или некорректно работающей системе. Если у вас есть необходимые навыки, пожалуйста, продолжайте

Multithreading and DXGI

Special care must be taken when using DXGI in a multithreaded application to ensure that deadlocks do not occur. Because of DXGI’s close interaction with windowing, it occasionally sends window messages to the associated application window. DXGI needs the windowing changes to occur before it can continue, so it will use SendMessage, which is a synchronous call. The application must process the window message before SendMessage returns.

In an application where DXGI calls and the message pump are on the same thread (or a single-threaded application), little needs to be done. When the DXGI call is on the same thread as the message pump, SendMessage calls the window’s WindowProc. This bypasses the message pump, and allows execution to continue after the call to SendMessage. Remember that IDXGISwapChain calls, such as IDXGISwapChain::Present, are also considered DXGI calls; DXGI may defer work from ResizeBuffers or ResizeTarget until Present is called.

If the DXGI call and message pump are on different threads, care must be taken to avoid deadlocks. When the message pump and SendMessage are on different threads, SendMessage adds a message to the window’s message queue, and waits for the window to process that message. If the window procedure is busy or is not called by the message pump, the message may never get processed and DXGI will wait indefinitely.

For example, if an application that has its message pump on one thread and its rendering on another, it may want to change modes. The message pump thread tells the rendering thread to change modes, and waits until the mode change is complete. However, the rendering thread calls DXGI functions, which in turn call SendMessage, which blocks until the message pump processes the message. A deadlock occurs because both threads now are blocked, and are waiting on each other. To avoid this, never block the message pump. If a block is unavoidable, then all DXGI interaction should occur on the same thread as the message pump.

Window Styles and DXGI

Direct3D 9 applications had a lot of work to do when switching between full-screen and windowed modes. Much of this work involved changing window styles to add and remove borders, to add scrollbars, and so on. When applications are ported to DXGI and Direct3D 10.x or Direct3D 11.x, this code often is left in place. Depending on the changes being made, switching between modes can cause unexpected behavior. For example, when switching to windowed mode, the application might no longer have a window frame or window border despite having code that specifically sets these styles. This occurs because DXGI now handles much of this style changing on its own. Manual setting of window styles can interfere with DXGI, and this can cause unexpected behavior.

The recommended behavior is to do as little work as possible, and to let DXGI handle most of the interaction with the windows. However, if the application needs to handle its own windowing behavior, IDXGIFactory::MakeWindowAssociation can be used to tell DXGI to disable some of its automatic window handling.

Improved usage of shared resources and synchronized events

In previous versions of Windows, apps use continuous polling to determine whether the graphics processing unit (GPU) is finished processing arbitrary commands. DXGI 1.2 enables an app to queue an event to a DXGI device. The app can then wait for the DXGI device to signal the event to determine that the GPU finished executing all rendering commands. DXGI 1.2 enables multiple devices to share a resource through a NT handle.

You can use the following DXGI 1.2 API and Direct3D 11.1 API to share resources and synchronize events.

  • IDXGIDevice2::EnqueueSetEvent
  • IDXGIResource1::CreateSharedHandle
  • IDXGIFactory2::GetSharedResourceAdapterLuid
  • ID3D11Device1::OpenSharedResource1
  • ID3D11Device1::OpenSharedResourceByName
  • D3D11_RESOURCE_MISC_SHARED_NTHANDLE

Что делать, если запуск программы невозможен из-за отсутствия dxgi.dll на компьютере

Второй тип ошибок, связанных с dxgi.dll, чаще всего связан с тем, что файла dxgi.dll нет на компьютере. При этом программа или игра, которая запускается, обращается в данной библиотеке. Поскольку она не может найти файл, появляется ошибка.

Если изучить файл dxgi.dll, можно видеть, что он является частью библиотеки DirectX.

Соответственно, нужно проделать следующие действия, чтобы исправить ошибку:

  1. Загрузить актуальную версию DirectX с официального сайта компании Microsoft;
  2. Запустить установочный файл и несколько раз нажать “Далее”, чтобы стартовал процесс установки файлов DirectX на компьютер;
  3. Недостающие библиотеки будут установлены, после чего указанная ошибка более не должна возникать.

Обратите внимание: Сам файл dxgi.dll хранится в папке System32 у 32-битной версии операционной системы или в папке SysWOW64 у 64-битной версии

Стоит отметить, что иногда при установке игр и приложений разработчики поставляют с файлами программы модифицированный файл dxgi.dll. Некоторые антивирусы могут на него негативно реагировать — удаляя этот файл или отправляя его в карантин. В таких случаях нужно отключить антивирус или добавить папку с программой, где находится этот файл, в список исключений, после чего вернуть модифицированный вариант файла dxgi.dll из карантина или выполнить переустановку программы.

Full-Screen Issues

In porting from Direct3D 9 to DXGI and to Direct3D 10.x or Direct3D 11.x, issues associated with moving from windowing to full-screen mode often may cause headaches for developers. The main problems arise because Direct3D 9 applications, unlike DXGI applications, require a more hands-on approach to tracking window styles and window states. When the mode-changing code is ported to run on DXGI, it often causes unexpected behavior.


Often, Direct3D 9 applications handled the transition into full-screen mode by setting the resolution of the front buffer, forcing the device into full-screen exclusive mode, and then setting the back buffer resolutions to match. A separate path was used for changes to window size because they had to be managed from the window process whenever the application received a WM_SIZE message.

DXGI attempts to simplify this approach by combining the two cases. For example, when the window border is dragged in windowed mode, the application receives a WM_SIZE message. DXGI intercepts this message and automatically resizes the front buffer. All that the application needs to do is call IDXGISwapChain::ResizeBuffers to resize the back buffer to the size that was passed as parameters in WM_SIZE. Similarly, when the application needs to switch between full-screen and windowed mode, the application can simply call IDXGISwapChain::SetFullscreenState. DXGI resizes the front buffer to match the newly selected full-screen mode, and it sends a WM_SIZE message to the application. The application again calls ResizeBuffers, just as it would if the window border was dragged.

The methodology of the preceding explanation follows a very particular path. DXGI set the full-screen resolution to the desktop resolution by default. Many applications, however, switch to a preferred full-screen resolution. In such a case, DXGI provides IDXGISwapChain::ResizeTarget. This should be called before calling SetFullscreenState. Although these methods can be called in the opposite order (SetFullscreenState first, followed by ResizeTarget), doing so causes an extra WM_SIZE message to be sent to the application. (Doing so can also cause flickering, since DXGI could be forced to perform two mode changes.) After calling SetFullscreenState, it is advisable to call ResizeTarget again with the RefreshRate member of DXGI_MODE_DESC zeroed out. This amounts to a no-operation instruction in DXGI, but it can avoid issues with the refresh rate, which are discussed next.

When in full-screen mode, the Desktop Window Manager (DWM) is disabled. DXGI can perform a flip to present the back buffer contents instead of doing a blit, which it would do in windowed mode. This performance gain can be undone, however, if certain requirements are not met. To ensure that DXGI does a flip instead of a blit, the front buffer and back buffer must be sized identically. If the application correctly handles its WM_SIZE messages, this should not be a problem. Also, the formats must be identical.

The problem for most applications is the refresh rate. The refresh rate that is specified in the call to ResizeTarget must be a refresh rate that is enumerated by the IDXGIOutput object that the swap chain is using. DXGI can automatically calculate this value if the application zeroes out the RefreshRate member of DXGI_MODE_DESC that is passed into ResizeTarget. It is important not to assume that certain refresh rates will always be supported and to simply hard-code a value. Often, developers choose 60 Hz as the refresh rate, not knowing that the enumerated refresh rate from the monitor is approximately 60,000 / 1,001 Hz from the monitor. If the refresh rate does not match the expected refresh rate of 60, DXGI is forced to perform a blit in full-screen mode instead of a flip.

The last issue that developers often face is how to change full-screen resolutions while remaining in full-screen mode. Calling ResizeTarget and SetFullscreenState sometimes succeeds, but the full-screen resolution remains the desktop resolution. Also, developers may create a full-screen swap chain and give a specific resolution, only to find that DXGI defaults to the desktop resolution regardless of the numbers passed in. Unless otherwise instructed, DXGI defaults to the desktop resolution for full-screen swap chains. When creating a full-screen swap chain, the Flags member of the DXGI_SWAP_CHAIN_DESC structure must be set to DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH to override DXGI’s default behavior. This flag also can be passed to ResizeTarget to enable or disable this functionality dynamically.

Frame synchronization of DXGI flip model apps

Present statistics are frame-timing information that media apps use to synchronize video and audio streams and recover from video playback glitches. Apps can use the frame-timing information in present statistics to adjust the presentation rate of their video frames for smoother presentation. To obtain present statistics information, call the IDXGISwapChain::GetFrameStatistics method to obtain the DXGI_FRAME_STATISTICS structure. DXGI_FRAME_STATISTICS contains statistics about IDXGISwapChain1::Present1 calls. A flip model swap chain provides present statistics information in both windowed and full-screen modes. For bitblt model swap chains in windowed mode, all DXGI_FRAME_STATISTICS values are zeroes.

For flip model present statistics, IDXGISwapChain::GetFrameStatistics returns DXGI_ERROR_FRAME_STATISTICS_DISJOINT in these situations:

  • First call to GetFrameStatistics, which indicates the beginning of a sequence
  • Mode change: either windowed mode to or from full screen or full screen to full screen transitions

The values in PresentRefreshCount, SyncRefreshCount, and SyncQPCTime members of DXGI_FRAME_STATISTICS have the following characteristics:

  • PresentRefreshCount is equal to SyncRefreshCount when the app presents on every vsync.
  • SyncRefreshCount is obtained on the vsync interval when the present was submitted, SyncQPCTime is approximately the time associated with the vsync interval.

The IDXGISwapChain::GetLastPresentCount method returns the last present count, that is, the present ID of the last successful IDXGISwapChain1::Present1 call made by a display device that is associated with the swap chain. This present ID is the value of the PresentCount member of the DXGI_FRAME_STATISTICS structure. For bitblt model swap chains, while in windowed mode, all DXGI_FRAME_STATISTICS values are zeroes.

Способ 1: скачать dxgi.dll

Диспетчер загрузки отслеживает изображения, документы и другие файлы, загруженные из Интернета. Загруженные dxgi.dll автоматически сохраняются в папке «Загрузки». Эта папка обычно находится на диске, на котором установлена ​​Windows (например, C: \ Users \ username \ Downloads). Загруженные файлы можно перемещать из папки «Загрузки» в другие папки на компьютере.

В зависимости от типа загружаемого файла доступны следующие параметры:

  • Откройте файл для просмотра, но не сохраняйте его на компьютере.

  • Сохраните файл на свой компьютер в стандартной папке загрузки. После того как система проверит безопасность и завершит загрузку файла, вы можете открыть файл, открыть папку, в которой он был сохранен, или просмотреть файл в диспетчере загрузки.

  • Сохраните под другим именем, с другим типом или в другой папке на компьютере.

  • Запустите приложение, расширение или файл другого типа. После того как система выполнит проверку безопасности, файл откроется и запустится на компьютере.

  • Отмените загрузку и вернитесь к просмотру веб-страниц.

Вы также можете сохранять файлы меньшего размера, например отдельные изображения, на своем компьютере. Для этого щелкните правой кнопкой мыши изображение, ссылку или файл и выберите «Сохранить изображение» или «Сохранить объект как».

dxgi.dll , 12 доступных версий
Bits & Version File size Language Description Checksums
32bit 6.3.9600.17041 397.4 KB U.S. English DirectX Graphics Infrastructure

MD5 MD5 15fbe33156a5f17280c549dba993442c SHA1 SHA1 306e47789e5f04d07ee871e0af08e2c5ed85dc3e

Download
32bit 6.2.9200.16492 286.5 KB U.S. English DirectX Graphics Infrastructure

MD5 MD5 d4f264fe23f8953d840904418220c15e SHA1 SHA1 b8a977a885cd6877420accb16047a8e8e3324ba8

Download
64bit 6.2.9200.16420 449.0 KB U.S. English DirectX Graphics Infrastructure

MD5 MD5 02df949c584b02fab05868502c578d42 SHA1 SHA1 cb57b7f2395621834bf883fd2944c265c3604064

Download
32bit 6.2.9200.16420 357.5 KB U.S. English DirectX Graphics Infrastructure

MD5 MD5 4d77a4ecfafcce6cee0f8fee88e637a8 SHA1 SHA1 5c2c6c200398dcc3caeb5bcaec112ab164b9f4cd

Download
32bit 6.1.7600.16385 495.5 KB U.S. English DirectX Graphics Infrastructure

MD5 MD5 dd76301614636306414efa94a9ac5a03 SHA1 SHA1 e3534963909dd833572e80566c83b930bdc71a19

Download
64bit 6.0.6001.18000 240.0 KB U.S. English Microsoft DirectX Graphics Infrastructure

MD5 MD5 25b748a17d0b748cc709e716762d647f SHA1 SHA1 69230e6fa04ec06dac93c0f211331d55710b31f5

Download
32bit 6.0.6001.18000 167.5 KB U.S. English Microsoft DirectX Graphics Infrastructure

MD5 MD5 ba29e0f81a45a6dc0f0fdd1f11a7cb9c SHA1 SHA1 73552cfe257f6ca6697f84f3116be86670131943

Download
32bit 6.0.6000.16386 164.0 KB U.S. English Microsoft DirectX Graphics Infrastructure

MD5 MD5 8a4d582902926dc8fed5435f560d8c4f SHA1 SHA1 8a4c0121710eb30c206bce108b831f842f5f125c

Download
32bit 10.0.14393.0 515.5 KB U.S. English DirectX Graphics Infrastructure

MD5 MD5 7560db98b66fccd79b13e284b2f9ea3c SHA1 SHA1 0596f828654e7f09e6cecdcfec0d331bb8c39839

Download
64bit 10.0.14393.0 622.5 KB U.S. English DirectX Graphics Infrastructure

MD5 MD5 ee4503cc4c5f08ea029734d05e368950 SHA1 SHA1 4d964dab63e1b06c90befb8c135b42d4edabe5cb

Download
32bit 10.0.10586.494 508.9 KB U.S. English DirectX Graphics Infrastructure

MD5 MD5 7cda291cf22b91ddbb88b5089ebe25ce SHA1 SHA1 3f81c6bd5d06a1ab5439f2cc26c80954516fc245

Download
64bit 10.0.10586.494 633.1 KB U.S. English DirectX Graphics Infrastructure

MD5 MD5 bd7e2f50a8c984500358e1ae1d1b89fc SHA1 SHA1 f9440afd592a740bc0320f2e456bbc04047653b2

Download

Remarks

This structure is used by the CreateSwapChainForHwnd, CreateSwapChainForCoreWindow, CreateSwapChainForComposition, CreateSwapChainForCompositionSurfaceHandle, and GetDesc1 methods.

Note  You cannot cast a DXGI_SWAP_CHAIN_DESC1 to a DXGI_SWAP_CHAIN_DESC and vice versa. An application must explicitly use the IDXGISwapChain1::GetDesc1 method to retrieve the newer version of the swap-chain description structure.  

For a flip-model swap chain (that is, a swap chain that has the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value set in the SwapEffect member), you must set the Format member to DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_B8G8R8A8_UNORM, or DXGI_FORMAT_R8G8B8A8_UNORM; you must set the Count member of the DXGI_SAMPLE_DESC structure that the SampleDesc member specifies to one and the Quality member of DXGI_SAMPLE_DESC to zero because multiple sample antialiasing (MSAA) is not supported; you must set the BufferCount member to from two to sixteen. For more info about flip-model swap chain, see DXGI Flip Model.

Multiple Monitors

When using DXGI with multiple monitors, there are two rules to follow.

The first rule applies to the creation of two or more full-screen swap chains on multiple monitors. When creating such swap chains, it is best to create all swap chains as windowed, and then to set them to full-screen. If swap chains are created in full-screen mode, the creation of a second swap chain causes a mode change to be sent to the first swap chain, which could cause termination of full-screen mode.

The second rule applies to outputs. Be watchful of outputs used when creating swap chains. With DXGI, the IDXGIOutput object controls which monitor the swap chain uses when becoming full-screen. Unlike DXGI, Direct3D 9 had no concept of outputs.

Исправление ошибки DXGI_ERROR_DEVICE_REMOVED

Для того, чтобы исправить ошибку для начала рекомендую по порядку выполнить следующие действия:

  1. Если вы недавно вынимали (или устанавливали) видеокарту, проверить, что она плотно подключена, контакты на ней не окислены, дополнительное питание подключено.
  2. Если есть возможность, проверить эту же видеокарту на другом компьютере с той же игрой с теми же параметрами графики, чтобы исключить неисправность самой видеокарты.
  3. Попробовать установить другую версию драйверов (в том числе более старую, если недавно произошло обновление до последней версии драйверов), предварительно полностью удалив имеющиеся драйверы: Как удалить драйверы видеокарты NVIDIA или AMD.
  4. Для того, чтобы исключить влияние недавно установленных сторонних программ (иногда они также могут вызывать ошибку), выполните чистую загрузку Windows, а затем проверьте, будет ли проявлять себя ошибка в вашей игре.
  5. Попробуйте выполнить действия, описанные в отдельной инструкции Видеодрайвер перестал отвечать и был остановлен — они могут сработать.
  6. Попробуйте в схеме электропитания (Панель управления — Электропитание) выбрать «Высокая производительность», а затем в «Изменить дополнительные параметры электропитания» в разделе «PCI Express» — «Управление питанием состояния связи» установите «Откл.» 
  7. Попробуйте снизить настройки качества графики в игре.
  8. Скачайте и запустите веб-установщик DirectX, если он найден поврежденные библиотеки, они будут автоматически заменены, см. Как скачать DirectX.

Обычно, что-то из перечисленного помогает решить проблему за исключением случая, когда причиной является недостаток питания со стороны блока питания во время пиковых нагрузок на видеокарту (хотя и в этом случае может сработать снижением параметров графики).

Avoiding, detecting, and recovering from glitches


Perform these steps to avoid, detect, and recover from glitches in frame presentation:

  1. Queue IDXGISwapChain1::Present1 calls (that is, call IDXGISwapChain1::Present1 multiple times, which causes them to collect in a queue).

  2. Create a present-queue structure to store all successfully submitted IDXGISwapChain1::Present1’s present ID (returned by IDXGISwapChain::GetLastPresentCount) and associated, calculated/expected PresentRefreshCount values.

  3. To detect a glitch:

    • Call IDXGISwapChain::GetFrameStatistics.
    • For this frame, get the present ID (PresentCount) and vsync count where the operating system presented the last image to the monitor (PresentRefreshCount).
    • Retrieve the expected PresentRefreshCount that is associated with the present ID and that you previously stored in the present-queue structure.
    • If the actual PresentRefreshCount is later than the expected PresentRefreshCount, a glitch has occurred.
  4. To recover from the glitch:

    • Calculate the number of frames to skip to recover from the glitch. For example, if step 3 reveals that the expected vsync count (PresentRefreshCount) for a present ID (PresentCount) is 5 and the actual vsync count for the present ID is 8, the number of frames to skip to recover from the glitch is 3 frames.

    • Pass 0 to the SyncInterval parameter in this number of calls to IDXGISwapChain1::Present1 to discard and skip this number of frames.

      Note

      If the glitch consists of a large number of frames, call IDXGISwapChain1::Present1 with the Flags parameter set to DXGI_PRESENT_RESTART to discard and skip all outstanding queued presents.

Here is an example scenario of recovering from glitches in frame presentation:

In the example scenario, you expect frame A to go on screen on a vsync count of 1. But you actually detect the vsync count that frame A appears on screen as 4. Therefore, you determine that a glitch occurred. You can then discard 3 frames, that is, you can pass 0 to the SyncInterval parameter in 3 calls to IDXGISwapChain1::Present1. In the preceding example scenario, to recover from the glitch, you need a total of 8 IDXGISwapChain1::Present1 calls. The 9th frame is then visible as per the vsync count that you expect.

Here’s a time line of presentation events. Each vertical line represents a vsync. The horizontal direction is time, which increases to the right. You can use the figure to imagine how glitches can occur.

The figure illustrates this sequence:

  1. The app wakes up on vsync, renders blue, calls IDXGISwapChain1::Present1, and then goes back to sleep.

  2. The graphics processing unit (GPU) wakes up from idle, performs the render to blue, and then goes back to sleep.

  3. The DWM wakes up at the next vsync, composes blue into its back buffer, calls IDXGISwapChain1::Present1, and then goes back to sleep.

  4. The app wakes up, renders green, calls IDXGISwapChain1::Present1, and then goes back to sleep.

    Note


    The app concurrently executes while the GPU performs the compose of blue.

  5. Next, the GPU renders green for the app.

  6. Finally, the digital to analog converter (DAC) shows results of the DWM composition on the monitor on the next vsync.

From the time line, you can imagine the latency of present statistics and how glitches can occur. For example, to show a DWM glitch for the green color appearing on screen, imagine widening the green/red box so that the right side of the green/red box matches up to the right side of the purple/red box. In this scenario, the DAC shows two frames of blue and then the green frame. You can see that this glitch occurred from reading present statistics.

Desktop duplication

Windows 8 disables standard Windows 2000 Display Driver Model (XDDM) mirror drivers. DXGI 1.2 provides the desktop duplication API as an alternative. The desktop duplication API provides remote access to the desktop image for collaboration scenarios.

The desktop duplication API consists of the following methods.

  • IDXGIOutput1::DuplicateOutput
  • IDXGIOutputDuplication::GetDesc
  • IDXGIOutputDuplication::AcquireNextFrame
  • IDXGIOutputDuplication::GetFrameDirtyRects
  • IDXGIOutputDuplication::GetFrameMoveRects
  • IDXGIOutputDuplication::GetFramePointerShape
  • IDXGIOutputDuplication::MapDesktopSurface
  • IDXGIOutputDuplication::UnMapDesktopSurface
  • IDXGIOutputDuplication::ReleaseFrame

For more info about how to use the desktop duplication API, see Desktop Duplication API.

Comparing the DXGI flip model and the BitBlt model

The runtime uses the bit-block transfer (bitblt) and flip presentation models to present graphics content on display monitors. The biggest difference between bitblt and flip presentation models is how back-buffer contents get to the Windows 8 DWM for composition. In the bitblt model, contents of the back buffer are copied into the redirection surface on each call to IDXGISwapChain1::Present1. In the flip model, all back buffers are shared with the Desktop Window Manager (DWM). Therefore, the DWM can compose straight from those back buffers without any additional copy operations. In general, the flip model is more efficient. The flip model also provides more features, such as enhanced present statistics.

If you have legacy components that use Windows Graphics Device Interface (GDI) to write to an HWND directly, use the bitblt model.

Performance improvements of DXGI flip model are significant when the app is in windowed mode. The sequence in this table and the illustration compare memory bandwidth usages and system reads and writes of windowed apps that choose flip model versus the bitblt model.

Step BitBlt model present to DWM DXGI flip model present to DWM
1. The app updates its frame (Write) The app updates its frame (Write)
2. Direct3D runtime copies surface contents to a DWM redirection surface (Read, Write) Direct3D runtime passes the app surface to DWM
3. After the shared surface copy completes, DWM renders the app surface onto screen (Read, Write) DWM renders the app surface onto screen (Read, Write)

Flip model reduces system memory usage by reducing the number of reads and writes by the Direct3D runtime for the windowed frame composition by DWM.

Members

The number of updated rectangles that you update in the back buffer for the presented frame. The operating system uses this information to optimize presentation. You can set this member to 0 to indicate that you update the whole frame.

A list of updated rectangles that you update in the back buffer for the presented frame. An application must update every single pixel in each rectangle that it reports to the runtime; the application cannot assume that the pixels are saved from the previous frame. For more information about updating dirty rectangles, see Remarks. You can set this member to NULL if DirtyRectsCount is 0. An application must not update any pixel outside of the dirty rectangles.

A pointer to the scrolled rectangle. The scrolled rectangle is the rectangle of the previous frame from which the runtime bit-block transfers (bitblts) content. The runtime also uses the scrolled rectangle to optimize presentation in terminal server and indirect display scenarios.

The scrolled rectangle also describes the destination rectangle, that is, the region on the current frame that is filled with scrolled content. You can set this member to NULL to indicate that no content is scrolled from the previous frame.

A pointer to the offset of the scrolled area that goes from the source rectangle (of previous frame) to the destination rectangle (of current frame). You can set this member to NULL to indicate no offset.


С этим читают