2009-11-26 54 views

回答

8

线条可以纹理化,就像三角形一样。启用alpha测试,应用alpha纹理,设置一些纹理坐标并欣赏。

+0

你可以提供一些相同的代码 – Mayank 2014-04-21 05:12:52

-5
glPushAttrib(GL_ENABLE_BIT); 
# glPushAttrib is done to return everything to normal after drawing 

glLineStipple(1, 0xAAAA); # [1] 
glEnable(GL_LINE_STIPPLE); 
glBegin(GL_LINES); 
glVertex3f(-.5,.5,-.5); 
glVertex3f(.5,.5,-.5); 
glEnd(); 

glPopAttrib(); 
+0

OpenGL * ES *不支持大部分代码。 – 2011-03-27 05:05:18

+0

这看起来像是复制粘贴的一段代码,也许来自http://3dengine.org/Drawing_dotted_lines_%28OpenGL%29 – najjarammar 2015-01-28 21:48:24

1

其实我已经实现了点线或使用for循环中的虚线,但它仍然让非必要使用它作为一个线型链接的绘制方法,这里是我的宠爱行的代码和虚线下面行: 点线:

(void)drawVerticalDotedInternalGrid{ 
    float a,b; 
    int drawCount =0; 
    GLfloat dotedInternalGrid[1296]; 

    for (a = -0.5f; a <= 0.5f; a +=0.5f) { 
     for (b = -0.875f; b <=0.925f; b += 0.025f) 
     {   
      dotedInternalGrid[drawCount] = b; 
      drawCount++; 
      dotedInternalGrid[drawCount] = a; 
      drawCount++; 
     };  
    }; 
    glPointSize(1.0f); 
    glColor4f(0.863f,0.863f,0.863f,0.8f); //line color 
    glVertexPointer(2, GL_FLOAT, 0, dotedInternalGrid); 
    glEnableClientState(GL_VERTEX_ARRAY); 
    glDrawArrays(GL_POINTS, 0, 648);   
    glDisableClientState(GL_VERTEX_ARRAY); 
} 

虚线:

(void)drawVerticalDashedInternalGridH{ 
    GLfloat dashedLine[1296]; 
    float a,b; 
    int i =0; 

    //-0.4----0.4 // -0.875----0.900 
    for (a = -0.4f; a <= 0.4f; a +=0.1f) { 
     for (b =-0.825f; b <=0.950f; b+=0.025f) {       
      dashedLine[i] = b;    
      i++; 
      dashedLine[i] = a; 
      i++; 
     }; 
    }; 

    //glLineWidth(1.0f); 
    glColor4f(0.863f,0.863f,0.863f,1.f); //line color 
    glVertexPointer(2, GL_FLOAT, 0, dashedLine); 
    glEnableClientState(GL_VERTEX_ARRAY); 
    glDrawArrays(GL_LINES, 0, 648); 
    glDisableClientState(GL_VERTEX_ARRAY); 
} 

当然你可以看到代码在某个坐标的矩形区域中绘制,麻烦的事情是如何动态地绘制出这个数组的大小以及绘制方法的用途以及绘制的行数。