Si vedono i punti perché si stanno disegnando dei punti con glBegin(GL_POINTS)
. Prova a sostituirlo con glBegin(GL_LINE_STRIP)
.
NOTA: quando hai visto il cerchio hai disegnato solo punti, ma disegnato abbastanza vicino da apparire come un cerchio collegato.
Inoltre, potrebbe non essere stato impostato il buffer di profondità per accettare i valori nell'intervallo z = [-50, 310] che si utilizza. Questi argomenti devono essere forniti come zNear e zFar piani di ritaglio nella chiamata gluPerspective
, glOrtho()
o glFrustum()
.
NOTA: questo spiegherebbe perché con il valore z si vedono solo alcuni punti: gli altri punti vengono ritagliati perché si trovano al di fuori dell'intervallo di z-buffer.
UPDATE Dopo la proiezione IL CODICE:
glOrtho(-100*aspectratio,100*aspectratio,-100,100,1,-1);
consentirebbe solo valori z in [-1, 1] gamma, motivo per cui solo i tre punti con z = -1
, z = 0
e z = 1
saranno disegnato (quindi 3 punti).
Infine, probabilmente stai osservando la spirale dall'alto, guardando direttamente nella direzione dell'asse di rotazione. Se non si utilizza una proiezione prospettica (ma una isometrica), la spirale verrà comunque visualizzata come un cerchio. Potresti voler cambiare la visualizzazione con gluLookAt()
.
esempio di configurazione di PROSPETTIVA
Il seguente code è tratto dalle ottimi tutorial OpenGL per NeHe:
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
glLoadIdentity(); // Reset The Projection Matrix
// Calculate The Aspect Ratio Of The Window
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glLoadIdentity(); // Reset The Modelview Matrix
Poi, nel vostro draw loop sarebbe simile a questa:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity();
glTranslatef(-1.5f,0.0f,-6.0f); // Move Left 1.5 Units And Into The Screen 6.0
glBegin(GL_TRIANGLES); // Drawing Using Triangles
glVertex3f(0.0f, 1.0f, 0.0f); // Top
glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glVertex3f(1.0f,-1.0f, 0.0f); // Bottom Right
glEnd();
Ovviamente, è necessario modificare questo codice di esempio in base alle proprie esigenze.
Questa è una lettura interessante, signor. insalata :) – catchmeifyoutry
Sì, quel blog è pieno di fantastici algoritmi grafici. Questo è il mio preferito: http://prideout.net/blog/?p=69 –