2016-12-23 1 views
0

사용자가 지정한 gridSize에 따라 2 차원 그리드를 그리려합니다 (그리드는 항상 정사각형입니다). 그러나 그리드의 일부 값에 대해 그리드의 맨 위 선과 오른쪽 선이 그려지지 않습니다. 내 인생에서 나는 여기에 내 코드가 무엇이 잘못되었는지 알 수 없다.특정 값으로 완전히 그리지 않는 자유 그리드 그리기

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

gridSize 그리드의 크기에 딱 사용자 입력 :

이 그리드를 그려 내 렌더링 방법에 내 코드입니다. 내 그리드가 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; 
} 
관련 문제