如何在opengl/opengles里面绘制网格坐标系

网上找了很多,绘制复杂。

最后在libQGLViewer(一个Qt下面封装的opengl的库,支持鼠标、按键等各种控制)里面看到的代码。

里面还有很多绘制代码,超级吊,感谢原作者。

几行代码搞定:


void drawGrid(qreal size, int nbSubdivisions)
{
    GLboolean lighting;
    glGetBooleanv(GL_LIGHTING, &lighting);
    glDisable(GL_LIGHTING);
    glBegin(GL_LINES);
    for (int i = 0; i <= nbSubdivisions; ++i) {
        const float pos = size * (2.0 * i / nbSubdivisions - 1.0);
        glVertex2d(pos, -size);
        glVertex2d(pos, +size);
        glVertex2d(-size, pos);
        glVertex2d(size, pos);
    }
    glEnd();
    if (lighting)
        glEnable(GL_LIGHTING);
}


如果要设置坐标的颜色和线的宽度:

可以在

 
  
glBegin(GL_LINES);

前面加上两行代码:

    glLineWidth(10.0f);
    glColor3f(1, 0 , 0);

-----------------------------------------------------------------------------------------------

马蛋,我的平台只支持opengles,那就再来个opengles的版本:

nbSubdivisions最好是设置为2的整数倍


void drawGridGLES(float size, int nbSubdivisions)
{
    static QVector vextexs;
    if(vextexs.size() <= 0){
        for (int i = 0; i <= nbSubdivisions; ++i) {
            const float pos = size * (2.0 * i / nbSubdivisions - 1.0);
            vextexs.append(pos);
            vextexs.append(-size);
            vextexs.append(0);
            vextexs.append(pos);
            vextexs.append(+size);
            vextexs.append(0);
            vextexs.append(-size);
            vextexs.append(pos);
            vextexs.append(0);
            vextexs.append(size);
            vextexs.append(pos);
            vextexs.append(0);
        }
    }
    glEnableClientState(GL_VERTEX_ARRAY);
    //画网格线
    glVertexPointer(3, GL_FLOAT, 0, vextexs.data());
    glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
    glLineWidth(5.0f);
    glDrawArrays(GL_LINES, 0, vextexs.size() / 3);
    //中间画红色十字线
    glVertexPointer(3, GL_FLOAT, 0, vextexs.data() + (nbSubdivisions + 1) / 2 * sizeof (GLfloat) * 3);
    glColor4f(1.0f, 0.0f, 0.0f, 0.0f);
    glLineWidth(2.0f);
    glPointSize(20.0f);
    glDrawArrays(GL_LINES, 0, 4);
    glDisableClientState(GL_VERTEX_ARRAY);
}


如何在opengl/opengles里面绘制网格坐标系_第1张图片


你可能感兴趣的:(如何在opengl/opengles里面绘制网格坐标系)