<div dir="ltr"><div>OpenGL je otevřená alternativa k DirectX. Obojí umí jak 2D tak 3D. Snazit se udelat 1000radku/s je spatne, protoze monitor Vám stejně bude vykreslovat par desitek obrazků za sekundu. Grafické knihovny (jak OpenGL  tak DirectX) Vám umožní přístup do framebufferu, takže tam můžete řádky přidávat podle libosti a pak je naráz vykreslit. Doporučoval bych například vykreslovat po vložení každého 20 řádku (což bude dělat 50framů za sekundu) a tím se vyhnout posouvání bitmapy pro každý řádek (prostě vždy poskočí o 20 řádků).<br><br></div>Honza<br></div><div class="gmail_extra"><br><div class="gmail_quote">Dne 19. ledna 2015 19:55 Jaroslav Buchta <span dir="ltr"><<a href="mailto:jaroslav.buchta@hascomp.cz" target="_blank">jaroslav.buchta@hascomp.cz</a>></span> napsal(a):<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>No a to bych prave potreboval
      nakopnout, ktere knihony by se k tomu daly pouzit - zas to neni
      uplne stezejni a nerad bych se ucil neco na urovni programatora
      her.<br>
      Neco jsem nasel o DirectX, ale to je asi docela slozity moloch,
      nevim jestli OpenGL, ale to je spis 3D? Radsi se nejdriv zeptam
      nez budu vyslapavat slepe cesticky ;-)<br>
      <br>
      Dne 19. 1. 2015 v 19:51 Pavel Hudeček napsal(a):<br>
    </div>
    <blockquote type="cite"><div><div class="h5">Je potřeba použít hw akceleraci. Místo kopírování celé
      bitmapy o řádek dál prostě jen říct nějaké knihovní funkci, aby
      řekla grafice, že má celý obsah okna posunout o řádek a pak tam
      nakopírovat jen ten nový řádek. <br>
      <br>
      PH<br>
      <br>
      <p>Od: Jaroslav Buchta <a href="mailto:jaroslav.buchta@hascomp.cz" target="_blank"><jaroslav.buchta@hascomp.cz></a><br>
      </p>
      <blockquote>Jakym smerem se vydat? Potrebuju v podstate rychle
        posouvat radky v okne <br>
        a pridavat nove radky, je to pro vizualizaci dat z radkove
        kamery.<br>
        Tak 1000 radku/s po 512 px by bylo ideal. Uvedeny kod zvladne
        tak 40 <br>
        (512x500 pixelu) takze to chce vice nez radove zlepseni vykonu.<br>
        <br>
        Zatim jsem udelal tento hruby pokus a tudy cesta asi nevede (da
        se to <br>
        urcite jeste optimalizovat ale je to v principu same kopirovani
        velkeho <br>
        pole)<br>
        <br>
        Existuje nejaka lepsi metoda, jak rychle periodicky zobrazovat v
        okne <br>
        aktualni obraz ktery je jako pole pixelu? Ale zas univerzalni,
        aby to <br>
        nebylo vazane na nejakou konkretni graf. kartu, cpu atp.<br>
        <br>
        private unsafe void backgroundWorker1_DoWork(object sender, <br>
        DoWorkEventArgs e)<br>
        {<br>
        <br>
        while (!bwFin)<br>
        {<br>
        <br>
        BitmapData bmd = bmp.LockBits(new Rectangle(0, 0, <br>
        bmp.Width, bmp.Height), ImageLockMode.WriteOnly,
        bmp.PixelFormat);<br>
        <br>
        IntPtr ptr = bmd.Scan0;<br>
        <br>
        int lnBytes = Math.Abs(bmd.Stride);<br>
        int bytes = lnBytes * bmp.Height;<br>
        if (rgbValues == null)<br>
        {<br>
        rgbValues = new byte[bytes];<br>
        <br>
        }<br>
        else<br>
        {<br>
        byte[] ba = rgbValues.Skip(lnBytes).ToArray();<br>
        rgbValues = new byte[bytes];<br>
        ba.CopyTo(rgbValues, 0);<br>
        }<br>
        <br>
        for (int y = bmp.Height-1; y < bmp.Height; y++)<br>
        {<br>
        byte[] ln = new byte[bmp.Width * 4];<br>
        for (int x = 0; x < bmp.Width; x++)<br>
        {<br>
        byte l = byte((x + y + bmOfs) % 256);<br>
        ln[x * 4 + 0] = l;<br>
        ln[x * 4 + 1] = l;<br>
        ln[x * 4 + 2] = l;<br>
        ln[x * 4 + 3] = 255;<br>
        }<br>
        ln.CopyTo(rgbValues, lnBytes * (bmp.Height - 1));<br>
        }<br>
        <br>
        System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, <br>
        bmp.Height * lnBytes);<br>
        <br>
        bmp.UnlockBits(bmd);<br>
        <br>
        bmOfs++;<br>
        if (bmOfs > bmp.Height) bmOfs = 0;<br>
        <br>
        pictureBox1.Image = bmp.Clone() as Image;<br>
        }<br>
        pictureBox1.Image = null;<br>
        }<br>
      </blockquote>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><span class=""><pre>_______________________________________________
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
    </span></blockquote>
    <br>
  
<br><br>
<hr style="border:none;color:#909090;background-color:#b0b0b0;min-height:1px;width:99%">
<table style="border-collapse:collapse;border:none">
        <tbody><tr>
                <td style="border:none;padding:0px 15px 0px 8px">
                        <a href="http://www.avast.com/" target="_blank">
                                <img src="http://static.avast.com/emails/avast-mail-stamp.png" border="0">
                        </a>
                </td>
                <td>
                        <p style="color:#3d4d5a;font-family:"Calibri","Verdana","Arial","Helvetica";font-size:12pt"><span class="">
                                This email has been checked for viruses by Avast antivirus software.
                                <br></span><a href="http://www.avast.com/" target="_blank">www.avast.com</a>
                        </p>
                </td>
        </tr>
</tbody></table>
<br>
</div>

<br>_______________________________________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
<br></blockquote></div><br></div>