Een van de problemen met open source is dat projecten soms lijken te vervallen of verwarrende wendingen nemen. Neem SDL.NET. Een zoekopdracht op internet negeert de website die te koop staat cs-sdl.sourceforge.net een project dat in november 2010 lijkt te zijn gestopt. We denken niet dat het is gestopt, maar het ziet er gewoon naar uit.
Als u C # niet kent, moet u eerst leren hoe programma in C #. Als we ergens anders keken, kwamen we het Tao-framework tegen dat op de Mono-website is gelinkt en dat hetzelfde gebied lijkt te omvatten en ondersteuning voor geluid enz. Toevoegt. Maar kijkend naar sourceforge (opnieuw!), Is het vervangen door OpenTK maar de focus ligt daar op OpenGL. Het bevat echter ook OpenAL, dus het leek de oplossing om de twee (cs-sdl en OpenTK) te installeren.
Een deel van de OpenTk-installatie is mislukt; de NS (shader) omdat we VS 2008 niet hebben geïnstalleerd! De rest was echter ok. We hebben een C # Console-project gemaakt en zijn gaan spelen met SDL.NET. De online documentatie is hier te vinden.
Terugkijkend kunnen we zien dat het OpenTK-framework als zodanig niet nodig was, dat SDL.NET alles installeerde, maar dat was destijds niet duidelijk. Het gebruikt nog steeds het Tao Framework, hoewel de ontwikkeling daarvan is vervangen door OpenTK. Het is een beetje verwarrend en we hopen dat het SDL.NET-team in de toekomst een met OpenTk compatibele versie zal uitbrengen.
Het is niet, zoals we dachten, slechts een dunne wikkel rond SDL, maar voegt aanzienlijk extra functionaliteit toe. Er zijn een aantal lessen die het volgende bieden:
Zoek de twee SDL.NET-dll's (SdlDotNet.dll en Tao. Sdl.dll) evenals de OpenTK-dll's en voeg ze toe aan de projectreferenties. Na installatie bevinden de dll's zich in Program Files \ SdlDotNet \ bin (op een 32-bits Windows en Program Files (x86) \ SdlDotNet \ bin op 64-bits Windows. Klik met de rechtermuisknop op het gedeelte Verwijzingen in Solution Explorer en klik vervolgens op Referentie toevoegen en selecteer het tabblad Bladeren. Dat opent een Explorer-dialoogvenster en na het lokaliseren van de dll's selecteer dan en klik op ok.
Een laatste ding, klik op de View \ Properties zodat het de Property-pagina's opent en op het eerste tabblad (Application) Output Type wijzigen van Console Application naar Windows Application. Als u dit niet doet wanneer het programma voor het eerst wordt uitgevoerd en het SDL-hoofdvenster wordt geopend, wordt er ook een consolevenster geopend.
We zijn nu klaar om te beginnen en ik heb hieronder een korte applicatie gemaakt. Hiermee worden rechthoeken en cirkels van willekeurige grootte op het vensteroppervlak met een snelheid van 1.700 per seconde getekend met een framesnelheid van 50 frames per seconde.
Die 1.700 komt van het instellen van het aantal dat per frame is getekend op 17 en het weergeven van de frames per seconde in het Window-bijschrift met behulp van Video. WindowCaption. Elk frame tekent het 17 gevulde cirkels en rechthoeken, 17 x 2 x 50 = 1.700. Dit cijfer is afhankelijk van de videokaart, CPU etc. Het is een indrukwekkende snelheid.
// Door David Bolton, http://cplus.about.com
systeem gebruiken;
systeem gebruiken. Tekening;
met SdlDotNet. Graphics;
met SdlDotNet. Kern;
met SdlDotNet. Graphics. Primitieven;
openbare klasse ex1
{
privé const int wwidth = 1024;
privé const int wheight = 768;
privé statisch Surface Screen;
privé statisch Random r = nieuw Random ();
openbare statische leegte Main (string [] args)
{
Scherm = video. SetVideoMode (wwidth, wheight, 32, false, false, false, true);
Evenementen. TargetFps = 50;
Evenementen. Stoppen + = (QuitEventHandler);
Evenementen. Tick + = (TickEventHandler);
Evenementen. Rennen() ;
}
privé statische leegte QuitEventHandler (objectzender, QuitEventArgs args)
{
Evenementen. SluitApplication ();
}
privé statische leegte TickEventHandler (objectzender, TickEventArgs args)
{
voor (var i = 0; i <17; ik ++)
{
var rect = nieuwe rechthoek (nieuw punt (r. Volgende (wwidth- 100), r. Volgende (wheight-100)),
nieuwe maat (10 + r. Volgende (breedte - 90), 10 + r. Volgende (gewicht - 90)));
var Col = Kleur. FromArgb (r. Volgende (255), r. Volgende (255), r. Volgende (255));
var CircCol = Kleur. FromArgb (r. Volgende (255), r. Volgende (255), r. Volgende (255));
korte straal = (kort) (10 + r. Volgende (gewicht - 90));
var Circ = nieuwe cirkel (nieuw punt (r. Volgende (wwidth- 100), r. Volgende (weeg-100)), straal);
Scherm. Vullen (rect, Col);
Circ. Draw (Screen, CircCol, false, true);
Scherm. Bijwerken() ;
Video. WindowCaption = Evenementen. Fps. ToString ();
}
}
}
Video biedt methoden om de videomodus in te stellen, video-oppervlakken te maken, de muiscursor te verbergen en weer te geven en interactie te hebben met OpenGL. Niet dat we een tijdje OpenGL zullen doen.
Hier wordt het video-object gebruikt om de grootte en resolutie van het spelvenster in te stellen (volledig scherm is een optie). De parameters voor SetVideoMode laten je deze veranderen en 13 overbelastingen zorgen voor veel variatie. Er is een .chm-bestand (Windows html help-indeling) in de doc-map waarin alle klassen en leden worden gedocumenteerd.
Het object Events heeft een gebeurtenissen-handler Afsluiten waarmee u logica voor sluiten kunt toevoegen en gebeurtenissen moet aanroepen. QuitApplication () om het te laten reageren op de gebruiker die de applicatie sluit. De evenementen. Tick is mogelijk de belangrijkste event handler. Het roept de opgegeven gebeurtenishandler elk frame aan. Dit is het model voor alle SDL.NET-ontwikkeling.
U kunt uw gewenste framesnelheid instellen en door de loop tot 5 te verkleinen en de Targetfps in 150 te veranderen, hebben we het met 164 frames per seconde laten lopen. TargetFps is een honkbalfiguur; het brengt vertragingen met zich mee om je in de buurt van dat cijfer te brengen, maar de Evenementen. Fps is wat wordt geleverd.
Net als de originele versie zonder venster van SDL, gebruikt SDL.NET oppervlakken voor weergave op het scherm. Een oppervlak kan worden opgebouwd uit een grafisch bestand. Er zijn een groot aantal eigenschappen en methoden die het mogelijk maken om zowel pixels te lezen of te schrijven teken de grafische primitieven, blit andere oppervlakken, en dump zelfs een oppervlak naar een schijfbestand om te nemen screenshots.