glDrawArrays(GL_TRIANGLE_STRIP,i,j)怎么使用,假设我这有个数组array=[1,2,3 ,2,3,4 ,4,5,6 ,7,8,9 ,10,11,12]
有5个点,其中{1 2 3,2 3 4, 4 5 6}画一个三角形,{2 3 4, 4 5 6,7,8,9}又画一个,一次类推,这边的i,j该怎么设置啊,求高人讲解下,没怎么懂这个函数

解决方案 »

  1.   

    glDrawArrays(int mode, int first, int count)
    第一个参数是模式有:
    GL_POINTS:画点
    GL_LINE_STRIP:两两画线,第一个点和最后一个点不相连
    GL_LINE_LOOP:两两画线,第一个点和最后一个点相连
    GL_LINES:第一个点与第二个点画先、第三个与第四个画线、类推
    GL_TRIANGLES:第1、2、3个点画三角形,第4、5、6个点画三角形,类推
    GL_TRIANGLE_STRIP:第1、2、3个点画三角形,第2、3、4个点画三角形,类推第二个参数:起点位置,设为0就好。
    第三个参数:要画线或三角形的数量。
      

  2.   

    mode还有一个GL_TRIANGLE_FAN,也是三角形,不过是1、2、3,1、3、4,1、4、5这样下去类推的,第一个定点固定,和后面定点依次组成三角形,画凹多边形或是什么的时候比较好用
      

  3.   

    如果重点用GL_TRIANGLE_STRIP,顶点坐标数据是a[12]={1 2 3   4 5 6   7 8 9   10 11 12}
    glVertexPointer(3,GL_FLOAT,0,a);
    //  GLfloat colorvertex[]={1.0f,1.0f,1.0f,1.0f};
    //  glColorPointer(4,GL_FLOAT,0,colorvertex);
    for(int i=0;i<2;i++)
    {
    glDrawArrays(GL_TRIANGLE_STRIP,i,3);
    }
    这样子是不是等于画了2个三角形,坐标分别是{1 2 3  4 5 6  7 8 9}和{4 5 6  7 8 9  10 11 12}
    另外如果这2个三角形颜色都要一样是不是可以这样子设置颜色数组
    GLfloat colorvertex[]={1.0f,1.0f,1.0f,1.0f};
    glColorPointer(4,GL_FLOAT,0,colorvertex);
    为什么我画的三角形颜色一直在跳动啊