ca 20.000 Dreiecke malen



  • Pseudo-Code:

    Bitmap neueBitmap=new Bitmap(...)
    Graphics gfx=Graphics.FromBitmap(neueBitmap);
    
    // Hier ganz normal gfx benutzen, wird dann alles in die Bitmap gezeichnet.
    
    gfx.Dispose();
    


  • achso des hab ich schon gemacht 🙂
    ist trotzdem noch bei 10 sek pro 20.000 dreiecken
    hast noch ne idee?



  • Hmm, Kantenglättung ausschalten?
    Oder auf Managed DirectX setzen?



  • Kantenglättung hab ich schon abgeschaltet.
    ich versuch es jetzt mal mit Irrlicht vll geht des beste.
    Vielen Dank Gruß KY



  • mmmhhhhh irrlicht ist net ganz des was ich brauch.
    weiß jm was anderse mit dem ich leicht dreiecke zeichen kann?
    Gruß KY



  • Hi,

    Dreiecke zeichnen … das schreit doch förmlich nach einer 3D-Engine! Die sorgt nämlich dafür, dass die ganze leidige Koordinatenberechnung von der GPU übernommen wird. Mit GDI+ wirst Du hier nicht viel reißen können.



  • Richtig, entweder Du nimmst DirectX oder ähnliches oder Du stellst mal von Debug auf Release um - wenn Du's noch nicht getan hast. 😉



  • mit release hab ichs auch schon getestet des dauert dann immer noch 2sek.
    directx hab ich schon einiges angeschaut aber leider bekomms ich net hin.
    weiß jm ein gutes tut wo mehrere dreiecke gezeichnet werden, und die kamera position geändert wird?
    (ich hab nur welche gefunden die ein dreieck zeichen und die welt bewegen)

    Gruß KY



  • Das hier hat mir gut gefallen und ist recht umfangreich:
    http://www.riemers.net/eng/Tutorials/dxcsharp.php



  • 😕 wieso sollte das lange dauern?

    Also hier zeichne ich auch beim start 20000 vierecke und das dauert nicht mal 1 sec.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            private Bitmap bitmap; //Bitmap wo alles drauf gemalt wird
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                bitmap = new Bitmap(this.Size.Width, this.Size.Height); // bitmap ist so groß wie das Fenster
                Graphics graph = Graphics.FromImage(bitmap); //das Graphic object von der Bitmap bekommen
    
                Brush brush = new SolidBrush(Color.DarkBlue);
                Random rand = new Random(); //Random für Zufalls koordinaten            
    
                for (int a = 0; a <= 20000; a++)
                {
                    int x = rand.Next(1, this.Size.Width); //Zufalls koordinaten   
                    int y = rand.Next(1, this.Size.Height); //Zufalls koordinaten   
                    Rectangle rectangle = new Rectangle(new Point(x, y), new Size(2,2));
    
                    graph.DrawRectangle(new Pen(brush), rectangle);// male 20000 x ein Dreieck auf die Bitmap      
                }
                pictureBox1.Refresh(); //Ruf Paint auf
            }
    
            private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                e.Graphics.DrawImage(bitmap, new Point(0,0)); //male die große bitmap auf die picture box
            }
        }
    }
    

Anmelden zum Antworten