Отключить DirectDraw, но все еще есть Direct3D?

1796
GodsBoss

У меня машина с Windows XP SP3, с последними исправлениями. Он имеет DirectX 9.0c, номер версии 4.09.00.0904.

Могу ли я отключить DirectDraw, но Direct3D все еще активен?

Я читаю статьи в Википедии о DirectDraw и Direct3D, но не знаю, правильно ли я их понимаю:

То есть он содержит много команд для 3D-рендеринга; однако, начиная с версии 8, Direct3D заменил старую инфраструктуру DirectDraw, а также взял на себя ответственность за рендеринг 2D-графики.

Означает ли это, что DirectDraw теперь является частью Direct3D? Потому что я не могу отключить DirectDraw без отключения Direct3D, но он работает наоборот.

2
DirectDraw не существует в Direct3D9. Что привело вас к идее отключить DirectDraw? Der Hochstapler 11 лет назад 3
Я изучаю варианты против [сбоя AoE II при нажатии чата или дипломатии] (http://www.neoseeker.com/forums/2359/t1367195-crash-clicking-chat-diplomacy/). dxdiag.exe позволяет мне отключить «DirectDraw», «Direct3D» и «ускорение AGP» (я не уверен насчет последнего пункта). Но отключать его каждый раз, когда в игру играют, - не вариант, за исключением того, что это делается программно, а попытка сделать это просто заразила мою ненависть к программированию на Win32. GodsBoss 11 лет назад 0

2 ответа на вопрос

3
Synetech

The Wikipedia page for DirectDraw (and the other DirectX components) is pretty clear about the situation. But I’ll summarize and consolate the relevante bits (paraphrasing of course):


1:1 At first, there was only darkness and graphical chaos. 1:2 One day, Microsoft said let there be a single, consistent graphical framework and created DirectDraw, and there was, and it was good. 1:3 Microsoft told it to go forth and frolic in the garden of hardware and create many beautiful 2D pictures. 1:4 DirectDraw did and it too was good.

2:1 One day, the serpent of ambition came to DirectDraw and told it of wondrous 3D pictures. 2:2 The serpent convinced DirectDraw that it can make 3D pictures by eating of the fruit of the knowledge tree, so DirectDraw ate the fruit and began trying to create 3D pictures.

3:1 Microsoft, seeing that DirectDraw was lonely and worked too hard to create 3D graphics by itself, took pity on it and using parts of DirectDraw, created Direct3D. 3:2 DirectDraw and Direct3D lived happily together for a time.

4:1 With the help of their neighbors, DirectDraw and Direct3D begat DirectX. 4:2 DirectX was a humble child, but one full of potential. 4:3 DirectX was also a jealous child and strived to destroy its brother OpenGL who only lived in the magnificent castles of Mainframe.

5:1 DirectX 1 begat DirectX 2 and DirectX 2a who, unlike DirectX 1 and 2, was a part of the city of Windows. DirectX 2a went forth and multiplied for four and two generations, creating frameworks that allowed beauty and games that were most awesome to blossom.

6:1 By the time of DirectX 6, son of DirectX 5, the DirectX family had grown slovenly and fat and was difficult to manage.

7:1 The people of the land complained of the inbreeding of DirectX 7. 7:2 They did not like the incestuous overlap between the functions of DirectDraw and Direct3D. 7:3 Seeing this corruption of HIS creations, Microsoft decreed that there be only one framework. 7:4 To cleanse DirectDraw of the sins of envy, pride, and gluttony, HE sent a mighty developmental flood as well as object-oriented fire and brimstone and a pillar of cryptographic salt to the town of DirectDraw.

8:1 For DirectX 8, HE left DirectDraw behind and started over with just Direct3D, who had survived because it followed instructions and did not look back as DirectDraw officially died. 8:2 Direct3D complained not of the loss of its beloved DirectDraw, and seeing this loyalty, Microsoft gave it a new, and even better partner. 8:3 HE took the surviving, still pure 2D functions of DirectDraw and created DirectX Graphics so that Direct3D may be happy and fully functional.

9:1 DirectX 8, son of Direct3D and DirectX Graphics (and their neighbors) begat DirectX 9 which was a fine child. 9:2 DirectX 9 lived for many, many years, longer than anyone else. 9:3 It accomplished many wondrous things and made its ancestors proud. 9:4 The villagers of XP, where DirectX 9 now lived, still worshiped Microsoft but began to also worship idols of golden penguins and ate of the forbidden apples. 9:5 This made Microsoft angry and HE exiled the village of XP. 9:6 HE left the long, and grey-bearded DirectX 9 in XP and create the city of Vista with the proud new child DirectX 10. 9:7 In the city of Vista, many people had to upgrade their homes to pay the high taxes of DirectX 10.

10:1 Later on, DirectX 10 begat Direct2D which was like DirectDraw++, and it was so-so. 10:2 It was a proud and demanding child, not content with fine homes like XP and instead insisted on living within the kingdom of Windows 7. 10:3 It was also a greedy child, declaring a need for much video-card wealth, even though it was really just a petty 2D framework. 10:4 The people complained and so Microsoft made it available to the citizens of Vista. 10:5 Not content with that, the people of XP who still lived in small huts, invaded and conquered Vista where they looted and pillaged and kidnapped DirectX 10 to their home in XP. 10:6 DirectX 10 eventually bowed to the people’s will and learned to live and work in XP, but never with its full heart.

11:1 DirectX 10 begat DirectX 11, but this time the people could not kidnap it to their village of XP. 11:2 They saw that many of the new knights, soldiers, Zerg, and other foreign nobles demanded the presence of king DirectX 11 or queen DirectX 11, and so they acquiesced and either settled for what they had or paid the multitude of taxes so that the greatness of DirectX 10 and 11 could be visited upon them.

12:17:12:6:2 Far away, near the edge of the world where sea-beasts, dragons, and llamas wreak terror, a grand and ancient calendar of the Mayan kingdom was discovered, in which the end of the world was predicted (not really, but let’s just pretend).

13:0:0:0:0 Seeing the idolatry and corruption in the world, the God of Microsoft sent four great solar flares of white, red, black, and pale upon the world and destroyed all electronics. Only the astronauts who were raptured away upon the ark survived while the rest of the world fell into chaos and turmoil for seven upon seven years.


So basically, unless you are using DirectX 7 or lower (which you’re not), you will not be able to disable just DirectDraw (as a whole) since it no longer exists as a standalone framework. Instead, you can only disable the DirectDraw functions from DirectX.

This of course may or may not have an effect on Direct3D since some 3D functions rely on 2D functions (ah, uni comp.graphics courses, how interesting were ye…).

I can’t speak categorically, but based on other similar scenarios and Microsoft’s history, I highly doubt that they designed it so that parts of the framework could be toggled on or off; it’s pretty much guaranteed to be an all-or-nothing affair. That is, if you disable DirectDraw, then Direct3D goes down too because it is built, and relies upon 2D. If you disable 3D, then 2D still works since 3D calculations are not required to do 2D work.


All that said, you are not actually disabling either DirectDraw or Direct3D. The buttons you are referring to (below) don’t disable the frameworks, they only disable hardware-acceleration. The functions still exist and are still available for the software; they just run much slower because they are performed by via the CPU/RAM instead of via the GPU/VRAM.

If disabling acceleration fixes the problem, then it is because the software is old and not compatible with newer hardware/drivers. You may have to make a compromise by accepting the inconvenience of toggling the acceleration on/off before after running the game (or just live without acceleration).

DXDiag DirectX acceleration

Вот Это Да! Большое спасибо, особенно за эту библейскую часть. Тогда я возьму одну из альтернатив. GodsBoss 11 лет назад 0
Если ваша видеокарта все еще поддерживается производителем, вы можете попробовать опубликовать отчет об ошибке в надежде на то, что они исправят проблему в будущих выпусках драйверов. Synetech 11 лет назад 0
2
Der Hochstapler

Учитывая, что DirectDraw теперь реализован в Direct3D, это сделало бы его подмножеством Direct3D.

Таким образом, отключив интерфейс DirectDraw во время выполнения Direct3D, ваши другие возможности визуализации Direct3D не должны быть затронуты.

Чтобы получить техническую информацию, я хотел бы представить, что при отключении DirectDraw все попытки получить экземпляр IDirectDraw7 потерпят неудачу. Хотя попытки получить экземпляр IDirect3D9 все равно будут работать нормально.

Почему я не подумал об этом? Я попробую и проверим, могу ли я создавать экземпляры в небольшой тестовой программе. Большое спасибо! GodsBoss 11 лет назад 0

Похожие вопросы