Piešimas oscilografe vykdomas XY režime, kuriame įtampa atitinka taškų koordinates ekrane. Jais tenka daug varijuoti, kaip laiko funkciją, kad nupiešti linijas. Tam pasikeitimo greitį reikia išlaikyti panašų, nes kitu atveju gausime linijas su skirtingu šviesumu. Kad nupieštume nesusijusį su ankstesniu segmentą, reikia greitai perkelti spindulį, nepaliekant matomų linijų.
Pradžioje šio projekto kūrėjas sukūrė paprastą XY režimo simuliaciją oscilografe. Išvedimui buvo naudojama kompiuterio garso išvestis.
Quake - tai 1996 metų žaidimas, kuris puikiai sukasi šiuolaikinėse kompiuterinėse sistemose. Ir signalų generaciją taip pat reikia padaryti greitą. Pradžioje buvo numatyta naudoti ASIO SDK, bet vėliau, po kelių bandymų, kūrėjas pakeitė į PortAudio, kuris puikiai tiko šiai užduočiai.
Visos turimos garso plokštės turėjo žemus dažnius praleidžiantį filtrą, taigi pralaidumas buvo ribotas. Tai reiškia, kad reikia nupiešti mažiau linijų jeigu turime reikiamą garso kortą su reikiamomis charakteristikomis. Ne daug pagelbėjo ir dažnio padidinimas iki maksimalaus 96 kHz.
Generacijos procesas išskirtas į dvi dalis: žaidimo varikliukas Darkplaces ir garso sintezatorius, kurie "bendrauja" tarpusavyje panaudojant WinAPI.
Modifikacija Darkplaces, originalaus Quake varikliuko, teikia geometrijos detales, kur visų pirma perduodami trikampių kampai. Gauti ne visi, nes atfiltruoti tik matomi ir ne dublikatai.
Garso srautas turi padaryti visas linijas, kurios reikalingos iš žaidimo variklio. Tam savo tempu procesas dirba, kad nupieštų šias linijas, išvedant 32 bitų duomenų srautą 96 kHz dažniu.
Vidutiniškai kadrui perduodama 1800 linijų. Jeigu naujų duomenų nėra, tai bus piešiamas prieš tai buvęs kadras. Vaizdų kokybė didėja mažinant piešimo greitį.
Garso signalo generacija užima daug procesoriaus galios, bet didžioji dalis išeikvojama rasterizuojant žaidimo varikliuko buferio gylį. Rinkdamiesi signalo geriausios kokybės parametrus ir delsimo trukmės vertę leidžia mums konfortiškai žaisti su pele ir klaviatūra.
Maksimaliai galima vienu metu nupiešti mažiau nei 1000 linijų. Didesniam kiekiui reikalinga aukštesnės kokybės garsas, nei šiuo metu galima išgauti iš turimos garso išvesties.
Pagreitinus piešimą gaunama prastesnės kokybės vaizdas, o jeigu skirti daugiau laiko kiekvienai linijai, tai kentės atsakas.
Taip pat atsiranda žemo dažnio triukšmas, kuris labiausiai pastebimas greitame judesyje, kai atnaujinamas visas ekranas.
Susipažinti su duomenimis galime šiame tinklapyje: SPAUSTI.
Pasiremta: geektimes.ru
Komentarų nėra:
Rašyti komentarą