fehlersuche in meinem code ... help!



  • nabend
    ich such zwar schon die ganze zeit aber ich find den fehler nich; kann auch sein dass ich das prinzip des programmierens mit OpenGl noch nich ganz durchblickt habe, fange erst an. ich hab diesen code:

    void text()      // Darstellung des Textes
    {
      glColor3f(0.0f,0.5f,1.0f);
      glTranslatef(-2.0f,2.0f,-4.0f);    
      glPrint("Mein Text, abgeleitet von Nehe");
      glLoadIdentity();
    }
    
    int DrawGLScene(GLvoid)                         
    {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);   // Clear Screen And Depth Buffer
    
      gluLookAt(0.0f,2.0f,9.0f, 0.0f,0.0f,0.0f, 0.0f,8.0f,9.0f);   // Die Kamera
    
      // Der Raum:                                                   
      glRotatef(raumrotation,0.0f,0.3f,0.0f);
      glBegin(GL_QUADS); // Ein Rechteck soll gezeichnet werden
    
      glColor3f(0.5f,0.5f,0.2f); 
      glVertex3f(0.0f, 0.0f, 5.0f);  
      glVertex3f(0.0f, 0.0f, 0.0f); 
      glVertex3f(5.0f, 0.0f, 0.0f); 
      glVertex3f(5.0f, 0.0f, 5.0f);
    
      // - hier sind noch weitere sachen -
    
      glEnd(); // Zeichenaktion beenden
    
      glLoadIdentity();                                 // Reset The Current Modelview Matrix
    
      raumrotation=(raumrotation-0.1);
    
      text();
      return TRUE;                              
    }
    

    ich weiss nich wo ich das "text();" hinsetzen soll, irgendwie is es immer falsch: mal fehlt der text einfach, mal seh ich nur n schwarzes bild, mal nur den text und nich die "körper" ... 😕 😕 😕



  • Das Problem ist einfach, dass Du die Rotation/Translation nicht ganz berücktsichtigst.
    Wenn Du die Objekte positionierst und dann die Kamera bewegst(macht opengl immer bei Rotationen, etc. ist schneller, als jeden vertex zu bewegen), dann ist afaik das, was die Kamera sieht für oGL der Koordinatenursprung. (in Deinem Falle das, das unter gluLookAt() angegeben wurde.
    Man muss da etwas vorsichtig sein, ansonsten schaut man ins leere 🙂

    cYa
    DjR



  • Original erstellt von SirNoname:
    kann auch sein dass ich das prinzip des programmierens mit OpenGl noch nich ganz durchblickt habe

    So siehst für mich aus. Versuch erstmal zu verstehen wie es funktioniert, bevor du anfängst, Code zusammenzukopieren.



  • @TGGC: dein statement hat niemandem geholfen ... schon mal was von "learning-by-doing" gehört? befass dich mal damit.

    @ DocJunioR: hast recht, man blickt ziemlich schnell ins leere *gg*
    in welcher reihenfolge sollte ich denn die befehle schreiben?
    ich hab gelesen, dass durch " glLoadIdentity() " der zeichner auf den Koordinatenursprung zurückgesetzt wird. dann müsst es ja gehen, wenn ich 1. die "körper" zeichne, 2. die schrift setze und 3. die kamera positioniere, jeweils mit einem glLoadIdentity dazwischen; oder?

    nochwas am rande: wenn ich die "kamera" mit " gluLookAt " verschiebe, seh ich dann trotzdem noch die schrift, die ich vorher gezeichnet hab? -> ist die schrift praktisch ein gezeichneter "körper" oder eher "an den bildschirm geklebt"?

    thx für die hilfe ^^





  • @TGGC: Das Schild gilt auch für dich!



  • Soviel ich weiss muss die Kamera vor dem Zeichnen verschoben werden, die verschiebung der Kamera hat nur auswirkung auf die objekte die nach der verschiebung gezeichnet werden. Nur so als Info falls du das noch nicht wusstest.

    Ist glPrint eine OpenGL Funktion? Ich glaub nicht, oder? Es wäre vieleicht sinnvoll wenn du auch diese Funktionen mal hierherkopierst.



  • aso .... das mit der kamera is gut zu wissen ... nur hab ich das ja schon gemacht *g* (also erst die kamera verschoben und dann alles gezeichnet)

    und das mit der glPrint: is keine opengl-funktion, die hab ich (da hat TGGC recht) aus nem tutorial kopiert (http://nehe.gamedev.net/ -> Lesson 13 (Bitmap Fonts) links im seitenmenu).

    ich probier heut abend noch n bisl rum ... dann hab ich wieder nen freien kopf nach einem no-code-Tag ^^. ich meld mich dann wenn irgendein ergebniss vorliegt ^^
    erstmal thx für die hilfe ... das wird schon 🕶



  • aha ... es hat noch was gefehlt:

    glRasterPos2f(-1.0f,0.6f);
    

    damit klappt`s jetzt ... ich dachte ich könnte diese anweisung weglassen, indem ich

    glTranslatef(-1.0f,0.6f,-2.0f);
    

    benutze ... scheinbar is die RasterPos doch etwas anderes ...
    OK ... ich probier jetz noch n bisl rum wie sich änderungen der werte auswirken etc. ... wenn noch jemand was darüber zu sagen hat: her damit ^^

    cu und schön abend noch!


Anmelden zum Antworten