praegune kellaaeg 09.08.2025 13:26:48
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
kalvis
Kreisi kasutaja
liitunud: 20.10.2009
|
04.02.2012 14:23:12
|
|
|
tsitaat: |
dev-c++ oli enam-vähem kasutatav kui projekt koosnes <10 failist. Üle selle läks asi üsna käest ära. |
Juba 2 faili koos kompileerimine osutub algajale raketiteaduseks. Mu soovitus lähtus ikka algaja vaatenurgast...
Tegelen multimeedia intepretaatori kirjutamisega või skriptitöötlejaga või library , vahet pole (pole mingit takistus kasutada CAD elemente kus iganes ja kuidas tahan). Idee pärit ammustest aegadest, kui oli MSX basic ja seal oli sarnane asi olemas (muidugi mitte nii võimsalt, seal oli puhas 2D ja palju vähem võimalusi). Praegu juba tüüpasjad toimivad. Why not, kui muud maailma asi huvitab, saab tasuta kõigile (olen ikkagi harrastusprogeja).
Huvitab, bititöötlus 32 (64) bit tasandil. On oluline, et muutuja oleks just 32 (64) bitti ja ei midagi muud, muidu võib algoritmiga kergesti vale tulemuse saada (otse carryt ei saa kasutada, seega tuleb negatiivset või positiivset arvu kasutada aga see kehtib vaid 32 bit muutuja korral.
Vajan kõiki tüüpbititöötluse elemente, mitte ainult nihe paremale või vasakule (C olemas). Carry-ga, XOR, ringnihked, vaata kõiki inteli assembleri tüüptehteid. Otse assembleris on need käsud olemas ja isegi rohkem kui soovisin. Aga C keeles võiksid ka olla. Täna ei tea et oleks. Ei kujuta ette kuidas saaks veel kiiremini kui laadida 32 (64) bitti datat protsessorile, teha üks bititehe ja salvestada mällu tagasi (seega 3 käsku +1) ja võtta järgmine 32 bitti mälus ette, kui teha seesama tehe 8 bitiga...
Teine töötlus on stringidega, vaja oleks teisendada 32 bitti 4 kohaline string int32 ja vastupidi. (64 bit keskkonnas samamoodi 8 ühikut). assembleris teadupärast ei kulu teisenduseks midagi... C on praegu asi lahendamata (runtime error, kaude on võimalik (char 8 bitti saab teha) soovin otse). Ja vastupidi samuti
Kolmas asi on 32 bitti muutuja teisendus 4 8 bitiseks (siin vahet pole kas char, int või mis iganes tüüpi). Unioniga saab. Vastupidi tehe on olemas kuid teistpidi on just low-hi bitivärk üliohtlik. Nimelt C ei garanteeri midagi, võimalik, et konkreetses keskkonnas saan paremalt vasakule ja teises vastupidi... Siin võiks C keeles see asi kindel olla, et sõltumata mis protsessor või mälumudel (või on olemas kompilatoril see säte, vot see lahendaks probleemi)
Praegu kasutan põhiliselt Windows keskkonda, kuid siiani on kõik proged ka Linuxis gcc töötanud. (seepärast Dev-C++ või Codeblocki valik...). Et kasutan tööl Windowsi ja kodus Linuxit ja windowsi...
|
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
04.02.2012 14:48:44
|
|
|
kalvis, enamus assemblerikäske on otse c's kasutatavad intrinsic'ute näol mida saad muu koodi vahele torgata täpselt nagu suvalisi muid funktsioone kuid kuna kompilaatoril on märksa vabamad käed nendega ümber käimiseks siis suudab ta neid ka optimeerida. Otse ASM'i kirjutades seda teha ei saa.
kalvis kirjutas: |
Teine töötlus on stringidega, vaja oleks teisendada 32 bitti 4 kohaline string int32 ja vastupidi. (64 bit keskkonnas samamoodi 8 ühikut). assembleris teadupärast ei kulu teisenduseks midagi... C on praegu asi lahendamata (runtime error, kaude on võimalik (char 8 bitti saab teha) soovin otse). Ja vastupidi samuti |
Näita konkreetset C koodi millega seda teisendust teha üritasid. Karvane tunne, et tegid miskit valesti seal.
kalvis kirjutas: |
Siin võiks C keeles see asi kindel olla, et sõltumata mis protsessor või mälumudel |
Võiks jah aga näedsa, ei ole paraku. Samuti ega ASM sind ei päästa kuna ikka pead tegema kaks eri varianti vastavalt kas kasutuses little või big endian prose.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
kalvis
Kreisi kasutaja
liitunud: 20.10.2009
|
04.02.2012 18:26:45
|
|
|
Koperdasin mingile paremale aga seal oli vist ca 10 küsimust... (hiljuti)
Kunagil varem oli mingi hea netileht mingite näidete (ca 5 aastat tagasi) ja foorumiga.. aga vat seda pole enam kohanud. Ju siis Kauts tegi neile lõpu ku nad just ise harakiri ei teinud.
Kas newsgroupi kuiskil mingi nipiga ei hingitse või on kuskil välismaal olemas hea programmeerijate foorum...
|
|
tagasi üles |
|
 |
andreie
HV vaatleja

liitunud: 09.09.2006
|
05.02.2012 19:25:45
|
|
|
kalvis kirjutas: |
Huvitab, bititöötlus 32 (64) bit tasandil. On oluline, et muutuja oleks just 32 (64) bitti ja ei midagi muud, muidu võib algoritmiga kergesti vale tulemuse saada (otse carryt ei saa kasutada, seega tuleb negatiivset või positiivset arvu kasutada aga see kehtib vaid 32 bit muutuja korral.
Vajan kõiki tüüpbititöötluse elemente, mitte ainult nihe paremale või vasakule (C olemas). Carry-ga, XOR, ringnihked, vaata kõiki inteli assembleri tüüptehteid. Otse assembleris on need käsud olemas ja isegi rohkem kui soovisin. Aga C keeles võiksid ka olla. Täna ei tea et oleks. Ei kujuta ette kuidas saaks veel kiiremini kui laadida 32 (64) bitti datat protsessorile, teha üks bititehe ja salvestada mällu tagasi (seega 3 käsku +1) ja võtta järgmine 32 bitti mälus ette, kui teha seesama tehe 8 bitiga... |
Bitikaupa XOR on olemas: ^
Carry ja ringnihkeid minu teada pole. Mõningate mööndustega saab neid üsna mugavalt teostada 64-bitise protsessori peal, kasutades 64-bitisest sõnast ülemist 32-bitti puhtalt carry jaoks.
Ringnihet võib teha näiteks järgmiselt, kuna praegu peast proovisin, siis kiiruse poolest ei tarvitse see optimaalne variant olla:
#include <stdint.h>
static inline uint32_t rotate_left(const uint32_t x) const
{
return ((x << 1) | (x >> 31))
}
|
Alati võib (muidugi, soovitav ei ole) võib ka C-d assembleriga segada. GCC "inline asm-i" täitsa sobib kasutada. Algus on muidugi konarlik, sest puhas assembler see ka ei ole - tuleb näiteks eraldi võtmesõnaga ära märkida, mis muutujaid "inline asm" kasutab ja kuhu ta tulemuse kirjutab.
kalvis kirjutas: |
Teine töötlus on stringidega, vaja oleks teisendada 32 bitti 4 kohaline string int32 ja vastupidi. (64 bit keskkonnas samamoodi 8 ühikut). assembleris teadupärast ei kulu teisenduseks midagi... C on praegu asi lahendamata (runtime error, kaude on võimalik (char 8 bitti saab teha) soovin otse). Ja vastupidi samuti |
Stringi all pead silmas mitte tekstilist sõnet, vaid massiivi? (mälu järgi inteli manuaalides kasutati stringi selles tähenduses).
Ma küll hästi aru ei saa, aga kuna Sa vihjad, et assembleris ei kulu teisenduseks midagi, siis loogiline järeldus on, et soovid andmed mälus samaks jätta, kuid käsitleda neid teistmoodi. Siis see küll kattub järgmise küsimusega, nii et võib-olla pakun siin hoopis vastust välja järgmisele küsimusele. Keeles "C" on selle jaoks tüübiteisendus (type cast).
Kuna inteli prosed lubavad nn. unaligned mälupöördust, siis tüübiteisendus on väga lihtne:
#include <stdint.h>
#define INT32_OF4BYTES(pointer_to_bytes) ((uint32_t)(*(pointer_to_bytes)))
#define BYTEARRAY_OF_INT32(integer32) ((uint8_t*)(&(integer32)))
|
kalvis kirjutas: |
Kolmas asi on 32 bitti muutuja teisendus 4 8 bitiseks (siin vahet pole kas char, int või mis iganes tüüpi). Unioniga saab. Vastupidi tehe on olemas kuid teistpidi on just low-hi bitivärk üliohtlik. Nimelt C ei garanteeri midagi, võimalik, et konkreetses keskkonnas saan paremalt vasakule ja teises vastupidi... Siin võiks C keeles see asi kindel olla, et sõltumata mis protsessor või mälumudel (või on olemas kompilatoril see säte, vot see lahendaks probleemi)
|
Vt. ka eelmist küsimust.
See on kinni protsessori nn. endianness-ist ja mitte C kompilaatorist. Kui teed bitinihetega, siis seda probleemi pole.
Bitinikerdamise trikke (mitte küll päris küsitut) on käsitletud siin: http://graphics.stanford.edu/~seander/bithacks.html Ehk aitab järjele.
Kui vabas vormis matemaatilise valemina kirjutad mõned lihtsamad funktsioonid, mis Sul assembleris olemas, võin mõned ise C-ks ringi kirjutada. Kuigi, kui on assembleris olemas, siis võib-olla lihtsam on teha nn. inline asm-iks.
_________________ Unix survives only because everyone else has done so badly. |
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
taurib
HV vaatleja
liitunud: 26.08.2010
|
07.02.2012 21:36:57
|
|
|
Tundub, et see C keele kirjutamine MSVSis on ikka päris suur jamamine, ma saan siiski pigem Geany'ga hakkama :/
Vähemasti ma leidsin igasugu keerulisi õpetusi, kus peab midagi seal CMD promptis ära tegema ja selle siis siduma selle MSVSiga kuidagi moodi
|
|
tagasi üles |
|
 |
andreie
HV vaatleja

liitunud: 09.09.2006
|
09.02.2012 14:21:09
|
|
|
Oops. Olen unustanud öelda, et saab ka väga lihtsalt - teed C++ projekti, aga uute failide lisamisel märgid käsitsi faili laiendiks ".cpp" asemel ".c". Siis käib kõik automaatselt, kompilaator piirdub vaid C keele võimalustega jne.
_________________ Unix survives only because everyone else has done so badly. |
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
Supiplex
HV veteran

liitunud: 11.12.2002
|
09.02.2012 17:01:07
|
|
|
Ma julgen väita, et algaja huvilise jaoks pole küll IDE esmatähtis. Esiteks seetõttu, et kuni paarituhande realise C programmi jaoks pole IDE overhead kuidagi vajalik. Teiseks seetõttu, et nii õpib tööriistu paremini tundma.
Kompilaator, süntaksit värvida oskav tekstiredaktor (Notepad++, Programmers Notepad) ja make nõuavad alguses väikese õppimiskõvera ületamist, aga tasuvad hiljem kuhjaga ära. Jäävad ära igasugu totakad projektiwizardid, sättungitest kompilaatori optionite otsimine, kummaliste projektistruktuuride järgi paindumine jne.
_________________ The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions. |
|
Kommentaarid: 38 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
34 |
|
tagasi üles |
|
 |
kalvis
Kreisi kasutaja
liitunud: 20.10.2009
|
09.02.2012 17:15:06
|
|
|
Sai lõpuks järgi proovitud ... ja asi toimib. Üksjagu pusimist oli enne kui sai piisavalt netist see teisenduste olemus selgeks tehtud.
Lisaks leidsin otsesed näited Hi-Low baitide ümbertõstmisest ja mis seal salata, nüüd on muudki optimeerimised tulemas. Saan palju lihtsamini mälumassiivide kirjetel just mind huvitavaid täisbaite lugeda. Tuleb vaid õieti viitade tüüpidega mängida ja nende aadresse arvutada. Enne sai liiga palju bitinihetega liigutatud, nüüd pole vaja. Bitmaptöötluses mõned nihked jäävad ikka.
Lõppkokkuvõttes tegi kurvaks, et koodi kirjutamine ei ole protsessorist ega keskkonnast täiesti sõltumatu, mida võiks kõrgkeelelt rohkem oodata. Kuid kuna minu mänguruum jääb esialgu Intel prosede juurde siis mulle probleemi sellest ei teki.
|
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
09.02.2012 17:19:55
|
|
|
kalvis kirjutas: |
Lisaks leidsin otsesed näited Hi-Low baitide ümbertõstmisest ja mis seal salata, nüüd on muudki optimeerimised tulemas. Saan palju lihtsamini mälumassiivide kirjetel just mind huvitavaid täisbaite lugeda. Tuleb vaid õieti viitade tüüpidega mängida ja nende aadresse arvutada. Enne sai liiga palju bitinihetega liigutatud, nüüd pole vaja. Bitmaptöötluses mõned nihked jäävad ikka. |
Ehk viitsiksid oma avastused ning veel lahendamata probleemid kusagile eraldi teemasse kirja panna? Kõlab igatahes üsnagi huvitavalt ning üsna tõenäoliselt jõuaks kambakesi su koodi veelgi ilusamaks-paremaks muuta
kalvis kirjutas: |
Lõppkokkuvõttes tegi kurvaks, et koodi kirjutamine ei ole protsessorist ega keskkonnast täiesti sõltumatu, mida võiks kõrgkeelelt rohkem oodata |
c/c++ ei ole päris tavapärased kõrgkeeled vaid pigem suudavad teha kõike nii otse raua tasemel (intrinsic'ud ja inline ASM) kui ka väga high-level (C++ templated, OO ja RAII). Lihtsalt kui sa kasutad keele väga madala otsa asju siis pole erilist lootust, et seal asi väga üldine oleks ning töötaks ühtviisi efektiivselt ja muutmata kõigil platformidel. "Päris" kõrgkeeltes võid säärase platformist sõltumatuse küll saavutada kuid sel juhul kaotad ka kõvasti efektiivsust kuna kompilaatoril pole halli aimugi mida saavutada üritad ning ei oska seetõttu asju korralikult optimeerida.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
kalvis
Kreisi kasutaja
liitunud: 20.10.2009
|
10.02.2012 12:05:05
|
|
|
Miks mitte. Aga kuhu ja kuidas. Tuleks teha eraldi teema ja kuhugi link siis programmi kättesaamisele. Kuskil peaks server olemas kus siis kood pesitseks ja saaksime faile üles riputada. Ma kolisin oma koodil tagasi C keskkonnale, peapõhjus oli selles, et C -s kirjutades ei tulnud asi raskem välja, C-s olid aga põhilibrarid (OpenGL, SDL, akendevärk toetatud). Ja mis seal salata, C-s kirjutasin oma esimese programmi 15 aastat tagasi juba aga C++ alles nüüd. Harjumus on suur. Eraldi tuleks veel skriptikäskude formaati arendada, ideid on kilokaupa, igaühel omad plussid ja miinused. Esmane eesmärk on siis vaja saada tööle failist interpretaator - failis on graafiliste primitiivide käsud koos andmetega ja joonistab siis kas 2D-s või 3D-s. Praegu asendasin selle otsese OpenGL formaatide toega, momendil joonistab OpenGL failist otse primitiive. Et failiks võib kasutada kõiki tuntud vabavaralisi 3D vidinaid ja joonistab (algnäited olid Nehe jt. variandid), kuid ma modisin nende koodi veelgi lühemaks ja dünaamilisemaks ja otse omavahel kasutatavaks. Loomulikult saab asja ka C-s otse kasutada, ei pea intepretaator olema, seal kutsud välja vastava funktsiooni otse. Momendil on toorkood olemas bitmapfailide laadimiseks ja AVI striimide kasutamiseks... ja ka vastupidi - skript võimaldab valmistehtud ka mõnda muude faili panna (salvestamine, ümberkodeerimine). Et interpretaator võimaldab ka kõiki videosi läbisegamini piltide, tekstide jne. kasutamisega või kasvõi mõnel oma lemmikfilmi vaadata (eesmärk ei ole VLC-d kirjutada, lihtsalt ta võimaldab seda minimiseeritult skriptina kasutada).
Ma umbes pool progemise ajast kulutan optimiseerimise ja multimeedia formaatide kohta infot otsides. Ühest kohast oli meeldiv teada saada, et C-s enam niiväga koodi kirjutades optimiseerimisele mõtlema ei pea, kaasaegsed paralleeltöötlus võimaldab ka halvasti optimiseeritud koodi maksimumis joosta. Eelkõige huvitab just C-s (C++) optimiseerimine, kasvõi kõik üldpõhimõtete kohta linkide saamine. Näiteks, kui dünaamiliselt mälu võtan siis idee järgi teatud blokid ja õigete andmetega lähenemine meeldivad kompilaatorile rohkem ja annavad kiirusevõitu. Vot ma siis nende blokkide kaupa mälu võtaksingi (praegu võtan 4 kB kaupa või sellega jagunevalt). Ja teine on koodis tarbetud muutujate teisenduste minimiseerimine.
Eraldi teemana huvitaks mind otse andmete saatmine videokaarti või nii otse kui võimalik. Lähim mõiste on linear framebuffer, kuid soov on ka sellega seotud kõiki muid parameetreid näppida niipalju kui vähegi saaks. Kui videokaartide programmeerimine on kellelgi käpas siis väga ootaks, DOS ajastu oma oskan, kuid tänapäeva op.süsteemid seda meetodit ei luba. Miinimum oleks Linuxis asi tööle saada, Windowsis mõned ideed on kuidas saaks.
|
|
tagasi üles |
|
 |
matik
HV kasutaja
liitunud: 28.05.2008
|
12.02.2012 23:38:43
|
|
|
kalvis kirjutas: |
Sai lõpuks järgi proovitud ... ja asi toimib. Üksjagu pusimist oli enne kui sai piisavalt netist see teisenduste olemus selgeks tehtud.
Lisaks leidsin otsesed näited Hi-Low baitide ümbertõstmisest ja mis seal salata, nüüd on muudki optimeerimised tulemas. Saan palju lihtsamini mälumassiivide kirjetel just mind huvitavaid täisbaite lugeda. Tuleb vaid õieti viitade tüüpidega mängida ja nende aadresse arvutada. Enne sai liiga palju bitinihetega liigutatud, nüüd pole vaja. Bitmaptöötluses mõned nihked jäävad ikka.
Lõppkokkuvõttes tegi kurvaks, et koodi kirjutamine ei ole protsessorist ega keskkonnast täiesti sõltumatu, mida võiks kõrgkeelelt rohkem oodata. Kuid kuna minu mänguruum jääb esialgu Intel prosede juurde siis mulle probleemi sellest ei teki. |
Optimiseerimise aluseks soovitan võtta ikkagi profileerimise, neid tasuta vahendeid nt linuxi all on mitmeid ning windowsi alla leiab ka.
Sisetunde järgi optimeerimine võib üsna rappa viia, meil oli sama lugu - arvasin, et üks programmiviga oli threadis mutexite taga ootamine ja lukustus, ent profileerides tuli välja palju huvitavam probleem - kuna programm allokeeris ja vabastas new/delete abil pidevalt uusi eri suurusega mäluplokke, siis lõpuks allokeeritud plokid hakkasid paiknema mälus väga suurte vahedega, mille tulemusel tekkis väga palju CPU "cache misse" ning programmi kiirus degradeerus tasapisi, ent järjekindlalt. Lahenduseks oli std new/delete asemel placement new kasutamine ja käsitsi spetsiifilise allokaatori kirjutamine.
Sellise probleemi peale annab ikka sisetunde järgi tulla. Soovitan soojalt profileerida korraliku tööriistaga.
Ja noh, sellise probleemi korral selle lõigu ASM-i kirjutamine muidugi mitte mingit võitu ei anna.
|
|
tagasi üles |
|
 |
andreie
HV vaatleja

liitunud: 09.09.2006
|
14.02.2012 15:51:00
|
|
|
kalvis kirjutas: |
Eraldi teemana huvitaks mind otse andmete saatmine videokaarti või nii otse kui võimalik. Lähim mõiste on linear framebuffer, kuid soov on ka sellega seotud kõiki muid parameetreid näppida niipalju kui vähegi saaks. |
Simple Directmedia Layer, teek ligipääsuks madalal tasemel videokaardile ja muudele meediaseadmetele, kasutatav nii Windowsis kui ka Linuxis, http://www.libsdl.org/
_________________ Unix survives only because everyone else has done so badly. |
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
kalvis
Kreisi kasutaja
liitunud: 20.10.2009
|
07.03.2012 22:14:13
|
|
|
SDL ammu kasutamisel, kuid lugesin, et nad ise ei pääse otse videokaardile ligi vaid kasutavad Windowsis windowsi API-t (directX-i). SDL on praegu just universaalsuse nimel kasutusel, esialgu ajab asja ära. Niipalju olen leidnud, et DirectX-ga pidi saama palju lähemale, peaaegu et otse (datat saab kirjutada ja lugeda), kuid mitte ramdaciga seotud parameetreid. Kahjuks pole seni leidnud puust ja punaseks näidet, et kuidas siis directx saaks kas akent või täisekraani jagu lihtsalt viidaga mälubloki videokaarti saata. Arvan, et niipea ma rohkem ei tahagi, kuigi lõppunistus oleks ka videokaardi ramdac custom modes teha (vaja just videode veavabaks presenteerimiseks).
Vahepeal tekkis uus probleem. On keegi Mesa edukalt windowsil kompileerinud, probla selles, et katsetamisel kasutatavad arvutid on nõrga OpenGL toega ja saadavad mind riistvaras pikalt. Softis on aga tugi vaid 1.1 -le, MESA annaks aga 2.1-le, millest mulle on isegi ülearu. Kompileerimine läheb algul justkui käima (MESA 7.4) kuid pika töö järel annab nii error 1 kui error 2 MinGW-ga kompileerimisel. Ainus vihje on seni, et Makes on vist mingi bug, mistõttu mingi (ma_types.exe???) exe asjast ja tema asukohast kompileerimisel tekib tõrge. MESA sellid on kõik teinud, et keegi nende softi kohta mingit abi ei saaks. Teised uuemad MESA versioonid ei jõua algreast kaugemale, error 1-ga, vist linkimise kataloog (no ei ütle mis faili tahab saada). Kui saaks toimima siis piisaks mul enamuses vaid SDL-ist ja OpenGL-ist, kui aga mitte siis, eks siis tuleb OpenGL asemel DirectX-le kolida, esialgu ei tahaks seda teha.
Heli, praegu piisab SDL-ist, kuid kummale tasuks rohkem panustada - kas DirectX-le (Directsound) või OpenAL-le? OpenAL API uurides ei leidnud ma sealt midagi vaimustavat ja kommentaarid olid vähelubavad. Perspektiivsem tundus DirectX (kuna video tuleb vist sellele nagunii viia kuna OpenGL ei taha kuidagi toimida) sest praegused multimeedia tegelased kasutavad just seda.
|
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
07.03.2012 22:24:53
|
|
|
Räägi mida sa täpselt saavutada üritad selle otsese ligipääsuga ning miks standardlahendused (a'la opengl'i ram'is elavad tekstuuride majandamise extensionid) ei sobi. Hetkel jääb mulje, et lähened probleemile väga vale nurga alt ning raiskad üüratus koguses ressursse lahendamaks probleemi mille ise tekitasid kuna ei tea kuidas GPU'd kasutada
Mesa otsene kasutamine on sarnaselt kummaline ettevõtmine kui sul on sama funktsionaalsus (ja palju enamatki) saadval standartsete GPU'ga kaasa tulnud draiveritega ning seda koos korraliku riistvaralise kiirendusega.
Heli koha pealt pigem vaataks openal'i. Ka päris suured-tuntud mängude tegijad eelistavad toda kõiksugu muudele alternatiividele.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
kalvis
Kreisi kasutaja
liitunud: 20.10.2009
|
07.03.2012 23:11:13
|
|
|
Vaja oleks ligipääsu PAL videostandardile vajaliku VGA signaali genereerimiseks. Kuid miksiksin kokku nii video kui ka muud 2D ja 3D elemendid, seejuures osa datat võib tulla ka võrgust ja saadetakse sinna ka tagasi. St. arvutist saab multimeediakeskus otse teleka taga ning datat sisse ja välja tuleb nagu Linuxis tavaline kõikjalt (peamiselt pult, hiir, klaviatuur ja võrk). Bitmapis tuleksid juhtmenüüd ja muud asjad. Klient ja server ei pea üldse asuma samas võrgus, võivad täitsa vabalt asuda kasvõi erinevates riikides.
PAL-le on vaja moonutusevabalt nii täpset sünkroniseerimist, üleridade õiget data saatmist. Praegused meediaplayerid windowsis seda ei võimalda, Linuxis võimaldavad. Esimeses etapis rahuldabki, et server saab olema Linuxis ja tõenäoliselt klient on Windowsis või nutitelefon. Mõlemal programmil peab olema samad objektid ja töötlus. Kuna kasutan üle võrgu juhtimist ja virtuaalset pildi vaatamist siis peab programm olema võimeline töötama mis tahes op. süsteemis.
Loomulikult saab samu asju kasutada kasvõi mängude progemiseks või lihtsalt arvuti kaughalduseks, neis pole videokaardile otsest ligipääsu vaja.
Videotöötlus on väga ressursimahukas, seega on vajalikud kiired algoritmid.
|
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
07.03.2012 23:30:27
|
|
|
Kõlab äärmiselt huvitava ettevõtmisega.
Kas on mõni mõjuv põhjus miks sa lihtsalt sisse tulevaid kaadreid videomälu tekstuurile ei kopeeri, sinna otsa kõiksugu vajalikke imevidinad renderdada ja too tekstuur vabalt valitud resoga (PAL) edasi saata? Kui sa just otseselt PAL'i signaali sisse mingit lisainfot ei kodeeri siis töötaks selline asi igati normaalselt. Mingit sorti moonutusi sealt sisse ei saa tulla ning interlaced outputi eest hoolitseb raudvara automaagiliselt.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
kalvis
Kreisi kasutaja
liitunud: 20.10.2009
|
08.03.2012 12:40:36
|
|
|
Ma olen selle VGA -> PAL vidinaga mässanud. Pilt on parim teadaolevatest, kuid ikkagi on moonutused sees. Nüüdseks on selgunud, et veapõhjuseks on valel ajal data saatmine videokaarti, seda tuleb teha sünkroniseeritult vastavalt kiire tagasijooksmise hetkel kaadrivahetusel ja tuleb veel arvet pidada paaris ja paaritu kaadri osas. Oluline on ajastus, data peab saabuma ainult kiire tagasijooksu ajal videokaardi mällu ja hiljem tuleb just blokkida. On ka veel muid lahendusi, kuid kõigel on omad vead. See saatmine on kõige lihtsam ja kiirem lahendus ja tegelikult ei nõua midagi erilist.
|
|
tagasi üles |
|
 |
andreie
HV vaatleja

liitunud: 09.09.2006
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
kalvis
Kreisi kasutaja
liitunud: 20.10.2009
|
14.03.2012 11:48:07
|
|
|
See oli justkui tõesti see, mida otsin. MS DirectX on võimas multimeedia librarid, kuid maht on ka võimas. Õppimine võtab kaua aega, leidmine veelgi rohkem.
Vahepeal otsisin DirectX kasutamise võimaluste kohta Linuxis, kas tõesti pole mitte keegi viitsinud seni teha ühtegi DirectX API-ga librarit, mis töötaks otse X serveris? Wine jaoks on olemas? Otse X serverile mitte või ma ei leidnud ühtegi viidet.
|
|
tagasi üles |
|
 |
neros
HV Guru

liitunud: 26.11.2003
|
14.03.2012 12:16:38
|
|
|
Ahem... DirectX'l pole X'ga mitte midagi pistmist. DirectX on Windowsi eksklusiivne API. Wine peal mingi DirectX'i emulatsioon töötab, aga ma ei usaldaks seda 100%liselt. Linuxi all natiivselt töötavat DirectX'i loota on naiivne. Kui sa tahad midagi mis ekraanile paneks asju, siis OpenGL ongi enamvähem üks ainukesi linuxilisi.
_________________ GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt. |
|
Kommentaarid: 48 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
40 |
|
tagasi üles |
|
 |
LiivaneLord
Sõpradele "Olavi"
liitunud: 20.06.2006
|
01.04.2012 23:49:56
|
|
|
Kas keegi oskab soovitada mingit programmi, mis suudaks konstruktsioone (if, for, foreach, while jne) taandega esile tuua? Notepad++, Editplus ja paljud, mis olen proovinud, suudavad seda küll teha, kui kirjutan järjest, aga kui vaja midagi muuta, siis nad ei suuda õiget asetust taastada.
Praegusel juhul on vim selles suhtes ideaalne, aga see on krdi tagasihoidliku välimusega programm ning ei sobi mulle. Vim loob taanded õigesti.
|
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
19 |
|
tagasi üles |
|
 |
HellWalKeR
HV kasutaja

liitunud: 20.11.2006
|
02.04.2012 03:00:45
|
|
|
LiivaneLord kirjutas: |
Kas keegi oskab soovitada mingit programmi, mis suudaks konstruktsioone (if, for, foreach, while jne) taandega esile tuua? Notepad++, Editplus ja paljud, mis olen proovinud, suudavad seda küll teha, kui kirjutan järjest, aga kui vaja midagi muuta, siis nad ei suuda õiget asetust taastada.
Praegusel juhul on vim selles suhtes ideaalne, aga see on krdi tagasihoidliku välimusega programm ning ei sobi mulle. Vim loob taanded õigesti. |
Eclipses selekteeri kood ja ctrl+f. Lööb kõik taanded ja tühikud sinu code style järgi.
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
3 |
|
tagasi üles |
|
 |
LiivaneLord
Sõpradele "Olavi"
liitunud: 20.06.2006
|
02.04.2012 10:30:11
|
|
|
HellWalKeR, tänan vastamise eest. Eile pika googeldamise ja mitme programmi installimise peale leidsin suurepärase programmi, Sublime Text 2. Reindent käsk loob oma koodud koodist vaat et kunstiteose ning kõik konstruktsioonid on kenasti eraldatud ja neid on võimalik ka kahandada. Kõige parem on see, et valides kogu teksti, luuakse kõik taanded ja programm suudab arvestada ka HTML tagidega.
Otsimise ajal oli küll vahepeal tunne, et otsin midagi võimatut, sest kõik programmid kasutasid automaatset taandamist ühtviisi vigaselt.
|
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
19 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
02.04.2012 10:36:38
|
|
|
Vähegi asjalikemates IDE'des on kasutuses confitav koodiformaatija. Väga tahad võid ka ise miskit astyle'i põhjal kokku leiutada. Viimast kasutab baasina ka qt creator.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|