Wykonywanie części kodu przez GPU

Forum poświęcone językowi C#.

Moderator: xxSlayeRxx

Wykonywanie części kodu przez GPU

Sponsor

Sponsor
 

Wykonywanie części kodu przez GPU

Postprzez jasniec » Pt kwi 08, 2016 1:22 pm

Witam,
mam program - mały "silnik" do gier 2D.
Wiem, że mogą być lepsze metody na pisanie silnika do gier, ale chciałbym rozwijać ten, który tworzę (nie mam celu - piszę, żeby się uczyć).

Posiadam listę objektów (wielkość, pozycja, kolor), wymiary i kolor mapy; na ich podstawie tworze bitmapę (pixel po pixelu), którą "wrzucam" do picturebox.
Słyszałem, że program (korzystam z windows Forms) obsługiwany jest przez CPU, a nie GPU (i każda klatka jest generowana na procesorze). Na procesorze 3 rdzenie 3,4 GHz jest około 15-20 klatek na sekundę, a na słabszym (1.8 GHz) 1-3 fps...

Czy mogę wygenerować mapę korzystając z GPU? czytałem coś o CUDA, ale nie wiem jak się za to zabrać...

Oto funkcja generowania klatki:
Kod: Zaznacz cały
public Bitmap Render()
        {
            Bitmap bmp = new Bitmap(siz.Width, siz.Height);

            if (!StopRun)
            {
                for (int x = 0; x < bmp.Width; x++)
                {
                    for (int y = 0; y < bmp.Height; y++)
                    {
                        Color colorToSet = background;

                        if (objects.Count > 0)
                        {
                            try
                            {
                                foreach (Player obj in objects)
                                {
                                    if (x > obj.pPosition.X && x < obj.pPosition.X + obj.pSize.Width && y > obj.pPosition.Y && y < obj.pPosition.Y + obj.pSize.Height)
                                    {
                                        colorToSet = obj.pColor;
                                    }
                                }
                            }
                            catch { }
                        }
                        else
                        {
                            colorToSet = background;
                        }

                        if (x > plr.pPosition.X && x < plr.pPosition.X + plr.pSize.Width && y > plr.pPosition.Y && y < plr.pPosition.Y + plr.pSize.Height)
                        {
                            colorToSet = plr.pColor;
                        }

                        bmp.SetPixel(x, y, colorToSet);
                    }
                }
            }

            return bmp;
        }
jasniec
Member
 
Posty: 14
Dołączył(a): Cz lip 25, 2013 6:00 pm

Wykonywanie części kodu przez GPU

Sponsors

Sponsor
 

Powrót do C#

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 7 gości

cron