en bas niveau, afficher des pixels dans une fenetre [zindozs] - Programmation
Marsh Posté le 24-08-2002 à 00:27:08
ReplyMarsh Posté le 24-08-2002 à 00:32:23
ce que je veux faire : dessiner une fenetre, y afficher des pixels.... et que quand je bouge la fenetre, les pixels bougent avec la fenetre.....
mais que la seule fonction qui m'intéresse, c'est pixe(x,y,R,G,B)
a la limite, la fenetre "gere" l'agrandissement et le "streching" pour la résolution, du genre ma fenetre elle a 320*240 pixels/points, quelle que soit sa taille réelle en pixels réels...
pour l'instant, c'est tout ce qui m'intéresse
Marsh Posté le 24-08-2002 à 00:37:19
What about SetPixel()
Mais bon, comme tu précises pas le langage, c'est pas évident de te donner des infos, en delphi/builder, tu utilises un Bitmap et on en parle plus
Marsh Posté le 24-08-2002 à 00:42:38
c++builder...
le probleme, c'est que j'ai compilé l'éxemple de dessinateur de builder, et il y avait du clipping lors du tracé de cercles, un peu comme lorque j'ai essayé de faire mon parser c++avec un richedit... j'utilisais un composant de trop haut niveau, et j'ai peur que le TCanvas de builder pour les pixels soit bcp moisn rapide que la fonction api window$
Marsh Posté le 24-08-2002 à 00:44:34
Benh non, ca utilise l'API, rien de plus.
Va voir les sources des compos, c'est instructif ;-)
Code :
|
Marsh Posté le 24-08-2002 à 01:19:11
clock_t truc = clock();
for (int i = 0 ; i <Image->Width ; i++ )
for (int j = 0; j <Image->Height ; j++)
Image->Canvas->Pixels[i][j]=clWhite;
clock_t truc2 = clock() - truc;
float trucd = truc2/CLK_TCK ;
719 millisecondes, c'est trp lent !
Marsh Posté le 24-08-2002 à 01:24:49
C'est malin, mais c'est pas Borland qui est en cause, c'est l'API et c'est bien normal dans ce cas-ci.
Utilise le ScanLine, tu auras un pointeur sur un tableau de pixels.
Fais une recherche, je suis sur qu'il y a un topic la dessus
Marsh Posté le 24-08-2002 à 07:53:59
c'est vrai quand passant par scanline tu vas doper ton accès aux pixels car setpixel c'est lent (en utilisant directemet l'api c vrai aussi que c un poil plus rapide car tu évites les controles de sécurité de la vcl)
tu peux aussi essayer la librairie graphics32
Citation : Graphics32 is a set of functions, classes, components and controls designed for high-performance graphics programming. |
Marsh Posté le 24-08-2002 à 09:43:29
mon idée, c'est pas de réécrire opengl, mais de réécrire , pour le début, les fonctions bas niveau de lignes, polygones, etc.....
Marsh Posté le 24-08-2002 à 09:47:17
tu regardes CreateDIBSection(), ça te donnera un 'écran virtuel' dans lequel tu pourras faire ta cuisine. tu l'affiches ensuite avec BitBlt().
dans la msdn, il y a un exemple 'fire' qui fait tout ça.
Marsh Posté le 24-08-2002 à 10:14:12
comme d'hab l'installation des packages chie....
et la dans la msdn je trouve rien de clair, c'est le bordel...
Marsh Posté le 24-08-2002 à 10:27:59
http://www.google.com/search?q=sit [...] Ecom+fire+
http://msdn.microsoft.com/library/ [...] c_fire.asp
Marsh Posté le 24-08-2002 à 10:50:47
oué, fo télécharger les 130 mo déexemples.... cool
c'est plus lent avec scanline !!!!!
Code :
|
Marsh Posté le 24-08-2002 à 11:28:17
regarde de ce côté-là : http://www.codeproject.com/bitmap/ [...] print=true
Marsh Posté le 24-08-2002 à 11:39:07
ReplyMarsh Posté le 24-08-2002 à 12:25:50
ma question : les gars qui ont programmé opengl, quelle(s) routine(s) appellent-il pour allumer des pixels ?
Marsh Posté le 24-08-2002 à 14:27:33
ma réponse : j'en sais rien mais y a pas de routine miraculeuse tu dois passer par les dib et en suivant les différents liens donnés tu auras des sources pour te montrer des routines optimisées a cet effet
tiens cadeau http://www.droopyeyes.com/default. [...] oduct&ID=3
c pour delphi mais ce doit etre facilement adaptable
Marsh Posté le 24-08-2002 à 00:04:22
voila, je cherche a afficher des pixels dasn une fenetre, mais a un bas niveau, afin de pouvoir m'amuser a écrire des algos pour tracer une ligne, etc....
bref, je souhaite pas utiliser opengl pour afficher des pixels, paske pour réécrire une fonction ligne, ce serait trop "lent" par rapport a la fonctrion ligne d'opengl....
si vosu voyez ce que je veux dire