PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grundsatzfragen zu OpenGL


Lord Nikon
2003-10-01, 19:45:03
Ich habe zur Zeit ein Problem.. Wenn ich die Funktion y=3x+4 und y=2x+5 habe und diese darstellen will , wie wähle ich die Propotion ?

double y1,y2;
double b1,y2;
y1=3*5+4:
y2=2*5+4;
b1=4;
b2=5
glVertex2d(0,b);
glVertex2d(5,y1);
glVertex2d(0,b2);
glVertex2d(5,y2);

Wenn ich dies so darstellen möchte , ist das aushalb des Bildschirms. Wie kann ich sowas verhindern und wie groß ist der Wertebereich von den Parametern für glVertex Befehle?
Wie kriege eigentlich die Clipplane für den glOrtho Befehl raus?

LordNikon
2003-10-02, 10:04:19
wenn ich
[CODE]
glOrtho
(-12.0,12.0,-12.0,12.0,-12.0,12.0);
[CODE]
nehme , dann habe ich einen Bereich von -12 und + 12 auf der x Achse und einen bereich von -12 bis +12 auf der Y Achse oder?

zeckensack
2003-10-02, 13:30:14
Ja :)

Den 'Wertebereich' kannst du auf diese Weise deinen Bedürfnissen nach frei einstellen.

Zu deiner ersten Frage:
Es fehlt glBegin/glEnd. Ansonsten müsste das eigentlich klappen.

Lord Nikon
2003-10-02, 14:05:50
Leider klappt es immer noch nicht ganz
Hier einmal mein Code:

wglMakeCurrent(
wglGetCurrentDC(),
wglGetCurrentContext());
glMatrixMode(GL_PROJECTION); // Aktuelle Matrix setztn
glMatrixMode(GL_MODELVIEW);



glOrtho (-12.0,12.0,-12.0,12.0,-120.0,120.0);

*/ float left, float right, float bottom, float top, float zNear, float zFar) /*




/*
glViewport(
(GLint) -12.0,
(GLint) -12.0,
(GLint) 800,
(GLint) 600);
*/

glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_NORMALIZE);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
glDisable(GL_CULL_FACE);


//////// KORDINATEN SYSTEM

glBegin(GL_LINES);
glColor4f(0.0F,0.0F,0.0F,0.0F);

glVertex2d(0.0,0.0);
glVertex2d(12.0,0.0);
glVertex2d(0.0,0.0);
glVertex2d(-12.0,0.0);
glVertex2d(0.0,0.0);
glVertex2d(0.0,12.0);
glVertex2d(0.0,0.0);
glVertex2d(0.0,-12.0);
// Funktion zeichnen STRICHE ZEICHNEN

glVertex2d(0,b);
glVertex2d(xx,yy);// XX und YY sind die errechnete Schnittpunkte
glVertex2d(0.0,b2);
glVertex2d(xx,yy);


glEnd();


glFlush();
glFinish();
SwapBuffers(wglGetCurrentDC());

Edit:
aktueller Quellcode
EDIT2:

Child = CreateWindow( "winclass1",
"winclass1" ,
WS_OVERLAPPEDWINDOW,
0,
0,
800,
600,
Form1->Handle,
NULL,
Application->Handle,
NULL);

Dies ist der Code vom erstellten Fenster

Gast
2003-10-02, 14:26:56
Ich komm' zwar mit den Kommentaren net so ganz mit, aber falls der glLoadIdentity() Aufruf nach dem glOrtho() nicht auskommentiert ist, setzt er dir deine frisch gebaute Projektionsmatrix wieder auf die Einheitsmatrix.

Lord Nikon
2003-10-02, 14:37:17
so ich habe glLoadIdentity() auskommentiert und trotzdem funktioniert es immer noch nicht. Mich wundert , das das Koordinaten System gezeichnet wird , aber die Funktion nicht.
EDIT: Der Compiler war schuld. Er hat die neue Version nicht genonmen genommen.