Desativar DirectDraw, mas ainda tem Direct3D?

2

Eu tenho uma máquina com Windows XP SP3, com patches atualizados. Tem o DirectX 9.0c, número de versão 4.09.00.0904.

Posso desabilitar o DirectDraw, mas o Direct3D ainda está ativo?

Eu li os artigos da Wikipedia sobre DirectDraw e Direct3D , mas não sei se os entendi corretamente:

That is, it contains many commands for 3D rendering; however, since version 8, Direct3D has superseded the old DirectDraw framework and also taken responsibility for the rendering of 2D graphics.

Isso significa que o DirectDraw agora faz parte do Direct3D? Porque não consigo desabilitar o DirectDraw sem desabilitar o Direct3D, mas funciona ao contrário.

    
por GodsBoss 25.06.2012 / 16:43

2 respostas

3

A página da Wikipedia para o DirectDraw (e os outros componentes do DirectX) é bastante clara sobre a situação. Mas vou resumir e consolar os bits relevantes (parafraseando claro):

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.

Então, basicamente, a menos que você esteja usando o DirectX 7 ou inferior (o que não é), não será possível desativar o apenas DirectDraw (como um todo), uma vez que ele não existe mais como um estrutura autônoma. Em vez disso, você só pode desativar as funções do DirectDraw do DirectX.

Isso, é claro, pode ou não ter um efeito no Direct3D, pois algumas funções 3D dependem de funções 2D (ah, cursos uni comp.graphics, quão interessante você era…).

Não posso falar categoricamente, mas com base em outros cenários semelhantes e no histórico da Microsoft, duvido muito que eles o tenham projetado para que partes do framework possam ser ativadas ou desativadas; é praticamente garantido que é um caso de tudo ou nada. Ou seja, se você desabilitar o DirectDraw, o Direct3D também será desativado porque foi criado e depende do 2D. Se você desabilitar o 3D, o 2D ainda funcionará, uma vez que os cálculos 3D não são necessários para o trabalho 2D.


Tudo o que disse, você não está realmente desabilitando DirectDraw ou Direct3D. Os botões aos quais você está se referindo (abaixo) não desabilitam as estruturas, eles desativam apenas aceleração de hardware . As funções ainda existem e ainda estão disponíveis para o software; eles funcionam muito mais devagar porque são executados via CPU / RAM, em vez de via GPU / VRAM.

Se a desativação da aceleração resolver o problema, é porque o software é antigo e não é compatível com hardware / drivers mais recentes. Você pode ter que fazer um acordo aceitando a inconveniência de ativar / desativar a aceleração antes de executar o jogo (ou apenas viver sem aceleração).

    
por 27.06.2012 / 05:13
2

Dado que o DirectDraw agora está implementado no Direct3D, isso agora tornaria um subconjunto do Direct3D.

Portanto, desabilitando a interface do DirectDraw em seu tempo de execução do Direct3D, seus outros recursos de renderização do Direct3D não devem ser afetados.

Para ficar um pouco técnico, imagino, desabilitando o DirectDraw, todas as tentativas de recuperar um IDirectDraw7 a instância falhará. Embora as tentativas de recuperar uma instância de IDirect3D9 continuarão funciona bem.

    
por 25.06.2012 / 21:41