tracer une droite en mode video 13h - ASM - Programmation
Marsh Posté le 17-01-2006 à 01:03:29
C'est urgent de tracer des droites en assembleur à une heure du matin ?
Marsh Posté le 17-01-2006 à 10:05:42
penche toi sur l'algo de tracé de droites de bresenham ... il est simple à comprendre et très performant tu devrais trouver tout ca facilement sur google
Marsh Posté le 17-01-2006 à 11:21:18
sinon sans bresenham, tu fais de la virgule fixe 16:16, et tu itères bêtement sur l'axe où la droite a la plus de delta.
deltaX=X1-X0
deltaY=Y1-Y0
si deltaX>deltaY
gradient=deltaY/deltaX
Y=Y0
pour X de X0 à X1
trace (X,Y)
Y+=gradient
fin pour
sinon
gradient=deltaX/deltaY
X=X0
pour Y de Y0 à Y1
trace(X,Y)
X+=gradient
fin pour
fin si
tu codes ça d'abord en C en virgule flottante (avec des float pour gradient et X & Y qui sont interpolés), tu vérifies que ça marche comme ça devrait (en faisant tourner les extrémitées de la ligne autour du centre de l'écran), et ensuite tu commençes le codage en asm, et si tu veux que je t'expliques comment faire de la virgule fixe 16:16, je te filerai de l'aide.
Marsh Posté le 17-01-2006 à 11:38:07
bjone a écrit : sinon sans bresenham, tu fais de la virgule fixe 16:16, et tu itères bêtement sur l'axe où la droite a la plus de delta. |
Sérieusement, ce sera plus compliqué que de faire directement l'algo de bresenham tant celui-ci est simple, hein
Marsh Posté le 17-01-2006 à 11:48:24
simple pas spécialement, l'interpolation linéaire est le plus intuitif c'est le premier truc que l'on apprends à l'école.
de plus c'est certainement le plus rapide des 2, le nombre d'instruction par pixel est plus réduit, et un seul branchement...
et pour paramétrer d'autres grandeur sur ta ligne (couleur) bresenham me semble moins indiqué (en fait j'ai jamais essayé ).
ceci dit, le mieux est de faire les deux. (bresenham & interpolation linéaire en virgule fixe).
c'est assez marrant quand j'étais en bts, le prof ne pensait pas que c'était possible de traçer une ligne sans bresenham "mais si monsieur, vous prenez un cpu 32bits, vous faites de la virgule fixe" - "ça se saurait"
bref travailler sur des cpus 16bits ça laisse des traçes
Marsh Posté le 17-01-2006 à 11:50:44
les lignes epaisse de plus (ou de moins )d'un pixel , c'est la merde a tracer correctement a l'epoque je les extrudais et les passait au poly filler, pas super rapide mais le rendu tabaissait. D'ailleurs jcrois meme que j'avais degagé bresenham & consort au bénéfice de cette methode (gupta sproul ou jsaipu quoi )
Marsh Posté le 17-01-2006 à 11:54:28
ReplyMarsh Posté le 17-01-2006 à 13:25:01
je vais essayer de faire le programme en c,et puis je ferai la conversion en asm,car j'ai essayé de plusieurs manières de le faire en asm,mais ça pas marché
Marsh Posté le 17-01-2006 à 13:51:41
quelle est la fonction arrondir en asm,qui sert à remplacer un réél par l'entier le plus proche de lui,qqun peut me la donner en asm?
Marsh Posté le 17-01-2006 à 13:56:26
enfin je sais pas quel genre d'arrondi ca fait, cela dit, je crois que ca tronque
Marsh Posté le 17-01-2006 à 13:58:14
ingainga a écrit : quelle est la fonction arrondir en asm,qui sert à remplacer un réél par l'entier le plus proche de lui,qqun peut me la donner en asm? |
y'a pas de fonction en asm, que des mnémoniques
Marsh Posté le 17-01-2006 à 14:00:34
heuuu si tu fais de l'asm tu utilises pas de la virgule flottante pour une boucle de traçage de ligne
Marsh Posté le 17-01-2006 à 14:02:20
ReplyMarsh Posté le 17-01-2006 à 14:06:53
bien sur que j'utilise pas des flottants pour tracer,c'est pour cela que j'ai besoin de la procedure arrondir,car les extrémités sont des flottants,voilà
Marsh Posté le 17-01-2006 à 14:09:47
bordel, mais code en virgule fixe
http://forum.hardware.fr/hardwaref [...] tm#t537664
Marsh Posté le 17-01-2006 à 14:12:20
Harkonnen a écrit : bordel, mais code en virgule fixe |
oui ma pas tout de suite, je veux qu'il code monde pseudo-code, qu'il en trouves les restrictions et qu'il comprenne pourquoi...
le tout en C en float, après on verra pour l'opti en virgue fixe...
et aussi il faut qu'il code la version bresenham si il veux pouvoir avoir vu de multiples compromis....
Marsh Posté le 17-01-2006 à 14:42:08
En parlant de tout ces algos, est ce que quelq'un connait le nom d'une librairie permettant de rendre directement les primitives de base (ligne ,cercle, ellispse, ...) dans un buffer
j'ai besoin de qqch davance qd mm car jai besoin de degrades, transparence,... etc
pour linstant je fait ca en opengl mais c loin d'etre tres precis (le rendu change dune carte a lautre) sans parler de l'antialising qui foire a chaque fois.
lideal serait de trouver une version software d'opengl32.dll mais jai pa encore qq chose du genre
Marsh Posté le 17-01-2006 à 14:47:21
le gdi c
-Lent (bon ici on s'en fou un peu sachant que pas pour du temps reel )
-Imprecis (Textout ne donne pas les meme resultats suivant les parametres utilisateurs)
-Compliqué pour faire pas grand chose(api microsoft powa)
Marsh Posté le 17-01-2006 à 15:09:57
red faction a écrit : |
tu prends un PC, t'achète une S3 virge sans opengl, et tu seras sur le driver opengl software de microsoft.
Marsh Posté le 17-01-2006 à 19:30:27
aidez -moiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
le programme de traçage d'un segment d'une droite
Marsh Posté le 17-01-2006 à 19:30:57
oui ?
Marsh Posté le 17-01-2006 à 20:13:25
ReplyMarsh Posté le 17-01-2006 à 20:20:19
ingainga a écrit : je veux un programme qui trace une droite en mode video,s'il vous plait |
c'est dommage, on ne te le fera pas ici
cependant, si tu tentes de te mettre à la tâche en suivant les indications qu'on t'a données plus haut et que tu rencontres des problèmes, alors nous nous ferons tous un plaisir de t'aider à les surmonter
Marsh Posté le 17-01-2006 à 20:42:08
en fait,j'ai essayé de le faire,mais j'ai eu des erreurs dans le programme,par exemple:illegal use of registr,ou bien :improper operand type,
alors.
Marsh Posté le 17-01-2006 à 20:57:39
Code :
|
peut etre tu trouves ceci bête,mais je suis encore debutante en assembleur
Marsh Posté le 17-01-2006 à 21:52:15
Après faut réfléchir si tu veux de l'anti-alias ou non, ça change tout le code
Nan, j'dit ça parceque j'ai un pote qui s'était amusé à faire ça pendant qu'on galérait à afficher des lignes verticales et horizontales quand j'étais étudiant
Marsh Posté le 17-01-2006 à 21:53:29
ReplyMarsh Posté le 17-01-2006 à 21:54:24
t'as un fistp qui a pas d'op de destination ?
pis c'est quoi cet asm d'avant guerre ?
Marsh Posté le 17-01-2006 à 21:57:25
Désolé je ne te serai d'aucune en asm
je compati et ne m'en veut pas mais je me ouvient que du prof et de son addition
Respect
---
Tu pourrais quand même voire qu'elles sont les parties code qui t'envoient ad padres ça te permettrai d'avancer
--
C'est currieux la façon dont est organisé ton code : tu dis code segment ... puis deb...
et tu fermes en code ends puis en deb.
Bon courrage
Marsh Posté le 17-01-2006 à 00:21:00
s'il vous plait ,y a quelqu'un qui peut m'aider en me donnant un programme en asm,qui trace un segment d'une droite en mode video 13h,quelle que soit la pente de cette droite,
pleeeeeeeeeeaaaaaaaase,c'est urgent, et j'ai vraiment besoin d'une reponse