Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: OpenGL fontin koko

Sivun loppuun

rndprogy [16.08.2004 19:43:01]

#

Tässä hiukan tuohon fonttiin liittyvää koodia:

GLvoid glBuildFont(GLvoid)
{
	GLYPHMETRICSFLOAT    gmf[256];
	HFONT font;

	base = glGenLists(256);
	font = CreateFont(
		0,   //Height Of Font
		0,     //width Of Font
		0,     // Angle Of Escapement
		0,     // Orientation Angle
		FW_BOLD,     //Font weight
		FALSE,       //Kursvointi
		FALSE,       //Alleviivattu
		FALSE,      //Strikeout

		ANSI_CHARSET,

		OUT_TT_PRECIS,
		CLIP_DEFAULT_PRECIS,
		ANTIALIASED_QUALITY,
		FF_DONTCARE|DEFAULT_PITCH,
		"Comic Sans MS");
	SelectObject(hDC,font);

	wglUseFontOutlines( hDC,
		0,   //Aloitus merkki tai joku
		255,  //Kuinka monta display lists tehdään
        base, //Ja sen aloitus
		0.1f,
		0.2f,
		WGL_FONT_POLYGONS,
		gmf);
}
GLvoid KillFont(GLvoid)
{
  glDeleteLists(base, 256);
}

GLvoid glPrint(char *text)								// Custom GL "Print" Routine
{
  if (text == NULL)										// If There's No Text
    return;												// Do Nothing

  glPushAttrib(GL_LIST_BIT);							// Pushes The Display List Bits
    glListBase(base);									// Sets The Base Character to 32
    glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);	// Draws The Display List Text
  glPopAttrib();										// Pops The Display List Bits
}

En ole tajunnut miten fontin koko pienennetään yritin muuttaa noita lukuja mutta onnistuin muttamaan kuin paksuutta. Voisinhan tietysti laittaa sitä lähemmäs ja kauemmas mutta se nyt vaan ei käy...

Deewiant [16.08.2004 20:00:16]

#

rndprogy kirjoitti:

Voisinhan tietysti laittaa sitä lähemmäs ja kauemmas mutta se nyt vaan ei käy...

Miksei? Jos kerran olet kaikkia lukuja muuttanut etkä ole löytänyt mitään funktiota, jolla se hoidetaan, mikä on tuossa tavassa vikana?

rndprogy [16.08.2004 20:12:30]

#

No sitten pitäisi alkaa säätämään taustan kanssa, koska minulla on taustajoka tulee vastaan. Pitää alkaa säätämään tekstuurien ja polygonien kanssa. Eli tausta kauemmas tekstuuri lähemmäs, suurentaa sitä että peittää taas koko taustan etc. Aika monta hommaa pitäisi tehdä uusiksi.

firebug [16.08.2004 22:18:27]

#

font = CreateFont(
    0,   //Height Of Font
    0,     //width Of Font

Tämäpä outoa. Nehen mukaan noita lukuja muuttamalla fontin koon pitäisi muuttua, mutta kun kokeilin, niin se ei muuttunut. En keksinyt pikaisesti muuta tapaa kuin skaalata fonttia glScalef:llä sopivilla arvoilla.
Katso tämä: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=14

rndprogy [16.08.2004 23:33:31]

#

Miten tuota glScalefia käytetään. Voin yrittää sillä. Yritin kyllä mutten saanut oikein mitään aikaan.

firebug [16.08.2004 23:50:39]

#

glScalef muuttaa x-, y- ja z-koordinaatiston suhteita, ja näin ollen myös objektin kokoa. Tässä muutamia esimerkkejä:

glScalef(1.f, 1.f, 1.f); // Koko ei muutu, akselien koot normaalissa suhteessa
glScalef(3.f, 1.f, 1.f); // X-akseli venyy 3-kertaiseksi
glScalef(0.5f, 0.5f, 0.5f) // Kutistetaan puoleen
glScalef(-1.f, 1.f, 0.5f); // Peilataan x-akselin suhteen ja kutistetaan z-akselia

Ja niin edespäin. Googlesta löytyy lisäinfoa.

tn [19.08.2004 19:57:00]

#

rndprogy kirjoitti:

No sitten pitäisi alkaa säätämään taustan kanssa, koska minulla on taustajoka tulee vastaan.

Entäs jos piirrät ensin taustan ja sitten tekstin siihen päälle ilman syvyyspuskurointia.

rndprogy [19.08.2004 20:36:46]

#

Jep siis se toimisi niin että en laittanut taustalle ollenkaan syvyyspuskuroinita.


Sivun alkuun

Vastaus

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

Tietoa sivustosta