WIN7&Ubuntu配置OpenGL详解(附.h, .lib, .dll 文件)

前端之家收集整理的这篇文章主要介绍了WIN7&Ubuntu配置OpenGL详解(附.h, .lib, .dll 文件)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近要用OpenGL跑人脸模型,于是开始捣鼓怎么配置openGL。但网上的各种博客,虽说讲的很详细,但给出的步骤总是不全,让我这样的小白很是苦恼,倒腾了不下十个博客解决。所以,为了不让之后的小白苦恼,也为了自己能更熟悉,在此进行步骤详解。

Tips: 1)WIN7(X64)下运行环境为Microsoft Visual Studio 2013,仅使用C++

2)Ubuntu(14.04)下运行语言为C++和python,两者都进行配置

3)涉及到OpenGL的版本问题,建议使用3、4版本,因为相较1、2有了根本性的改变,一般系统自带OpenGL1版本,但只要更新显卡驱动,就会更新到合适的OpenGL新版本,因此无需纠结OpenGL版本问题,直接更新显卡驱动就行!(在此曾经很困惑,因此强调)


好了,开始放大招!

一、WIN7(X64)配置OpenGL

1.首先下载所需的各种files,包括.h头文件,.lib静态库文件,.dll动态库文件百度链接http://pan.baidu.com/s/1qXVGDAG

1)压缩包中大体可以分为文件,OpenGL文件,GLUT文件,GLEW文件

此处使用的GLUT文件是98年的闭源代码,现在也有开源的freeglut文件,但使用的API接口基本一致,且GLUT只是提供窗口平台,具体的绘图均由OpenGL提供,故没有什么区别。

2)GLWE的 .lib 和 .dll文件有WIN32和X64之分,故均放入压缩包中,复制时根据需要选择。

3)所有的 .h文件均放入:Microsoft Visual Studio 12.0/VC/include/GL文件夹中,要是没有GL文件夹,就新建一个

4)所有的 .lib文件均放入:Microsoft Visual Studio 12.0/VC/lib文件夹中,如文件夹中已有一些文件,建议保留最新的。

5)所得的 .dll文件均放入:C:\Windows\System32中,为保险期间,也在C:\Windows\SysWOW64中放一份。

2.文件都放置好后,在新建VS2013的程序时,只需要在“属性->链接器->输入->附加依赖项”中将上述中除去GLWE相关的 .lib文件加入即可(其实不需要全加,但加入也无妨)

3.就此配置完成,可以进行程序测试,测试代码如下:

#include <GL/glut.h>
#pragma comment( linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
void dis(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glRectf(-0.5f,-0.5f,0.5f,0.5f);
	glFlush();
}

int main(int argc,char *argv[])
{
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
	glutInitWindowPosition(100,100);
	glutInitWindowSize(400,400);
	glutCreateWindow("the first openGL");
	glutDisplayFunc(&dis);
	glutMainLoop();
	return 0;
}

、Ubuntu(14.04)配置OpenGL

1.安装C++相关的包:

sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install freeglut3 freeglut3-dev
2.开始测试程序,先新建test.c文件,再编译,在运行。

1)test.c文件内容如下:

#include <GL/glut.h>

void init(void)
{
    glClearColor(0.0,0.0,0.0);
    glMatrixMode(GL_PROJECTION);
    glOrtho(-5,5,-5,15);
    glMatrixMode(GL_MODELVIEW);
    gluLookAt(0,10,1,0);

    return;
}

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0,0);
    glutWireTeapot(3);
    glFlush();

    return;
}

int main(int argc,char *argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowPosition(0,0);
    glutInitWindowSize(300,300);
    glutCreateWindow("OpenGL 3D View");
    init();
    glutDisplayFunc(display);
    glutMainLoop();

    return 0;
}

2)编译并运行:
gcc ./test.c -lGL -lGLU -lglut -o test 
./test

3.安装pyOpenGL,一句命令:
sudo pip install pyopengl

4.测试python代码
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
import math
import  time
h=0
m=0
s=0
def Draw():
    PI=3.1415926
    R=0.5
    TR=R-0.05
    glClear(GL_COLOR_BUFFER_BIT)
    glLineWidth(5)
    glBegin(GL_LINE_LOOP)
    for i in range(100):
        glVertex2f(R*math.cos(2*PI/100*i),R*math.sin(2*PI/100*i))
    glEnd()
    glLineWidth(2)
    for i in range(100):
        glBegin(GL_LINES)
        glVertex2f(TR*math.sin(2*PI/12*i),TR*math.cos(2*PI/12*i))
        glVertex2f(R*math.sin(2*PI/12*i),R*math.cos(2*PI/12*i))
        glEnd()
    glLineWidth(1)

    h_Length=0.2
    m_Length=0.3
    s_Length=0.4
    count=60.0
    s_Angle=s/count
    count*=60
    m_Angle=(m*60+s)/count
    count*=12
    h_Angle=(h*60*60+m*60+s)/count
    glLineWidth(1)
    glBegin(GL_LINES)
    glVertex2f(0.0,0.0)
    glVertex2f(s_Length*math.sin(2*PI*s_Angle),s_Length*math.cos(2*PI*s_Angle))
    glEnd()
    glLineWidth(5)
    glBegin(GL_LINES)
    glVertex2f(0.0,0.0)
    glVertex2f(h_Length*math.sin(2*PI*h_Angle),h_Length*math.cos(2*PI*h_Angle))
    glEnd()
    glLineWidth(3)
    glBegin(GL_LINES)
    glVertex2f(0.0,0.0)
    glVertex2f(m_Length*math.sin(2*PI*m_Angle),m_Length*math.cos(2*PI*m_Angle))
    glEnd()
    glLineWidth(1)
    glBegin(GL_POLYGON)
    for i in range(100):
        glVertex2f(0.03*math.cos(2*PI/100*i),0.03*math.sin(2*PI/100*i));
    glEnd()
    glFlush()
def Update():
    global h,m,s
    t=time.localtime(time.time())
    h=int(time.strftime('%H',t))
    m=int(time.strftime('%M',t))
    s=int(time.strftime('%S',t))
    glutPostRedisplay()

glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(400,400)
glutCreateWindow("My clock")
glutDisplayFunc(Draw)
glutIdleFunc(Update)
glutMainLoop()

猜你在找的Ubuntu相关文章