C++ 无法在opengl中加载GL_RGBA16F

C++ 无法在opengl中加载GL_RGBA16F,c++,opengl,glfw,glew,C++,Opengl,Glfw,Glew,我的系统规格是i7第三代amd hd7700移动图形英特尔HD4400图形 我想知道我的图形卡是否有问题。 我想知道如何让openGl使用amd图形卡而不是HD图形 我得到一个空白屏幕,我们使用这种方法 我想知道问题是在代码中还是m实现错误 我的帧缓冲区: unsigned int hdrFBO; glGenFramebuffers(1, &hdrFBO); // create floating point color buffer unsigned int colorBuffer; g

我的系统规格是i7第三代amd hd7700移动图形英特尔HD4400图形

我想知道我的图形卡是否有问题。 我想知道如何让openGl使用amd图形卡而不是HD图形

我得到一个空白屏幕,我们使用这种方法

我想知道问题是在代码中还是m实现错误

我的帧缓冲区:

unsigned int hdrFBO;
glGenFramebuffers(1, &hdrFBO);
// create floating point color buffer
unsigned int colorBuffer;
glGenTextures(1, &colorBuffer);
glBindTexture(GL_TEXTURE_2D, colorBuffer);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, SCREEN_WIDTH, SCREEN_HEIGHT, 0, GL_RGBA, GL_FLOAT, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// create depth buffer (renderbuffer)
unsigned int rboDepth;
glGenRenderbuffers(1, &rboDepth);
glBindRenderbuffer(GL_RENDERBUFFER, rboDepth);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, SCREEN_WIDTH, SCREEN_HEIGHT);
// attach buffers
glBindFramebuffer(GL_FRAMEBUFFER, hdrFBO);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorBuffer, 0);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rboDepth);
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
    std::cout << "Framebuffer not complete!" << std::endl;
glBindFramebuffer(GL_FRAMEBUFFER, 0);

要选择应用程序使用的是哪种AMD/Intel驱动程序,请在操作系统级别通过“图形属性”或类似方法进行选择。在应用程序内部,您只能询问当前应用程序的名称(glGetString);但不要选择所需的驱动程序。对于您的“黑屏”问题:在用数据填充纹理之前使用
glActivetexture
。要选择应用程序使用的是哪种AMD/Intel驱动程序,请在操作系统级别通过“图形属性”或类似操作进行选择。在应用程序内部,您只能询问当前应用程序的名称(glGetString);但不要选择所需的。对于您的“空白屏幕”问题:在用数据填充纹理之前使用
glActivetexture
。。
    glm::mat4 view = camera.GetViewMatrix();

    shader.Use();
    glBindFramebuffer(GL_FRAMEBUFFER, hdrFBO);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    GLint texLoc = glGetUniformLocation(shader.Program, "diffuseTexture");
    glUniform1i(texLoc, 0);
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, diffuseMap);



    GLint modelLoc = glGetUniformLocation(shader.Program, "model");
    GLint viewLoc = glGetUniformLocation(shader.Program, "view");
    GLint projLoc = glGetUniformLocation(shader.Program, "projection");

    glUniformMatrix4fv(viewLoc, 1, GL_FALSE, glm::value_ptr(view));
    glUniformMatrix4fv(projLoc, 1, GL_FALSE, glm::value_ptr(projection));

    GLint viewPosLoc = glGetUniformLocation(shader.Program, "viewPos");

    glUniform3f(viewPosLoc, camera.GetPosition().x, camera.GetPosition().y, camera.GetPosition().z);

    glm::mat4 model = glm::mat4();
    model = glm::translate(model, glm::vec3(0.0f, 0.0f, 25.0));
    model = glm::scale(model, glm::vec3(2.5f, 2.5f, 27.5f));
    glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model));

    renderCube();
    glBindFramebuffer(GL_FRAMEBUFFER, 0);







    glBindTexture(GL_TEXTURE_2D, 0);

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    hdrShader.Use();

    GLint texLoc1 = glGetUniformLocation(hdrShader.Program, "hdrBuffer");
    glUniform1i(texLoc1, 0);
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, colorBuffer);

    renderQuad();