OpenGL GL_POINTS 结果与输入不同

OpenGL GL_POINTS result differs from input

我想用 GL_POINTS 画点东西,但是在 ~totalpoint/3 之后结果开始与输入相差 1 个像素

我尝试了不同的 glOrtho 和 glViewport 参数,但没有任何改变

我的测试程序:

int w = atoi(argv[1]);
int h = atoi(argv[2]);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, w, h, 0, 1.0, -1.0);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
glLoadIdentity();

unsigned int wf,hf;
unsigned char rgb[3];

while(!glfwWindowShouldClose(window)){
    glClear(GL_COLOR_BUFFER_BIT);
    glPointSize(1);
    glBegin(GL_POINTS);
    for(hf=0;hf<h;hf++){
        for(wf=0;wf<w;wf++){
            memset(rgb,0,3);
            rgb[wf%3]=0xff;
            glColor3ub(rgb[0],rgb[1],rgb[2]);
            glVertex2f(wf,hf);
        }
    }
    glEnd();
    glfwSwapBuffers(window);
    glfwPollEvents();
}

结果:

无色

彩色

Michael Roy 的方法解决了我的问题,我只是更改了这一行

GLFWwindow* wmain = glfwCreateWindow(atoi(argv[1]), atoi(argv[2]), "test", 0, 0);

GLFWwindow* wmain = glfwCreateWindow(atoi(argv[1]) + 1, atoi(argv[2]) + 1, "test", 0, 0);