点(GL_POINTS):
点总是正方形的像素,默认情况下,点的大小不受透视除法影响。即不管与视点的距离如何,它的大小都不改变。为了获得圆点,必须在抗锯齿模式下绘制点。
可以用glPointSize改变点的大小。
//点
//建立批次
GLBatch pointBatch;
GLfloat vCoast[24][3] = {
{2.80, 1.20, 0.0 }, {2.0, 1.20, 0.0 },
{2.0, 1.08, 0.0 }, {2.0, 1.08, 0.0 },
{0.0, 0.80, 0.0 }, {-.32, 0.40, 0.0 },
{-.48, 0.2, 0.0 }, {-.40, 0.0, 0.0 },
{-.60, -.40, 0.0 }, {-.80, -.80, 0.0 },
{-.80, -1.4, 0.0 }, {-.40, -1.60, 0.0 },
{0.0, -1.20, 0.0 }, { .2, -.80, 0.0 },
{.48, -.40, 0.0 }, {.52, -.20, 0.0 },
{.48, .20, 0.0 }, {.80, .40, 0.0 },
{1.20, .80, 0.0 }, {1.60, .60, 0.0 },
{2.0, .60, 0.0 }, {2.2, .80, 0.0 },
{2.40, 1.0, 0.0 }, {2.80, 1.0, 0.0 }};
// Load point batch
pointBatch.Begin(GL_POINTS, 24);
pointBatch.CopyVertexData3f(vCoast);
pointBatch.End();
//改变点的大小,提交图形到着色器 以下代码在渲染函数中
glPointSize(4.0f);
pointBatch.Draw();
线段(GL_LINES):
一条线段是在两个顶点之间绘制的,每批线段都应该包含偶数个顶点()。默认情况下宽度为1,唯一改变线段宽度的方法是glLineWidth(Gl float);
GLBatch lineBatch;
GLfloat vCoast[24][3] = {
{2.80, 1.20, 0.0 }, {2.0, 1.20, 0.0 },
{2.0, 1.08, 0.0 }, {2.0, 1.08, 0.0 },
{0.0, 0.80, 0.0 }, {-.32, 0.40, 0.0 },
{-.48, 0.2, 0.0 }, {-.40, 0.0, 0.0 },
{-.60, -.40, 0.0 }, {-.80, -.80, 0.0 },
{-.80, -1.4, 0.0 }, {-.40, -1.60, 0.0 },
{0.0, -1.20, 0.0 }, { .2, -.80, 0.0 },
{.48, -.40, 0.0 }, {.52, -.20, 0.0 },
{.48, .20, 0.0 }, {.80, .40, 0.0 },
{1.20, .80, 0.0 }, {1.60, .60, 0.0 },
{2.0, .60, 0.0 }, {2.2, .80, 0.0 },
{2.40, 1.0, 0.0 }, {2.80, 1.0, 0.0 }};
// Load as a bunch of line segments
lineBatch.Begin(GL_LINES, 24);
lineBatch.CopyVertexData3f(vCoast);
lineBatch.End();
<pre name="code" class="cpp">//改变线段的大小,提交图形到着色器 以下代码在渲染函数中
glLineWidth(2.0f);lineBatch.Draw();
线带(GL_LINE_STRIP):
连续从一个顶点到下一个顶点绘制线段。
GLBatch lineStripBatch;
GLfloat vCoast[24][3] = {
{2.80, 1.20, 0.0 }, {2.0, 1.20, 0.0 },
{2.0, 1.08, 0.0 }, {2.0, 1.08, 0.0 },
{0.0, 0.80, 0.0 }, {-.32, 0.40, 0.0 },
{-.48, 0.2, 0.0 }, {-.40, 0.0, 0.0 },
{-.60, -.40, 0.0 }, {-.80, -.80, 0.0 },
{-.80, -1.4, 0.0 }, {-.40, -1.60, 0.0 },
{0.0, -1.20, 0.0 }, { .2, -.80, 0.0 },
{.48, -.40, 0.0 }, {.52, -.20, 0.0 },
{.48, .20, 0.0 }, {.80, .40, 0.0 },
{1.20, .80, 0.0 }, {1.60, .60, 0.0 },
{2.0, .60, 0.0 }, {2.2, .80, 0.0 },
{2.40, 1.0, 0.0 }, {2.80, 1.0, 0.0 }};
// Load as a single line segment
lineStripBatch.Begin(GL_LINE_STRIP, 24);
lineStripBatch.CopyVertexData3f(vCoast);
lineStripBatch.End();
<pre name="code" class="cpp">//改变线段的大小,提交图形到着色器 以下代码在渲染函数中
glLineWidth(2.0f);lineStripBatch.Draw();
线环(GL_LINE_LOOP):
线带的扩展,把一个批次中最后一个点和第一个点连接起来。
三角形(GL_TRIANGLES):
三角形是OpenGl唯一支持的一种多边图形。每三个顶点定义一个新三角形。不像线段组成的环,它是实心的,可以填充颜色的。
上一篇我们已经创建了一个三角形。这里我们用四个三角形组成一个金字塔。用方向键可以调整三角形。
GLBatch triangleBatch;
<p class="p1"><span class="s1">GLfloat</span><span class=