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.