OpenGL ES1.1.12 第二章 2.5

来源:互联网 发布:富贵而知荣辱 编辑:程序博客网 时间:2024/05/17 06:43

(仅是草稿,未做整理)

2.5 GL的错误提示

GL只能检测到认为是错误条件的一部分。这是因为在许多错误检测情况会对无差错(error-free)的程序带来不利的影响。

获取错误信息的命令:

enum GetError( void );

每一个可检测的错误会赋于一个数值编码。当错误发生,会设置一个标识,并记录编码。如果再发生的错误,那么将不会影响当前的所记录的编码。当GetError函数调用的时候,编码将返回,并清除标识,这样后续的错误可以记录此编码。如果调用GetError时,返回NO_ ERROR,这意味着至上一次调用之后没有再发生错误(或者至GL初始化之后)。

为了允许分布实现,会用到多个标识对。这种情况下,直到所有非NO_ERROR返回,否则在调用GetError后返回的是除NO_ERROR之外的,之后的调用将回返独一代码对的非0值(以未定义的顺序出现)。当没有更多的非NO_ERROR,则会重围所有的标识。这个机制需要正bit标识对值和整数。在初始化状态,所有标识都置为NO_ERROR

2.3为所有的GL错误。当设置一个错误标识后,除了发生OUT_OF MEMORY错误之外,GL操作的结果将是没有定义的。在其他情况下,错误的产生,不影响GL状态或者帧缓存内容。如果一个生成命令作返回一个值,那么此值为0。如果生成命令通过指针参数修改了值,那么这些值也不会发生改变。这些错误语义只适用于GL错误,并不用于系统错误如内存访问错误。这些行为只是当前行为。发生错误GL的操作,也会随着变化。

有三种错误的产生条件隐藏在GL命令的描述中。

一,当一个需要枚举数值,而又传递一个不可接受的枚举数值时,此命令将返回INVALID_ENUM错误,这种情况也会发生在指向符号常数的指针参数时,如果指针所指向的常数值对于命令是不可接受的。如果定义的枚举常数只属于CommonCommon-Lite部分的时候,那么如果此常数用于另一个部分时,那么也会返回INVALI_ ENUM错误。

二,当参数类型定义为sizei,如果传递一个负数,那么将返回INVALID_VALUE错误。


表2.3GL错误

三、在执行一个GL命令时,内存耗尽,并影响到了命令,那么可能会发生OUT_OF_MEMORY错误。

其他错误的发生的条件都在此文档中显式地描述。


原创粉丝点击