使用帧缓冲区对象(FBO)进行屏幕外多个渲染目标,还是?
|
情况:生成N个形状和相应边缘(使用Sobel滤镜或我自己的)的样本,它们具有不同的变换和旋转,而视口(大小= 600 * 600)和相机保持不变。即将有N个样本+ N个对应的边。
我在想这样做
将一个FBO与2个渲染缓冲区一起使用[即每个缓冲区的大小将为=(N * 600)* 600]-N个形状的第一个,对应形状的边缘的第二个
问题:
达到上述目标的最佳方法是什么?
尽管视口大小为600 * 600像素,但形状仅会占据50 * 50像素左右。那么,有什么有效的方法仅在第二个缓冲区上将边界检测应用于边界框/ AABB区域吗?还仅以有效方式读取2N个边界框(N个样本+ N个对应边)吗?
没有找到相关结果
已邀请:
2 个回复
裸雷胜檀哭
写入\“ color \”和\“ edges \”时,您将有效地写入纹理。 2:您不应该这样做。计算CPU上的边界框,然后对其进行投影(即,将每个角乘以您的ModelViewProjection矩阵)以获取2D边界框 顺便说一句:首先计算边界框,这样就不需要600 * 600的纹理,而是50 * 50的... 编辑:您通常使用glViewPort限制绘制区域。但是,这只是一个视口,您需要多个视口。您可以尝试使用Viewport数组扩展并使用最新技术,或者在纹理中传递AABB,或者在性能很重要之前不必担心... 哦,您不能那样使用Sobel ... Sobel要求您可以读取周围的所有纹理像素,情况并非如此,因为您当前正在渲染所述纹理像素。做出没有MRT(第一种颜色,然后是边缘)的两遍算法,或者不使用Sobel并猜测您在着色器中的边缘(我真的不知道如何)
缮淳彼誊