(转)glut函数详解(1)--glut初始化API

*转自:http://old.blog.edu.cn/user3/zjdukang/archives/2007/1751751.shtml
(1)    void glutInit(int *argc, char **argv);
     这个函数用来初始化GLUT库.这个函数从main函数获取其两个参数.对应main函数的形式应是:int main(int argc,char* argv[]);
//*******************************************************************************************
(2)    void glutInitDisplayMode(unsigned int mode);
设置图形显示模式.参数mode的可选值为:
     GLUT_RGBA:当未指明GLUT—RGBA或GLUT—INDEX时,是默认使用的模式.表明欲建立RGBA模式的窗口.
     GLUT_RGB:与GLUT—RGBA作用相同.
     GLUT_INDEX:指明为颜色索引模式.
     GLUT_SINGLE:只使用单缓存
     GLUT_DOUBLE:使用双缓存.以避免把计算机作图的过程都表现出来,或者为了平滑地实现动画.
     GLUT_ACCUM:让窗口使用累加的缓存.
     GLUT_ALPHA:让颜色缓冲区使用alpha组件.
     GLUT_DEPTH:使用深度缓存.
     GLUT_STENCIL:使用模板缓存.
     GLUT_MULTISAMPLE:让窗口支持多例程.
     GLUT_STEREO:使窗口支持立体.
     GLUT_LUMINACE:luminance是亮度的意思.但是很遗憾,在多数OpenGL平台上,不被支持.
//******************************************************************************************
(3)    void glutInitWindowPosition(int x, int y);
设置初始窗口的位置(窗口左上角相对于桌面坐标(x,y))
//******************************************************************************************
(4)    void glutInitWindowSize(int width, int height);
设置初始窗口的大小
//******************************************************************************************
(5)    void glutMainLoop(void);
让glut程序进入事件循环.在一个glut程序中最多只能调用一次,且必须调用.一旦调用,会直到程序结束才返回.
//******************************************************************************************
(6)    void glutInitDisplayString(const char *string);
通过一个字符串初始化display mode
参数:string:display mode的描述字符串
这个描述字符串用在创建顶级窗口,子窗口和重叠层时,给将要被创建的窗口或重叠层设置display mode.
这个字符串是由0个或多个功能描述参数组成,每个功能描述参数用空格或tab键隔开.(若未给参数限制缓存精度大小,则采用默认值)

例如:
glutInitDisplayString("stencil~2 rgb double depth>=16 samples");
上例将窗口初始化为至少2位的模板缓存,RGB模式alpha占用位数为0,深度缓存至少为16位,如果平台支持的话使用mutlisampling技术.
可以使用的符号有:
=   等号
!=  不等号
<   小于号(越小越好)
>   大于号(越大越好)
<=  小于等于(越小越好)
>=  大于等于(尽可能选择大的数值,主要用于颜色缓存或深度缓存等对位数要求高的参数设置)
~   大于等于(但尽可能选择小的数值,有效利用资源,主要用于模板缓存等)
 
主要参数:
alpha : alpaha缓存精度, 默认值>=1,即大于等于1位;
acca  : red, green, blue, 和alpha累积缓存精度, 默认值>=1
acc  :  red, green, blue累积缓存精度, 默认值>=1,alpha累积缓存精度为0;
blue :  blue颜色缓存精度, 默认值>=1;
buffer: 颜色索引缓存精度, 默认值>=1;
conformant :布尔值,指示帧缓存配置是否一致,该值基于GLX的EXT_visual_rationg扩展的支持,若不支持,则默认为一致, 默认值=1;
depth : 深度缓存精度, 默认值>=12;
double: 布尔值,指示颜色缓存是否是双倍缓存. 默认值=1;
green : green颜色缓存精度,默认值>=1;
index : 布尔值,指示是否为颜色索引,true表示是颜色索引, 默认值>=1;
num  :  专用名词,指示数值表示的第n个帧缓存配置与这个描述字符串相符合的地方,当没有指定,则glutInitDisplayString也返回初始(最佳符合)配置.
red :   red颜色缓存精度, 默认值>=1;
rgba :  rgba模式,颜色缓存精度默认值>=1;
rgb :   rgb模式,颜色缓存精度默认值>=1,alpha精度=0;
luminance: 设置red颜色缓存精度,默认值>=1,其他颜色缓存精度=0(alpha没有指定);
stencil: 模板缓存精度
single: 布尔值,指示颜色缓存是否为单缓存, 默认值=1;
stereo :布尔值,标示颜色缓存支持OpenGL的三维系统,默认值=1;
samples: 标示multisamples的值,这个值是基于GLX的SGIS_multisample的扩展.默认值<=4.这个默认值表示如果支持的话可以在glutInitDisplayString中添加描述参数让glut请求multipsampling;
slow :  布尔值,标示帧缓存配置是否是slow的.对于X11对glut的执行,slow信息是基于GLX的EXT_visual_rating扩展的支持,如果不支持,就认为是fast;对于win32对glut的执行,slow是基于像素格式描述(pixel format Descriptor即PFD)被标记为"generic"并且未被标记为"accelerated",这说明Microsoft关于slow的OpenGL执行只用在PFD中.这个参数的作用是帮助程序避免对于当前机器的帧缓存配置越来越慢.默认值>=0,表示slow visuals优先于fast visuals,但fast visuals仍然被允许.
win32pdf : 只在win32系统中识别glut的请求,这个参数与win32中的像素格式(pixel format)相匹配,它的值是个数字
xvisual: 只在X Window系统中识别glut的请求,这个参数与X visual ID相匹配,它的值是个数字
xstaticgray:  只在X Window系统中识别glut请求,是个布尔值,标示帧缓存配置的X visual是否是StaticGray. 默认值=1
xgrayscale  : 只在X Window系统中识别glut的请求,是个布尔值,标示帧缓存配置的X visual是否是GrayScale. 默认值=1;
xstaticcolor:  只在X Window系统中识别glut的请求,是个布尔值,标示帧缓存配置的X visual是否是StaticColor. 默认值=1;
xpseudocolor : 只在X Window系统中识别glut的请求,是个布尔值,标示帧缓存配置的X visual是否是PsuedoColor. 默认值=1;
xtruecolor  :  只在X Window系统中识别glut的请求,是个布尔值,标示帧缓存配置的X visual是否是TrueColor. 默认值=1;
xdirectcolor : 只在X Window系统中识别glut的请求,是个布尔值,标示帧缓存配置的X visual是否是DirectColor. 默认值=1;
//*******************************************************************************************
网上没有搜到关于glut的完整资料,于是下狠心自己花时间整理了一下.这里只是glut初始化的API,其中void glutInitDisplayString(const char *string);在国内网站上没搜到具体解释,是从国外网站上翻译过来的,本人英文水平有限,可能有错误,下面贴上英文原文,望达人指点.(其他API 会在以后分类后陆续给出).
 
void glutInitDisplayString(const char *string)  - sets the initial display mode via a string.
string:Display mode description string, see below.
Description:
The initial display mode description string is
used  when creating top-level windows,subwindows,
and overlays to determine the OpenGL display mode
for the to-be-created window or overlay.
The string is a list of zero or more capability
descriptions separated by spaces and tabs.Each
capability description is a capability name that
is optionally followed by a comparator and a
numeric value.For example,"double" and "depth>=12"
are both valid criteria.
The capability descriptions are translated into
a set of criteria used to select the appropriate
frame buffer  configuration.
The criteria are matched in strict left to right
order of precdence.That is,the first specified
criteria(leftmost) takes precedence over the later
criteria for nonexact criteria (greater than,less
than,etc.comparators).Exact criteria (equal, not
equal compartors) must match exactly so precedence
is not relevant.
The numeric value is an integer that is parsed
according to ANSI C's strtol(str,strptr,0) behavior.
This means that decimal,octal(leading 0),and
hexidecimal values(leading 0x) are accepeted.
The valid compartors are:
=  Equal.
!= Not equal.
<  Less than and preferring larger difference
   (theleast is best).
>  Greater than and preferring larger differences
   (the most is best).
<= Less than or equal and preferring larger
   difference(the least is best).
>= Greater than or equal and preferring more
   instead of less. This comparator is useful for
   allocating resources like color precsion or
   depth buffer precision where the maximum
   precison is generally preferred.Contrast with
   the tilde (~) comprator.
~  Greater than or equal but preferring less
   instead of more.This compartor is useful for
   allocating resources such as stencil bits or
   auxillary color buffers where you would rather
   not over allocate.
   When the compartor and numeric value are not
   specified,each capability name has a different
   default(one default is to require a compartor
   and numeric value).
The valid capability names are:
alpha:Alpha color buffer precision in bits.Default
      is ">=1".
acca:Red,green,blue,and alpha accumulation buffer
     precision in bits.Default is ">=1" for red,
     green,blue,and alpha capabilities.
acc:Red,green,and green accumulation buffer
    precision in bits and zero bits of alpha
    accumulation buffer precision.Default is ">=1"
    for red,green,and blue capabilities,and "~0"
    for the alpha capability.
blue:Blue color buffer precision in bits.Default
     is ">=1".
buffer:Number of bits in the color index color
       buffer.Default is ">=1".
conformant:
       Boolean indicating if the frame buffer
       configuration is conformant or not.
       Conformance information is based on GLX's
       EXT_visual_rating extension if supported.
       If the extension is not supported,all
       visuals are assumed conformat.Default is
       "=1".
depth:Number of bits of precsion in the depth
      buffer.Default is ">=12".
double:Boolean indicating if the color buffer is
       double buffered.Default is "=1".
green:Green color buffer precision in bits.Default
      is ">=1".
index:Boolean if the color model is color index or
      not.True is color index.Default is ">=1".
num:A special capability name indicating where the
    value represents the Nth frame buffer
    configuration matching the description string.
    When  not specified,glutInitDisplayString also
    returns the first(best matching) configuration.
    num requires a compartor and numeric value.
red;Red color buffer precision in bits.Default is
        ">=1".
rgba:Number of bits of red,green,blue,and  alpha
     in the RGBA color buffer.Default is ">=1"
     for red,green,blue,and alpha capabilities,
     and "=1"  for the RGBA color model capability.
rgb:Number of bits of red,green,and blue in the
    RGBA color buffer and zero bits of alpha color
    buffer precision.Default  is ">=1" for the red,
    green,and blue capabilities,and "~0" for alpha
    capability,and "=1" for the RGBA color model
    capability.
luminance:
    Number of bits of red in the RGBA and zero
    bits of green,blue(alpha not specified) of
    color buffer precision.Default is ">=1"
    for the red capabilitis,and "=0" for the green
    and blue capabilities,and "=1" for the RGBA
    color model capability,and,for X11,"=1" for the
    StaticGray ("xstaticgray")capability.SGI
    InfiniteReality(and other future machines)
    support a 16-bit luminance (single channel)
    display mode(an additional 16-bit alpha channel
    can also be requested).The red channel maps to
    gray scale and green and blue channels are not
    available.A 16-bit precision luminance display
    mode is often appropriate for medical imaging
    applications.Do not expect many machines to
    support extended precision luminance display
    modes.
stencil:Number of bits in the stencil buffer.
single:Boolean indicate the color buffer is single
       buffered.Double buffer capability "=1".
stereo:Boolean indicating the color buffer is
       supports OpenGL-style stereo.Default is "=1".
samples:Indicates the number of multisamples to use
        based on GLX's SGIS_multisample extension(for
        antialiasing).Default is "<=4". This default
        means that a GLUT application can request
        multipsampling if available by simply
        specifying "samples".
slow:Boolean indicating if the frame buffer
     configuration is slow or not.For the X11
     implementation of GLUT,slowness information is
     based on GLX's EXT_visual_rating extension if
     supported.If the EXT_visual_rating extension is
     not supported,all visuals are assumed fast.For
     the Win32 implementation of GLUT,slowness is
     based on if the underlying Pixel Format Descriptor
     (PFD)is marked "generic" and not "accelerated".
     This implies that Microsoft's relatively slow
     software OpenGL implementation is used by this
     PFD.Note that slowness is a relative designation
     relative to other frame buffer configurations
     available.The intent of the slow capability is to
     help programs avoid frame buffer configurations
     that are slower(but perhaps higher precision) for
     the current machine.Default is ">=0" if not
     comparator and numeric value are provided.This
     default means that slow visuals are used in
     preference to fast visuals,but fast visuals will
     still be allowed.
win32pfd:
     Only recognized on GLUT implementations for Win32,
     this  capability name matches the Win32 Pixel For-
     mat Descriptor by numer.  win32pfd requires a com-
     partor and numeric value.
xvisual:Only recongized on GLUT implementations for the
        X Window System,this capability name matches
        the X visual ID by number.xvisual requires a
        compartor and numeric value.
xstaticgray:
        Only recongized on GLUT implementations for the
        X Window System,boolean indicating if the frame
        buffer configuration's X visual is of type Stat-
        icGray.Default is "=1".
xgrayscale:
        Only recongized on GLUT implementations for the
        X Window System,boolean indicating if the frame
        buffer configuration's X visual is of type
        GrayScale.Default is "=1".
xstaticcolor:
        Only recongized on GLUT implementations for the
        X Window System,boolean indicating if the frame
        buffer configuration's X visual is of type
        StaticColor.Default is "=1".
xpseudocolor:
        Only recongized on GLUT implementations for the
        X Window System,boolean indicating if the frame
        buffer configuration's X visual is of type
        PsuedoColor.Default is "=1".
xtruecolor:
        Only recongized on GLUT implementations for the
        X Window System,boolean indicating if the frame
        buffer configuration's X visual is of type
        TrueColor.Default is "=1".
xdirectcolor:
        Only recongized on GLUT implementations for the
        X Window System,boolean indicating if the frame
        buffer configuration's X visual is of type
        DirectColor.Default is "=1".
Unspecifed capability descriptions will result in
unspecified criteria being generated.These unspecified
criteria help glutInitDisplayString behave sensibly
with terse display mode description strings.For
example,if no "slow" capability description is provided,
fast frame buffer configurations will be choosen in
preference to slow frame buffer configurations,but slow
frame  buffer  configurations will still be choosen if
no better fast frame buffer configuration is available.
Example:
Here is an examples using glutInitDisplayString:
glutInitDisplayString("stencil~2 rgb double depth>=16 samples");
The above call requests a window with an RGBA color
model(but requesting no bits of alpha),a depth buffer
with at least 16 bits of precsion but preferring more,
mutlisampling if available,and at least 2 bits of
stencil(favoring less stencil to more as long as 2 bits
are available).

posted on 2009-03-03 15:15 小虫虫 阅读(873) 评论(0)  编辑 收藏 引用 所属分类: OpenGL


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(5)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜