gpt4 book ai didi

c++ - 找不到 GLEW 函数

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:20 25 4
gpt4 key购买 nike

我在 Ubuntu 上使用 OpenGL、GLEW 和 GLFW 编写应用程序。我使用 Eclipse 作为我的 IDE,并且在尝试使用诸如 glGenRenderbuffer 之类的函数时遇到问题。我在 Windows 下设置了一个非常相似的结构,但无法在 Linux 上运行。

我正在链接到库 glfwGLEW。我能够编译和运行我的应用程序的一部分,并且可以初始化 GLFW 和 GLEW。从这些测试运行中,我了解到以下内容:

OpenGL version: 4.2.0 NVIDIA 304.64
Using GLEW 1.6.0

但是,我无法编译函数 glGenRenderbuffer(或其他帧缓冲函数)。我已经尝试将 EXT 和 ARB 添加到名称中,并且没有任何运气地使用 glex.h。据我所知,GLEW 的目的是处理所有扩展问题,对吧?

源文件 (VolumeRenderer.cpp) 包括如下:

#include <glm/gtc/matrix_transform.hpp>
#include <VolumeRenderer.h>
#include <GL/glew.h>
#include <GL/glfw.h>

再往下,我正在尝试使用这样的功能(当然只是部分完整的功能):

bool VolumeRenderer::InitFramebuffers()
{
glGenRenderbuffers(1, &renderBufferObject_);
return true;
}

我得到的只是“函数‘glGenRenderBuffers’无法解析”。

查看我包含的 GL/glew.h header ,我发现以下几行:

#define glGenRenderbuffers GLEW_GET_FUN(__glewGenRenderbuffers)
#define glGenRenderbuffersEXT GLEW_GET_FUN(__glewGenRenderbuffersEXT)

但是编译器还是找不到这个函数。有没有什么我忘记的,或者我可以运行一些测试和检查来查看发生了什么?

最佳答案

好吧,我基本上是通过将我的 Eclipse 项目逐个文件复制到一个新的空项目中来让它工作的。但是,在那之前我还做了一些其他的事情。首先,我按照有用评论中的建议移动了包含内容。我还删除了 glm 之类的东西。没有成功!然后我用一个 .cpp 文件在 Eclipse 中创建了一个简单的项目,并链接到 glfw 和 GLEW:

#include <GL/glew.h>
#include <GL/glfw.h>
#include <iostream>
#include <cstdlib>

int main()
{
if (glfwInit() != GL_TRUE) {
std::cout << "glfwInit() failed\n";
exit(1);
}
if (!glfwOpenWindow(800, 600, 8 , 8, 8, 8, 8, 8, GLFW_WINDOW)) {
std::cout << "glfwOpenWindow() failed\n";
exit(1);
}
char *glVersion = (char*)glGetString(GL_VERSION);
if (glVersion) {
std::cout << "OpenGL version: " << glVersion << "\n";
}
GLenum err = glewInit();
if (err != GLEW_OK) {
std::cout << "GLEW init failed: " << glewGetErrorString(err) << "\n";
exit(1);
} else {
std::cout << "Using GLEW " << glewGetString(GLEW_VERSION) << "\n";
}
GLuint buf;
glGenRenderbuffers(1, &buf);
exit(0);
}

这就像一个魅力。然后我尝试通过创建另一个具有类似文件和包含结构的项目来重现我的老问题,它似乎也工作正常。然后我开始了第三个空项目,我只是简单地复制了最初给我带来麻烦的文件。现在我有了原始项目的精确拷贝(现在更改了包含顺序),并链接了完全相同的库,并且可以正常工作。我仍然不知道发生了什么,但我怀疑我在 Eclipse 中的项目不知何故搞砸了,即使我做了一些更改也无法恢复。

关于c++ - 找不到 GLEW 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15669526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com