All pastes #335424 Raw Edit

Untitled

public text v1 · immutable
·published 2007-02-01 09:43 UTC
rendered paste body
	std::cout << "Starting Font Engine.. ";
	if(TTF_Init() != -1)
	{
		std::cout << "OK.\n";
		std::cout << "Loading Font.. ";
		this->TextFont = TTF_OpenFont("../font/VeraMono.ttf", 10);
		if(this->TextFont)
		{
			std::cout << "OK.\n";
		}
		else
		{
			std::cout << "FAILED.\n";
			std::cerr << "SDL_TTF error message: " << TTF_GetError() << "\n";
		}
	}
	else
	{
		std::cout << "FAILED.\n";
		std::cerr << "SDL_TTF error message: " << TTF_GetError() << "\n";
	}


bool cVideoEngine::DrawText(int X, int Y, const char* Text, int Red, int Green, int Blue)
{
	std::cout << "Printing Text(" << Text << ").. ";

	SDL_Color TextColor = {Red, Green, Blue};
	SDL_Surface* TextSurface;
	TextSurface = TTF_RenderText_Shaded(this->TextFont, gettext(Text), TextColor, TextColor);
	if(TextSurface)
	{
		std::cout << "OK.\n";
	}
	else
	{
		std::cout << "FAILED.\n";
		std::cerr << "SDL_TTF error message: " << TTF_GetError() << "\n";
	}

	int TextSurfaceWidth = 1;
	int TextSurfaceHeight = 1;
	while(TextSurfaceWidth <= TextSurface->w) { TextSurfaceWidth *= 2; }
	while(TextSurfaceHeight <= TextSurface->h) { TextSurfaceHeight *= 2; }

	TextSurface = SDL_CreateRGBSurfaceFrom(TextSurface->pixels, TextSurfaceWidth, TextSurfaceHeight, 32, 0, 0, 0, 0, 0);

	std::cout << "Size1: " << TextSurface->w << ", " << TextSurface->h << "\n";
	std::cout << "Size2: " << TextSurfaceWidth << ", " << TextSurfaceHeight << "\n";
	GLuint TextTexture;
	glGenTextures(1, &TextTexture);
	glBindTexture(GL_TEXTURE_2D, TextTexture);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TextSurfaceWidth, TextSurfaceHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, TextSurface->pixels);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

	glLoadIdentity();
	glTranslatef(X, Y, 0);
	glBindTexture(GL_TEXTURE_2D, TextTexture);
	glBegin(GL_QUADS);
		glTexCoord2f(0, 0);
		glVertex2i(0, 0);

		glTexCoord2f(0, (TextSurface->h / TextSurfaceHeight));
		glVertex2i(0, TextSurface->h);

		glTexCoord2f((TextSurface->w / TextSurfaceWidth), (TextSurface->h / TextSurfaceHeight));
		glVertex2i(TextSurface->w, TextSurface->h);

		glTexCoord2f((TextSurface->w / TextSurfaceWidth), 0);
		glVertex2i(TextSurface->w, 0);
	glEnd();
	glLoadIdentity();

	// Properly free the text surface.
	SDL_FreeSurface(TextSurface);
}