Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Laethnes
Založen: 14. 02. 2008 Příspěvky: 38
|
Zaslal: 22. listopad 2009, 10:28:50 Předmět: |
|
|
Ladis napsal: |
Nepotřebuješ vedle sebe ITexture a IImage, měj jen IImage (bude se používat místo ITexture). Kreslení pak můžeš mít takt, že IImage bude mít metody beginPaint a endPaint, kterými obalíš 2D kreslení do obrázku. beginPaint vytvoří v paměti surface pro kreslení, endPaint jej doplní na rozměry mocniny dvou (pokud karta neumí now-power-of-two textury) a nahraje do OpenGL. beginPaint jeste může mít optimalizaci, že bude mít parametr, zda má být obsah obrázku při začnutí kreslení nedefinovaný nebo dosavadní. Dosavadní znamená přečíst si data textury z OpenGL, nedefinovaný znamená tohle přeskočit.
Obecně pokud chceš softwarově kreslit do textury, jediné řešení je kreslit si to v system-RAM, a pak jako celek poslat do 3D API (a moje navrhované řešení tak funguje; bylo to tak i v Direct3D v dobách Lock/Unlock - nevím, jak je to tam teď). |
A jé. Velmi se omlouvám, nějakým způsobem se mi podařilo tuto tvoji odpověď přeskočit. Hm, tohle řešení je poměrně dobré (touhle cestou se určitě dám), nicméně to neřeší jeden z hlavních problémů v rámci režie (omlouvám se, že jsem to nenapsal dříve). Jde o to, že se mi velice dobře pracuje s SDL_Surface pro vytváření obrázků - je rychlé (dělal jsem si nějaké testy) a nemusím řešit formáty obrázků. Průšvih tedy nastává, když udělám tohle:
kód: |
// Nacte obrazek pomoci SDL_Image a pak prekonvertuje na texturu
// a posle do OpenGL
image = video.LoadImage("...");
// Vytvori novy SDL_Surface pro bliting, pripadne do nej zkopiruje data
// z OpenGL textury.
image->BeginPaint();
image2 = video.LoadImage("part.tga");
// image 2 (nacteny jako SDL_Surface a po te zkonvertovany do
// OpenGL textury) se nyni jednorazove zkonvertuje do SDL_Surface
// a vlozi do editovane SDL_Surface. Pak se smaze (leda ze by si
// vysledek image2 cachoval).
image->Blit(image2, x, y, clip);
// Treba ho chci vykreslit znovu. Pokud necachuji, znovu dojde ke
// konverzi OpenGL textury na SDL_Surface.
image->Blit(image2, x2, y2, clip2);
// Konec kresleni, SDL_Surface se zkonvertuje do OpenGL textury.
image->EndPaint();
|
Je tam trošku moc konverzí, nemyslíš? I když mě napadá, že by bylo možno to udělat tak, že by ke konverzi došlo až v případě, že by bylo potřeba OpenGL texturu a do té doby mít vše uloženo jako SDL_Surface...
Kdybych se měl vydat touto cestou, chtěl bych se zeptat: mám řešit to, že velikost instance třídy obrázku bude o něco větší kvůli více pointerům na SDL_Surface a stav, nebo to nemám řešit vzhledem k tomu, že je ta velikost irelevantní vzhledem k tomu, že tam mám hromadu virtuálních metod a vzhledem k tomu, že samotný obrázek/textura zabírají mnohem víc?
JohnyDog napsal: |
Laethnes napsal: |
No, hlavně proto, že když už chci dělat multijazyčnou aplikaci, tak pořádně. Hlavně proto, že se nechci vybodnout na tu klingonštinu, tedy v mém případě Japonštinu. Dalším důvodem je to názor, který jsem se dočetl na internetu, když jsem se o unicode prvně zajímal, že vlastně UTF-16 nemá výhodu UTF-8 - kompatibilita s ASCII, ani výhodu UTF-32 - pevná délka znaku. Hlavní výhodou je, že při použití UTF-8 mám texty ve stejném kódování pro názvy adres/souborů i pro normální texty. Používám pro to tu samou třídu a ty samé metody. Třeba když mám v nějakém XML (bohužel se mě nepodařilo uspokojivě rozjet nějaký xml parser, tak jsem si napsal vlastní - ano vím, su blbý :3) data o adrese i nějaké texty. Např. kdybych měl GUI v XML, mohu tam mít adresu k obrázku a popisek ke tlačítku. No, ohledně toho, co píšeš o UTF-32 a paměti... asi máš pravdu... I když bych chtěl dělat adventuru (ne klik & point, spíš něco mezi akční adventurou alá Japonský hry, klik & point a visual novel, tak s těmi texty a pamětí by neměl být problém. To už je spíš psychická záležitost (cože? ze 4bajtového znaku budu průměrně používat cca 1 a 1/2 bajtu?). |
No kdyz uz mluvime o japonstine tak UTF16 se pouziva prave proto ze drtiva vetsina CJK znaku se v UTF16 porad vleze do dvou bajtu, v UTF8 je to na 3. (I kdyz jestli teda mluvime o japonsku, tam se na nejake Unicode vesele kasle a vsichni porad pouzivaji shift-jis ) |
Omlouvám se, další odpověď, které jsem si nevšiml... (Asi bych neměl chodit na fórum pozdě v noci, kdy vidím písmenka značně rozmazane...) A jé - tohle je možná informace, kterou jsem si předtím špatně interpretoval. Právě to, že jsem se mj. dočetl, že japonské znaky už zabírají 3 byty je jeden z důvodů, proč jsem na 2bytový formát zanevřel. Neuvědomil jsem si, že v UTF-16 formátu je to kratší, takže může vyjít jen na 2, jak píšeš. Hm, to je zajímavé. Další informace, kterou jdu přehodnotit.
rezna napsal: |
Laethnes napsal: |
V podstatě snad všechny kódování mají do 127 znaku vše společně. A kvůli tomu se vyhýbám názvům souborů v UTF-16 a UTF-32, protože v tomhle se liší (ano, kód znaku je stejný, ale již na více bytů, takže se liší řetězce). |
mno takze znovu - mozna si vsichni nadzvedneme prdele at nesedime tady panovi na vedeni
o tom v jakem kodovani budou nazvy souboru nerozhodujes ty, ale pouzity filesystem - to ze v tom ma linux bordel a umoznuje zapisovat UTF-8 nedejboze ruzne jine zvrhlosti je pouze jeho problem - to te nenuti to pouzivat.
filesystem muze kodovat treba v mnou uvedenem HATLA-PATLA-41 ve kterem se nazev souboru rezna.txt zapise jako XXXxxx.OOO
to ale nemeni nic na tom ze ty to takto musis nekde ukladat.
ty mas funkci filesystemu a ta to poresi.
mimojine na WIN platforme mas hned dve funkce na otevreni souboru OpenFileA a OpenFileW - prvni bere ASCII cestu druha cestu v UNICODE - a co myslis? musim kvuli funkci OpenFileW vsechny soubory prejmenovat na unicode nazvy aby je umela otevrit a potom az budu chtit otevirat pomoci OpenFileA tak zase vsechno predelat zpatky na ASCII - no to asi ne co?
P.S. kdyz uz pouzivas to STL tak k vetsine veci je i 'w' verze a nemusis nejaky UTF-16 resit  |
No - neříkám, že nemívám často dlouhé vedení, ale pokud vím, jak jsem psal, že to hodlám přehodnotit. Já ty všechny názory a informace, co píšeš uznávám a beru. (I když první informace, kterou jsem o wide verzi streamů vyhrabal byly problémy :3.) Musím se rozhodnout, zda kompletně změním přístup k tomu, jak programuju řetězce, když v tom kromě konstantní velikosti nevidím výhodu :3. Zvlášť když UTF-8 naopak má něco, co UTF-16 ani UTF-32 nemají - je TAK pohodlné neřešit, jestli jsem na BIGENDIAN nebo LOWENDIAN stroji. Bohatě mě stačilo, když jsem psal loader na md2 (hodně jsem se inspiroval právě loaderem z Irrlichtu) a nakonec dospívám k závěru, že si stejně udělám pomocné metody, šablony, které to budou řešit za mě, místo toho, abych to měl při každém načítání něčeho, co má víc, jak jeden byte (jak to měli v tom Irrlichtu)... |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 22. listopad 2009, 10:40:25 Předmět: |
|
|
LE vs. BE - planujes snad programovat pro nejaky obskurni platformy? |
|
Návrat nahoru |
|
 |
Laethnes
Založen: 14. 02. 2008 Příspěvky: 38
|
Zaslal: 22. listopad 2009, 10:52:57 Předmět: |
|
|
rezna napsal: |
LE vs. BE - planujes snad programovat pro nejaky obskurni platformy? |
No... popravdě řečeno spíše ne, pokud vím, Windows (32), Linux (32) a NDS mají všechno stejně, ale kdysi jsem dělal jeden projekt na Windows a pak jsem začal přecházet na Linux a najednou jsem narazil na obrovské množství problémů, že jsem ho nechal být jen na Windows a vzal jsem si radu od WOQa, že pokud chci mít multiplatformní aplikaci, musím s touto myšlenkou psát (a navrhovat) po celou dobu. No a tak se obecně snažím psát co nejvíce multiplatformně. Proto se taky snažím navrhnout obecně API a ne natvrdo OpenGL. Víš jak by bylo pohodlné, kdybych si prostě napsal GUI tak, že obrázky budu generovat v SDL_Surface a pak je prostě převedu na texturu? Jenže pak přijde nová platforma (např. jsem si usmyslel NDS) a najedou musím celé GUI buď předělat, nebo napsat znovu. (Těžko říct, co je horší). Proto se snažím najít rovnováhu mezi tím, co je obecné, a co je snadné. Řešení LE a BE podle mě ještě stojí, aspoň si ošetřit nějakým makrem, které bych případně později dopsal... I když uznávám - UTF-16 má obě verze nezávisle na systému a mohu psát v obojím (PS-Pad i Code::Blocks podporují oboje).
EDIT:
bolejt napsal: |
Laethnes: klingonština a hieroglify = umělé a prastaré jazyky. pokec o unicode byl tady. |
Konečně jsem se dostal i k tomuto odkazu. V podstatě jsem se sice nedověděl nic moc nového (ale díky za něj), v podstatě hodně z toho jsou důvody, proč chci jet na UTF-8. V podstatě jediné, co jsem si musel připrogramovat je průchod řetězcem (v GUI potřebuji text odřádkovat podle šířky), ale jinak my ostatní metody mi bohatě stačí. Když bych měl více pracovat s řetězci (právě třeba jejich transformace), tak jako tak mi STL těžce nedostačuje a musel bych sehnat/napsat knihovnu pro práci s textem. Co mě překvapilo je rozdílná velikost wchar_t (nikdy jsem s tím nepracoval). |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 22. listopad 2009, 11:19:26 Předmět: |
|
|
tak az spasis svet tak dej vedet - tohle nema smysl resit - nikdy nelze navrhnout system ktery pobezi na vsech platformach co si usmyslis  |
|
Návrat nahoru |
|
 |
Laethnes
Založen: 14. 02. 2008 Příspěvky: 38
|
Zaslal: 22. listopad 2009, 11:38:42 Předmět: |
|
|
rezna napsal: |
tak az spasis svet tak dej vedet - tohle nema smysl resit - nikdy nelze navrhnout system ktery pobezi na vsech platformach co si usmyslis  |
Jasně šéfe. Každopádně UTF-8 VS UTF-16 není můj problém, přinejmenším já s tím nemám problém :3. Navíc, i kdybych se nakrásně na UTF-16 přeorientoval a třeba bych přeci jen začal používat Irrlicht, stejně bych chtěl napsat nějakou hru na NDS. A tam už je mi Irrlicht na dvě věci. A vzhledem k tomu, že GUI budu používat jak na PC, tak na NDS, chtěl bych to napsat tak, aby jeden kód fungoval na obou platformách a přinejmenším bych potřeboval nějaký wrapper okolo grafických API pro GUI. Proto bych to chtěl navrhnout tak, aby to splňovalo to, co pro GUI ve 2D potřebuji, tj. IImage je zobrazitelný na obrazovku a nějaké rozhraní pro GUI, které by obrázky generovalo. No a to je hlavní důvod, proč jsem založil tohle téma. S UTF jsem spokojený, jak to zrovna je.
Nicméně díky všem, co jste mi tu psali a snažili se pomoci, moc si toho cením.
Pokud jde o hlavní problém, považujme jej zatím za vyřešený: na základě vašich rad a tipů jsem se rozhodl, že zkusím udělat IImage s metodami BeginPaint() a EndPaint() (nebo tak nějak - asi bych spíš použil pojem "draw" nebo "edit") a v IImage by se automaticky používaly konverze textura <-> SDL_Surface podle aktuální potřeby. Takže si načrtnu návrh a vykreslím rozhraní a uvidím, jak to půjde v rámci všech svých požadavků (některé jsem zde nevypsal, aby jich nebylo moc :3). |
|
Návrat nahoru |
|
 |
OndraSej

Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 22. listopad 2009, 11:55:34 Předmět: |
|
|
Laethnes napsal: |
Mimochodem, beru, že různé aplikace mají různé kódování a neřeším je, ale tvůj poslední argument jde trošku mimo mě. Používám sice Windows i Linux, ale ve Windows XP se setkávám spíš s CP1250 a v Linuxu s UTF-8 (v něm si můžu dovolit psát do konzole v UTF-8, narozdíl od Windows). O KDE a Javě si myslím totéž - že je to něco, co má na můj vkus moc velké nároky. Ke KDE se dále nevyjadřuji, moc jsem to nepoužíval, mám zkušenost se 3 programy (v Gnomu) a chvíli KDE desktopem. Javu naopak se musím učit do školy a i když ji mám radši, než PL/SQL, vyhýbám se aplikacím v Javě. V podstatě jsem nenarazil na aplikaci v Javě pro koncové uživatele (jakým jsem), které by byly rychlé a nenáročné. To jen tak naokraj :3. |
Pokud jde o Windows a kódování textu, tak tě musím zklamat, ale od Win2000 dál funguje ve Windows interně vše v UNICODE a pokud někdo chce pracovat s chary místo wcharů, tak se to překládá... To, že notepad ukládá texťáky v cp1250 je dáno spíš historicky, než že by to mělo nějaký rozumný důvod. _________________ http://trionteam.net |
|
Návrat nahoru |
|
 |
Laethnes
Založen: 14. 02. 2008 Příspěvky: 38
|
Zaslal: 22. listopad 2009, 12:17:21 Předmět: |
|
|
OndraSej napsal: |
Pokud jde o Windows a kódování textu, tak tě musím zklamat, ale od Win2000 dál funguje ve Windows interně vše v UNICODE a pokud někdo chce pracovat s chary místo wcharů, tak se to překládá... To, že notepad ukládá texťáky v cp1250 je dáno spíš historicky, než že by to mělo nějaký rozumný důvod. |
Ah tak, to pak jo. Ohledně Windows moje první a poslední zkušenost je vytvoření nového souboru v Notepadu a PS-Pad tvrdí, že to je CP1250. Nicméně v obou systémech jedu na unicode. Každopádně díky za info. |
|
Návrat nahoru |
|
 |
Mem

Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 22. listopad 2009, 14:46:30 Předmět: |
|
|
Laethnes napsal: |
Ohledně Windows moje první a poslední zkušenost je vytvoření nového souboru v Notepadu a PS-Pad tvrdí, že to je CP1250. |
V dialogu "Uložit (jako...)"v Notepadu pod políčkem pro vepsání názvu souboru a výběru typu najdeš také nenápadný combobox uvozený textem Kódování. Nemusíš se stydět výchozí ANSI změnit na jiný  _________________
 |
|
Návrat nahoru |
|
 |
Laethnes
Založen: 14. 02. 2008 Příspěvky: 38
|
Zaslal: 22. listopad 2009, 14:49:07 Předmět: |
|
|
Mem napsal: |
V dialogu "Uložit (jako...)"v Notepadu pod políčkem pro vepsání názvu souboru a výběru typu najdeš také nenápadný combobox uvozený textem Kódování. Nemusíš se stydět výchozí ANSI změnit na jiný  |
Hezky řečeno XD. No, tak toho jsem si nikdy nevšiml, ale taky je to nejspíš tím, že Notepad nepoužívám. Všechno řeším skrz PS-Pad :3. Díky za info, tohle jsem nevěděl :3. |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 22. listopad 2009, 15:20:33 Předmět: |
|
|
Ano, ve Win2000 a vyšší jede vše interně v Unicode a ty *A funkce jsou pouze přeložení parametrů z ANSI do Unicode a zavolání těch *W funkcí.
K IImage: Záleží, jak často má probíhat kreslení. Pokud často, drž si v IImage i SDL_surface, pokud zřídka, ušetříš zabranou paměť, když SDL_surface budeš vytvářet, jen když je potřeba. Nechápu ale ty konverze, kreslit budeš obvykle celý obsah nanovo, takže v BeginPaint žádnou texturu z OpenGL číst a příp. konvertovat nebudeš, při nahrávání do OpenGL taky nic nekovertuješ, na současném HW grafiky umí non-power-of-two textury a pro starý grafiky ti nic nebrání volit rozměry obrázků mocniny dvou, i kdybys část jejich plochy nepoužíval. _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 22. listopad 2009, 16:26:19 Předmět: |
|
|
Laethnes napsal: |
Ohledně Windows moje první a poslední zkušenost je vytvoření nového souboru v Notepadu a PS-Pad tvrdí, že to je CP1250. |
boze linuxari - aspon nekdy se prvne zajimejte o system kdyz na nej pisete
to ze je to v CP1250 - resp Windows-1250 - je proto, ze tato stranka je oznacena jako vychozi pro ulozeni/cteni souboru v ANSI kodovani pokud neni receno jinak
tzn. na jinych windows to muze byt klidne jinak - ale toto je vychozi nastaveni ceskych windows |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 22. listopad 2009, 16:27:12 Předmět: |
|
|
P.S. UNICODE na windows == UTF-16 bez vice znakovych sekvenci - tzn. pouze cisty wide-char |
|
Návrat nahoru |
|
 |
Houp
Založen: 28. 07. 2007 Příspěvky: 672
|
Zaslal: 22. listopad 2009, 16:27:20 Předmět: |
|
|
Mem napsal: |
Laethnes napsal: |
Ohledně Windows moje první a poslední zkušenost je vytvoření nového souboru v Notepadu a PS-Pad tvrdí, že to je CP1250. |
V dialogu "Uložit (jako...)"v Notepadu pod políčkem pro vepsání názvu souboru a výběru typu najdeš také nenápadný combobox uvozený textem Kódování. Nemusíš se stydět výchozí ANSI změnit na jiný  |
akorát třeba do Unicodu si to přidává znaky navíc, tedy bych na tohle zrovna notepad nepoužíval.  _________________
 |
|
Návrat nahoru |
|
 |
Quiark

Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 22. listopad 2009, 16:30:13 Předmět: |
|
|
Houp: Myslíš Byte Order Mark?  _________________ Mám strach |
|
Návrat nahoru |
|
 |
Laethnes
Založen: 14. 02. 2008 Příspěvky: 38
|
Zaslal: 22. listopad 2009, 16:34:58 Předmět: |
|
|
Ladis napsal: |
Ano, ve Win2000 a vyšší jede vše interně v Unicode a ty *A funkce jsou pouze přeložení parametrů z ANSI do Unicode a zavolání těch *W funkcí. |
Fakt? Hm, to je zajímavé. To takto funguje obecně, nebo jen ve Windows? (Pozn. používám MinGW)
Ladis napsal: |
K IImage: Záleží, jak často má probíhat kreslení. Pokud často, drž si v IImage i SDL_surface, pokud zřídka, ušetříš zabranou paměť, když SDL_surface budeš vytvářet, jen když je potřeba. Nechápu ale ty konverze, kreslit budeš obvykle celý obsah nanovo, takže v BeginPaint žádnou texturu z OpenGL číst a příp. konvertovat nebudeš, při nahrávání do OpenGL taky nic nekovertuješ, na současném HW grafiky umí non-power-of-two textury a pro starý grafiky ti nic nebrání volit rozměry obrázků mocniny dvou, i kdybys část jejich plochy nepoužíval. |
Jo, jasně... No, spíš se řádově mnohem častěji bude kreslit na obrazovku, než do obrázku, ale záleží na konkrétním případě. Např. u orámování okolo objektů se renderovat do obrázku bude při vytvoření a změně velikosti. V případě textů zas vlastně jen generuji textury z TTF_Font. Spíš bych to viděl na tu šetřící metodu, ale taky je důležité, jak se budou ukládat zdrojové obrázky - tedy části, z nichž se rámec skládá. U nich je existence textury naprosto zbytečná, kdežto k jejich používání k vykreslení bude docházet značně často (tolikrát, kolikrát je potřeba rámec genrovat krát počet objektů, řádově v jednotkách až desítkách). Nicméně mě napadlo, že zdrojové obrázky prostě stačí mít permanentně v draw módu. Sice se do nich nebude kreslit, ale budou mít připravené SDL_Surface pro použití.
Pokud jde o konverzi při volání BeginDraw: jednak nemohu 100% vyloučit, že nebude potřeba např. načíst obrázek a jen jej nějak drobně upravit. Navíc, pokud bych měl použít právě výše uvedený postup, je potřeba, aby po BeginDraw() byl připravený SDL_Surface s obrázkem jakožto zdroj pro generování do cíle. Stejně tak může být potřeba pro následující situaci:
- něco vygeneruji ve 3D
- nechám z obrazovky načíst data (v podstatě udělám screenshot) do textury (ano, vím, že touto metodou bych mohl taky generovat textury, ale řekněme, že je to jiný proces, který potřebuji mít odděleně. Třeba už jenom proto, že mohu pomocí SDL_Surface generovat obrázky v jednom vlákně a v druhém používat OpenGL)
- chci tento obrázek použít jako zdrojový pro generování jiného obrázku - mám data v textuře, ale neexistuje adekvátní SDL_Surface - je tedy potřeba jej vytvořit a vložit do něj data z textury
(Konkrétní příklad: editor zdrojového obrázku pro rámce a následné generování ukázky, jak to bude vypadat v praxi a v pohybu.)
Takže můj aktuální návrh vypadá takto:
kód: |
// promenna image obsahuje SDL_Surface ze zdroje a nema
// vygenrovanou texturu. Zaroven je jiz v "edit modu", tedy jakoby po
// zavolani BeginDraw()
image = video.LoadImage("...");
// Protoze jiz obrazek je v modu kresleni, nic se nestane - diky tomu
// metody, ktere maji neco delat neresi, jestli je zdrojovy obrazek
// nacteny nebo nejaky jiny. Pokud by obrazek byl textura bez
// SDL_Surface, SDL_Surface by se vygeneroval z textury.
image->BeginDraw();
image2 = video.LoadImage("part2.tga");
// image2 po nacteni obsahuje SDL_Surface a je v edit modu, image je
// tez v edit modu s SDL_Surface. Vykresluje se tedy rovnou bez nejakeho
// generovani cehokoli
image->Blit(image2, x, y, clip);
// Totez jako vyse, proste renderovani
image->Blit(image2, x2, y2, clip2);
// Konec kresleni: SDL_Surface se pretransformuje v texturu a smaze se
image->EndDraw();
// Aktualni stav:
// image: obsahuje texturu, neobsahuje SDL_Surface, normalni mod
// image2: neobsahuje texturu, obsahuje SDL_Surface, edit mod
|
Zároveň to už lze snadno naprogramovat tak, aby EndDraw() nebylo vůbec potřeba volat a volalo se automaticky při prvním vykreslení na obrazovku. A naopak, snadno lze připrogramovat to, že při prvním volání Blit (když je obrázek v normálním módu) se automaticky zavolá BeginDraw(). Nebo naopak mohu toto volání vyžadovat, abych vyžadovat po programátorovi (sobě :3), aby měl plnou kontrolu nad tím, v jakém stavu je obrázek - což ovšem programátora nutí volat EndDraw() po té, co je obrázek načten, protože po načtení je v edit módu a to (že bych musel volat EndDraw po načtení) už se mě nelíbí, protože obrázek by měl být hned po načtení použitelný (i když při prvním vykreslení v pozadí musí proběhnout EndDraw()). To už je otázka konkrétního chování, které si mohu libovolně navrhnout.
Jo a konverzí mám na mysli převod SDL_Surface na OpenGL texturu a ne změnu rozměrů obrázku kvůli grafice (i když je její součástí, i když nemusí být).
(No a díky takovémuto návrhu už pak není problém implementovat obrázek jako texturu pro OpenGL a zároveň mít dvojici obrázku a video driveru jen ve 2D v SDL nebo úplně jinak pro různé API (DirectX) či systémy (NDS) a zároveň mohu psát věci jako GUI (a jiné grafické algoritmy) obecně tak, že poběží všude. Koneckonců v případě implementace s SDL_Surface BeginDraw() a EndDraw() mohou volat Lock a Unlock v případě potřeby, takže mají i smysl v čisté SDL 2D implementaci pro rychlejší přístup per pixel (kdysi jsem měřil jak to vypadá, když čtu celý obrázek per pixel a každé čtení zamyká a odemyká VS když se zamkne na začátku a na konci odemkne - rozdíl byl cca 30%).)
rezna napsal: |
Laethnes napsal: |
Ohledně Windows moje první a poslední zkušenost je vytvoření nového souboru v Notepadu a PS-Pad tvrdí, že to je CP1250. |
boze linuxari - aspon nekdy se prvne zajimejte o system kdyz na nej pisete
to ze je to v CP1250 - resp Windows-1250 - je proto, ze tato stranka je oznacena jako vychozi pro ulozeni/cteni souboru v ANSI kodovani pokud neni receno jinak
tzn. na jinych windows to muze byt klidne jinak - ale toto je vychozi nastaveni ceskych windows |
Bacha na to - já nejsem Linuxář, chtěl bych jím být. Na Windows běžím od roku cca 2001, s Linuxem jsem experimentoval jen sem tam někdy a loni jsem se pokusil ho déle používat asi tak půl roku v kuse, ale nevydržel jsem. Prostě ve Windows se mě dělá líp. Když jsem začínal programovat, velkou část jsem dělal v Notepadu, pak jsem přešel na Dev-Cpp a teď je to Code::Blocks.
Nicméně co píšeš jsem nevěděl...
rezna napsal: |
P.S. UNICODE na windows == UTF-16 bez vice znakovych sekvenci - tzn. pouze cisty wide-char |
Beru na vědomí (důležitá informace). |
|
Návrat nahoru |
|
 |
|