glGenFramebuffers,glBindFramebuffer等未声明

时间:2013-04-26 10:29:47

标签: opengl framebuffer fbo undeclared-identifier

我试图设置一个帧缓冲区对象,但是我遇到了错误。 glGenFramebuffers总是未声明的,就像glBindFramebuffer等其他类似的东西一样。

我认为这个问题与导入有关,但我不确定如何解决这个问题。 glew有可能无法正确设置,但我还没有找到如何完全设置它的简单解释。

这是失败的代码。

myBuffer = 0;
glGenFramebuffers(1, &myBuffer);
glBindFramebuffer(GL_FRAMEBUFFER, myBuffer); 


glGenTextures(1, &renderedTexture);

// Bind to new texture
glBindTexture(GL_TEXTURE_2D, renderedTexture);

// Blank image
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGB, 1024, 768, 0,GL_RGB, GL_UNSIGNED_BYTE, 0);


glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);


glGenRenderbuffers(1, &dBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, dBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, 1024, 768);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, dBuffer);



// Set "renderedTexture" as colour attachement #0
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, renderedTexture, 0);

DrawBuffers[2] = {GL_COLOR_ATTACHMENT0};

    glDrawBuffers(1, DrawBuffers); // "1" is the size of DrawBuffers
    // Check framebuffer is ok
      if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
      return false;

这些是我的导入

#include "WindowingSystem.h"           
#include <math.h>
#include <vector>
#include <windows.h>
#include <GL/glut.h>
#include <iostream>
#include <string>
#include <sstream>    
#include <windows.h>
#include <mmsystem.h>
#include <GL/glu.h>
#include <GL/gl.h>

这是我的联系人     -lglut32 -lglu32 -lglew32 -lopengl32 -lwinmm

这是一个指向我的编译器选项图像的链接 https://dl.dropboxusercontent.com/u/13330596/info.png

我在Windows机器上使用32位版本的Dev C ++

这是整个代码文件的链接 https://dl.dropboxusercontent.com/u/13330596/Exercise1.cpp

请询问更多信息

2 个答案:

答案 0 :(得分:5)

您似乎已经正确地链接到glew32.lib,但我认为您实际上并未包含<GL/glew.h> 而不是 <GL/gl.h>。后者仅向OpenGL 1.1声明函数,而前者为所有扩展和核心功能提供声明&gt; 1.1(如FBO)。

答案 1 :(得分:0)

我在windows xp virtualbox上重新安装了DevCpp。然后我正常安装过量,与glew devpack一样。然后它立即开始工作。我现在使用版本4.9.9.2