Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Mai 10, 2024 02:17

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: outlined Fonts für glut
BeitragVerfasst: Di Dez 09, 2014 08:50 
Offline
DGL Member

Registriert: Do Nov 20, 2014 03:18
Beiträge: 36
Wohnort: Stuttgart
Programmiersprache: C++ (Java, Ada,...)
Hi
man hat mir hier ja schon relativ oft und sehr geholfen.
Mein Projekt geht nun in die letzte Phase und wir haben nur noch 1 Woche Zeit es fertigzustelen und eine Präsentation auszuarbeiten.
Wir wollten ein Startmenü für unser "Spiel" gestalten, jedoch gibt es im ganzen Netz weit und breit ausschließlich Tutorials zu dropdown- oder popup- Menüs.
Ich dachte Anfangs an umrandete Buchstaben mit Leuchtumrandung oder ähnlichem bei gerade selektiertem Button.
Besser wäre natürlich 3d Schrift beeuchtet.
Da ich jetzt seit 4 Tagen mit Fieber, Bronchitis und einer kleinen Brandverletzung von der zu heissen Wärmflasche im Bett lag und die Zeit langsam wirklich arg knapp wird wollte ich statt selbst etwas zu entwickeln ein gutes Konzept vorher ansehen.

Deshab suche ich nach einer guten Methode ein Menü darzustellen, bzw die zugehörige Schrift zu zeichnen.
Ins Auge sprang mir das OutlineFont-Tutorial von NeHe, falls das hier jemand kennt. Allerdings bekomme ich es nicht zum laufen. Der Code compiliert jedenfalls fehlerfrei durch, es wird aber kein Text gezeichnet; Ursache zunächst unbekannt.
Ich weiss jetzt auch nicht ob ich hier einfach so Code von anderen Seiten posten kann, aber ich denke hier kennen alle NeHes Tutorials?
Grüße, Skel

ps: Habe eben herausgefunden: Es werden zwar 256 Displaylisten für alle Chars angelegt aber es scheint nichts zu zeichnen wenn ich sie aufrufe.
Dann liegt der Fehler wohl in wglUseFontOutlines(), dessen Funktion ich nicht annähernd nchvollziehen kann. Diese scheint die 3d-Fonts ja zu generieren soweit ich das beurteilen kann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: outlined Fonts für glut
BeitragVerfasst: Di Dez 09, 2014 10:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Ja das Ganze ist eine Extension fuer OpenGL unter Windows und generiert dir die Fonts aus einen GDI Font-Objekt.

Code:
  1.  
  2. HFONT wfont = NULL;
  3.     font = glGenLists(256); // load system fonts
  4.     wfont = CreateFont(-12, 0, 0, 0, FW_BOLD, false, false,
  5.                        false, ANSI_CHARSET, OUT_TT_PRECIS,
  6.                        CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY,
  7.                        FF_DONTCARE | DEFAULT_PITCH, "Consolas");
  8.     SelectObject(hDC, wfont);
  9.     wglUseFontOutlines(hDC, 0, 255, font, 0, 0.2f,
  10.                        WGL_FONT_POLYGONS, gmf);
  11.     DeleteObject(wfont);
  12.  


Falls glut Probleme macht bezueglich des Device Context, kannst du ihn dir auch per wglGetCurrentDC besorgen. Aber wie gesagt der Kram funktioniert halt nur unter Windows.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: outlined Fonts für glut
BeitragVerfasst: Di Dez 09, 2014 11:17 
Offline
DGL Member

Registriert: Do Nov 20, 2014 03:18
Beiträge: 36
Wohnort: Stuttgart
Programmiersprache: C++ (Java, Ada,...)
Hab eigentlich alles jetzt ca 25 bis 28 mal geprüft und finde vermutlich den offensichtlichen Fehler nicht.
Ja, ich benutze Windows, C++, glut.
Danke für die Antwort :-)

Okay, Danke, du hattest exakt den gleichen Richer wie ich, aber ich war zu blöde ihn umzusetzen.
Habe einfach in der Init den WindowHandler auf wglGetCurrentDC(); gesetzt.

Hätte ich meinen ersten Beitrag nicht später editiert, wäre da noch meine Vermutung drin gestanden >.<
Allerdings bin ich nach viel Kopfzerbrechen und erfolgreicher Analyse in der Zeile verrutscht und hab dann
hInstance=wglGetCurrentDC() gesetzt anstatt hDC=wglGetCurrentDC().
im Nachhinein stelle ich fest, dass hInstance nur deklariert wird aber im ganzen Code nicht verwendet wird. Dann hatte ich meine Vermutung verworfen ;_;

Hast mit nach vielen Stunden echt schnell geholfen.

Schönen Gruß, Skel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: outlined Fonts für glut
BeitragVerfasst: Di Dez 09, 2014 11:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Unter Windows ist hinstance der Handle fuer das Modul welches dein Fenster erstellt. Den Wert bekommst du als Parameter deiner WinMain bzw. DllMain Methoden. Alternative kannst du auch GetModuleHandle(NULL) benutzen. Aber da kriegst du nur den Handle vom Hauptmodul, also Vorsicht damit.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: outlined Fonts für glut
BeitragVerfasst: Mi Dez 10, 2014 07:05 
Offline
DGL Member

Registriert: Do Nov 20, 2014 03:18
Beiträge: 36
Wohnort: Stuttgart
Programmiersprache: C++ (Java, Ada,...)
yunharla hat geschrieben:
Alternative kannst du auch GetModuleHandle(NULL) benutzen. Aber da kriegst du nur den Handle vom Hauptmodul, also Vorsicht damit.

Ich dachte das hätte ich so auch irgendwo gesehen, vielleicht weshalb ich es erst rein genommen hatte. Finde aber keine einzige Stelle in NeHes Tutorial, wo er den Handle für die beiden Sachen oben auf überhaupt irgendwas setzt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: outlined Fonts für glut
BeitragVerfasst: Mi Dez 10, 2014 09:13 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Nun bei glut und co. wirst du es auch eher selten antreffen. Solche Bibliotheken verstecken den Ganzen OS-spezifischen Kram wunderbar :)

Bei nehe hingegen muesste es im Fenster Tutorial gleich an mehreren Stellen auftauchen. Such einfach mal nach CreateWindow oder WNDCLASS (bzw. die -Ex suffix Versionen). Sieht auf den ersten Blick komplizierter aus als es ist. Zwecks lesbarkeit usw.. Bei mir z.B. ist der Ganze Fenster Kram eine kleine 70 Zeilen (meiste ist Config) Funktion die in etwa wie folgt ausschaut:
Code:
  1.  
  2. int main(int argc,char** argv) { //wird von WinMain aufgerufen
  3.   //WindowClass Gedoens
  4.    do {
  5.         if(memcmp(conf_front,conf_back)) {
  6.               if(conf_front->size != conf_back->size ||
  7.                  conf_front->fullscreen != conf_back->fullscreen) {
  8.                    AdjustRect usw.
  9.                    }
  10.                    ...Restliche Config
  11.                    memcpy(conf_front,conf_back)
  12.               }  
  13.               if(hWnd) {
  14.                    while(PeekMessage) {
  15.                          Translate/Dispatch
  16.                    }
  17.               } else {
  18.                    hWnd = CreateWindowEx
  19.                    StartTasks //GC, OpenGL, Client & Server Threads
  20.               }
  21.    } while(run);
  22.    StopTasks
  23.    CloseWindow....
  24.    //WindowClass Gedoens
  25.    
  26.    return (EXIT_SUCCESS); //eigentlich falsch
  27. }
  28.  
  29.  

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.018s | 17 Queries | GZIP : On ]