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

Aktuelle Zeit: Fr Jul 18, 2025 14:16

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



Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Problem bei Schriftanzeige
BeitragVerfasst: Do Nov 10, 2005 17:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
So momentan häufen sich irgendwie die Probleme :(

Ich habe versucht Schrift zu implementieren, und zwar so wies im Wiki steht.
Mein Problem ist, dass wglUseFontBitmaps mir dauernd einen Fehler zurück bringt(INVALID HANDLE). Woran kann das liegen? Es ist derselbe DC, den ich auch zum Initialisieren von OpenGL benutze, da funzt alles
Code:
  1.  
  2. //
  3. procedure createOGLFont(dc : HDC);
  4. var    oldFont : HGDIOBJ;
  5. begin
  6.    fontListBase:= glGenLists(256);
  7.    oldFont:= SelectObject(dc,GetStockObject(SYSTEM_FONT));
  8.    //
  9.    wglUseFontBitmaps(dc,0,255,fontListBase); //invalides Handle momentan
  10.    SelectObject(dc,oldFont);
  11. end;
  12.  


Der Aufruf erfolg in der OnShow mit dem DC von meinem Panel, welchen ich mit GetDC geholt habe.[/quote]

Die Deklaration von fontListBase steht woanders, ist aber vorhanden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 13, 2005 16:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
echt keiner ne Idee? :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 13, 2005 17:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Hmm. Tu mal den Code nicht in OnShow aufrufen, sondern nach dem du den DC holst. Weil OnShow wird schon sehr früh aufgerufen, evtl wurde da der DC noch gar ned per GetDC geholt. Also setz den Aufruf von GetOGLFont direkt hinter GetDC.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 14, 2005 17:44 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
doch der DC ist da, weil mit demselben DC initalisier ich auch OpenGL da funzt alles
ich versteh das echt nicht, woran kann denn das liegen. Ich verzweifel langsam.
Das ist meine FormShow

Code:
  1.  
  2. procedure TDXF_Viewer.FormShow(Sender: TObject);
  3. begin
  4.     dcpanel:=GetDC(drawpanel.handle);
  5.  
  6.     if (not setPixelFormat(dcpanel)) or (not setRenderingContext(dcpanel)) then
  7.       begin
  8.           MessageDlg('OpenGL konnte nicht initialisiert werden', mtError, [mbOk], 0);
  9.           halt;
  10.       end;
  11.     //Antialiasing
  12.     glEnable(GL_LINE_SMOOTH);
  13.     glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
  14.  
  15.     //weitere OGL-Einstellungen
  16.     oglStatus.bBlend:= true;
  17.     setBlendEffect;
  18.     oglStatus.bLighting:= true;
  19.     setLighting;
  20.  
  21.     createOGLFont(dcpanel);
  22. end;


drawPanel ist eine eigene Komponente, welche von TPanel abgeleitet ist. Und anzeigen tut er ja meine Sachen, aber die Schrift kommt halt nicht :cry: :cry: :cry:


ach ja und in der OnActivate dasselbe Spiel.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 14, 2005 18:34 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Wozu ist das double-Buffered im Pixelformat gut, weil kann sein das es daran liegt.
PLZ help


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 14, 2005 18:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Probier mal folgenden Code aus, den verwende ich:
Code:
  1.  base: GLuint;
  2.  
  3.  gmf: Array[0..255] of GLYPHMETRICSFLOAT;
  4.  
  5. ...
  6.  
  7. procedure BuildFont(height: Integer; width: Integer; depth: GLfloat; thickness: Integer; italic: Cardinal; Typ: PAnsiChar; DC: HDC);
  8.  var
  9.   font: HFONT;
  10. begin
  11.  base:= glGenLists(256);
  12.  
  13.  font:= CreateFont(height,
  14.                    width,
  15.                    0,
  16.                    0,
  17.                    thickness,
  18.                    italic,
  19.                    0,
  20.                    0,
  21.                    ANSI_CHARSET,
  22.                    OUT_TT_PRECIS,
  23.                    CLIP_DEFAULT_PRECIS,
  24.                    ANTIALIASED_QUALITY,
  25.                    FF_DONTCARE or DEFAULT_PITCH,
  26.                    Typ
  27.                   );
  28.  SelectObject(DC, font);
  29.  wglUseFontOutlines(DC, 0, 255, base, 0, depth, WGL_FONT_POLYGONS, @gmf);  
  30. end;

Code:
  1. procedure Print3DText(text: String; center: Boolean);
  2.  var
  3.   laenge: Single;
  4.   loop: Integer;
  5. begin
  6.  laenge:= 0;
  7.  
  8.  if center = true then
  9.  begin
  10.   for loop:= 0 to (length(text)-1) do
  11.    laenge:= laenge + gmf[loop].gmfCellIncX;
  12.   glTranslatef(-laenge/2, 0, 0);
  13.  end;
  14.  
  15.  glPushAttrib(GL_POLYGON_BIT);
  16.   glListBase(base);
  17.  
  18.   glCallLists(length(text), GL_UNSIGNED_BYTE, PChar(text));
  19.  glPopAttrib;
  20. end;

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 14, 2005 18:44 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
wie sieht dein Pixelformat dazu aus?

Delphi-Hilfe hat geschrieben:
In the current version of Microsoft's implementation of OpenGL in Windows NT and Windows 95, you cannot make GDI calls to a device context that has a double-buffered pixel format. Therefore, you cannot use the GDI fonts and text functions with such device contexts. You can use the wglUseFontBitmaps function to circumvent this limitation and draw text in a double-buffered device context.


Kann es darab liegen? Und falls ja wie krieg ich das weg?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 14, 2005 18:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Also bei mir ists auch doppelt gepuffert. Welchen OpenGl-Header benutzt du denn?

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 14, 2005 18:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
den von Delphi-2005

ich hab jetzt von einer anderen Seite auch ein Tut zu Schrift. Dieses ist mit der WinAPI gemacht, dort zeigt er die Schrift an. Ich hab echt keine Ahnung mehr was das sein soll


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 14, 2005 18:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
(OMG Jungs, schnell her! Da benutzt jemand die Original-OpenGL-Unit von Delphi! :D )

Ne im Ernst, diese Unit ist total verbuggt und outdated. Benutz lieber unseren hausinternen DGLOpenGL-Header! Versuchs damit mal und melde dich dann wieder.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 14, 2005 18:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Kannst du mir mit wglUseBitmapFonts evtl. mal ein Minibeispiel schicken, was ich dann durchgehen kann? pellaeon@everymail.net das wäre super


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 14, 2005 19:43 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
schau mal hier auf der seite in den templates, da müssten die iirc benutzt werden.

Ach ja und wie La Boda schon gesagt hat. Benutz niemals niemals nie den Opengl Header von Borland. Der ist echt nur Müll


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 14, 2005 19:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
hm ok den header werd ich auswechseln, aber das Problem liegt net am HEader denke ich, so ein Tut was ich woanders her hab lief ja, werd jetzt mal die Templates durchforsten


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 14, 2005 20:00 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
ok danke an alle, ich hab mir das Template genommen und verglichen, ich habe schon OPenGL-sachen gesetzt, bevor ich die Schrift geladen habe, Und irgendwas davon hat den Fehler verursacht THX fürs helfen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 15, 2005 17:02 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Und wechsle die Header aus....! ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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.009s | 16 Queries | GZIP : On ]