美文网首页
OpenGL(2) —— 定义一个矩形

OpenGL(2) —— 定义一个矩形

作者: 你可记得叫安可 | 来源:发表于2020-01-31 15:40 被阅读0次

    如何定义复杂图形

    OpenGL 只提供点、线、三角形的绘制我们如何绘制一个复杂点的图形,比如矩形呢?

    用两个三角形定义一个矩形
    我们可以画两个三角形,但是定义图形坐标点时,可以不需要列出两个三角形的所有坐标。
    static float squareCoords[] = {
            -0.5f, 0.5f, 0.0f, // top left
            -0.5f, -0.5f, 0.0f, // bottom left
            0.5f, -0.5f, 0.0f, // bottom right
            0.5f, 0.5f, 0.0f // top right
    };
    private final short drawOrder[] = { 0, 1, 2, 0, 2, 3 }; // order to draw vertices
    ...
    glDrawElements(
                    GL_TRIANGLES, drawOrder.length,
                    GL_UNSIGNED_SHORT, drawListBuffer);
    

    如上所示,我们按逆时针,申明矩形的四个角坐标,以及 OpenGL 按什么顺序访问这些点,并绘出图形。最后我们通过 glDrawElements() 来按照上面的 drawOrder 遍历 squareCoords 中的坐标(GL_TRIANGLES 表示使用三个顶点来组成图形,直到结束)

    glDrawElements vs glDrawArrays

    这两个函数的却别在于,glDrawArrays 接收的坐标数据就是 OpenGL 绘制图形的完整路径,glDrawElements 接受一组坐标和访问这组坐标的顺序,OpenGL 按照顺序来绘制图形。

    相关文章

      网友评论

          本文标题:OpenGL(2) —— 定义一个矩形

          本文链接:https://www.haomeiwen.com/subject/vvrgthtx.html