在Windows上获取OpenGL点大小(以像素为单位)?

Nic*_*k R 1 c++ opengl winapi c++11

我在WinAPI中使用OpenGL来创建2D线图.我的点以点大小8绘制,我想调整绘制点的高度(以及连接它们的线),使得点的底部位于正确的y位置(即,使得点位于0处)不被x轴分割).

我有一个硬编码的调整,但我宁愿用绘制的点大小进行缩放,这样当它在不同大小的窗口中绘制时,它的工作原理相同.

这是绘制点和连接它们的线的方法:

void plotScores() {

if (samples > 1) { //if this is at least the second score, connect the scores with a line
    glLineWidth(12.0);
    GLdouble lineXPos = 0, lineYPos = 0;
    glColor3d(0.3, 0.3, 0.3);
    glBegin(GL_LINE_STRIP);
    for (int i = 0; i < scores.size(); i++) {
        lineXPos = (i * 0.05) - 0.88;
        lineYPos = ((scores[i] - 0.5) * 1.6); //need to adjust this for line y-position...
        glVertex2d(lineXPos, lineYPos);
    }
    glEnd();
}
for (int i = 0; i < scores.size(); i++) {
    GLdouble pointXPos = (i * 0.05) - 0.88;
    GLdouble pointYPos = ((scores[i] - 0.5) * 1.6); //...and this for point y-position
    if (scores[i] >= threshold) {
        glColor3d(0.0, 1.0, 0.2);
    }
    else {
        glColor3d(1.0, 0.2, 0.0);
    }
    glBegin(GL_POINTS);
    glVertex2d(pointXPos, pointYPos);
    glEnd();
}
}
Run Code Online (Sandbox Code Playgroud)

ybu*_*ill 5

您可以使用,设置点大小glPointSize,因此应该知道该值.如果由于某种原因想要事后查询,可以使用glGetGL_POINT_SIZE枚举.