[英]GLEW functions can't be found
我在Ubuntu上,使用OpenGL,GLEW和GLFW編寫應用程序。 我正在使用Eclipse作為我的IDE,嘗試使用諸如glGenRenderbuffer之類的功能時遇到了問題。 我在Windows下設置的結構非常相似,但無法在Linux上運行。
我鏈接到glfw和GLEW庫。 我能夠編譯和運行應用程序的某些部分,並且可以初始化GLFW和GLEW。 從這些測試運行中,我學習以下內容:
OpenGL version: 4.2.0 NVIDIA 304.64
Using GLEW 1.6.0
但是,我無法編譯函數glGenRenderbuffer (或其他framebuffer函數)。 我嘗試將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標頭中,我發現以下幾行:
#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中的項目以某種方式被弄亂了,即使進行了一些更改也無法恢復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.