我想用OpenGL ES2.0实现一条线点画(虚线/点线),并找到了关于此主题的许多线索。但没有任何例子。有人以前做过这件事,可以帮我实施吗?用OpenGL ES绘制点线
回答
有用于在OpenGL ES点画线不直接支持,所以常见的做法是:
- 渲染多个不同的线段,每个段呈现点画图案的一个整体部分。
- 渲染由两个三角形组成的薄四边形,并使用透明纹理应用线条纹效果。
从性能的角度来看,如果屏幕上有很多行,我会推荐后者。
除了solidpixel给出的选项之外,选项三是使用纹理线;一行的片段着色器可以像其他片段着色器一样接收变化和样本纹理。因此,请提供一个纹理坐标作为从x = 0
到x = k * (length of line)
的变化运行,然后对纹理进行采样以生成片段颜色。
渲染一条线时OpenGL上的行为与渲染四条线时的行为不同:对角线上的薄四边形可能会错过片段中心,而线会始终绘制连续的片段集合。
因此,它或多或少地是计算动态点画与预计算并查找它之间的区别。如果你能够像solidpixel一样提倡者计算它,那么它可能会更好,因为它会消耗更少的带宽。
谢谢,这个选项适用于简单的线条。但是当我尝试点两行时(通过传递三个顶点)纹理不起作用,因为它与第一行有关。第二行没有恒定的点画模式。 –
我认为只要每个点的纹理坐标是根据沿该带中所有线的总距离计算出来的,那么就可以了。因此,在生成几何体时保留一个累计总数。 – Tommy
- 1. 使用OpenGL-ES绘制点划线
- 2. OpenGL ES的iPhone - 绘制反锯齿线
- 3. iOS OpenGL ES绘制网格线框
- 4. 如何绘制“发光”线在OpenGL ES
- 5. OpenGL ES中的绘制点2.0
- 6. OpenGL ES:绘制小物体
- 7. Opengl-es绘制纹理
- 8. OpenGL ES不会绘制
- 9. 绘制与OpenGL ES的
- 10. 使用OpenGL ES 2.0绘制2D图像
- 11. 如何使用OpenGL ES绘制NURB
- 12. 使用OpenGL ES绘制纹理
- 13. 用OpenGL ES绘制地球仪
- 14. OpenGL ES 2.0绘制一圈刻度线/线
- 15. 是强制性的绘制OpenGL ES的
- 16. OpenGL ES - 只用一条线绘制三角形?
- 17. 在iPhone中使用OpenGL ES绘制直线?
- 18. 用Xcode在openGL ES 1.0中绘制线条
- 19. 如何使用OpenGL ES 1绘制虚线?
- 20. NEWBIE:使用有序顶点数组绘制OpenGL ES形状
- 21. OpenGL:用VBO绘制线条
- 22. 绘制多个对象的Opengl es
- 23. Android OpenGL es“glDrawTexfOES”绘制倒立
- 24. OpenGL ES绘制黑色纹理
- 25. OpenGL Es 2.0 GLKit绘制像素
- 26. 在OpenGL ES中绘制球体
- 27. Android的OpenGL ES没有绘制纹理
- 28. OpenGL ES纹理不会绘制
- 29. 在opengl中绘制一个箭头ES
- 30. Opengl ES纹理不绘制正确
我认为后者还可以更好地控制线条粗细和抗锯齿。 – Columbo
我明白第一个认识,这对我的问题来说非常重和非常困难,因为我有一些不同的元素,比如一个圆圈。但我不明白第二个方法。你有一个例子吗? –
http://korkd.com/2012/02/15/dashed-lines/ –