Bonjour,
je possède un netbook équipé d'une puce Intel GMA 500.
première surprise, alors que la puce support OpenGL 2.0, le driver Intel n'offre aucun support OpenGL !
deuxième surprise, et c'est l'objet de ce message, le driver ne support pas les résolutions en 256 couleurs.
Du coup, un jeu comme Age Of Empire qui utilise ce mode vidéo, ne tourne pas sur la machine.
J'ai cependant presque réussit à contourner le problème. Le jeu exploite DDRAW.DLL et sa fonction DirectDrawCreate() pour initialiser DirectDraw. J'ai donc développé une nouvelle version de cette DLL sous Delphi avec un objet qui implémente IDirectDraw afin de répondre correctement au jeu.
- première tentative, au lieu d'initialiser une surface primaire en 8bits (non supportée), je crée - en m'appuyant sur la vraie DLL DirectDraw - une surface 32bits primaire et une surface 8bits secondaire (supportée) que je retourne à AOE. Cela fonctionne, cependant les textes affichés par AOE le sont via un appel à GetDC sur la surface...et la patatra, DirectDraw refuse d'allouer un DC pour une surface 8 bits![]()
- dans ma seconde tentative, j'ai remplacé toutes les DirectDrawSurfaces par des Bitmap (en fait des DIB avec CreateDIBSection) ! et miracle du gain de puissance des CPU, le jeu fonctionne très bien en émulation 100% software...à un détail prèsQuand AOE me réclame un DC, j'en crée un par CreateCompatibleDC dans lequel je place mon DIB...AOE affiche effectivement son texte à l'intérieur, mais j'ai un problème de couleur de texte ! J'ai essayé différentes approches, rien n'y fait, j'ai beau créer une palette et la placer dans le DIB, le texte reste généralement noir
Voila , si quelqu'un a une idée, je suis preneur !
Partager