Mik*_*eir 9 javascript c++ opengl-es webgl emscripten
我已经编写了一个基于磁贴的引擎 - 只要在WebGL中禁用了抗锯齿,一切看起来都很好.
启用抗锯齿时,有时会渲染图块边缘的像素,这些像素主要显示为背景像素并适当填充深度缓冲区.当更强烈(更高的α)像素进入时,由于深度缓冲而被丢弃.
我确实尝试禁用深度缓冲区,并"将混合因子设置为GL_SRC_ALPHA_SATURATE(源)和GL_ONE(目标)",如下所示:http://www.glprogramming.com/red/chapter06.html .这导致绘制纯白色像素 - 不确定那里发生了什么.
我的纹理上的图形都被填充,因此WebGL不应该有过滤问题.我已经使填充极端,以确保这不是一个促成因素.
我已经glSampleCoverage()在黑暗中探索并尝试了几次射击,随机值不会产生任何价值.我不熟悉它实际上做了什么,除了一些抽象的建议外,在网上找不到任何好的例子.
我宁愿不禁用深度缓冲区.
GL_MULTISAMPLE 不可用.
我有一个带C++环境的Emscripten - 但这没关系,我可以根据需要编写内联javascript - 但我认为这是通用的OpenGL解决方案.
有没有办法在WebGL中仅为某些几何体禁用抗锯齿?
好:

坏:

我在 WebGL 上找到的任何文档都表明它仅支持带有内置 AA 设施的全屏抗锯齿。
您的情况的主要问题是许多 AA 算法是“后处理”,在渲染完所有几何体后执行。可以这么说,他们只知道像素。
一种可能的解决方案是编写自己的抗锯齿功能,该功能可以使用几何信息(如果可用)或可以在单个几何体的上下文中工作。
http://www.humus.name/index.php?page=3D&ID=87 http://en.wikipedia.org/wiki/Supersampling
| 归档时间: |
|
| 查看次数: |
1241 次 |
| 最近记录: |