Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/153.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光散射:FBO和帧缓冲区混合_Opengl_Framebuffer_Fbo - Fatal编程技术网

OpenGL光散射:FBO和帧缓冲区混合

OpenGL光散射:FBO和帧缓冲区混合,opengl,framebuffer,fbo,Opengl,Framebuffer,Fbo,我正在尝试使用OpenGL创建光散射效果。 我正在关注这一点 在某种程度上,它说: 切换到正交投影并将FBO与帧缓冲区混合,激活着色器以生成“上帝的光线”效果 我不明白“混合FBO和帧缓冲区”是什么意思。我寻找这个“混合”,我注意到这是一个OpenGL管道步骤 我想我应该使用函数glEnablei(GL_BLEND,fbo),但我不知道应该在哪里调用它 为了绘制网格(场景有一个网格和一个光源),我使用glDrawArrays(GLU三角形,0,n个顶点) 有人能帮帮我吗?啊,你引用的说明写得太混

我正在尝试使用OpenGL创建光散射效果。 我正在关注这一点

在某种程度上,它说:

切换到正交投影并将FBO与帧缓冲区混合,激活着色器以生成“上帝的光线”效果

我不明白“混合FBO和帧缓冲区”是什么意思。我寻找这个“混合”,我注意到这是一个OpenGL管道步骤

我想我应该使用函数glEnablei(GL_BLEND,fbo),但我不知道应该在哪里调用它

为了绘制网格(场景有一个网格和一个光源),我使用glDrawArrays(GLU三角形,0,n个顶点)


有人能帮帮我吗?

啊,你引用的说明写得太混乱了。它要求您做的是使用渲染上帝光线的纹理(使用FBO)并在顶部绘制主(非FBO)帧缓冲区中的纹理,使用单个全视口纹理四元体。“混合”的说明要求您启用混合(此后绘制的所有内容将与之前步骤中绘制的内容混合,包括其他混合内容),并选择适当的混合功能;(GL_-ONE,GL_-ONE)将是照明效果材料的明显例子。

啊,你引用的说明写得不必要的混乱。它要求您做的是使用渲染上帝光线的纹理(使用FBO)并在顶部绘制主(非FBO)帧缓冲区中的纹理,使用单个全视口纹理四元体。“混合”的说明要求您启用混合(此后绘制的所有内容将与之前步骤中绘制的内容混合,包括其他混合内容),并选择适当的混合功能;(GL_-ONE,GL_-ONE)将是照明效果材料的明显例子。

啊,你引用的说明写得不必要的混乱。它要求您做的是使用渲染上帝光线的纹理(使用FBO)并在顶部绘制主(非FBO)帧缓冲区中的纹理,使用单个全视口纹理四元体。“混合”的说明要求您启用混合(此后绘制的所有内容将与之前步骤中绘制的内容混合,包括其他混合内容),并选择适当的混合功能;(GL_-ONE,GL_-ONE)将是照明效果材料的明显例子。

啊,你引用的说明写得不必要的混乱。它要求您做的是使用渲染上帝光线的纹理(使用FBO)并在顶部绘制主(非FBO)帧缓冲区中的纹理,使用单个全视口纹理四元体。“混合”的说明要求您启用混合(此后绘制的所有内容将与之前步骤中绘制的内容混合,包括其他混合内容),并选择适当的混合功能;(GL_ONE,GL_ONE)将是照明效果材料的明显选择。

我认为你不想要
glEnablei(GL_BLEND,fbo)
,这是胡说八道,除非
fbo
是单绘制缓冲区(fbo附件)的索引。通常,
fbo
将是fbo的名称;)这是基本的多次渲染,通常的过程是绘制纹理附件,然后在第二次渲染时,使用混合设置在视口上拉伸该纹理。老实说,我也不理解“将FBO与帧缓冲区混合”的含义=P这里感兴趣的是附加到FBO的单个图像;FBO(例如深度)混合的某些部分对您来说毫无意义。我不认为您想要
glEnablei(GL_BLEND,FBO)
,这是胡说八道,除非
FBO
是单个绘图缓冲区(FBO附件)的索引。通常,
fbo
将是fbo的名称;)这是基本的多次渲染,通常的过程是绘制纹理附件,然后在第二次渲染时,使用混合设置在视口上拉伸该纹理。老实说,我也不理解“将FBO与帧缓冲区混合”的含义=P这里感兴趣的是附加到FBO的单个图像;FBO(例如深度)混合的某些部分对您来说毫无意义。我不认为您想要
glEnablei(GL_BLEND,FBO)
,这是胡说八道,除非
FBO
是单个绘图缓冲区(FBO附件)的索引。通常,
fbo
将是fbo的名称;)这是基本的多次渲染,通常的过程是绘制纹理附件,然后在第二次渲染时,使用混合设置在视口上拉伸该纹理。老实说,我也不理解“将FBO与帧缓冲区混合”的含义=P这里感兴趣的是附加到FBO的单个图像;FBO(例如深度)混合的某些部分对您来说毫无意义。我不认为您想要
glEnablei(GL_BLEND,FBO)
,这是胡说八道,除非
FBO
是单个绘图缓冲区(FBO附件)的索引。通常,
fbo
将是fbo的名称;)这是基本的多次渲染,通常的过程是绘制纹理附件,然后在第二次渲染时,使用混合设置在视口上拉伸该纹理。老实说,我也不理解“将FBO与帧缓冲区混合”的含义=P这里感兴趣的是附加到FBO的单个图像;FBO(例如深度)混合的某些部分对我来说毫无意义。对不起,我觉得在我的工作中有点noob XD。我有两个着色器和两个着色器:一个用于正常绘制网格的着色器(PRE),另一个用于创建上帝光线效果的片段着色器(POST)。因此,我应该做的是:1)在FBO中绘制黑色网格,使用预着色器2)在FBO中绘制上帝射线,混合,使用后着色器,3)交换到正常帧缓冲区4)正常绘制网格5)绘制FBO,我觉得在我的工作中有点不对劲