Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用opengl和cg进行多通道渲染_Opengl_Graphics_Cg - Fatal编程技术网

如何使用opengl和cg进行多通道渲染

如何使用opengl和cg进行多通道渲染,opengl,graphics,cg,Opengl,Graphics,Cg,我想实现一个关于铅笔渲染的算法。现在我有32个不同笔划强度的纹理和一些模型。过程是这样的。首先,我应该使用Phong着色来确定强度。然后我应该将纹理映射到渲染结果 纹理应存储在3d纹理空间中。问题是我不知道如何使用opengl和着色器进行多通道渲染。我不知道如何使用正确的坐标访问纹理。如果网格的面比纹理小怎么办?有人能给我举一些这样做的例子吗?为了进行多次渲染,您需要渲染到某种屏幕外缓冲区帧缓冲区是当前在OpenGL中进行屏幕外渲染的方法。(这不是针对Mac的。) 我不确定我是否理解您关于纹理的

我想实现一个关于铅笔渲染的算法。现在我有32个不同笔划强度的纹理和一些模型。过程是这样的。首先,我应该使用Phong着色来确定强度。然后我应该将纹理映射到渲染结果


纹理应存储在3d纹理空间中。问题是我不知道如何使用opengl和着色器进行多通道渲染。我不知道如何使用正确的坐标访问纹理。如果网格的面比纹理小怎么办?有人能给我举一些这样做的例子吗?

为了进行多次渲染,您需要渲染到某种屏幕外缓冲区<代码>帧缓冲区是当前在OpenGL中进行屏幕外渲染的方法。(这不是针对Mac的。)


我不确定我是否理解您关于纹理的问题,因此无法回答该部分。

纹理是使用您输入的坐标缩放的。因此,对于您正在绘制的每个顶点(可能每一步3个,因为您最有可能绘制三角形),您提供(X,Y)坐标。现在,对于所有这些顶点,您还必须指定它们对应的纹理坐标(间隔[0,1])。感谢您的帮助!该算法的作者说,“确定纹理坐标是在图像空间中完成的”。他使用了一种叫做图像空间过滤法的方法。你知道吗?非常感谢!该算法的作者说,“确定纹理坐标是在图像空间中完成的”。他使用了一种叫做图像空间过滤法的方法。你知道吗?图像空间是图像占据的逻辑区域。纹理是在像素空间中定义的-当调用glTexImage*D()时,您会告诉它图像的像素尺寸。图像空间是您希望它占据的尺寸,而不是它包含的像素数。您可能希望缩小或增大图像(并且可能仅在一个方向或另一个方向)。从一个纹理到另一个纹理的精确转换完全取决于您试图完成的操作-例如,将2D纹理映射到球体上与将木材纹理映射到桌子上是不同的。谢谢您的帮助。我知道一些关于帧缓冲区的知识,但有些东西仍然让我感到困惑。即使可以使用帧缓冲区将内容绘制到FBO,如何使用帧缓冲区进行多通道渲染?例如,我想确定笔划的强度,如何使用渲染纹理来实现这一点?我说清楚了吗?当你创建一个帧缓冲区对象时,你会给它附加一个纹理。你画的任何画都会进入这个纹理。然后,您可以使用该纹理作为绘图下一阶段的输入。谢谢!我有一种感觉!