微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ubuntu下安装OpenGL/Glut库

http://www.libaqiang.com/?p=78330

1.Ubuntu下安装OpenGL/glut库
OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。

ubuntu下安装OpenGL的方式如下:
sudo apt-get install freeglut3 freeglut3-dev #freeglut是一款开源的图形编程接口
sudo apt-get install binutils-gold #Ubuntu>=11.10的版本需要安装此包以解决连接问题

2. 通过链接OpenGL/glut库来编译文件
g++ -lGL -lglut color_cube.cpp -o color_cube

3.解决编译时的链接错误问题
问题:
undefined reference to `gluPerspective’
collect2: ld returned 1 exit status
undefined reference to “gluLookAt”

解决办法:
g++ -lGL -lglu -lglut color_cube.cpp -o color_cube

4.一段实例程序:
#include
#include
GLboolean polySmooth = GL_TRUE;
static void init(void){
glCullFace (GL_BACK);
glEnable (GL_CULL_FACE);
glBlendFunc (GL_SRC_ALPHA_SATURATE,GL_ONE);
glClearColor (0.0,0.0,0.0);
}
#define NFACE 6
#define NVERT 8
void drawCube(GLdouble x0,GLdouble x1,GLdouble y0,GLdouble y1,GLdouble z0,GLdouble z1){
static GLfloat v[8][3];
static GLfloat c[8][4] = {
{0.0,1.0},{1.0,
{0.0,1.0,1.0}
};
/* indices of front,top,left,bottom,right,back faces */
static glubyte indices[NFACE][4] = {
{4,5,6,7},{2,3,7,6},{0,4,3},
{0,1,4},{1,2},2,1}
};
v[0][0] = v[3][0] = v[4][0] = v[7][0] = x0;
v[1][0] = v[2][0] = v[5][0] = v[6][0] = x1;
v[0][1] = v[1][1] = v[4][1] = v[5][1] = y0;
v[2][1] = v[3][1] = v[6][1] = v[7][1] = y1;
v[0][2] = v[1][2] = v[2][2] = v[3][2] = z0;
v[4][2] = v[5][2] = v[6][2] = v[7][2] = z1;
#ifdef GL_VERSION_1_1
glEnableClientState (GL_VERTEX_ARRAY);
glEnableClientState (GL_COLOR_ARRAY);
glVertexPointer (3,GL_FLOAT,v);
glColorPointer (4,c);
glDrawElements (GL_QUADS,NFACE*4,GL_UNSIGNED_BYTE,indices);
gldisableClientState (GL_VERTEX_ARRAY);
gldisableClientState (GL_COLOR_ARRAY);
#else
printf (“If this is GL Version 1.0,“);
printf (“vertex arrays are not supported.n”);
exit(1);
#endif
}

/* Note: polygons must be drawn from front to back
* for proper blending.
*/
void display(void) {
if (polySmooth) {
glClear (GL_COLOR_BUFFER_BIT);
glEnable (GL_BLEND);
glEnable (GL_polyGON_SMOOTH);
gldisable (GL_DEPTH_TEST);
}else {
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
gldisable (GL_BLEND);
gldisable (GL_polyGON_SMOOTH);
glEnable (GL_DEPTH_TEST);
}
glPushmatrix ();
glTranslatef (0.0,-8.0);
glrotatef (30.0,0.0);
glrotatef (60.0,0.0);
drawCube(-0.8,0.8,-0.8,0.8);
glPopMatrix ();
glFlush ();
}

void reshape(int w,int h) {
glViewport(0,(GLsizei) w,(GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30.0,(GLfloat) w/(GLfloat) h,20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

/* ARGSUSED1 */
void keyboard(unsigned char key,int x,int y) {
switch (key) {
case ‘t’:
case ‘T’:
polySmooth = !polySmooth;
glutPostRedisplay();
break;
case 27:
exit(0); /* Escape key */
break;
default:
break;
}
}

/* Main Loop */ int main(int argc,char** argv) { glutinit(&argc,argv); glutinitdisplayMode (gluT_SINGLE | gluT_RGB | gluT_ALPHA | gluT_DEPTH); glutinitwindowSize(400,400); glutCreateWindow(“OpenGL Color Cube”); init (); glutReshapeFunc (reshape); glutKeyboardFunc (keyboard); glutdisplayFunc (display); glutMainLoop(); return 0; }

原文地址:https://www.jb51.cc/ubuntu/354977.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐