zoukankan      html  css  js  c++  java
  • 【转】glu,glut,glext,glew

    在学习OpenGL的过程中,我想,对于除了它自身版本里提供的那些核心函数库外,下面这些也是一个常用GL的人所应该了解的。
      glu是实用库,包含有43个函数,函数名的前缀为glu。Glu 为了减轻繁重的编程工作,封装了OpenGL函数,Glu函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。
    glaux是OpenGL辅助库,包含有31个函数,函数名前缀为aux。这部分函数提供窗口管理、输入输出处理以及绘制一些简单三维物体。
      glut是实用工具库,基本上是用于做窗口界面的,并且是跨平台(所以有时你喜欢做简单的demo的话,可以光用glut就ok了)
      而关于glext,glew,glee则是如下(参考文章:glext; glew, glee这些library的原理):

      下面就是glext为我们做的事:

      (1), 根据显卡厂商对某个extension的具体说明来定义一些宏.

      #define GL_ARRAY_BUFFER_ARB 0×8892 //具体的地址是在各个specification中定义的.
      #define GL_STATIC_DRAW_ARB 0×88E4
    

      (2), 声明一些函数指针的类型.

      typedef void (APIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
      typedef void (APIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
      typedef void (APIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
      typedef void (APIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, int size, const GLvoid *data, GLenum usage);

      然后在我自己的实现中就需要做以下的事:
      (3). 声明定义一些函数指针:

       PFNGLGENBUFFERSARBPROC glGenBuffersARB = NULL;
       PFNGLBINDBUFFERARBPROC glBindBufferARB = NULL;
       PFNGLBUFFERDATAARBPROC glBufferDataARB = NULL;
       PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB = NULL;
    

      (4). 利用wglGetProcAddress函数取得各个函数的地址指针.

       glBindBufferARB = (PFNGLBINDBUFFERARBPROC)wglGetProcAddress(“glBindBufferARB”);
       glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)wglGetProcAddress(“glGenBuffersARB”);
       glBufferDataARB = (PFNGLBUFFERDATAARBPROC)wglGetProcAddress(“glBufferDataARB”);
    


      而其实在glATI.h, wglATI.h, ATIExtensions.h, and ATIExtensions.c中也是这么做的.那些glew, glee就将上面4步都给我们做了.

      所以当使用extensions时候,要么是下载glext回来,自己提供源代码实现(3, 4)两步。要么是直接用glew or glee。

  • 相关阅读:
    java 微信公众号素材 新增其他类型永久素材
    @schedule
    idea 打包的jar运行报 “XXX中没有主清单属性”
    openjdk没有ssl支持的相关证书包,导致使用HTPPS调用第三方接口时候报错误 InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    查询端口是否开通
    企业微信-之无法修改成员手机号
    PostgreSQL使用distinct关键字给单独的几列去重
    centos全屏幕退出:Alt+Enter
    github上OC 和swift框架精选
    github每日精选---iOS版
  • 原文地址:https://www.cnblogs.com/shadow21/p/1874530.html
Copyright © 2011-2022 走看看