2017-05-28 3 views
0

私は2つの正方形を下に置いて、窓の中心にも置いておきたいと思います。OpenGLを使用してお互いの中心を合わせる方法は?

私は、次のコードを持っている:

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(); 

結果は次のとおりです。

result

しかし、それはまさに下ではありません。

どうすればよいですか?

+0

、なぜあなたは、このコードは、あなたが得たものよりも、別の出力につながることを期待していますか?これを紙の上に描くと、出力が正確になるはずです。 – derhass

+0

古いOpenGLの代わりにOpenGL 3.3以降を学ぶことをお勧めします。 learnopengl.comは素晴らしいリソースです。 – Archmede

+1

2つのクワッドのx座標が一致しないので、それらがお互いの真下にあるのは不思議ではありません。 – BDL

答えて

0

問題を明確にするためには、まずあなたの形状の位置や大きさの観点から考える必要があります。

/* 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(); 
関連する問題