2016-12-23 17 views
0

ユーザーが指定したgridSize(グリッドは常に正方形)に応じて2次元グリッドを描画しようとしています。 ただし、グリッドの一部の値では、グリッドの上端線と右端線が描画されません。私の人生にとって、ここで自分のコードに何が間違っているのか分かりません。フリーグリッドグリッド描画が特定の値で完全に描画されない

これは、グリッドを描画するために私のrenderメソッドでは私のコードです:

glBegin(GL_LINES); 

for (float i = -1.0f; i <= 1.0f; i += 2.0f/(gridSize)) { 
    glVertex2f(i, 1.0f); 
    glVertex2f(i, -1.0f); 

    glVertex2f(-1.0f, i); 
    glVertex2f(1.0f, i); 
} 
glEnd(); 

グリッド寸法は、グリッドの大きさのためだけにユーザの入力です。 私のグリッドに2.0x2.0という一定の幅と高さを持たせたいので、私は2.0で割ります。

10、25、100のような値すべての作業罰金、 しかしhere

を示すような50などの値は、それは私が欠けていることをいくつかのダム詳しくかもしれないが、トップと左のラインを描画しません、しかし私はちょうど私のコードで何か間違って見ることができません。

答えて

0

ループ内の浮動小数点位置算出&整数ループ変数を使用する:すべて一緒に

glBegin(GL_LINES); 
for(unsigned int j = 0; j <= gridSize; ++j) 
{ 
    const float i = -1.0f + (j * 2.0f/(gridSize)); 
    glVertex2f(i, 1.0f); 
    glVertex2f(i, -1.0f); 
    glVertex2f(-1.0f, i); 
    glVertex2f(1.0f, i); 
} 
glEnd(); 

#include <GL/glut.h> 

void display() 
{ 
    glClearColor(0, 0, 0, 1); 
    glClear(GL_COLOR_BUFFER_BIT); 

    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(-1.1, 1.1, -1.1, 1.1, -1, 1); 

    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 

    const unsigned int gridSize = 50; 
    glBegin(GL_LINES); 
    for(unsigned int j = 0; j <= gridSize; ++j) 
    { 
     const float i = -1.0f + (j * 2.0f/(gridSize)); 
     glVertex2f(i, 1.0f); 
     glVertex2f(i, -1.0f); 
     glVertex2f(-1.0f, i); 
     glVertex2f(1.0f, i); 
    } 
    glEnd(); 

    glutSwapBuffers(); 
} 

int main(int argc, char** argv) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); 
    glutCreateWindow("GLUT"); 
    glutDisplayFunc(display); 
    glutMainLoop(); 
    return 0; 
} 
関連する問題