• Content count

  • Joined

  • Last visited

Community Reputation

100 Neutral

About skizomik

  • Rank
  1. FONT - lisson 13 with code

    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.. [code] #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; } [/code]