And these computers do not have multiple video cards, just the Intel chipset. They are Optiplex computers. Please ask Swiftview support for help, or visit its official website to see if there is any update for Windows 10 or some similar cases can be regarded as a reference. I believe that this is not a video driver or compatibility issue. Microsoft broke the rendering of GDI text in the Creators update. As the author of a music notation program that I adapted to run in high dpi, I was dismayed to see how abysmal my application runs under the Creators update on a high dpi screen.
Large font sizes are necessary on high dpi screens, and anything 36 point or higher takes a minimum of twice as long to render under the Creators update. I have observed it with three different systems running Windows This is easily measured and verified using Visual Studio's tool tips and comparing the execution time required to update the screen with large-point-size fonts.
I would guess that this is a byproduct of trying to improve the scaling of older programs to high dpi screens automatically. Microsoft has essentially crippled any GDI program that has already adapted itself for high dpi.
I have the data to demonstrate this, but after trying to post it in several forums and talk with Microsoft Support by phone, I can't even get anyone to look at it. Doesn't anyone at Microsoft realize what they've done? Ok I have somewhat of an idea of what can help. Yesterday we had another application, written internally that was unusably slow on Windows Our developer is working on it, but this looks like the solution. Unfortunately it requires changes to the application.
If you enable double buffering in the application, the sluggishness goes away. Office Office Exchange Server. Not an IT pro? Resources for IT Professionals. Sign in. United States English. Ask a question. Quick access. Search related threads. Direct2D makes it easier to create a modern UI because it has strict guarantees on how it accepts and renders transparent content, and all of its primitives are rendered using hardware acceleration.
Because Direct2D is built with this emphasis on 3D acceleration it is also easy to use with Direct3D. The application calls GDI which then calls its kernel mode counterpart which passes the primitives to its own driver model.
This driver then sends the results to the global kernel mode display driver. Direct2D, however, runs in user mode and passes drawing commands through the user mode Direct3D driver to the kernel mode driver. The most important difference between Direct2D and GDI hardware acceleration is the underlying technology that drives them. Over time, more and more emphasis was placed on 3D game acceleration and less on application acceleration.
This set the stage for a sequence of changes to how GDI renders to the display. There were also a number of additional factors that caused changes to the GDI driver model, as explained below. More complex code tends to have more defects making it beneficial for the driver to exist in user-mode where a driver bug can't cause a system reboot. As can be seen in the figure above, the display driver is divided into a complex user mode component and a simpler kernel mode component.
In Windows XP, a display driver exists in two different address spaces: session space and kernel space. Parts of the driver need to respond to events such as power management events. This needs to be synchronized with the driver state in the session address space. This is a difficult task and can lead to defects when display drivers attempt to deal with these distinct address spaces.
The Desktop Window Manager DWM , the compositing window manager introduced in Windows 7, renders all windows to off-screen surfaces and then composes them together to be displayed on screen. This requires GDI to be able to render to a surface which will then be rendered by Direct3D to display. The driver model used in Windows Vista required that every GDI window be backed by both a video memory surface and a system memory surface.
This resulted in system memory being used for every GDI window. Hopefully that gives you some ideas anyway. Double buffering is definitely the way to go for speed and non-flickering UI. It can take a little bit of effort to get going but it's definitely worth it. Stack Overflow for Teams — Collaborate and share knowledge with a private group. Create a free Team What is Teams? Collectives on Stack Overflow. Learn more. Asked 9 years, 7 months ago. Active 9 years, 7 months ago.
Viewed 6k times. SelectObject I. Thanks for any advice you can offer. Improve this question. If you are using GDI, you are unlikely to benefit from hardware acceleration. At least to any reasonable extent. What is much more worth doing is to go through your code and clean it up to remove various sorts of excessive processing.
You can also try disabling Aero to possibly roll back to "classic" GDI as opposed to implementation on top of Direct3D. If the only thing you want to do is double buffering I can't quite follow your question, but I think that that's what you want , then you're much better off using CMemDC which is only 2 or 3 lines of code to add to your OnPaint method and voila, you're good to go.
Add a comment.
0コメント