回答
opengl不支持真正的几何减法,但它可以很容易伪造深度缓冲区或模板缓冲区。
- 面膜你的颜色所以没有被吸引到颜色缓冲器:
glColorMask(false, false, false, false)
画出你“孔”到场景上,在沉积值插入任一深度缓冲器(比三角形带值以下)或模板缓冲区。
禁用颜色蒙版,然后渲染启用了深度或模板测试的三角形条。您之前绘制的区域将被遮盖,所以您会留下一个中间有一个洞的矩形。
作为替代Tim的解决方案,你也可以使用自定义的片段着色器,削减孔: 您可以使用掩模纹理或只是(X,Y)坐标 - 和半径定义孔。那么你可以简单地把你的三角形片段discard()
放在洞里。 最好的解决方案可能取决于你想要的孔的数量(一个蒙版纹理可能是最简单,最灵活的方法,特别是如果你还想要非圆形的孔,而距离测试可能是好的,你只有几个洞)。
我也有这个想法,但我无法找到如何获得当前碎片坐标以及如何在每个孔的x和y坐标中传递 – teamalpha5441 2012-07-20 10:34:09
正如您现在可能知道的那样,当前碎片坐标存储在' gl_FragCoords'。 – kroneml 2012-07-20 12:36:57
(+1)多数民众赞成我正在寻找,我真的应该开始阅读文件... – teamalpha5441 2012-07-20 13:15:00
- 1. 添加和减去形状
- 2. 如何在Visio 2010中减去形状
- 3. 如何减去PowerPoint中的形状?
- 4. OpenGL ES 2.0几个场景
- 5. Android OpenGL ES不使用TRIANGLES显示我的三角形形状
- 6. 如何在OpenGL ES中移动具有纹理的形状?
- 7. openGL ES 2.0六角形
- 8. 几何/形状识别(奇数形状)
- 9. OpenGL ES 2.0的颜色减法
- 10. OpenGL ES 2.0失去图像质量
- 11. OpenGL或OpenGL ES
- 12. Android中的OpenGL ES 2.0形状的翻译
- 13. NEWBIE:使用有序顶点数组绘制OpenGL ES形状
- 14. ARC和OpenGl ES 2.0:旧形状在新场景中渲染
- 15. OpenGL ES 1.0 Android - 绘制更多高级形状
- 16. 如何从形状中减去图像的面积
- 17. Threejs,在几何形状
- 18. 计算几何形状
- 19. 字体的几何形状
- 20. 几何形状的分割
- 21. Three.js几何形状拉伸?
- 22. OpenGL到OpenGL-ES - glRectf()
- 23. 从OpenGL ES 1.1过渡到OpenGL ES 2.0
- 24. 混合OpenGL ES 1和OpenGL ES 2
- 25. iOS OpenGL ES与Android OpenGL ES兼容?
- 26. OpenGL ES 2.0中的旋转三角形
- 27. Android OpenGL ES多边形教程帮助
- 28. Android上的OpenGL ES 2.0的2D图形
- 29. Android OpenGL ES 1 - 多边形边缘
- 30. 二维三角形与OpenGL ES 2.0
这个答案是相关的吗? http://stackoverflow.com/a/11264120/10468 – DarenW 2012-07-19 20:27:34
@DarenW csg会waayy对我来说太慢,这应该是一个动态壁纸。因为它在2D而不是3D,所以必须有一个简单的解决方案。 – teamalpha5441 2012-07-19 20:30:04