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

2020-01-31  本文已影响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 按照顺序来绘制图形。

上一篇下一篇

猜你喜欢

热点阅读