'渲染到纹理'和多遍渲染

时间:2012-05-18 08:30:38

标签: opengl graphics shader cg

我正在实施一个关于铅笔渲染的算法。首先,我应该使用Phong着色来渲染模型以确定强度。然后我应该将纹理映射到渲染结果。

我将使用opengl和cg着色器进行多通道渲染。有人告诉我,我应该尝试“渲染纹理”。但我不知道如何使用这种方法来获得我想要的效果。在我看来,我们应该首先使用这种方法来渲染网格,然后我们可以得到关于整个场景的2D纹理。现在我们已经将内容绘制到帧缓冲区,接下来我们应该渲染到屏幕上,对吧?但是如何使用渲染纹理并对其进行一些后处理?有人可以给我看一些关于它的代码或链接吗?

2 个答案:

答案 0 :(得分:1)

我制作了本教程,它可能会对您有所帮助:http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/

然而,我认为使用RTT对你正在尝试做的事情来说太过分了。如果您需要纹理中片段的强度,那么您已经在着色器中使用了它,因此无需再渲染两次...

也许这可能有用吗? http://www.ozone3d.net/demos_projects/toon-snow.php

答案 1 :(得分:0)

  • 渲染到具有Phong着色的纹理
  • 在全屏纹理四边形中再次将纹理绘制到屏幕上,应用可执行所需操作的着色器。

我假设您需要澄清RTT并使用它。

基本上,你的屏幕是一个帧缓冲(非常类似于纹理);它是一天结束时的2D图像。 RTT的想法是捕获2D图像。要做到这一点,最好的方法是使用帧缓冲对象(FBO)(谷歌"帧缓冲对象",然后单击第一个链接)。从这里,你有一个场景的2D图片(你应该通过保存到图像文件来确认它实际上是你想要的)。

获得图像后,您将设置 2D视图并将该图像重新绘制到屏幕上,使用800x600四边形或有什么 - 您。绘图时,使用片段程序(着色器),将图像的亮度转换为灰度值。你可以输出它,或者你可以用它作为另一个的偏移,"铅笔"质地。