WIN7&Ubuntu配置OpenGL详解(附.h, .lib, .dll 文件)
来源:互联网 发布:python量化交易 github 编辑:程序博客网 时间:2024/05/29 07:05
最近要用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-essentialsudo apt-get install libgl1-mesa-devsudo apt-get install libglu1-mesa-devsudo 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, 0.0); glMatrixMode(GL_PROJECTION); glOrtho(-5, 5, -5, 5, 5, 15); glMatrixMode(GL_MODELVIEW); gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0); return;}void display(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 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 mathimport timeh=0m=0s=0def 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()
- WIN7&Ubuntu配置OpenGL详解(附.h, .lib, .dll 文件)
- VS2012+OpenGL (涵盖GLUT+GLEW+FreeGlut+GLTools) h lib 和dll文件
- 关于dll,lib,h文件
- Visual Studio 项目中添加include, lib, dll库文件(*.h,*.lib,*.dll)
- Visual Studio 项目中添加include, lib, dll库文件(*.h,*.lib,*.dll)
- Visual Studio 项目中添加include, lib, dll库文件(*.h,*.lib,*.dll)
- Visual Studio 项目中添加include, lib, dll库文件(*.h,*.lib,*.dll)
- Visual Studio 项目中添加include, lib, dll库文件(*.h,*.lib,*.dll)
- Visual C++ : H, Lib, DLL配置!
- dll, lib, .h文件的关系
- .h .lib .dll文件作用和区别
- VS2013中添.h/.lib/.dll文件
- lib文件和dll文件详解
- 模块封装(H,Lib,Dll)
- .h .lib .dll
- .DLL、.LIB、.H文
- C#中使用OpenGL:(三)将.lib文件编译为.dll文件
- DLL导出lib文件和.h头文件
- (转)深入理解JavaScript系列(4):立即调用的函数表达式
- 2017年第八届山东省ACM大学生程序设计竞赛后记
- sqlserver 分页
- 给ubuntu14.04Desktop 64Bit版本加一个硬盘(草稿版本)
- 移动端web开发技巧
- WIN7&Ubuntu配置OpenGL详解(附.h, .lib, .dll 文件)
- 网络图片浏览器
- 各种兼容性的处理
- javaScript中的设计模式(4)动态原型模式
- 幂律分布
- windows下Python使用多进程的问题
- Chapter 01 Computer Graphics Hardware
- java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFi
- 维护篇 02. 更改注册信息 ❀ 飞塔 (Fortinet) 防火墙