1

Salut tlm.
En C sous visual C++, j'aimerais bien pouvoir accéder à une bitmap pour pouvoir la modifier (en gros comme si j'accédais à la mémoire vidéo) et faire de la transparence par exemple. Mais voilà. Une fois que la bitmap est créée (en utilisand CreateBitmapIndirect) il n'est plus possible de modifier le contenu.
infos requises, et je fais aussi:long *bloc; bloc=malloc(640*480*4); bitmap.bmBits=bloc;Donc je crée une structure BITMAP, je la remplis avec lesLà je sélectionne la bitmap crée dans mon hdc, et je peux écrire dessus, la recopier dans le hdc standard (celui fourni par BeginPaint) et tout fonctionne. Je fais aussi un GetObject pour avoir ma bitmap depuis la hbitmap reçue, mais rien à faire, si je modifie qqch à partir de bloc ou bitmap.bmBits, le changement ne se reflète pas à l'écran quand je le recopie. Et pourtant, je fais comme test un memset(bloc,0xff,640*480*4), je compare si bitmap.bmBits==bloc, que *bloc==0xffffffff et tout va bien mais j'ai toujours aucun changement sur l'écran si je la recopie. Bizarre... Que dois-je faire, que font les fonctions windows pour y accéder?
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

2

Essaye de regarder du côté de GetDIBits et SetDIBits. Mais fait attention au format des données si tu les utilises...
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

3

Heu avec GetBitmapBits et SetBitmapBits ça marche, mais qu'est-ce que c'est lent! En fait uniquement l'appel à ces deux fonctions doit bien taper 50 ms. Sur un PC extrêmement récent, ça peut passer, mais sur mon P2 350 c'est pas ça du tout. Alors que chaque fonction windows du genre GetPixel ou SelPixel ne doit certainement pas tout recopier, il doit pouvoir accéder au buffer, mais comment???
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

4

Heu, essaye CreateDIBSection, là ça devraît fonctionner.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

5

Je vais essayer (déjà rien que de regarder les structures qu'il faut créer ça me donne envie de me tier une balle, enfin bon... neutral)
Merci! happy
Autre question: J'ai épluché la doc mais y'a pas moyen d'avoir accès aux données d'un handle (du genre HeapDeref sur TI) alors je ne sais pas si tu sais comment faire ça?
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

6

Erf, c pas bien ça. J'ai jamais trop su. Pendant un temps, j'avais pensé à un truc pour accéder aux données d'un handle, mais j'ai oublié mon idée tongue
Sinon, pour faire comme sur TI, mais vaux mieux éviter qd c'est pas nécéssaire (qd tu n'as pas besoin de mémoire globale): HeapXYZ -> GlobalXYZ
et ça marche grin (sauf bien sûr pour les paramètres)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

7

('tain tes avatars me donnent envie de jouer à golden sun! grin)
Sinon ça marche pour la DIBitmap. Tout est devenu extrêmement rapide, même AlphaBlend de windows, mes fonctions d'addition, soustraction, masquage etc. de pixels. Et même le stretchblt en halftone.
...Mais par contre...
BitBlt est devenu abominablement lent! C'est pas croyable, à 20 FPS, ça consomme 20% de CPU pour une DIB de 512x446 pixels, et comme j'ai plusieurs plans... c'est mortel. Et 20 FPS sans compter le reste c'est déjà pas beaucoup...
Tu connaitrais pas une autre solution que bitblt? smile
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

8

Autre solution que bitblt -> dessiner tout toi même, mais à ce moment là... neutral
Sinon, si tu fais un jeu, tu as pensé à DirectDraw (à tout hasard) ?
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

9

DirectDraw -> Peut-être mais je ne m'en sors pas DU TOUT malheureusement. Mais bon je rééssayerai une fois smile
Dessiner moi-même -> impossible car je ne peux accéder à une bitmap standarde justement... et le hdc standard c'est ça qu'il utilise. sad
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

10

faut preciser a windaube de redesiner/refresh ton bitmap sinon il le fait pas...

11

Mais comment? Avec GdiFlush ça marche avec les DIB (maintenant j'ai pas essayé avec les bitmap standardes mais ça m'étonnerait)
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

12

bein faut chercher sur msdn tongue je savais faire mais j'ai oublié vu que je prog plus sous win tongue