BitmapFont in SDL_openGL wird nicht angezeigt
lima-city → Forum → Programmiersprachen → C/C++ und D
anzeigen
base
break
code
fehler
fenster
funktion
header
helfen
null
problem
programm
schwarzes fenster
switch
test
text
type
versuchen
-
Hallo,
ich versuche verzweifelt in einem SDL_openGL Fenster einen Text anzuzeigen , aber mein Programm will den Text nicht anzeigen (nur Schwarzes Fenster).
Ich habe bereits versucht, das Problem einzugrenzen. Ich habe Festgestellt, dass die Funktion wglUseFontBitmaps false zurückgibt.
Ich weis aber nicht, woran das liegt.
Kurze Erklärung zum code:
die Klasse Frame erzeugt ein SDL-Fenster mit SDL_OPENGL
der namespace gehört auch zu diesem Header
#include <SDL/SDL.h> #include <SDL/SDL_opengl.h> #include "Frame.h" #include <cmath> #include <stdarg.h> #include <iostream> using namespace std; using namespace FV_std; unsigned int base; HGLRC hRC = NULL; HWND hWnd = NULL; HINSTANCE hInstance; bool pollEvent() { SDL_Event event; while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: return false; break; default: break; } } return true; } void BuildFont() { HDC hDC = NULL; HFONT font; HFONT oldfont; base = glGenLists(96); 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, "Courier New"); oldfont = (HFONT)SelectObject(hDC, font); if(wglUseFontBitmaps(hDC, 32, 96, base)==false) { MessageBox(NULL,"Fehler","Fehler bei wglUseFontBitmaps",MB_OK|MB_ICONWARNING); } SelectObject(hDC, oldfont); DeleteObject(font); } void glPrint(const char *fmt, ...) { char text[256]; va_list ap; if(fmt == NULL) return; va_start(ap,fmt); vsprintf(text, fmt, ap); va_end(ap); glPushAttrib(GL_LIST_BIT); glListBase(base - 32); glCallLists(strlen(text), GL_UNSIGNED_SHORT, text); glPopAttrib(); } void killFont() { glDeleteLists(base,96); } int main(int argv, char **argc) { Frame wnd("Test", 500, 500); wnd.create(); BuildFont(); glFrustum(-.03, .03, -.03, .03, .1, .2); glOrtho(-2, 2, 2, -2, 0, -5); glClearColor(1, 1, 1, 0); glLoadIdentity(); glTranslated(0,0,-1); while(pollEvent()) { glPrint("HALLO"); SDL_GL_SwapBuffers(); } killFont(); SDL_Quit(); exit(0); }
Es wäre nett, wenn ihr mir helfen könnt. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage