注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

ocean's blog

平常心——可以寂寞,但不允许空虚

 
 
 

日志

 
 

计算机图形学学习中OpenGL注意事项  

2009-05-30 13:47:40|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

OpenGL(Open Graphics Library)是一个到图形硬件的软件接口,包括了大约250个函数(其中200个在OpenGL核心中,其他50个在OpenGL实用库中),你可以 使用它们来指定物体和操作,以创建交互式三维应用程序。他独立于硬件,可在很多硬件平台上实现。可以访问http://www.opengl.org官方 网站。

Windows下OpenGL注意事项:
1.随时更新glew.h文件,可以到http://glew.sourceforge.net/下载。目前,最新版应该是glew1.5.1。
2.把下载文件中的dll文件放到系统目录windows下的system32目录下,把lib文件放到vc中的lib目录,而头文件----h文件则放到include下。
3.glew.h必须在所有gl类型的头文件的最前面,而windows.h以及stdio.h等IDE开发环境自带的库文件则放在glew.h的前面。
4.为了链接的时候够顺利通过,可以在开发环境中加入,也可使用

   #paragma comment(lib,"*.lib")的方式将要调入的lib文件进行加载。

   如:对于glew.h,就要加载glew32.lib文件。

5.凡是加了glew.h的文件都必须使用glewInit()函数,否则,会出现意想不到的错误。如:对于glMultiDrawElements()就一定要加入glewInit()。因为这个函数在glew32.dll文件中定义。

如下示例(代码为控制台程序 在vc++ 6.0 中测试 / window xp):

//Loading the glew32.lib to our program

#pragma comment(lib, "glew32.lib")

#include <stdio.h>

#include <gl/glew.h>

#include <gl/glut.h>

......

void display(void)

{

//省略

......

}


void init(void)

{

......

}

void reshape(int w, int h)

{

......

}

void keyboard(unsigned char key, int x, int y)

{

......

}


void display(void)
{
......
glMultiDrawElements(GL_LINE_STRIP, count, GL_UNSIGNED_BYTE,indices, 2);
......
}


main(int agrc, char ** argv)
{
   GLenum err;
   glutInit(&argc, argv);
   glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
   glutInitWindowSize (350, 350);
   glutInitWindowPosition (100, 100);
   glutCreateWindow (argv[0]);

   //Calling glewInit() to use the library of glew

    err = glewInit() ;


   if (GLEW_OK != err)
   {  
        return 0;
   }
   init();
   glutDisplayFunc(display);
   glutReshapeFunc(reshape);
   glutKeyboardFunc (keyboard);
   glutMainLoop();
   return 0;
}

注意:如果是在vs 2005中开发,上面代码中的glMultiDrawElements应变为:

glMultiDrawElements(GL_LINE_STRIP,count, GL_UNSIGNED_BYTE,

                             const _cast<const void **>(indices), 2);

或者使用C语言中的强制转换:(const void **) indices

这是由于vs 2005的编译器对于指针的不同支持所导致的。

当然,由于C语言的硬件无关性,你也可以在Linux,Solaris和Mac OS下进行测试。不过,得下载相应的开发包。同样,OpenGL也支持C#和VB,相关的内容可以在google中查询。

学习网站推荐:

          E文:                                                                   

             1.http://nehe.gamedev.net/

             2.http://www.xmission.com/~nate/opengl.html

  评论这张
 
阅读(189)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018