Utility library for DirectX 9.0 Technická dokumentace



Podobné dokumenty
Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional

Uživatelská dokumentace

DATABÁZE DŮLEŽITÉ: Před načtením nové databáze do vaší databáze si prosím přečtěte následující informace, které vám umožní:

Pomocník diabetika Uživatelská příručka

TECHNICKÉ KRESLENÍ A CAD

Programový komplet pro evidence provozu jídelny v modul Sklad Sviták Bechyně Ladislav Sviták hotline: 608/

Aplikace počítačů v provozu vozidel 9

PALETOVÉ REGÁLY SUPERBUILD NÁVOD NA MONTÁŽ

Ėlektroakustika a televize. TV norma ... Petr Česák, studijní skupina 205

1. PROSTŘEDÍ PROGRAMU. Pás karet se záložkami (na obrázku aktivovaná karta Domů ) Hlavní okno, ve kterém se edituje aktuální snímek prezentace

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: jan.skrbek@tul.cz tel.: Konzultace: úterý

WEBDISPEČINK NA MOBILNÍCH ZAŘÍZENÍCH PŘÍRUČKA PRO WD MOBILE

29 Evidence smluv. Popis modulu. Záložka Evidence smluv

NÁVOD K OBSLUZE MODULU VIDEO 64 ===============================

Seznámení žáků s pojmem makra, možnosti využití, praktické vytvoření makra.

Podrobný postup pro doplnění Žádosti o dotaci prostřednictvím Portálu Farmáře. 1. kolo příjmu žádostí Programu rozvoje venkova ( )

V této části manuálu bude popsán postup jak vytvářet a modifikovat stránky v publikačním systému Moris a jak plně využít všech možností systému.

TIP: Pro vložení konce stránky můžete použít klávesovou zkratku CTRL + Enter.

Výzva zájemcům k podání nabídky a Zadávací dokumentace

V Černošicích dne Výzva k podání nabídky na veřejnou zakázku malého rozsahu s názvem: Nákup a pokládka koberců OŽÚ.

Modul Řízení objednávek.

Co poskytuje Czech POINT

Novinky verzí SKLADNÍK 4.24 a 4.25

Příloha č. 54. Specifikace hromadné aktualizace SMS-KLAS

Zaměstnání a podnikání, hrubá a čistá mzda.

PŘÍRUČKA K PŘEDKLÁDÁNÍ PRŮBĚŽNÝCH ZPRÁV, ZPRÁV O ČERPÁNÍ ROZPOČTU A ZÁVĚREČNÝCH ZPRÁV PROJEKTŮ PODPOŘENÝCH Z PROGRAMU BETA

účetních informací státu při přenosu účetního záznamu,

Android Elizabeth. Verze: 1.3

Manuál uživatele čipové karty s certifikátem

Ukázka knihy z internetového knihkupectví

INFORMAČNÍ SYSTÉM O AREÁLU

Nástroje produktivity

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

Co najdete v ASPI? (pro uživatele SVI FSE UJEP)

Mikromarz. CharGraph. Programovatelný výpočtový měřič fyzikálních veličin. Panel Version. Stručná charakteristika:

Regenerace zahrady MŠ Neděliště

Vyhláška č. 294/2015 Sb., kterou se provádějí pravidla provozu na pozemních komunikacích

DOTWALKER NAVIGACE PRO NEVIDOMÉ A SLABOZRAKÉ

499/2004 Sb. ZÁKON ČÁST PRVNÍ ARCHIVNICTVÍ A SPISOVÁ SLUŽBA

Dynamický model predikovaného vývoje krajiny. Vilém Pechanec

KVALIFIKAČNÍ DOKUMENTACE k veřejné zakázce zadávané podle zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění pozdějších předpisů

ZADÁVACÍ DOKUMENTACE

PŘÍLOHA 1.6 SMLOUVY O PŘÍSTUPU K VEŘEJNÉ PEVNÉ KOMUNIKAČNÍ SÍTI LOGISTIKA KONCOVÝCH ZAŘÍZENÍ

Zabezpečení Uživatelská příručka

statutární město Děčín podlimitní veřejná zakázka na služby: Tlumočení a překlady dokumentů

Kritéria zelených veřejných zakázek v EU pro zdravotnětechnické armatury

Novela zákona o DPH a změny v programu Účtárna k

Pokyny k vyplnění Průběžné zprávy

SCHÉMA PROCESU MTM ÚPRAV V SYSTÉMU INVESMARK FUTURA

Testovací aplikace Matematika není věda

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné

Textové editory a procesory

Aktualizace softwaru Uživatelská příručka

Pokyn D Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami

Výzva k podání nabídek (zadávací dokumentace)

OBEC HORNÍ MĚSTO Spisový řád

ICT plán ZŠ praktické Bochov na rok 2009

NUR - Interaktivní panel, D1

13. Sítě WAN. Rozlehlé sítě WAN. Počítačové sítě I. 1 (6) KST/IPS1. Studijní cíl. Představíme rozlehlé sítě typu WAN. Doba nutná k nastudování

doc. Ing. Martin Hynek, PhD. a kolektiv verze Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky

Management projektů. Programová podpora auditu sytému managementu kvality HOT 4IT. Návrh

KVALIFIKAČNÍ DOKUMENTACE k veřejné zakázce zadávané podle zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění pozdějších předpisů

STANDARD 3. JEDNÁNÍ SE ZÁJEMCEM (ŽADATELEM) O SOCIÁLNÍ SLUŽBU

Řízení kalibrací provozních měřicích přístrojů

NÚOV Kvalifikační potřeby trhu práce

ZADÁVACÍ DOKUMENTACE

NÁVOD K HODINKÁM S KAMEROU 1. Úvod Dostává se Vám do rukou kamera s mikrofonem, záznamem obrazu a zvuku skrytá v náramkových hodinkách.

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/

Knihovní řád. Středisko vědeckých informací Vysoké školy zdravotnické, o. p. s. Duškova 7, Praha 5

MOBILNÍ KOMUNIKACE STRUKTURA GSM SÍTĚ

Bezdrátové připojení (pouze u vybraných modelů) Uživatelská příručka

Pravidla. používání Národního elektronického nástroje při realizaci zadávacích postupů prostřednictvím národního elektronického nástroje

Manuál Kentico CMSDesk pro KDU-ČSL

RECTE.CZ, s.r.o., Matiční 730/3, Ostrava Moravská Ostrava

Pracovní návrh. VYHLÁŠKA Ministerstva práce a sociálních věcí. ze dne o hygienických požadavcích na prostory a provoz dětské skupiny do 12 dětí

Seznamka. Adéla Hrubá Zš Bří Jandusů 8.A Prosinec 2015

Koncepce hospodaření s bytovým fondem Městské části Praha 5

Návod k používání registračního systému ČSLH

Svážíme bioodpad z obce Veselý Žďár malé komunální vozidlo s hákovým nosičem, kontejnery a sítě na kontejnery

Steinbrenerova 6, VIMPERK. odbor výstavby a územního plánování Ú Z E M N Í R O Z H O D N U T Í

které je třeba si položit před zakoupením levného CAD programu

Obsah Celex č. Ustanovení 32013L0055

VÝZVA K PODÁNÍ NABÍDKY VE VEŘEJNÉ SOUTĚŽI O nejvhodnější návrh na uzavření pachtovní smlouvy na restauraci Oceán a přilehlé stánky

JEDNÁNÍ SE ZÁJEMCEM O SOCIÁLNÍ SLUŽBU

Operace nad celými tabulkami

PŘÍLOHA 10 SMLOUVY O PŘÍSTUPU KE KONCOVÝM ÚSEKŮM. Pravidla a postupy

DPC-D218ID. Dveřní stanice pro 2D systém videovrátných. Uživatelský manuál

KAPITOLA 6.3 POŽADAVKY NA KONSTRUKCI A ZKOUŠENÍ OBALŮ PRO INFEKČNÍ LÁTKY KATEGORIE A TŘÍDY 6.2

Záloha a obnovení Uživatelská příručka

ZADÁVACÍ DOKUMENTACE

I. Objemové tíhy, vlastní tíha a užitná zatížení pozemních staveb

ZADÁVACÍ DOKUMENTACE. Pořízení a provoz konsolidované IT infrastruktury

Výzva k podání nabídky

Pardubický kraj Komenského náměstí 125, Pardubice SPŠE a VOŠ Pardubice-rekonstrukce elektroinstalace a pomocných slaboproudých sítí

Pravidla pro přidělování bytů v Domech s pečovatelskou službou v Počátkách

MĚSTO BENEŠOV. Rada města Benešov. Vnitřní předpis č. 16/2016. Směrnice k zadávání veřejných zakázek malého rozsahu. Čl. 1. Předmět úpravy a působnost

Obsah. Obsah. Úvod Makra v Excelu Nahrávání maker První setkání s editorem jazyka Visual Basic... 31

Web n walk NÁVOD PRO UŽIVATELE. Manager

Budování aplikačních rozhraní pro obousměrnou komunikaci mezi ERMS a jejich vztah k Národnímu standardu pro komunikaci mezi ERMS.

Transkript:

Utility library for DirectX 9.0 Technická dokumentace Úvod Dokumentace je určena pro programátory, kteří chtějí knihovnu používat ve svých programech, vysvětluje, co knihovna umí, jak se jednotlivé části používají, a rozebírá konceptuální strukturu knihovny. Zahrnuje také srovnání celkové struktury s knihovnou XNA, což je jedna z nejvýznamnějších dostupných knihoven postavených nad DirectX (pro jazyk C#). Pro správné pochopení vyžaduje znalost jazyka C++ a počítačové grafiky (alespoň na konceptuální úrovni), výhodou je také znalost samotného DirectX. Dokumentace se nezabývá vnitřní implementací a strukturou tříd, funkcí a modulů DirectX, k tomu slouží vlastní dokumentace knihovny. U některých částí ale podává základní nástin jejich funkce. Názvy uvedené v hranatých závorkách v jednotlivých částech jsou jména metod, které rozebíraný problém řeší. Tyto vysvětlivky jsou uváděny, jen pokud má objekt mnoho různých metod, pro zpřehlednění. Technické požadavky K tvorbě a překladu knihovny bylo použito Microsoft Visual Studio 2008 a pro její použití je vyžadována stejná nebo novější verze. Pro ostatní překladače není správné fungování zajištěno. Dále potřeba nainstalovaná Microsoft DirectX SDK (verze August 2009), nebo novější. Knihovna pro rozumné využití vyžaduje grafickou kartu, která umožňuje hardwarovou akceleraci s použitím shaderů (alespoň verze 2). Konceptuální struktura Knihovnu tvoří široká škála managerů (správců), které zajišťují všechny důležité služby, hlavně komunikaci s uživatelem a grafickým hardwarem. Managery jsou tvořené jako singletony a je tedy možné k nim přistupovat z jakéhokoliv místa aplikace a používat jejich metody. Mezi managery je přísná hierarchie, proto je nutné přesně dodržovat postup jejich vytváření a používání (mnohé managery sami používají jiné jim nadřazené). Pro usnadnění tvorby managerů obsahuje knihovna několik tříd pro jejich tvorbu, tyto třídy při správném použití vytvoří kompletní hierarchii a tím tedy celý runtime k následnému použití. Po vytvoření celé hierarchie (nebo jen potřebné části), je možné jednoduše z kteréhokoliv místa přistupovat k potřebným službám, aniž by jednotlivé objekty museli nějak složitě získávat adresy jednotlivých managerů. Nemusí je také dále předávat volaným metodám či objektům, protože ty se k nim dostanou stejně jako oni. Tento postup má své výhody i nevýhody. Mezi hlavní výhody patří snížení počtu argumentů mnoha metod a konstruktorů objektů, dále také snížení počtu proměnných objektů, sloužících k uchovávání těchto parametrů. Některé vlastnosti DirectX dělají z tohoto postupu navíc ještě bezpečnostní opatření, například je rozumné, aby grafické zařízení (softwarové rozhraní pro grafický hardware) existovalo v jednu chvíli jen jedno, téměř všechny metody toto rozhraní potřebují. Díky tomu, že toto rozhraní spravuje manager, existuje vždy právě jedno a všechny metody k němu mohou přistupovat, aniž by museli mít o argument více. Právě počítačová grafika, která má takovýchto objektů (musí být jen jeden a všichni ho potřebují) více je pro tuto architekturu velmi vhodná. Tento postup s sebou také nese několik nepříjemných nevýhod, takto tvořené třídy (hlavně ty knihovní) jsou mnohem méně průhledné a není na nic vidět, co ke své

funkci potřebují. Dále je potřeba dávat pozor, aby se managery správně vytvořili, správné pořadí a data jsou nutností. Také je potřeba dávat pozor, aby nebyl některý manager smazán (kromě konečného úklidu), managery je možné si ukládat do lokálních proměnných a ty potom v rámci automatického rušení na konci bloku nám mohou zrušit také managery do nich přiřazené! Knihovna XNA je naopak postavena podle klasického objektového modelu. Všechny důležité součásti grafického runtime jsou normální objekty, a aby k nim mohli metody vlastních tříd přistupovat, musí je odněkud dostat jako parametr, nebo je musí třída mít jako datovou položku. To vede k narůstání počtu parametrů a položek tříd a metod. Obzvlášť nepříjemný je tento fakt, pokud několik negrafických (které nic sami nekreslí, nebo neupravují) metod nakonec volá nějakou grafickou metodu. Všechny nadřazené metody musí tedy mít jako parametr rozhraní k hardwaru a musí si ho vzájemně předávat, a až poslední (grafická) metoda toto rozhraní skutečně využívá. Xna se dělí na obal DirectX a poměrně silný herní framework. Herní framework má pro řešení problému s předáváním managerů vytvořen registr serivic (aplikace tam postupně zařazuje důležité objekty) ve třídě Game. Seznam, kde je možné jednotlivé potřebné objekty zaregistrovat a přistupovat k nim přes třídu Game (základní třída herního frameworku). Toto použití ovšem vyžaduje použití implicitního frameworku (často má uživatel příliš specifické požadavky a není to možné) a také předávání odkazu na třídu Game (jen jeden parametr, ale to zase vede ke špatné průhlednosti tříd, které takto fungují). Knihovna (StarLib) dále obsahuje mnohá užitečná rozhraní (kamera, registr ) a k nim většinou nějakou rozumnou základní implementaci, která pomůže snadnému začátku práce. Další poměrně rozsáhlou částí je knihovna ladicích nástrojů. Obsahuje několik druhů vylepšených maker Assert, která jsou rozšířena o některé možnosti, nebo o spolupráci s grafickým systémem. Sem právě patří i profiler, jedná se o jednoduchý grafický profiler umožňující zobrazování běhových informací na obrazovku, nebo do souboru. Profiler je navržen, tak aby při správném použití byl viditelný jen v debug modu, při překladu do release modu se volání profileru smažou. Posední velkou částí je inicializační systém. Knihovna obsahuje třídy pro načítání a procházení souborů SML (podmnožina XML), ve kterých mohou být setupové informace. Pro použití připravených tříd je třeba zapsat inicializační informace speciálním způsobem, tyto třídy pak dokážou sestavit v podstatě kompletní runtime úplně bez práce (chybějící informace nahradí default hodnotami rozumnými). Definice formátu souborů a popis jak musí bít specifikované inicializační informace (pro použití knihovních tříd) je v poslední části dokumentu. Managery (popis a hierarchie) Managery jsou uspořádány do velmi jednoduché, stromové hierarchie (logicky odvoditelné bez manageru grafiky nejde vytvořit grafický font). - FileManager (závislost: - ) Jedná se o jednoduchého správce souborů, který kontroluje přístupová práva. Drží seznam právě otevřených souborů a ke každému si pamatuje ukazatel na vlastníka a při žádání o zdroj, žadatel předá svůj ukazatel (většinou this), manager zkontroluje otevřené soubory a předaný ukazatel a buď soubor vydá, nebo žádost zamítne [OpenFile, GetFile]. Manager toho nedělá příliš mnoho, jen otevírá a zavírá soubory a kontroluje práva přístupu. Ale umožňuje také soubor otevřít soubor a pak ho kontrolovaně sdílet napříč celou aplikací. Umožňuje také nastavení výchozích cest a pak hledá požadované soubory na těchto cestách [OpenFileInPath].

- smlparser / smltree (závislosti: FileManager) Parser a tree slouží k načítání a zpracování inicializačních souborů SML. Parser načítá soubory a ukládá je do tree, kde jsou uloženy ve stromové struktuře a jsou rychle dostupné [ParseSML]. Pro přístup se používá jméno žádaného elementu kvalifikované jménem nadřízených elementů (spojené tečkou) [operator[]]. - Timer (závislost: - ) Timer je jednoduchý časovač, pro získávání časových informací používá api funkci QueryPerformanceCounter, která vrací čas v milisekundách a je velmi přesná. Časovač umožňuje výpočet uplynulého času, ale sám si žádné takové informace neuchovává. - MainWindow (závislost: - ) Toto je správce hlavního okna, zajišťuje jeho vytvoření a stará se o správu základních událostí (ukončení aplikace, resize okna, minimalizace/maximalizace). Manager se nezabývá zpracováním vstupu od uživatele. - Direct3D (závislost: smltree/smlparser, MainWindow) Správce grafického zařízení a rozhraní, nejdůležitější správce v celém systému. Pomocí dat ze sml souborů, nebo parametrů (získaných jinak) je možné bezpečně vytvořit grafické zařízení, které bude vyhovovat požadavkům a respektovat hardware. Manager přijme požadované vlastnosti pro budoucí rozhraní, zkontroluje, zda jsou kompatibilní s hardwarem a vytvoří rozhraní (pro hardware). V případě že některé nastavení není kompatibilní, nic neudělá a oznámí to volajícímu. Knihovní engine umožňuje pohodlné načítání parametrů ze souboru, včetně několika alternativních nastavení, pokud některá konfigurace není realizovatelná na hardwaru. Manager také zajišťuje bezpečnou správu grafických zdrojů, zařizuje vyřizování OnLost a OnReset událostí (vyvolávají se např., pokud je okno zvětšeno). Třídy, které jsou potomkem rozhraní Registered jsou zaregistrovány automaticky a nemusí již řešit nic víc [OnLost/OnReset, AddListener]. Poslední jsou metody Reset a Resize, které je nutné zavolat hlavně, po změně nastavení zařízení (aby se změny projevili). - Font (závislost: Direct3D) Správce fontů, usnadňuje výpis informací na obrazovku, uchovává seznam vytvořených fontů (jen std 2D fonty, žádné prostorové). Pokud je nastaven, tak si drží také jeden default font, který předává na požádání bez složitého volání. Jména fontů jsou shodná se jmény používanými v celých windows (třeba ve Wordu). Jednotlivé objekty postupně mohou žádat o registraci fontů, pak získat jejich popis a použít je k vypisování informací na obrazovku. - Profile (závislost: Direct3D, Font, Timer) Správce knihovního profileru, který umožňuje volání v kódu obalovat profilovacími značkami (PROFILEBEGIN a PROFILEEND + jméno značky) a potom sledovat průběh těchto volání (délka volání, počet volání za frame, ). Profiler umožňuje výstup do souboru, nebo na obrazovku (nastavuje se při vytváření). Nakonec je potřeba na konci každého framu zavolat uložení nasbíraných informací*profiledumb+ a vykreslit je podle nastavení*profileprint]. - DirectInput (závislost: Direct3D) Manager spravuje vstup od uživatele (klávesnice a myš), pro získávání změn stavu vstupu vytváří nové vlákno a v něm provádí periodické dotazování (perioda je možná nastavit, lze i načíst ze souboru). Kontrolu stavu vstupu (hardwarově) provádí tedy automaticky, ale pro zjištění stavu (toho

co manager načetl z hardwaru) žádá aplikace manager nezávisle na jeho vlastní práci, volají metodu. Metody pro získávání informací o tlačítkách klávesnice a myši, či poloze myši lze volat ze kteréhokoliv místa aplikace bez dalších opatření. - AnimationEffect (závislost: Direct3D) Správce hlavního knihovního efektu (vertex a pixel shaderů), pomáhá efekt sestavit, nastavit parametry shaderů a aplikovat je na modely. Manager předpokládá efekt určitého tvaru (jména parametrů, shaderů), standardně používá přiložený effect - vblend2.fx (v něm se dá inspirovat při návrhu vlastního). Při kreslení modelu je potřeba efekt explicitně inicializovat, zapnout a použít (nejde automaticky). V principu se jedná jen o obal standardního Effectu DirectX, používá se téměř totožně. - MgrFactory / SetupFactory Hlavní sestavovací manager, v podstatě se jedná jen o správce tvorby runtimu. MgrFactory sestavuje požadované managery, bez jakékoliv další úpravy (zvolený manager se vybírá předaným číslem, které je vysvětleno u metody v komentáři). SetupFactory managery vytvoří, ale navíc se pokusí načíst inicializační soubory a použít nastavení v nich uvedené. Pokud je hlavní metoda ConstructObject použita v cyklu 0,1,..n, pak se správnými inicializačními soubory vytvoří sama celý runtime. Obě verze navíc kontrolují vzájemné závislosti managerů a nedovolí vytvořit managery, které nemají splněné předpoklady. SetupFactory nabízí navíc velmi užitečnou metodu GetConst, která umožňuje získat text libovolného elementu kdekoliv v smltree (pokud není v prostoru konstant, je potřeba plná kvalifikace), navíc je jí možné předat parametr, který vrátí, pokud daný element nenajde (default hodnotu). Model (popis třídy) Implementace modelu je třída SkinnedMesh. Dále k ní patří třída AllocMeshHierarchy, která je jen pomocný objekt pro načítání modelu ze souborů X. SkinnedMesh je třída, k jejímu vytvoření je třebas jen jméno souboru X v němž je model uložen (takový soubor je možné získat třeba pomocí 3DS Max). Při vytváření si model sestaví definici vertexů (pozice, normál, textura), načte mesh, kostru a animace ze souboru. U meshe si poznamená informace o skinu (rozložení a váhu kostí), kostru si rozloží (jednotlivé matice na posun a rotaci, kvůli animování) a animace nahraje do AnimationContoleru (vnitřní struktura DirectX). Hlavní metody jsou update (vytvoření současného stavu animace) a draw (alikace animované kostry). Update vezme kostru, a rekurzivně násobí kosti maticemi animace a převádí je, aby působili vzhledem k centru modelu, ne vzhledem k nadřazené kosti. Výsledkem je seznam matic, které je možné aplikovat podle váhy přímo na vrcholy modelu. V metodě draw se použije AnimationEffect (managerem spravovaný efekt), kterému se předá animací upravená kostra a model se vykreslí. StarDebug (popis ladicí části knihovny) Ladicí část knihovny obsahuje několik vylepšených verzí makra Assert, některé základní funkce (parsování řetězců, konvertování) a základní definici funkce okna pro MainWindow manager (není zajímavá pro vývoj a neměla by se měnit).

Assert Základní makro Assert funguje stejně, jako skoro standardní assert. Navíc umí kopírovat svůj text (jako Ctrl+C), breanknout aplikaci v místě, kde chyba nastala (ne v knihovně obsahující Assert) a ještě má tlačítko IgnoraAlways, které umožňuje tento konkrétní assert po zbytek běhu aplikace ignorovat (hodí se například v cyklu, pokud je tam jako nějaká kontrolní hláška). Navíc, pokud by se měla vyhodit chyba, tak také vrátí false (používá se ve funkcích, aby zjistili, že nastala chyba). cassert je stejný jako Assert, jenom nevrací false (používá se v konstruktorech, nebo procedurách). PersistentAssert je zvláštní druh Assertu,který nezmizí v release modu, ale nadále funguje jako Assert. CommonUtils Soubor obsahuje některé konverzní funkce a klonování řetězců bez mezer. Hlavní je ladicí makro HR a chr (assert pro DirectX), která fungují jako Assert a cassert, akorát umožňují lepší spolupráci s objekty DirectX. Inicializační soubory (popis struktury a formát SML) Standardní formát pro inicializační soubory knihovny je formát SML, pro správnou inicializaci je třeba alespoň soubor Setup.sml, umístěný, tak aby k němu aplikace mohla. Všechny další části inicializace jsou už závislé na definicích uvedených v tomto souboru. Zabudovaný parser umožňuje jen úplné (načte najednou celý soubor) načítání, a není vhodné pro příliš veliké soubory (navrženo je na malé inicializační soubory). SML SML znamená simple markup language a jedná se o podmnožinu jazyka XML. Formát dovoluje jen elementy a komentáře. Dokument musí mít jeden hlavní element (obsahující všechny ostatní). Elementy mohou obsahovat text, elementy, nebo komentáře. Komentář je při parsování kompletně vymazán z načteného textu. Elementy a komentáře se nesmějí překrývat ( { [ } ] ). Jména elementů nejsou nijak omezená (jen musí být bez mezer). Setup.sml Hlavní inicializační soubor, obsahuje jména dalších souborů, jméno hlavních dvou prostorů grafického (definice startovního nastavení grafického rozhraní) a prostoru konstant (obsahuje hlavní konstanty programu). Všechny prostory se hledají buď v samotném Setup.sml, nebo v některém ze souborů načtených díky elementu files. - files : středníkem zakončená jména inicializačních souborů, které se mají při startu načíst (jejich obsah bude možné dále používat) - graphics : kvalifikované jméno elementu, ve kterém je uloženo nastavení grafického rozhraní - const: kvalifikované jméno elementu, ve kterém jsou uloženy hlavní konstanty (používané runtimem, aplikace může používat vlastní prostory) Grafické nastavení je definováno v elementu (v jednom z načtených souborů) a definuje základní vlastnosti celého zařízení. Umožňuje také definovat další verze prostoru, pokud použití tohoto skončí s chybou. Přípustné a defaultní hodnoty jsou uvedeny v knihovní verzi souboru.

- adapter : definuje grafickou kartu, která se má použít - pixel : definuje pixelformat pro obrazovku - device : určuje, jaká se použije verze zařízení (akcelerovaná, nebo simulovaná) - rasterization : určuje, zda použít akceleraci při vykreslování - antialiasing : definuje požadovaný antialiasing - shader : definuje minimální požadovanou verzi shaderů, které musí hardware podporovat - fullcreenresolution : startovní rozlišení okna aplikace při celé obrazovce - windowedresolution : startovní rozlišení okna aplikace při běhu v okně - window : určuje, zda má aplikace běžet v okně, nebo přes celou obrazovku při startu - error : definuje alternativní prostor (obsahující grafické nastavení), pro případ že by toto nastavení nešlo použít, případně může obsahovat pokyn skončit aplikaci s fatální chybou (pokud už není žádné nastavení, které by se dalo použít). Konstanty jsou standardní elementy (obsahují jen text), které jsou obsaženy v lementu definovaném v Setup.sml pomocí elementu const.