Einzelnen Beitrag anzeigen

fui-tak

Registriert seit: 24. Okt 2008
117 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: OpenGL - Text ausgeben mit TextSuite klappt nicht

  Alt 6. Aug 2010, 20:22
hi, ich habe jetzt die Lösung von blackfin ausprobiert aber leider immer noch keinen Erfolg....

hier nochmal etwas mehr Code von mir:


Erzeugen:
Delphi-Quellcode:
function TKKOpenGL.init(pHandleUntergrund:THandle;pbreite,phoehe:integer):boolean;
begin
  Result := InitOpenGL;

  if not Result then
     exit;


  setLength(texturen,1);

  fensterBreite := pbreite;
  fensterHoehe := phoehe;
  aktuellesBild := -1;
  zoomFaktorX := 1;
  zoomFaktorY := 1;
  aktRotationsWinkel := 0;

  HandleUntergrund := pHandleUntergrund;
  DC:= GetDC(HandleUntergrund);

  RC:= CreateRenderingContext( DC,
                               [opDoubleBuffered],
                               32,
                               24,
                               0,0,0,
                               0);
  ActivateRenderingContext(DC, RC);

  

  glClearColor(0.3, 0.4, 0.7, 0.0); //Hintergrundfarbe: Hier ein leichtes Blau
  //glClearColor(0, 0, 0, 0.0); //Schwarz
  glEnable(GL_DEPTH_TEST); //Tiefentest aktivieren
  glDepthFunc(GL_LESS);//Neue Fragmente bestehen den Vergleich, wenn sie einen geringeren Tiefenwert haben.
  glEnable(GL_CULL_FACE); //Backface Culling aktivieren - Rückseiten werden nicht gerendert
  glCullFace(GL_BACK);

  glEnable(GL_ALPHA_TEST); //Transparenz
  glAlphaFunc(GL_GREATER, 0.1);//alles mit einem größeren Alphawert als 0.1 wird gerendert

  glEnable(GL_TEXTURE_2D); //Texturen zeichnen einschalten;


  textVorbereiten;
end;



procedure TKKOpenGL.textVorbereiten;
begin}
CharLists := glGenLists(96);

// Schrift erzeugen
MyFont := CreateFont(-12, // Höhe der Schrift (12 Punkt)
                     0, // Keine durchschnittliche Breite, brauchen wir hier nicht
                     0, // Escapement, brauchen wir hier nicht
                     0, // Orientation brauchen wir hier nicht
                     FW_NORMAL, // Schrift-Dicke (normal, bold, bla...)
                     0, // Kursiv? 0=nein, 1=ja
                     0, // Unterstrichen? 0=nein, 1=ja
                     0, // Durchgestrichen? 0=nein, 1=ja
                     ANSI_CHARSET, // Character Set
                     OUT_TT_PRECIS, // Standard-Präzision
                     CLIP_DEFAULT_PRECIS, // Standard-Clip-Präzision
                     ANTIALIASED_QUALITY, // Render-Qualität => Antialiased
                     FF_DONTCARE or DEFAULT_PITCH, // Pitch und Schrift-Familie (Standard)
                     'Verdana'                           // Name der Schrift(-datei)
);

SelectObject(ContextID,MyFont);

wglUseFontBitmaps(ContextID,32,96,CharLists);
end;


Renderprozedur:
Delphi-Quellcode:
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
 
  glOrtho(0,fensterBreite,0,fensterHoehe,NearClipping,FarClipping);//2D erstellen, http://wiki.delphigl.com/index.php/Tutorial_2D

  glMatrixMode(GL_MODELVIEW);

  glLoadIdentity;

  
  //hier male ich verschiedene Texturen, habe ich aber zu Testzwecken aus meinem Programm zurzeit entfernt

  
  //Text schreiben
  text := 'Hallo Welt';
  
  glTranslatef(0,0,-10);

  glColor3f(255,255,255);

  glRasterPos2f(0,0);

  glPushAttrib(GL_LIST_BIT);

  glListBase(CharLists - 32);

  glCallLists(Length(text),GL_UNSIGNED_BYTE,Pchar(text));

  glPopAttrib;


  SwapBuffers(DC);
Ich bekomme keine Fehlermeldungen, es wird einfach nicht angezeigt. Ich sehe nur den blauen Hintergrund von glClear

Hat jemand eine Idee?

Geändert von fui-tak ( 6. Aug 2010 um 20:25 Uhr)
  Mit Zitat antworten Zitat