Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
03.10.2003, 11:05
Tomz



ich habe ein kleines problem. ich arbeite an einem projekt für die schule mit SDL. eigentlich verstehe ich genug, um das meiste zu implementieren.
aber weiss irgendjemand, wie man ttf schriften für SDL benutzen kann? oder allgemein Schriften?
ich habe bis jetzt imnmer lange bitmaps erstellt, dann die abstände gesucht und musste dann selber eine printtext funktion machen, aber es sollte doch auch mit weniger aufwand gehen.

also weiss irgendjemand, wie man textausgabe mit schriften in SDL machen kann (ohne openGL). ich wäre auch froh über links oder tuts wo ich es nachlesen könnte, aber mit google hatte ich bis jetzt nicht so glücke.

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...

zum Seitenanfang zum Seitenende Profil || Suche
001
05.10.2003, 11:38
blair



ich habs bis jetzt auch immer wie du gemacht, aber da ich gerade an nem remake von crystal sitze hab ich mich auch mal umgeschaut, und hab folgendes gefunden:

SDL_ttf
doc: http://jcatki.no-ip.org/SDL_ttf/SDL_ttf.html
src: http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.6.tar.gz

außerdem brauchst du freetype2 aber das hast du schon/findest du selbst...
wenn du irgendwelche erfahrungen damit bezüglich printing in ogl machst, sei so frei und stell sie hier rein, denn damit muss ich mich in näherer zukubft dann auch rumschlagen.

--

because our freedom sits at the end of a gun
we're all here getting beat up and held back
we're all here digging knives from our backs

zum Seitenanfang zum Seitenende Profil || Suche
002
06.10.2003, 19:16
Tomz



danke für die links... kenne freetype zwar nicht, aber ma kukn...
ich arbeit der einfachheits halber ohne opengl, da ich noch nicht ganz gut im umgang damit bin und nicht mein schulprojekt deswegen versauen will...

aber ich schreibe mal falls ich was rausfinde

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...

zum Seitenanfang zum Seitenende Profil || Suche
003
07.10.2003, 17:36
[RMen]OneStone



Habe mal vor längerem was mit OpenGL bezüglich Printing gemacht, bitte mecker nicht über Stil oso blair.

Quellcode:inline void GFX_PlainPrint(unsigned short usX, unsigned short usY, color_rgba_t * pColor, const char * szBuffer)
{
  if(pColor)
  {
    glPushAttrib(GL_CURRENT_BIT);

    if(!GFX_SetColor(pColor))
      return;
  }  

  glMatrixMode(GL_MODELVIEW);
  glPushMatrix();

  glMatrixMode(GL_PROJECTION);
  glPushMatrix();  
    glLoadIdentity();
    glOrtho(0, g_usScreenWidth, g_usScreenHeight, 0, -1, 1);

    glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
      glRasterPos2i(usX, usY);

      glListBase(0xFF);
      glCallLists(strlen(szBuffer), GL_UNSIGNED_BYTE, szBuffer);

    glMatrixMode(GL_PROJECTION);
  glPopMatrix();

  glMatrixMode(GL_MODELVIEW);
  glPopMatrix();

  if(pColor)
    glPopAttrib();
}

bool __stdcall GFX_Print(short sX, short sY, color_rgba_t * pColor, const char * szBuffer, ...)
{
  unsigned char usAdd = 0;  
  char szMyBuffer[2048];
  char * szTokened = szMyBuffer;
  va_list vlArguments;
  unsigned long dwFound, dwEnd;

  if(!szBuffer)
    return false;

  if(sX < 0)
    sX = g_usScreenWidth + sX;

  if(sY < 0)
    sY = g_usScreenHeight + sY;

  sY += 10;

  va_start(vlArguments, szBuffer);
  _vsnprintf(szMyBuffer, 2048, szBuffer, vlArguments);
  va_end(vlArguments);

  dwEnd = (unsigned long) szMyBuffer + strlen(szMyBuffer);
  
  if((dwFound = (unsigned long) strchr(szTokened, '\n')))
    * ((char *) dwFound) = 0;

  while(dwEnd > (unsigned long) szTokened)
  {
    GFX_PlainPrint(sX, sY + usAdd, pColor, szTokened);

    usAdd += 15;
    szTokened += strlen(szTokened) + 1;

    if((dwFound = (unsigned long) strchr(szTokened, '\n')))
      * ((char *) dwFound) = 0;
  }

  return true;
}
Setzt vorraus, dass du dir vorher die Schriften in eine Liste ab 0xFF gebastelt hast, z.B. so (aus meiner GFX_InitWindow):

Quellcode:{ // build our font
    HFONT hFont = CreateFont(16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Tahoma");

    SelectObject(g_hDeviceContext, hFont);

    if(!wglUseFontBitmaps(g_hDeviceContext, 0x00, 0xFF, 0xFF))
      return false;
  }
Das sollte eigentlich gehen.

edit: Das Font-Liste bauen ist natürlich Windows-Spezifisch. Und bau gefälligst ein Kommentar mit persönlicher Widmung an mich ein! ;P

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/


Dieser Beitrag wurde am 07.10.2003 um 17:39 von [RMen]OneStone bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche