2015年3月26日星期四

OpenGL在Ubuntu初始配置问题汇集

简单的OpenGL配置在此不多说,glut.h什么的不在此文范围

本文主要针对自己测试/学习各种奇葩代码时所遇到的形形色色问题而总结


1. fatal error: GL/glew.h: No such file or directory


  • sudo apt-get install libglew-dev 即可解决
如图





2. fatal error: GLFW/glfw3.h: No such file or directory
这是个大麻烦,参考了How to build & install GLFW 3 and use it in a Linux projectubuntu 14.04下编译GLFW3筛选了,找到了如下完美解决方案

  • 下载GLFW源代码
  • 安装cmake cmake-gui  使用sudo apt-get install cmake cmake-gui
  • 安装编译环境,sudo apt-get build-dep glfw or sudo apt-get build-dep glfw3 sudo apt-get install cmake xorg-dev libglu1-mesa-dev
  • 进入GLFW.zp解压后的目录,....cd glfw-3.X.X 
  • 尽情地make和 sudo make install,看着代码刷刷刷飞过,特别舒服编译完成后,会显示安装完成的目录所在,我的是
  • 不要忘了测试,新建test.cpp,贴进如下代码:
#include 
#include 
#include 
static void error_callback(int error, const char* description)
{
    fputs(description, stderr);
}
static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
    if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
        glfwSetWindowShouldClose(window, GL_TRUE);
}
int main(void)
{
    GLFWwindow* window;
    glfwSetErrorCallback(error_callback);
    if (!glfwInit())
        exit(EXIT_FAILURE);
    window = glfwCreateWindow(640, 480, "Simple example", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        exit(EXIT_FAILURE);
    }
    glfwMakeContextCurrent(window);
    glfwSetKeyCallback(window, key_callback);
    while (!glfwWindowShouldClose(window))
    {
        float ratio;
        int width, height;
        glfwGetFramebufferSize(window, &width, &height);
        ratio = width / (float) height;
        glViewport(0, 0, width, height);
        glClear(GL_COLOR_BUFFER_BIT);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(-ratio, ratio, -1.f, 1.f, 1.f, -1.f);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        glRotatef((float) glfwGetTime() * 50.f, 0.f, 0.f, 1.f);
        glBegin(GL_TRIANGLES);
        glColor3f(1.f, 0.f, 0.f);
        glVertex3f(-0.6f, -0.4f, 0.f);
        glColor3f(0.f, 1.f, 0.f);
        glVertex3f(0.6f, -0.4f, 0.f);
        glColor3f(0.f, 0.f, 1.f);
        glVertex3f(0.f, 0.6f, 0.f);
        glEnd();
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    glfwDestroyWindow(window);
    glfwTerminate();
    exit(EXIT_SUCCESS);
}


  • g++ -std=c++11 -c test.cpp生成.o文件
  • g++ test.o -o test.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
  • Enjoy it
3.又出现了新的问题fatal error: glm.hpp: No such file or directory

缺少glm.hpp文件,需要安装glm,即OpenGL Mathematics,下载之,解压之,得到glm文件夹,其中还有同名子文件夹glm,其余还有doc文件夹,里边有glm的文档说明pdf。
  
  值得注意的是,glm只是一个C++的库,不需要去build它。

  cd进入glm根目录,对子文件夹glm进行操作 sudo cp -r glm/ /usr/local/include/ ,-r是复制所有子文件子文件夹。

按照官方说明安装好了,可是我的问题又出来了——还是报错。。。。绞尽脑汁,反复谷歌,还是没有找出问题。脑子一拍,看了下头文件**.h 头文件,娘西皮的,竟然是#include<glm.hpp>,而我的路径是/include/glm/glm.hpp。修改头文件为#include<glm/glm.hpp>问题就解决了!

4.fatal error: : No such file or directory

谁能告诉我opencv2和opencv是不是一代二代的关系,心力憔悴,先睡去了。

-------------睡不着我又回来了-------------

应该头文件opencv2是opencv里边的,不管怎么样,先安装opencv吧
下载最新的opencv.sh文件,cd进入此目录。执行chmod +x opencv.sh ,然后./opencv.sh


没有评论:

发表评论