openGl超级宝典学习笔记 (2) 7个基本的几何图元

点(GL_POINTS):点总是正方形的像素,默认情况下,点的大小不受透视除法影响。即不管与视点的距离如何,它的大小都不改变。为了获得圆点,必须在抗锯齿模式下绘制点。可以用glPointSize改变点的大小。//点//建立批次GLBatch pointBatch;GLfloat vCoast[24][3] = {{2.80, 1.20, 0.0 }, {2.0,
摘要由CSDN通过智能技术生成

点(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=
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值