我正在绘制许多半透明的多边形。我的场景是2D并使用2f顶点。我不能使用深度缓冲区,因为它会因为alpha混合而无济于事。还有什么其他方法可以减少 overdraw ,因为这使我的应用程序瘫痪,而不是因为使用VBO导致多边形计数下降。
最佳答案
首先,您如何确定 overdraw 是您的问题?如果没有有关您要绘制的内容的更多信息,很难猜测如何更快地绘制它。一般来说,避免过度绘制的关键是避免绘制任何不需要的东西。因此,如果您有一个2D侧滚动游戏,其背景图像出于视差目的独立滚动了几层-天空,云层,山脉,远处的森林和近处的森林-您应该避免在其他任何地方绘制天空层可见。因此,如果您知道山脉一定会覆盖天空的特定部分,请更改天空多边形的形状以仅在您希望天空可见的区域进行绘制。如果您仍然有问题,则有可能针对天空形成一个相对高分辨率的网格,该网格遵循山脉的形状。同样,如果确保森林层的地平面覆盖一定的高度跨度,则不要在该区域绘制山脉。
OTOH,在现代视频硬件上,2D场景中的几层 overdraw 通常没什么大不了的,所以我仍然很想知道您是如何确定这一点的,以及您的图像中是否可能存在某种偏差仪器和配置文件可能会使您误入歧途。
关于c++ - 防止 overdraw 的技术(OpenGL),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3154095/