Graphics et asm

Graphics et asm - ASM - Programmation

Marsh Posté le 04-03-2003 à 16:18:50    

Je sais qu'en pokant dans a000:x on peut faire des jolis pixels.. Mais ya t il d'autres méthodes pour afficher des graphs sur l'écran (en mode dos) que d'écrire directement ds la memoire ?
Inutile de préciser que je débute  :D (niveau "Hello world" )

Reply

Marsh Posté le 04-03-2003 à 16:18:50   

Reply

Marsh Posté le 04-03-2003 à 17:00:11    

oui bien sûr, il y a toujours les services DOS ou BIOS, ou mieux, manipuler directement la carte vidéo [:banzai]
 
Franchement la méthode que tu décris est la plus facile.

Reply

Marsh Posté le 04-03-2003 à 17:22:15    

Al zheimeR a écrit :

Je sais qu'en pokant dans a000:x on peut faire des jolis pixels..


Sauf si tu es en mode X


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 04-03-2003 à 22:31:33    

drasche a écrit :


Franchement la méthode que tu décris est la plus facile.


 
Mais est-ce la plus rapide ?

Reply

Marsh Posté le 04-03-2003 à 22:45:10    

Al zheimeR a écrit :


 
Mais est-ce la plus rapide ?


le plus rapide est de tout écrire dans une zone off-screen et de tout balancer dans la vram à coup de rep movsb


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 04-03-2003 à 22:58:25    

si tu veux que ca aille plus vite, il faut faire un buffer comme le dit Harko mais par contre utilise rep movsw ou movsd qui font les copies par paquets de 2 ou 4 octets...
 
pour info, des routines bien optimisées permettent de faire tourner a plein tube (aka 70 images/sec la limite du VGA)
3000 sprites avec scrolling sur un 486DX...
 
 
 
ensuite, si tu veux rester en assembleur, tu peux utiliser la norme VESA (qui est implémenté dans toutes les cartes vidéo) qui te permet d'acceder aux hautes resolutions (taille et couleurs) mais c'est la merde a programmer (switchage de buffer, plan de bit (comme le mode x) )
 
nb: le mode x est un hack du vga qui te permet de passer en 320x240 au lieu de 320x200...
tu as aussi un autre hack qui est de supprimer le double chain du VGA ce qui te permet de passer en 320x400...

Reply

Marsh Posté le 05-03-2003 à 20:21:21    

le plus rapide c'est d'utiliser le hardware dédié pour
écrire en mémoire vidéo..
 
Après tout dépend quelles sont tes ambitions..
 
LeGreg


---------------
voxel terrain render engine | animation mentor
Reply

Marsh Posté le 05-03-2003 à 21:43:34    

djok_fb a écrit :

si tu veux que ca aille plus vite, il faut faire un buffer comme le dit Harko mais par contre utilise rep movsw ou movsd qui font les copies par paquets de 2 ou 4 octets...
 
pour info, des routines bien optimisées permettent de faire tourner a plein tube (aka 70 images/sec la limite du VGA)
3000 sprites avec scrolling sur un 486DX...
 
 
 
ensuite, si tu veux rester en assembleur, tu peux utiliser la norme VESA (qui est implémenté dans toutes les cartes vidéo) qui te permet d'acceder aux hautes resolutions (taille et couleurs) mais c'est la merde a programmer (switchage de buffer, plan de bit (comme le mode x) )
 
nb: le mode x est un hack du vga qui te permet de passer en 320x240 au lieu de 320x200...
tu as aussi un autre hack qui est de supprimer le double chain du VGA ce qui te permet de passer en 320x400...
 


 
 
 :ouch: c'est la que jme dit que win avec directx spa si terrible que ca
 
sinon pour transfere des bytes ya pas moyen de demander a la carte graphique de le faire (blitting) plutot que avec des move??


Message édité par red faction le 05-03-2003 à 21:45:51
Reply

Marsh Posté le 06-03-2003 à 10:13:58    

red faction a écrit :


 
 
 :ouch: c'est la que jme dit que win avec directx spa si terrible que ca
 
sinon pour transfere des bytes ya pas moyen de demander a la carte graphique de le faire (blitting) plutot que avec des move??


pas en VGA...
 
si tu veux que ce soit la carte qui le fasse, il faut que tu appelles les fonctions de la carte directement en ASM (a priori, ca doit etre poilu car ca veut dire ecrire un driver) sachant aussi que Ati et nVidia sont pas mouchards sur leur spec'...
 
sinon faut passer par une API toute faite (comme DirectX ou SQL) qui te "générifie" les fonctions d'affichage...


Message édité par djok_fb le 06-03-2003 à 10:14:55
Reply

Marsh Posté le 06-03-2003 à 10:37:21    

djok_fb a écrit :


pas en VGA...
 
si tu veux que ce soit la carte qui le fasse, il faut que tu appelles les fonctions de la carte directement en ASM (a priori, ca doit etre poilu car ca veut dire ecrire un driver) sachant aussi que Ati et nVidia sont pas mouchards sur leur spec'...
 
sinon faut passer par une API toute faite (comme DirectX ou SQL) qui te "générifie" les fonctions d'affichage...


 
SDL plutot, non ? [:meganne]

Reply

Marsh Posté le 06-03-2003 à 10:37:21   

Reply

Marsh Posté le 06-03-2003 à 14:11:42    

oui  :whistle:  
désolé ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed