【问题标题】:glGenFramebuffers, glBindFramebuffer etc undeclaredglGenFramebuffers、glBindFramebuffer 等未声明
【发布时间】:2013-04-20 11:59:30
【问题描述】:

我正在尝试设置帧缓冲区对象,但出现错误。 glGenFramebuffer 总是未声明的,就像 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

请询问更多信息

【问题讨论】:

    标签: opengl framebuffer fbo undeclared-identifier


    【解决方案1】:

    我在我的 windows xp virtualbox 上重新安装了 DevCpp。然后我像往常一样安装了 glut,和 glew devpack 一样。然后它立即起作用。我现在使用版本 4.9.9.2

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 好的,所以当我把 GL/glew.h 放进去时,我得到了一个错误,还有另一个说法“84:2 C:\Dev-Cpp\include\GL\glew.h #error gl .h 包含在 glew.h 之前”。我尝试在 glu.h 之前包含 glew,但后来我得到“中止(程序 collect2)”
      • @AdamKenworthy 尝试在&lt;GL/glut.h&gt; 之前也包含它(因为我认为这也可能带来gl.h)。
      • 在 glut 上方移动 glew 给了我关于订购的同样错误。我在顶部有 #include "WindowingSystem.h",它内部有 #include 。这是否意味着包括windowingsystem也包括我的主文件中的过剩?
      • @AdamKenworthy 好吧,如果它本身包含glut.h,那么当然可以。始终牢记,包含只是简单而愚蠢的文本替换。
      • 我将 glew.h 放入 windowingSystem 并得到“Aborted (program collect2)”。没有其他错误。所以我真的不知道哪里出了问题
      猜你喜欢
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 2020-11-18
      • 2015-01-01
      • 2010-12-19
      • 2011-02-06
      • 2021-11-21
      相关资源
      最近更新 更多