[DirectX] Integration de filtre de scaling 2D avec DirectGraphics

Le côté programmation du développement d'un jeu vidéo.

Integration de filtre de scaling 2D avec DirectGraphics

Messagepar Syphius » 12 Avr 2006, 18:19

Bonjour,

Je développe actuellement un jeu 2D avec DirectGraphics (en C++) pour l'affichage (direct3D).
Je cherche actuellement à améliorer la qualité de l'affichage des sprites lors du changement vers une résolution plus grande. Pour cela j'ai trouver quelque algorithme efficace comme :

- 2xSai (Super 2xSai, Super Eagle) :
- Scale2X
- Hq2X (Hq3X, Hq4X)

Et mon problème viens que je ne sais pas comment les appliquer à mon jeu, il semble avoir plusieurs solution:

- A l'aide de Pixel Shader :
Le problème c'est que mon jeu utilise déjà des pixel shaders et que tout les algorithmes précédent ne sont pas implémenter comme pixel shader.
- Avec un traitement directement sur les texture :
Mais la je ne vois pas trop comment faire pour cela ne rame pas, peut être en prétraitant tout les sprites au démarrage du jeu (je n'ai pas énormément de sprites)? Ou à chaque affichage?

Voila mon problème, Quel est votre avis? Quelle solution puis-je utiliser?

Merci d'avance,

Syphius.
Avatar de l’utilisateur
Syphius
Hello World, I'm new !
 
Messages: 81
Inscription: 11 Avr 2005, 20:13

Messagepar tof » 12 Avr 2006, 19:30

A vérifier dans les sources de visualboy advance ou mame, mais il me semble que les algo sont appliqués en direct sur l'intégralité de l'écran (ou la fenêtre), sans que cela entraîne un fort ralentissement. Du moins je n'ai rien remarqué.
tof
 
Messages: 1763
Inscription: 11 Avr 2005, 12:00

Messagepar Syphius » 12 Avr 2006, 19:37

Merci de ta réponse,

mais j'ai une question peut être bête, comment faire pour appliquer a tous les pixel de l'écran après avoir afficher les pixel shaders?
Avatar de l’utilisateur
Syphius
Hello World, I'm new !
 
Messages: 81
Inscription: 11 Avr 2005, 20:13

Messagepar grob1212 » 14 Avr 2006, 09:07

Syphius a écrit:mais j'ai une question peut être bête, comment faire pour appliquer a tous les pixel de l'écran après avoir afficher les pixel shaders?


afficher les pixels shaders ? Ca ne veut rien dire pour moi...

Une solution à ton problème consiste à utiliser une texture dans laquelle tu effectue le rendu de la scène. Ensuite, tu dessines un quad aligné sur le backbuffer en utilisant la texture précédente (en fait, il s'agit de faire correspondre chaque texel de ta texture avec le pixel correspondant dans le backbuffer). En utilisant l'algorithme d'amélioration de ton choix dans le pixel shader, on atteind l'effet désiré.
grob1212
Hello World, I'm new !
 
Messages: 277
Inscription: 13 Avr 2005, 15:12

Messagepar Syphius » 14 Avr 2006, 10:53

Bonjour,

et merci de ta réponse, en fait ce que je voulais dire, c'est que pour le rendu j'utilise plusieur pixel shader, un pour le background, quelque fois un pour chaque sprites (chacun utilisant un effet different (luminosité plus forte, changement de couleurs etc...)).
Donc voila ma question est il possible de faire le rendu sur une autre surface que le backbuffer en applicant à chaque fois un pixel shader different sur les différent sprites? Afin de pouvoir ensuite appliquer un algorithme et transférer l'image sur le backbuffer pour pouvoir faire le rendu final?
Avatar de l’utilisateur
Syphius
Hello World, I'm new !
 
Messages: 81
Inscription: 11 Avr 2005, 20:13

Messagepar Loulou » 14 Avr 2006, 10:57

grob1212 a répondu à ta question non ?
Loulou
Hello World, I'm new !
 
Messages: 702
Inscription: 10 Avr 2005, 12:00

Messagepar Syphius » 14 Avr 2006, 13:11

Daccord, donc c'est possible faire le rendu de la scène sur une autre surface que le backbuffer. mais alors comment faire? je ne suis expert en Direct3D, peut être avec la méthode strechblit? mais les pixel shader sont il appliquer avec cette méthode? Je ne voit pas vraiment comment appliquer les pixel shader sur mes sprites pour faire le rendu sur une autre texture?
Avatar de l’utilisateur
Syphius
Hello World, I'm new !
 
Messages: 81
Inscription: 11 Avr 2005, 20:13

Messagepar Syphius » 14 Avr 2006, 14:17

Voila j'ai trouver la réponse ici

donc merci beaucoup!
Avatar de l’utilisateur
Syphius
Hello World, I'm new !
 
Messages: 81
Inscription: 11 Avr 2005, 20:13


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 9 invités

cron