C++ -kysymykset

Muu yhteisön välinen keskustelu.
User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: C++ -kysymykset

Post by koodaaja » Tue Feb 15, 2011 7:23 pm

glLoadIdentity -> glPushMatrix -> piirto, tämähän tarkoittaa samaa kuin "nollaa matriisi, kopioi se ja piirrä viimeisellä". Unohda tuosta glPushMatrix-glPopMatrix-kikkailu ja siirrä glLoadIdentity ennen camer->pushMatrix();ia, niin pitäisi toimia.

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 » Tue Feb 15, 2011 7:28 pm

koodaaja wrote:glLoadIdentity -> glPushMatrix -> piirto, tämähän tarkoittaa samaa kuin "nollaa matriisi, kopioi se ja piirrä viimeisellä". Unohda tuosta glPushMatrix-glPopMatrix-kikkailu ja siirrä glLoadIdentity ennen camer->pushMatrix();ia, niin pitäisi toimia.
Aah... Kiitos. En ihan tajunnut push ja pop -juttujen tarkoitusta, mutta esimerkeissä tuntui aina olevan niitä... :oops:

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: C++ -kysymykset

Post by koodaaja » Tue Feb 15, 2011 8:07 pm

Niitä tarvitaan vain kun halutaan tallentaa matriiseja stackiin, mille en nyt äkkiseltään keksi juuri käyttötarkoituksia. Mutta PushMatrix tallentaa nykyisen matriisin ja kopioi sen "päälle" pinoon uuden samanlaisen, PopMatrix poistaa päällimmäisen jolloin aiemmin tallennettua voidaan taas käyttää.

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 » Thu Feb 17, 2011 3:46 pm

Mitenkä voisin piirtää OpenGL:llä saman kuvion useaan kertaan niin, että sitä ei tarvitsisi uudelleen "tehdä".
Siis pystyisinkö jotenkin "kopioimaan" jonkun kuvion, niin että samaa kuviota ei tarvitsisi uudestaan tehdä glBeginillä?
Miten olisi nopeinta ja kätevintä piirtää paljon samanlaisia kuvioita (tekstuurilla)?

Niin ja sitten miten käytännössä OpenGL:n tekstuurit toimivat? Että kun glBeginin jälkeen
laitetaan vuoron perään verteksejä ja tekstuurin koordinaatteja, niin ovatko tekstuurin koordinaatit bittikartalta pikseleiden kohtia.

Ja sitten muutamissa esimerkeissä ole törmännyt glNormal3f:ää, mitä se tekee?

Mikä olisi sopiva formaatti 3D malleille? Ja mistä sille löytyisi jonkunlainen parsija/lataaja?
Vai olisiko kuitenkin kannattavinta tehdä oma formaatti?

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 » Thu Feb 17, 2011 4:08 pm

Latexi95 wrote:Mitenkä voisin piirtää OpenGL:llä saman kuvion useaan kertaan niin, että sitä ei tarvitsisi uudelleen "tehdä".
Siis pystyisinkö jotenkin "kopioimaan" jonkun kuvion, niin että samaa kuviota ei tarvitsisi uudestaan tehdä glBeginillä?
Miten olisi nopeinta ja kätevintä piirtää paljon samanlaisia kuvioita (tekstuurilla)?

Niin ja sitten miten käytännössä OpenGL:n tekstuurit toimivat? Että kun glBeginin jälkeen
laitetaan vuoron perään verteksejä ja tekstuurin koordinaatteja, niin ovatko tekstuurin koordinaatit bittikartalta pikseleiden kohtia.

Ja sitten muutamissa esimerkeissä ole törmännyt glNormal3f:ää, mitä se tekee?

Mikä olisi sopiva formaatti 3D malleille? Ja mistä sille löytyisi jonkunlainen parsija/lataaja?
Vai olisiko kuitenkin kannattavinta tehdä oma formaatti?
Ug deprekoitua. Immediate modea ei pitäisi käyttää, etsi jostain vaikka VBO-tutoriaali.

glNormal3f määrittää pinnan normaalin.

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 » Thu Feb 17, 2011 4:34 pm

esa94 wrote: Ug deprekoitua. Immediate modea ei pitäisi käyttää, etsi jostain vaikka VBO-tutoriaali.

glNormal3f määrittää pinnan normaalin.
Normaalin tajusin, mutta muut voisit selittää vähän tarkemmin...
EDIT:

Mutta mitä normaaleilla tekee?

Edit2: Ahaa.... Niitä tarvitaan ainakin valaistuksen laskemiseen...

Edit3: VBOt siis ovat jonkinlaisia 3D malleja, jotka ovat näytönohjaimen muistissa?
Mitenkäs sitten sellainen tehtäisiin?

Ja miten tekstuurien koordinaatit menevät?


User avatar
Aavesoturi
Active Member
Posts: 163
Joined: Fri Aug 31, 2007 7:07 pm
Location: Helsinki
Contact:

Re: C++ -kysymykset

Post by Aavesoturi » Thu Feb 17, 2011 5:44 pm

Latexi95 wrote: Edit3: VBOt siis ovat jonkinlaisia 3D malleja, jotka ovat näytönohjaimen muistissa?
Mitenkäs sitten sellainen tehtäisiin?
Google auttaa: http://www.google.fi/search?q=opengl+vbo+tutorial

Vikkelin tapa piirtää paljon samoja objekteja on instantiointi (engl. instancing), joka taisi tulla pakolliseksi OpenGL speksissä version 3 tienoilla.

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 » Fri Feb 18, 2011 4:56 pm

En ole vielä saannut selville miten glTexCoord2f pitäisi toimia. Jotenkinhan se merkkaa tekstuurin paikan, mutta mitkä ovat yksiköt? Esimerkkejen perusteella ne eivät vaikuta olevan pikseleitä...

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: C++ -kysymykset

Post by koodaaja » Fri Feb 18, 2011 6:37 pm

Ne ovat kuvan koordinaatteja, akselit kulkevat väliltä 0-1, siis kuvan vasen yläkulma on 0,0 ja oikea alakulma 1,1, en tosin muista kummin päin akselit kulkivat, kokeilemallahan tuo selviää. Alueen ulkopuolisiakin arvoja voi toki käyttää, silloin tekstuuri oletuksena toistuu. Sen voi vaihtaa glTexParameterf-funktiolla esimerkiksi clamppaamaan arvot laitoihin, jolloin tekstuurista toistetaan vain viimeistä riviä.

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 » Fri Feb 18, 2011 6:48 pm

koodaaja wrote:Ne ovat kuvan koordinaatteja, akselit kulkevat väliltä 0-1, siis kuvan vasen yläkulma on 0,0 ja oikea alakulma 1,1, en tosin muista kummin päin akselit kulkivat, kokeilemallahan tuo selviää. Alueen ulkopuolisiakin arvoja voi toki käyttää, silloin tekstuuri oletuksena toistuu. Sen voi vaihtaa glTexParameterf-funktiolla esimerkiksi clamppaamaan arvot laitoihin, jolloin tekstuurista toistetaan vain viimeistä riviä.
Juuri tuota tietoa kaipasinkin. Kiitos

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 » Tue Mar 01, 2011 11:32 pm

Yritän linkittää PhysX:ää projektiini, mutta heikolla menestyksellä...
Käytän Qt:ta tässäkin projektissa. Olen lisännyt .pro tiedostoon .lib tiedostojen sijainnit ja .h tiedostot,
mutta kun kääntäjä pääsee "NxCreatePhysicsSDK":n ja "NxReleasePhysicsSDK":n kohdalle, niin se heittää "unresolved external symbol":ia.

Code: Select all

INCLUDEPATH += "D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\Physics\include"
INCLUDEPATH += "D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\Cooking\include"
INCLUDEPATH += "D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\Foundation\include"
INCLUDEPATH += "D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\NxCharacter\include"
INCLUDEPATH += "D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\PhysXLoader\include"

LIBS += -L"D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\lib\win64" -lPhysXLoader64
LIBS += -L"D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\lib\win64" -lNxCharacter64
LIBS += -L"D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\lib\win64" -lPhysXCooking64
Kellään vinkkejä miten saisin tämän toimimaan?

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post by JATothrim » Wed Mar 02, 2011 1:00 am

Latexi95 wrote:Yritän linkittää PhysX:ää projektiini, mutta heikolla menestyksellä...
Käytän Qt:ta tässäkin projektissa. Olen lisännyt .pro tiedostoon .lib tiedostojen sijainnit ja .h tiedostot,
mutta kun kääntäjä pääsee "NxCreatePhysicsSDK":n ja "NxReleasePhysicsSDK":n kohdalle, niin se heittää "unresolved external symbol":ia.

Code: Select all

INCLUDEPATH += "D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\Physics\include"
INCLUDEPATH += "D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\Cooking\include"
INCLUDEPATH += "D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\Foundation\include"
INCLUDEPATH += "D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\NxCharacter\include"
INCLUDEPATH += "D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\PhysXLoader\include"

LIBS += -L"D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\lib\win64" -lPhysXLoader64
LIBS += -L"D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\lib\win64" -lNxCharacter64
LIBS += -L"D:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.4_win\SDKs\lib\win64" -lPhysXCooking64
Kellään vinkkejä miten saisin tämän toimimaan?
Valitan, ja pahoittelen, että avaudun nyt: Linkkeri huutaa.
Varsinainen kääntäjäsi ei sano mitään. Kaikki Ok. ;)
Linkeri huutaa yhä, koska se ei onnistu pakkeloimaan kaikkia riippuvuuksia sileiksi... eli:
--> jotain puuttuu silti yhä. (uuppuva symboli kertoo tämän itse hyvällä tuurilla: mihin libiin se viittaa?)
--> jotain linkataan väärässä järjestyksessä. (ja jokin linkitys ei tee mitään hyödyllistä)
Missä tiedostossa tuo [c ode]..[/co de] myhäilee? Tuo ei luultavasti ole .c tai .h tiedosto?
Mitä kehitysympäristoä käytät? (vaikutaisi olevan mikkisoftaa libien perusteella?)
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.

User avatar
valscion
Moderator
Moderator
Posts: 1587
Joined: Thu Dec 06, 2007 8:46 pm
Location: Espoo
Contact:

Re: C++ -kysymykset

Post by valscion » Wed Mar 02, 2011 1:10 am

JATothrim wrote:Missä tiedostossa tuo [c ode]..[/co de] myhäilee? Tuo ei luultavasti ole .c tai .h tiedosto?
Mitä kehitysympäristoä käytät? (vaikutaisi olevan mikkisoftaa libien perusteella?)
Heh, Latexihan käyttä Qt:tä joten tuo code-pätkä on selkeästi projektin määrittelytiedostosta peräisin, eli .pro päätteisestä tiedostosta.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Post by Latexi95 » Wed Mar 02, 2011 10:45 am

JATothrim wrote: Valitan, ja pahoittelen, että avaudun nyt: Linkkeri huutaa.
Varsinainen kääntäjäsi ei sano mitään. Kaikki Ok. ;)
Linkeri huutaa yhä, koska se ei onnistu pakkeloimaan kaikkia riippuvuuksia sileiksi... eli:
--> jotain puuttuu silti yhä. (uuppuva symboli kertoo tämän itse hyvällä tuurilla: mihin libiin se viittaa?)
--> jotain linkataan väärässä järjestyksessä. (ja jokin linkitys ei tee mitään hyödyllistä)
Missä tiedostossa tuo [c ode]..[/co de] myhäilee? Tuo ei luultavasti ole .c tai .h tiedosto?
Mitä kehitysympäristoä käytät? (vaikutaisi olevan mikkisoftaa libien perusteella?)
Nuo mainitsemani funktiot pitäisivät löytyä juuri tuosta "PhysXLoader" osasta. Käytän Qt Creatoria + Qt:tä ja Visual Studion link.exe on linkerinä ja nmake.exe kääntäjänä.
EDIT:

Ahaa... Jostain syystä 64 bittiset versiot aiheuttivat ongelmat, kun linkkasin 32 bittiset niin alkoi toimia.


User avatar
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: C++ -kysymykset

Post by Feuer » Mon Apr 04, 2011 6:19 pm

Code: Select all


const int tilenw = 50;

class breakfree //käytetään ohjelman väkivaltaiseen sammumiseen, main()ssa ohjelma sijaitsee yhden try{}catchin sisällä ja se on ainoa kohta jossa tarkkaillaan tämän luokan heiteltyjä jäseniä
{
public: int lol;
};

SDL_Surface* ANIMAATIO::getFrame(int i, SDL_Surface* animaatio)
{
	/*mitä pitäisi tehdä?
	*Palauttaa kokonaisanimaatiosta, param animaatio, iinnes freimi

	/*miten pitäisi tehdä?
	*lasketaan kokonaisanimaatiosta kohta joka on äxelilla kohdassa i*tilenw, ja yxelillä kohdassa 0, ja kopioidaan siitä uudelle framelle (kokoa tilenw*tilenw) tilenw*tilenw - kokoinen pala
	
	animaation korkeus on aina 50

	/*muuttujat
	animaatio = SDL_Surface, joka sisältää 50*50 kokoisia frameja animaatio->w/50 kappaletta. Ulottuvuuksien 50 jaettavuus tarkistetaan kutsuvassa metodissa
	to_return = sisältää palautettavan framen

	*/

	SDL_Surface* to_return = SDL_CreateRGBSurface(NULL,tilenw,tilenw,0,0,0,0,0);

	SDL_Rect srcrect;
	srcrect.x = i*tilenw;
	srcrect.y = 0;
	srcrect.h = tilenw;
	srcrect.w = tilenw;

	if(animaatio==NULL || to_return==NULL) MessageBox(NULL,L"Nulleja kohdattu",L"NULLLLLL",NULL);

	if(SDL_BlitSurface(animaatio,&srcrect,to_return,NULL)==-1)
	{
		//Jos tänne tullaan, on SDL_BlitSurfacessa tapahtunut jokin virhe, ja tänne tullaan aina jostain syystä. Mikä aiheuttaa virheen?
		MessageBox(NULL,L"Framen leikkaus epäonnistui",L"Ei oo freimeillä helppoo",NULL);
		throw breakfree();
	}
	
	return to_return;
}
Ohjelma huutaa "Framen leikkaus epäonnistui" - virsettä, ja tappaa itsensä aina väkivaltaisesti. SDL_BlitSurface()ssa siis tapahtuu jotain häröä, näkeekö kukaan tuossa mitään huonoja parametreja jotka sotkisivat sen toimintaa vai liekö ongelma jossain syvemmällä projektissa?
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post by JATothrim » Tue Apr 05, 2011 10:09 pm

Feuer wrote:

Code: Select all


const int tilenw = 50;

class breakfree //käytetään ohjelman väkivaltaiseen sammumiseen, main()ssa ohjelma sijaitsee yhden try{}catchin sisällä ja se on ainoa kohta jossa tarkkaillaan tämän luokan heiteltyjä jäseniä
{
public: int lol;
};

SDL_Surface* ANIMAATIO::getFrame(int i, SDL_Surface* animaatio)
{
	/*mitä pitäisi tehdä?
	*Palauttaa kokonaisanimaatiosta, param animaatio, iinnes freimi

	/*miten pitäisi tehdä?
	*lasketaan kokonaisanimaatiosta kohta joka on äxelilla kohdassa i*tilenw, ja yxelillä kohdassa 0, ja kopioidaan siitä uudelle framelle (kokoa tilenw*tilenw) tilenw*tilenw - kokoinen pala
	
	animaation korkeus on aina 50

	/*muuttujat
	animaatio = SDL_Surface, joka sisältää 50*50 kokoisia frameja animaatio->w/50 kappaletta. Ulottuvuuksien 50 jaettavuus tarkistetaan kutsuvassa metodissa
	to_return = sisältää palautettavan framen

	*/

	SDL_Surface* to_return = SDL_CreateRGBSurface(NULL,tilenw,tilenw,0,0,0,0,0);

	SDL_Rect srcrect;
	srcrect.x = i*tilenw;
	srcrect.y = 0;
	srcrect.h = tilenw;
	srcrect.w = tilenw;

	if(animaatio==NULL || to_return==NULL) MessageBox(NULL,L"Nulleja kohdattu",L"NULLLLLL",NULL);

	if(SDL_BlitSurface(animaatio,&srcrect,to_return,NULL)==-1)
	{
		//Jos tänne tullaan, on SDL_BlitSurfacessa tapahtunut jokin virhe, ja tänne tullaan aina jostain syystä. Mikä aiheuttaa virheen?
		MessageBox(NULL,L"Framen leikkaus epäonnistui",L"Ei oo freimeillä helppoo",NULL);
		throw breakfree();
	}
	
	return to_return;
}
Ohjelma huutaa "Framen leikkaus epäonnistui" - virsettä, ja tappaa itsensä aina väkivaltaisesti. SDL_BlitSurface()ssa siis tapahtuu jotain häröä, näkeekö kukaan tuossa mitään huonoja parametreja jotka sotkisivat sen toimintaa vai liekö ongelma jossain syvemmällä projektissa?
Näyttää siltä, että et osaa käyttää "SDL_BlitSurface + throw" -komboa. :lol: Suosittelen käyttämään std::runtime_exceptionia tjsp. ensisijaisena heitettävänä. Jos pakko, erittäin huolella laadittut omat oliot käyvät kyllä myös..
Kait SDL_CreateRGBSurfacen parametrit on oikein? SDL:n pintojen/kuvien tulisi olla samaa tyyppiä (eli yhteensopivia keskenään), kun niitä blittaillaan toisiinsa.
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 » Tue Apr 05, 2011 11:10 pm

JATothrim wrote:Jos pakko, erittäin huolella laadittut omat oliot käyvät kyllä myös..
Tai vaikka long int. Tyypillä ei ole väliä kunhan käsittelet sitä oikein ja kunhan se ei mitenkään aiheuta ongelmia. Esimerkiksi tässä breakfree voisi olla vaikka tyhjä datatyyppi, itse ehkä typedeffaisin sen chariin.

User avatar
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: C++ -kysymykset

Post by Feuer » Tue Apr 12, 2011 7:50 pm

Jos olisi käyttänyt aivoja ja asettanut uuden pinnan värisyvyydeksi nollan sijasta 32, olisi elämä ollut paljon helpompaa :P Kiitän.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 » Wed Apr 13, 2011 7:09 pm

Tälläistä hämärää ilmoittaa debugger:

Code: Select all

Querying dumpers for 'local.this.unloadBuffer'/'local.this.unloadBuffer' (QList<Frame *>)
 Thread is set up for call, 'g' will execute.
 WARNING: This can have serious side-effects,
 including deadlocks and corruption of the debuggee.
 
 System 0: 1 of 2 threads are frozen
 
 System 0: 1 of 2 threads were frozen
 
wUnable to dump 'local.this.unloadBuffer' (QList<Frame *>): ReadVirtual failed: E_UNEXPECTED
 Querying dumpers for 'local.this.reloadBuffer'/'local.this.reloadBuffer' (QList<Frame *>)
wUnable to dump 'local.this.reloadBuffer' (QList<Frame *>): WriteVirtual failed: E_UNEXPECTED
 Querying dumpers for 'local.this.layerList'/'local.this.layerList' (QList<Layer *>)
wUnable to dump 'local.this.layerList' (QList<Layer *>): WriteVirtual failed: E_UNEXPECTED
Tämä tulee, kun QReadWriteLocker koittaa avata itseään. Kaikista oudointa on, kun tämälläinen ilmoitus tulee vain siinä tapauksessa, että tätä kyseistä funktiota kutsutaan luodessa uutta tyhjää kuvaa animaatioon, mutta ei silloin, kun luodaan uutta kuvaa vanhasta.(niillä ei ole oikeastaan mitään eroa. Ainoastaan, se että kopioidessa Animation::addFramen parametrinä annettava, kuva on kopio edellisestä ja luodessa uutta se on tyhjä.) Tai kun luodaan uutta kuvaa vanhasta tulee tälläinen:

Code: Select all

Exception at 0x759bb727, code: 0x406d1388: Startup complete, flags=0x0
Tuo ei kylläkään kaada ohjelmaa.

Kellään ideoita mistä voisi olla kysymys?
EDIT:

Ahaa... Näköjään ohjelman kaatava ongelma ei olekkaan tuossa kohdassa, vaan jossain muualla. Mutta olisi silti kiva tietää mitähän nuo tarkoittavat ja onko niistä syytä huolestua. :D

EDIT:

Edit2: No niin. Löytyihän se ongelma. -> QReadWriteLockin tupla lukitus + avaus ilman, että Recursion mode on "recursive". Lukitsin sen ensiksi, kun tarkistin tarvitaanko uutta piirtoa ja sitten kutsuin toista funktiota, jossa QReadWriteLock myös lukittiin. :roll:


User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 » Fri Apr 15, 2011 8:00 pm

Miten ihmeessä saan QToolbariin menevän QWidgetin muuttamaan kokoa sopivaksi itselleen? Sain sen toimimaan ihan oikein, kun widgetissä oli QPushButtoneja, mutta kun täytyisi saada siihen tyhjä widgetti. QToolbar tuntuu aina kutistavan widgetin aivan liian pieneksi. Widgetissä on sisällä muutama layout, joiden olisi tarkoitus suurentaa widgetiä sisältönsä mukaan, mutta en vain saa widgettiä pysymään riittävän isona. Vinkkejä?

Post Reply