Jump to content

  • Log In with Google      Sign In   
  • Create Account


FONT - lisson 13 with code


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
1 reply to this topic

#1 skizomik   Members   -  Reputation: 100

Like
0Likes
Like

Posted 23 October 2011 - 04:51 AM

Hello, i have a problem in my code, i show you a little part :
I'm using code block, and i really don't know what is wrong. Arial.ttf is with the .exe and the sources..

#include <windows.h>
#include <SDL/SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <SDL/SDL_ttf.h>

GLuint Nom ;
GLuint	base;				// Base Display List For The Font Set
HDC			hDC=NULL;		// Private GDI Device Context
GLfloat	cnt1;				// 1st Counter Used To Move Text & For Coloring
GLfloat	cnt2;				// 2nd Counter Used To Move Text & For Coloring


void KillFont()	{
	glDeleteLists(base, 96);							// Delete All 96 Characters
}

void BuildFont(){
	HFONT font;	// Windows Font ID
	HFONT oldfont; // Used For Good House Keeping
	base= glGenLists(96); // Storage For 96 Characters

	font= CreateFont(-24,0,0,0,FW_BOLD,FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,
                 	ANTIALIASED_QUALITY,FF_DONTCARE|DEFAULT_PITCH,"arial");

	oldfont = (HFONT)SelectObject(hDC, font);       	// Selects The Font We Want
	wglUseFontBitmaps(hDC, 32, 96, base);				// Builds 96 Characters Starting At Character 32
	SelectObject(hDC, oldfont);							// Selects The Font We Want
	DeleteObject(font);									// Delete The Font
}

void glPrint(const char *fmt, ...){
	char text[256];								// Holds Our String
	va_list	ap;										// Pointer To List Of Arguments

	if (fmt == NULL)									// If There's No Text
		return;											// Do Nothing

	va_start(ap, fmt);									// Parses The String For Variables
		vsprintf(text, fmt, ap);						// And Converts Symbols To Actual Numbers
	va_end(ap);											// Results Are Stored In Text

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

int initialisation(){

glViewport(0,0,640,480);						// Reset The Current Viewport

	glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix
	glLoadIdentity();									// Reset The Projection Matrix

	 gluPerspective(80,640/480,0.0001f,100.0f);

	glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix
	glLoadIdentity();

	 glShadeModel(GL_SMOOTH);            	// Enable Smooth Shading
	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);       	// Black Background
	glClearDepth(1.0f);             	// Depth Buffer Setup
	glEnable(GL_DEPTH_TEST);            	// Enables Depth Testing
	glDepthFunc(GL_LEQUAL);             	// The Type Of Depth Testing To Do
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);  // Really Nice Perspective Calculations
	
	BuildFont();
	return 0;
}




int DrawGLScene(){printf("draw\n");
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	// Clear Screen And Depth Buffer
	glLoadIdentity();									// Reset The Current Modelview Matrix
	glTranslatef(0.0f,0.0f,-1.0f);						// Move One Unit Into The Screen
	// Pulsing Colors Based On Text Position
	glColor3f(1.0f,1.0f,1.0f);
	// Position The Text On The Screen
	glRasterPos2f(-0.45f+0.05f*(float)(cos(cnt1)), 0.32f*(float)(sin(cnt2)));
 	glPrint("Active OpenGL Text With NeHe - %7.2f", cnt1);	// Print GL Text To The Screen
	cnt1+=0.051f;										// Increase The First Counter
	cnt2+=0.005f;										// Increase The First Counter
	return TRUE;										// Everything Went OK
}


/// ********************************************************************************************MAIN
int main(int argc, char *argv[]){

	SDL_Init(SDL_INIT_VIDEO);
	SDL_WM_SetCaption("Gestion des palettes",NULL);
	/*ecran =*/  SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);
	SDL_EnableKeyRepeat(10,10);

	bool continuer = true;
	SDL_Event event;
	initialisation();
	while (continuer){

    	//Draw_3D();
    	//Draw_2D();
    	DrawGLScene();
    	SDL_WaitEvent(&event);
    	switch(event.type){
        	case SDL_QUIT:
            	break;
        	case SDL_KEYUP:
            	switch (event.key.keysym.sym){
                	case SDLK_ESCAPE:
                    	letsexit = 1; printf("évènement SDL: QUITTER\n"); exit(0);
                    	break;
                	case SDLK_1:
                    	caisse1 = 1;
                    	//create_palette(1);
                    	printf("évènement SDL: ajouter une caisse en 1 \n");
                    	break;
                	case SDLK_2:
                    	caisse2 = 1;
                    	//create_palette(2);
                    	printf("évènement SDL: ajouter une caisse en 2 \n");
                    	break;
                	case SDLK_3:
                    	caisse3 = 1;
                    	//create_palette(3);
                    	printf("évènement SDL: ajouter une caisse en 3\n");
                    	break;
                	case SDLK_r: printf("reset\n");
                    	reset = 1;
                    	break;
                	default:
                    	break;
        	}
    	}


    	SDL_GL_SwapBuffers();
	}

	//TTF_CloseFont(police);
	TTF_Quit();
	SDL_Quit(); /// arrêt de la SDL
	return 0;
}


Sponsor:

#2 ifthen   Members   -  Reputation: 820

Like
0Likes
Like

Posted 23 October 2011 - 05:57 AM

What is the problem? We really cannot help you without a detailed description of it.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS