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 在单个FBO中使用不同着色器渲染两个VBO对象_Opengl_Glut_Vbo_Framebuffer_Fbo - Fatal编程技术网

Opengl 在单个FBO中使用不同着色器渲染两个VBO对象

Opengl 在单个FBO中使用不同着色器渲染两个VBO对象,opengl,glut,vbo,framebuffer,fbo,Opengl,Glut,Vbo,Framebuffer,Fbo,我很难找到使用简单的God Ray着色器和另一个VBO对象drawS()渲染立方体的方法。。这段代码给了我两个对象具有相同的上帝射线效果。我的目的是让绘画有自己的效果。有什么想法吗 void COpenGLRenderer::渲染(浮动帧时间) { //绑定FBO--------------------------------------------------------------------------------------------------------------- if(Blu

我很难找到使用简单的God Ray着色器和另一个VBO对象drawS()渲染立方体的方法。。这段代码给了我两个对象具有相同的上帝射线效果。我的目的是让绘画有自己的效果。有什么想法吗

void COpenGLRenderer::渲染(浮动帧时间) { //绑定FBO---------------------------------------------------------------------------------------------------------------

if(Blur)
{
    glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, FBO);
    glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, ColorBuffer, 0);
    glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,
        GL_DEPTH_ATTACHMENT_EXT,
        GL_RENDERBUFFER_EXT, depth_rb);
//

// render scene -----------------------------------------------------------------------------------------------------------


glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


glMatrixMode(GL_MODELVIEW);
glLoadMatrixf(&ViewMatrix);

glEnable(GL_DEPTH_TEST);
/*glPushMatrix();
glTranslatef(5.0, 3.0, 5.0);
glColor3f(1.0f, 1.0f, 1.0f);
glutSolidSphere(0.5, 20.0, 12.0);
glPopMatrix();*/
glColor3f(1.0f, 0.0f, 0.0f);
glutSolidCube(5.0);

glMatrixMode(GL_MODELVIEW);
glLoadMatrixf(&ViewMatrix);
glTranslatef(-30.0f, 0.0f, 0.0f);
glEnable(GL_DEPTH_TEST);
drawS();
    glDisable(GL_DEPTH_TEST);

//glDrawBuffer(GL_FRONT);

glBindTexture(GL_TEXTURE_2D, 0);

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);

// blur ColorBuffer texture -----------------------------------------------------------------------------------------------
glBindTexture(GL_TEXTURE_2D, ColorBuffer);

//glDisable(GL_DEPTH_TEST);

//if(Blur)
//{
    glUseProgram(GodRays);


    glBegin(GL_QUADS);

    glVertex2f(0.0f, 0.0f);
    glVertex2f(1.0f, 0.0f);
    glVertex2f(1.0f, 1.0f);
    glVertex2f(0.0f, 1.0f);
    glEnd();

    //glClear(GL_DEPTH_BUFFER_BIT);
//glClear(GL_DEPTH_BUFFER_BIT);

    glUseProgram(0);
}

}

我很难理解你的问题。标题说明要使用两个着色器。但是代码只使用了一个。您是否尝试使用第二个着色器?你有什么问题吗?我的目标实际上是在同一帧缓冲区上运行两个着色器一个着色器在一个VBO对象上实现,另一个着色器在另一个对象上单独运行。