Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: SDL:ssä tekstin kirjoittaminen

teksturi [14.07.2007 16:02:29]

#

Eli tekstiä pitäis saada kirjoitettua. Tuo lisäkirjastohan tarvitaan (SDL_ttf.h) ja sen olen saanut toimimaan. Heikin ohjeesta olen tutkaillut ja vähän yrittänyt selvää saada ja kun tuon koodin jo 200 kertaa lukenut läpi niin se VÄHÄN aukeaa. Alustana linux ja siinä käytän emacsia.

Käännettäessä koodia ei tule mitään virheitä, mutta kun yritän käynnistää ohjelmaa ruutu vain vilahtaa. Virheitä tulee kaksi (tutkimista varten tulostelee consoleen virheet). Ensimmäinen joka enimmäkseen ihmetyttää on se kun yritän antaa arvon "messagelle"

message = TTF_RenderText_Solid( font, "Hello world.", textColor );

sen jälkeen on varmistaja, että kaikki on kunnossa

if( message == NULL )
	{
	  cout << "messagen:n alustus ei onnistunut: " <<  TTF_GetError() << endl; // Tämä siis toteutuu
	  pois=true;
	}

toinen virhe tulee kun kutsun funkiota

PiirraKuva(message, naytto, 200, 200);

Ja funktio on

void PiirraKuva(SDL_Surface *kuva, SDL_Surface *naytto, int x, int y)
  {
    if ( kuva == NULL )
      {
	cout << "kuvan alustus ei onnistunut: " <<  SDL_GetError() << endl; // tämäkin toteutuu
	return;
      }

  // mihin näytöllä
  SDL_Rect alue;
  alue.x = x;
  alue.y = y;

  // näytölle
  // koska toinen parametri on NULL, piirretään koko kuva
  SDL_BlitSurface(kuva, NULL, naytto, &alue);
}

Ensiksi haluaisin tietää tuohon ensimmäiseen virheeseen syyn. Miten heti alustamisen jälkeen voi olla mahdollista, että se on silti NULL? Noiden välissä ei ole mitään joten en ole muuttanutkaan sitä NULL:ksi.

jcd3nton [14.07.2007 16:31:58]

#

Tuo funktio palauttaa NULLin, jos syntyy virhe (http://jcatki.no-ip.org/SDL_ttf/SDL_ttf.html#SEC36). Selvita miksi tuo antaa virheen (eiko GetError kerro mitaan?). Jos et itse saa selvitettya niin vilauttele sita koodia vahasen...

teksturi [14.07.2007 16:41:59]

#

Ratkaisu löyty linuxissa ei toimi

message = TTF_RenderText_Solid( font, "Hello world.", textColor );

Linuxissa pitää käyttää

message = TTF_RenderText_Shaded( font, "Hello world.", textColor, textBackColor );

Kiitos jo kaikille lukeneille :)

jcd3nton [14.07.2007 18:31:41]

#

Mina kylla joskus kaytin ihan tuota solidia. Linuxissa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta