A nyílt forráskóddal kapcsolatos egyik probléma az, hogy a projektek néha úgy tűnik, hogy félúton járnak, vagy zavaró fordulatokat vetnek fel. Vegye ki az SDL.NET-et. Ha nem veszi figyelembe az eladó weboldalt, az interneten végzett keresés feltárja cs-sdl.sourceforge.net egy olyan projekt, amely úgy tűnik, hogy 2010 novemberében leállt. Nem gondoljuk, hogy leállt, csak úgy néz ki, ahogy van.
Ha nem ismeri a C # -ot, akkor először meg kell tanulnia, hogyan kell program C # -ben. Másutt nézve a Mono weboldalon összekapcsolt Tao kerettel találkoztunk, amely úgy tűnik, hogy ugyanarra a területre terjed ki, és támogatást nyújt a hangzáshoz stb. De a Sourceforge-ra nézve (ismét!) Ezt felváltotta OpenTK de a hangsúly az OpenGL. Ugyanakkor az OpenAL-t is magában foglalja, így a kettő (cs-sdl és OpenTK) telepítése tűnt a továbblépésnek.
Az OpenTk telepítésének egy része sikertelen; az NS (shader), mert nincs telepítve a VS 2008! A többi részben rendben volt. Készítettünk egy C # Console projektet, és elkezdtük játszani az SDL.NET-rel. Az online dokumentáció itt található.
Visszatekintve láthatjuk, hogy az OpenTK keretre önmagában nincs szükség, az SDL.NET mindent telepített, de az akkor még nem volt világos. Még mindig használja a Tao-keretet, annak ellenére, hogy ennek fejlesztését az OpenTK felváltotta. Kicsit zavaró, és reméljük, hogy az SDL.NET csapata a jövőben kiad egy OpenTk-kompatibilis verziót.
Ez nem, ahogy gondoltuk, csak egy vékony, SDL körbe tekerhető csomagoló, hanem jelentős extra funkciókat kínál. Számos osztály biztosítja a következők biztosítását:
Keresse meg a két SDL.NET fájlt (SdlDotNet.dll és Tao. Sdl.dll), valamint az OpenTK dll-k, és adja hozzá őket a projekt referenciákhoz. A telepítés után a fájlok a Program Files \ SdlDotNet \ bin könyvtárban találhatók (32 bites Windows rendszeren és 64 bites Windows Program Files (x86) \ SdlDotNet \ bin fájlban). Kattintson a jobb egérgombbal a Solution Explorer Referenciák szakaszára, majd kattintson a Referencia hozzáadása elemre, és válassza a Tallózás fület. Megnyílik egy Intéző párbeszédpanel, és a dll megtalálása után válassza a majd kattintson az OK gombra.
Végül kattintson a Nézet \ Tulajdonságok elemre, így megnyílik a Tulajdonságok oldalak, és az első lapon (Alkalmazás) Változtassa meg a kimeneti típust a konzol alkalmazásból a Windows alkalmazásba. Ha nem ezt teszi meg a program első futtatásakor és az SDL főablakának megnyitásakor, akkor megnyílik a konzol ablak is.
Most készen állunk az indulásra, és alább készítettem egy rövid alkalmazást. Ez véletlenszerűen méretezett és elhelyezett téglalapokat és köröket villog az ablak felületén, másodpercenként 1700 húzással, 50 képkocka másodpercenként.
Ez a 1700 származik az, ha a képkockánként húzott számot 17-re állítja, és a képkockákat másodpercenként megjeleníti az Ablak feliratban a Video segítségével. WindowCaption. Mindegyik keret rajzol 17 kitöltött kört és téglalapot, 17 x 2 x 50 = 1,700. Ez a szám függ a videokártyától, a CPU-tól stb. Lenyűgöző sebesség.
// David Bolton, http://cplus.about.com
rendszer használata;
a System segítségével. Rajz;
az SdlDotNet használatával. Grafika;
az SdlDotNet használatával. Mag;
az SdlDotNet használatával. Grafika. Primitives;
nyilvános osztály ex1
{
magán const int szélesség = 1024;
magánjellegű széria = 768;
privát statikus felület;
magán statikus Véletlen r = új Véletlen ();
public statical void Main (karakterlánc [] args)
{
Képernyő = videó. SetVideoMode (szélesség, tengely, 32, hamis, hamis, hamis, igaz);
Eseményeket. TargetFps = 50;
Eseményeket. Kilép + = (QuitEventHandler);
Eseményeket. Tick + = (TickEventHandler);
Eseményeket. Fuss() ;
}
privát statikus érvénytelen QuitEventHandler (objektum küldő, QuitEventArgs args)
{
Eseményeket. QuitApplication ();
}
magán statikus érvénytelen TickEventHandler (objektum küldő, TickEventArgs args)
{
for (var i = 0; i <17; i ++)
{
var rect = új téglalap (új pont (r. Következő (szélesség - 100), r. Következő (100-as)
új méret (10 + r. Következő (szélesség - 90), 10 + r. Következő (tengely - 90)));
var Col = szín. FromArgb (r. Következő (255), r. Következő (255), r. Következő (255);
var CircCol = Szín. FromArgb (r. Következő (255), r. Következő (255), r. Következő (255);
rövid sugara = (rövid) (10 + r. Következő (tengely - 90));
var Circ = új kör (új pont (r. Következő (szélesség - 100), r. Következő (100-as tengely)), sugár);
Képernyő. Töltse ki (derékszögű, Col);
Circ. Döntetlen (képernyő, CircCol, hamis, igaz);
Képernyő. Frissítés ();
Videó. WindowCaption = Események. Fps. ToString ();
}
}
}
A videó módszereket biztosít a video mód beállításához, videofelületek létrehozásához, az egér kurzorának elrejtéséhez és megjelenítéséhez, valamint az OpenGL-rel való interakcióhoz. Nem mintha egy ideje OpenGL-t fogunk csinálni.
Itt a Video objektum szolgál a játék ablak méretének és felbontásának beállítására (a teljes képernyő opció). A SetVideoMode paraméterei lehetővé teszik ezek megváltoztatását, és a 13 túlterhelés rengeteg változatosságot kínál. A doc mappában található .chm fájl (Windows html súgó formátum), amely az összes osztályt és tagot dokumentálja.
Az Események objektumnak van egy Kilépési eseménykezelő, amely lehetővé teszi a bezárási logika hozzáadását és az események hívását. QuitApplication (), hogy reagáljon az alkalmazás bezárására. Az események. A Tick valószínűleg a legfontosabb eseménykezelő. Meghívja a meghatározott eseménykezelőt minden képkockához. Ez a modell az összes SDL.NET fejlesztésre.
Beállíthatja a kívánt képkocka-sebességet, és az, ha a hurkot 5-re csökkentjük, és a Targetfps-et 150-re változtatjuk, akkor másodpercenként 164 képkocka fut. A TargetFps egy labdapark alak; késleltetést von maga után, hogy közel álljon ehhez a számhoz, de az eseményekhez. Az Fps az, amit szállítanak.
Az SDL eredeti, nem ablakos verziójához hasonlóan az SDL.NET felületeket is használ a képernyő megjelenítéséhez. A felület egy grafikus fájlból felépíthető. Számos olyan tulajdonság és módszer létezik, amelyek lehetővé teszik a pixelek olvasását vagy írását is rajzolni kell a grafikai primitíveket, más felületeket elfűzni, akár felületet is lerakni egy lemezfájlba a készítéshez screenshotok.