RAS LE BOL DES LIMITIATIONS DES SPRITES ...
Publié : sam. 24/févr./2007 19:49
désolé pour ce coup de gueule, mais faut que je vous explique...
Toujours a propos de mon jeu.
File:1->Aliens_Invasion.zip

J'ai un problème ...
POur réussir mon effet d'éclairage sans consommer trop de CPU.
Je suis obligé de bidouiller avec les commandes de purebasic
et dans ma boucle principal voilà ce que je suis obligé de faire a chaque fois.
je m'explique pour ne voir que ce qui est éclairé part la lumière
je suis obliger de dessiner la map normalement avec la commande
DisplaySprite() puis je dessine mes sprites de personnage avec
RotateSprite3D() et DisplaySprite3D (les commandes 3D ne fonctionnant que pour dessiner sur l'ecran
Ensuite je dois faire un
GrabSprite(#Sprite_Buffer,...)
CreateSprite3D(#Sprite_Buffer,#Sprite_Buffer)
puis je suis obliger de reprendre l'adresse de l'image a chaque fois sinon ça plante
cette information me sert part la suite pour savoir lorsque je trace mon éclairage si je suis sur un mur ou pas. Ayant caché sur le bit de poids faible de la couleur cette information %00 le sol %01 objet mi auteur %11 Mur.
J'efface maintenant l'écran
et je dessine mes effets lumineux avec les commandes
Sprite3DBlendingMode(#D3DBLEND_SRCALPHA, #D3DBLEND_ONE)
DisplaySprite3D()
ensuite je vais redessiner la map avec
Ainsi j'ai je n'ai que ce qui est éclairer par la lumière qui s'affiche
Le problème c'est que je suis limité pour la taille de l'affichage a cause de l'utilisation d'un sprite 3D comme buffer qui est en permanance recréé, sachant que ce dernier sur beaucoup de carte graphique fait des petits bugs graphiques....
ça vas bientôt faire 1 an que bosse dessus :(topic original :
http://www.purebasic.fr/french/viewtopi ... =eclairage
j'ai réussi a passer de 13FPS au tout debut a plus de 200FPS, mais voilà ça bug, c'est pas tres propre comme methode... Et je commence a fatigué.
Mais pourquoi ne pouvons nous pas dessiner dans un Sprite avec des sprites 3D ??????
Et sinon quelqu'un aurait il une autre methode ? doit bien avoir un moyen..j'ai l'impression d'avoir tout tester en 1 ans.... Bouuuuuuuuuuuuuuuuuuuuuu pourquoi j'arrive jamais a faire ce que je veux
Toujours a propos de mon jeu.
File:1->Aliens_Invasion.zip

J'ai un problème ...
POur réussir mon effet d'éclairage sans consommer trop de CPU.
Je suis obligé de bidouiller avec les commandes de purebasic
et dans ma boucle principal voilà ce que je suis obligé de faire a chaque fois.
je m'explique pour ne voir que ce qui est éclairé part la lumière
je suis obliger de dessiner la map normalement avec la commande
DisplaySprite() puis je dessine mes sprites de personnage avec
RotateSprite3D() et DisplaySprite3D (les commandes 3D ne fonctionnant que pour dessiner sur l'ecran

Ensuite je dois faire un
GrabSprite(#Sprite_Buffer,...)
CreateSprite3D(#Sprite_Buffer,#Sprite_Buffer)
puis je suis obliger de reprendre l'adresse de l'image a chaque fois sinon ça plante
Code : Tout sélectionner
StartDrawing(SpriteOutput(#Sprite_Buffer))
DBuffer = DrawingBuffer()
DBufferP = DrawingBufferPitch()
PixelFormat = DrawingBufferPixelFormat()
Select PixelFormat
Case #PB_PixelFormat_8Bits : PixelFormat=1
Case #PB_PixelFormat_15Bits : PixelFormat=2
Case #PB_PixelFormat_16Bits : PixelFormat=2
Case #PB_PixelFormat_24Bits_RGB : PixelFormat=3
Case #PB_PixelFormat_24Bits_BGR : PixelFormat=3
Case #PB_PixelFormat_32Bits_RGB : PixelFormat=4
Case #PB_PixelFormat_32Bits_BGR : PixelFormat=4
EndSelect
StopDrawing()
J'efface maintenant l'écran
et je dessine mes effets lumineux avec les commandes
Sprite3DBlendingMode(#D3DBLEND_SRCALPHA, #D3DBLEND_ONE)
DisplaySprite3D()
ensuite je vais redessiner la map avec
Code : Tout sélectionner
Sprite3DBlendingMode(#D3DBLEND_INVSRCALPHA, #D3DBLEND_SRCCOLOR);
DisplaySprite3D(#Sprite_Buffer,ME_WinX,ME_WinY)
Le problème c'est que je suis limité pour la taille de l'affichage a cause de l'utilisation d'un sprite 3D comme buffer qui est en permanance recréé, sachant que ce dernier sur beaucoup de carte graphique fait des petits bugs graphiques....
ça vas bientôt faire 1 an que bosse dessus :(topic original :
http://www.purebasic.fr/french/viewtopi ... =eclairage
j'ai réussi a passer de 13FPS au tout debut a plus de 200FPS, mais voilà ça bug, c'est pas tres propre comme methode... Et je commence a fatigué.
Mais pourquoi ne pouvons nous pas dessiner dans un Sprite avec des sprites 3D ??????
Et sinon quelqu'un aurait il une autre methode ? doit bien avoir un moyen..j'ai l'impression d'avoir tout tester en 1 ans.... Bouuuuuuuuuuuuuuuuuuuuuu pourquoi j'arrive jamais a faire ce que je veux
