OpenGl Evaluatoren



  • Hallo,

    ich versuche mithilfe der Evaluatoren eine Kurve zu zeichnen, was mit bis zu maximal 8 Punkten auch funktioniert. Danach ist aber Schluss. Bei mehr als 8 wie im Beispiel Code wird gar nichts gezeichnet. Das ganze habe ich mit dem g++ unter Ubuntu Fehlerfrei kompiliert. Im Windows mit dem Visual Studio konnte ich mindestens 20 Punkte angeben ( mehr hatte ich nicht getestet / anderer Rechner ). Die Variable GL_MAX_EVAL_ORDER liefert mir den Wert 3376, also müssten ja Eindeutig mehr möglich sein!?

    Hat jemand eine Idee woran das liegen könnte bzw. was ich Falsch mache?

    gruß

    GLfloat ctrlPoints[9][3] = {{120.0, -200.0, 0.0}, {160.0, -150.0, 0.0},{200.0, -100.0, 0.0}, {250.0, -360.0, 0.0}
    ,{280.0, -300.0, 0.0}, {300.0, -150.0, 0.0}, {350.0, -260.0, 0.0}, {400.0, -560.0, 0.0}, {450.0, -340.0, 0.0}};
    
      glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 9, &ctrlPoints[0][0]);
    
      glEnable(GL_MAP1_VERTEX_3);
    
      glBegin(GL_LINE_STRIP);
    
        glColor3ub(154,205,50);
    
        for ( int i = 0 ; i < 100 ; i++ ) 
    
          glEvalCoord1f((GLfloat) i/100.0); 
    
      glEnd();
    
      glDisable(GL_MAP1_VERTEX_3);
    


  • GLfloat ctrlPoints[100][3] = {
    {120.0, -200.0, 0.0}, {160.0, -150.0, 0.0},{200.0, -100.0, 0.0}, {250.0, -360.0, 0.0},{280.0, -300.0, 0.0}, 
    {300.0, -150.0, 0.0}, {350.0, -260.0, 0.0}, {400.0, -560.0, 0.0}, {450.0, -340.0, 0.0},{xxx,yyy,zzz},...};
    
      glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 9, &ctrlPoints[0][0]);
    
      glEnable(GL_MAP1_VERTEX_3);
    
      glBegin(GL_LINE_STRIP);
    
        glColor3ub(154,205,50);
    
    float i;
        for ( i = 0 ; i < 100 ; i++ )
    
          glEvalCoord1f((GLfloat) i/100.0);
    
      glEnd();
    
      glDisable(GL_MAP1_VERTEX_3);
    

    versuchs mal so.

    einfach den Punkten noch mehr Koordinaten geben, wenn ich das richtig verstanden habe.

    Oder vielleicht hat dein Ubuntu eine zu alte OpenGL Version...



  • Ich habe noch ein paar Punkte hinzugefügt, aber das ändert leider nichts an der Situation. Sobald ich der order in der glMap1f Funktion einen Wert größer 8 geben wird nichts mehr gezeichnet.


Anmelden zum Antworten