2017-05-28 1 views
0

Ich möchte meine 2 Quadrate darunter haben und auch im Fenster zentriert sein.Wie zentriert man Quadrate untereinander unter Verwendung von OpenGL?

Ich habe den folgenden Code:

glBegin(GL_QUADS); 
    glColor3f(0.5f, 0.5f, 0.5f); 
    glVertex2f(-0.8f, 0.1f); 
    glVertex2f(-0.2f, 0.1f); 
    glVertex2f(-0.2f, 0.7f); 
    glVertex2f(-0.8f, 0.7f); 

    glColor3f(0.5f, 0.5f, 0.5f); 
    glVertex2f(-0.7f, -0.6f); 
    glVertex2f(-0.1f, -0.6f); 
    glVertex2f(-0.1f, 0.0f); 
    glVertex2f(-0.7f, 0.0f); 
    glEnd(); 

Ergebnis ist:

result

Es ist jedoch nicht genau darunter ist.

Wie geht das?

+0

Warum erwarten Sie diesen Code in einen anderen Ausgang zu führen, als die, die Sie bekommen? Wenn Sie dies auf Papier zeichnen, werden Sie sehen, dass die Ausgabe genau das ist, was es sein sollte. – derhass

+0

Ich empfehle OpenGL 3.3 oder später anstelle der alten OpenGL zu lernen. learnopengl.com ist eine großartige Ressource dafür. – Archmede

+1

Da die x-Koordinaten der beiden Quads nicht übereinstimmen, ist es nicht verwunderlich, dass sie nicht genau untereinander liegen. – BDL

Antwort

0

das Problem zu klären, sollten Sie in Bezug auf die Position und Dimension Ihrer Formen zuerst denken:

/* It seems that your windows lies on [-1,1][-1,1] square. */ 
/* dimension of squares: {width, height} 
    here rectangle since width is equal to height 
    The two rectangles have the same dimension. 
    */  
float dim[2] = {0.25f, 0.25f}; 

/* position of the rectangle centers, here you can see that the first is above 
    this array must be read like {{x1, y1}, {x2, y2}} 
*/ 
float pos[2][2] = {{0.0f, 0.4f},{0.0f, -0.4f}}; 


glBegin(GL_QUADS); 
    glColor3f(0.5f, 0.5f, 0.5f); 
    glVertex2f(pos[0][0] - dim[0], pos[0][1] - dim[1]); 
    glVertex2f(pos[0][0] + dim[0], pos[0][1] - dim[1]); 
    glVertex2f(pos[0][0] + dim[0], pos[0][1] + dim[1]); 
    glVertex2f(pos[0][0] - dim[0], pos[0][1] + dim[1]); 

    glColor3f(0.5f, 0.5f, 0.5f); 
    glVertex2f(pos[1][0] - dim[0], pos[1][1] - dim[1]); 
    glVertex2f(pos[1][0] + dim[0], pos[1][1] - dim[1]); 
    glVertex2f(pos[1][0] + dim[0], pos[1][1] + dim[1]); 
    glVertex2f(pos[1][0] - dim[0], pos[1][1] + dim[1]);   
glEnd();