【问题标题】:Help to draw a dashed line in OpenGl帮助在 OpenGL 中绘制虚线
【发布时间】:2013-12-04 11:53:12
【问题描述】:

我试图在 OpenGl 中使用沿路径等间距的纹理作为虚线绘制虚线。我可以得到一条实线,但这不适用于这个项目。 有人可以帮我指出正确的方向吗?

【问题讨论】:

    标签: iphone opengl-es line


    【解决方案1】:

    OpenGL 中的点线或虚线称为 stippled。

    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();
    

    0xAAAA 是您要试验的参数。

    (来自here

    【讨论】:

    【解决方案2】:

    最好的方法是使用 glBegin(GL_POINTS);并以线性方式展开点。

    【讨论】:

    • 你能为android中的OpenGL ES2.0推荐这个语法吗?
    【解决方案3】:

    虚线只是一系列共线的线段,它们之间有间隙。如果你想要纹理,你可以发射一堆四边形。您可以控制纹理坐标,使每个短划线都是纹理的一部分,或者每个短划线包含整个纹理,或者您喜欢的任何其他重复模式。

    到目前为止,您尝试过什么?显示不起作用的代码及其创建的输出图形。然后解释你想要与众不同的地方。

    【讨论】:

    • 获取纹理的路径是由用户绘制的。我使用 - (void)touchesBegan:(NSSet *)touches、- (void)touchesMoved:(NSSet *)touches 和 - (void)touchesEnded:(NSSet *)touches 来跟踪用户绘制的位置。我用....画了一条实线
    • @user661855:您可以编辑您的问题,如果您有很多细节要添加(并且您确实这样做了)。代码不太适合 cmets。
    • @user661885:我的建议是在用户跟踪时画一条实线,然后当他们停止触摸屏幕时,将其替换为沿对角线布置的一堆四边形。或者你想走一条不是直线的路?
    • 路径不是直线。
    • @user661885:你正在尝试纹理化它?或者纹理只是使其虚线的一个想法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多