Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5092 connectés 

 


Dernière réponse
Sujet : [zindozs] en bas niveau, afficher des pixels dans une fenetre
taureau 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

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
taureau 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
farib ma question : les gars qui ont programmé opengl, quelle(s) routine(s) appellent-il pour allumer des pixels ?
taureau va lire ça http://community.borland.com/artic [...] 39,00.html
youdontcare regarde de ce côté-là : http://www.codeproject.com/bitmap/ [...] print=true
farib oué, fo télécharger les 130 mo déexemples.... cool
 
 
 
c'est plus lent avec scanline !!!!!

Code :
  1. {
  2. Graphics::TBitmap * WorkImage = new Graphics::TBitmap();
  3. WorkImage->Width = 640 ;
  4. WorkImage->Height = 480 ;
  5. for (int j = 0 ; j < WorkImage->Height ; j++ )
  6. {
  7.        Byte * Ligne = (Byte *)WorkImage->ScanLine[j];
  8.        for (int i = 0 ; i < WorkImage->Width; i++ )
  9.                 Ligne[i]=(Byte)0;
  10. }
  11. Image->Canvas->Draw(0,0,WorkImage);
  12. }

youdontcare http://www.google.com/search?q=sit [...] Ecom+fire+
 
http://msdn.microsoft.com/library/ [...] c_fire.asp
farib comme d'hab l'installation des packages chie....
et la dans la msdn je trouve rien de clair, c'est le bordel...
youdontcare 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.
farib 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.....
taureau 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.
 
Being highly specialized for 32-bit pixel format, it provides fast operations with pixels and graphic primitives and in most cases Graphics32 considerably outperforms standard TBitmap/TCanvas classes.
 
The library comes with a full source code, documentation and examples.

zion 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  ;)
farib 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 !
zion Benh non, ca utilise l'API, rien de plus.
 
Va voir les sources des compos, c'est instructif ;-)
 

Code :
  1. procedure TCanvas.SetPixel(X, Y: Integer; Value: TColor);
  2. begin
  3.   Changing;
  4.   RequiredState([csHandleValid, csPenValid]);
  5.   Windows.SetPixel(FHandle, X, Y, ColorToRGB(Value));
  6.   Changed;
  7. end;

farib 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$
zion 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
farib 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
zion Tu veux aller bas comment?
 
farib 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

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)