状态查询 Context State Queries
这些状态是使用在前几章中描述的命令设置的。与GL对象相关的状态通常可以使用与设置状态相同的命令一起描述来查询。这些命令可以直接作用于命名对象,也可以间接通过GL上下文中的绑定(例如当前绑定的帧缓冲对象)进行操作。
所述章节中的命令重点介绍了与上下文直接相关的状态查询,而不是与特定对象相关的状态。在查询上下文状态时,可能会执行数据转换,如规范中第2.2.2节所述。
简单查询 Simple Queries
大部分GL状态完全由符号常量标识。可以使用一组Get命令获取这些状态变量的值。它们在规范的其他地方以及与这些状态相关的命令以及第23章的状态表中进行了描述。
-
获取简单的状态变量
void glGetBooleanv( enum pname, boolean *data );void glGetIntegerv( enum pname, int *data );void glGetInteger64v( enum pname, int64 *data );void glGetFloatv( enum pname, float *data );void glGetDoublev( enum pname, double *data );
-
查询索引的简单状态变量
void glGetBooleani_v( enum target, uint index, boolean *data );void glGetIntegeri_v( enum target, uint index, int *data );void glGetFloati_v( enum target, uint index, float *data );void glGetDoublei_v( enum target, uint index, double *data );void glGetInteger64i_v( enum target, uint index, int64 *data );
-
启用还是禁用
boolean glIsEnabled( enum cap );boolean glIsEnabledi( enum target, uint index );
指针、字符串和相关上下文查询 Pointer, String, and Related Context Queries
- 指针查询
void glGetPointerv( GLenum pname, void **params );
其中,pname是一个表示要返回的指针的符号常量。params是一个指向变量的指针,用于存放单个返回的指针值。当pname为DEBUG_CALLBACK_FUNCTION和DEBUG_CALLBACK_USER_PARAM时,返回的是调试输出状态。
-
字符串查询(返回指向UTF-8编码的、以空字符结尾的静态字符串的指针,这些字符串描述了当前GL上下文的属性)
ubyte *glGetString( enum name );
接受的name值为RENDERER、VENDOR、VERSION和SHADING_LANGUAGE_VERSION。
RENDERER和VENDOR字符串的格式取决于实现。
VERSION 和 SHADING_LANGUAGE_VERSION格式:<version number><space><vendor-specific information>。
版本号的格式可以是主版本号.次版本号或主版本号-次版本号.发布版本号,其中所有数字都有一个或多个数字。SHADING_LANGUAGE_VERSION的次版本号始终是两位数,与OpenGL着色语言规范的发布版本号相匹配。例如,此查询可能返回字符串"4.20",而相应的VERSION查询返回"4.2"。发布版本号和供应商特定信息是可选的。但是,如果存在,则它们与服务器相关,并且其格式和内容是依赖于实现的。
GetString返回版本号(在VERSION字符串中),该版本号可以由当前GL上下文支持。因此,如果客户端和服务器支持不同的版本,则返回兼容的版本。
还可以通过调用GetIntegerv并传递MAJOR_VERSION和MINOR_VERSION作为pname来查询上下文版本,它们分别返回与VERSION字符串中的主版本号和次版本号相同的值。
可以通过调用GetIntegerv并传递CONTEXT_PROFILE_MASK作为值来查询上下文实现的profile,它返回一个包含表22.1中的位之一的掩码,对应于上下文实现的API profile(参见附录E.1)。
通过调用GetIntegerv并传递CONTEXT_FLAGS作为pname,可以查询上下文的附加属性标志。以下是一些可能的标志:
- 如果
CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT在CONTEXT_FLAGS中被设置,则上下文是一个前向兼容的上下文,详细信息见附录E。在这种情况下,附录中描述的已弃用功能不受支持;否则,上下文是一个完整的上下文,支持规范中描述的所有功能。 - 如果
CONTEXT_FLAG_DEBUG_BIT在CONTEXT_FLAGS中被设置,则上下文是一个调试上下文,启用了完整的调试输出支持,详细信息见第20章。 - 如果
CONTEXT_FLAG_ROBUST_ACCESS_BIT在CONTEXT_FLAGS中被设置,则会为使用顶点数组的绘图命令启用强壮的缓冲访问,详细信息见第10.3.7节。 - 如果
CONTEXT_FLAG_NO_ERROR_BIT在CONTEXT_FLAGS中被设置,则未启用任何错误行为,详细信息见第2.3.1.1节。
通过调用GetIntegerv并传递CONTEXT_RELEASE_BEHAVIOR作为pname,可以查询上下文在不再当前(释放)时的行为。如果行为是CONTEXT_RELEASE_BEHAVIOR_FLUSH,则上下文中的任何挂起命令都将被刷新。如果行为是NONE,则不会刷新挂起命令。默认值是CONTEXT_RELEASE_BEHAVIOR_FLUSH,在某些情况



被折叠的 条评论
为什么被折叠?



