void Flush_Contents(const char* segment,const char* filter)
清空段中的部分或全部图形图元、属性或子分段。
参数
segment-要刷新的段。可以包含通配符。
filter-要删除的对象类型列表。
详情
删除指定段的指定内容。子段(如果有)不会被触摸(除非您将子段作为“要删除的内容”的一部分)。该段仍以相同的名称存在。Flush_Contents()通常用于图片信息的出现和消失,并且每次都不同。段树的结构应保持不变。与删除例程不同,如果找不到项目并且没有工作要做,刷新例程不会产生任何抱怨。Flush_Contents()是一种很好的方法,可以消除几何体和属性,并将线段快速恢复到已知状态。
筛选器的格式与Begin_Contents_Search()中的格式完全相同。换句话说,它是“type,type,…”形式的列表,其中每个type都可以是Begin_Contents_Search()可以接受的任何内容。
还可以刷新特定的属性子集。例如,调用Flush_Contents(mySegment,“visibility=lines”)将刷新线几何图形类型上的可见性属性,同时保持其他几何图形类型的可见性属性。这不仅适用于可见性,也适用于所有其他属性;例如,可以刷新“color=face”以仅刷新应用于面的颜色属性。
此外,您可以在上述任何类型前面指定“no”。例如:“everything,no geometry,no window,no colormap”,它刷新除窗口、颜色贴图和所有类型的几何体之外的所有类型。如果规范重叠(如 “geometry, no lines”),则最后一个规范获胜。
每种类型后面的复数“s”是可选的。类型可以是大写和小写的任意组合。前导空格和尾随空格不重要。空白字符串相当于“everything”。
Flush_Contents()的使用示例是屏幕上的消息行。每次您需要一条新消息时,您可以创建一个包含该消息以及文本间距、文本字体、窗口等的段,也可以保留一个保存这些属性的永久段。然后,您可以创建和删除包含实际文本的子段。或者跳过子段,将所有内容放在一个段中。完成后,清除文本几何图形。
这三种方法都有效;这是你个人品味的问题。
笔记
要刷新整个树,请使用“…”段通配符。例如,要删除树中以“foo”为根的所有几何体(在当前打开的段中),可以说Flush_geometry(“foo/…”)。
系统知道当一个片段不包含在屏幕上显示的信息时,它只在显示期间短暂地触摸该片段。因此,如果这有助于您的程序结构,请随意保留“已刷新”的段。
未提供“Flush_Contents_ByKey()”。如果要获得相同的效果,请使用Flush_By_Key()(仅用于几何体),或执行Open_Segment_By_Key()、“.”上的Flush_Contents()和闭合段。(Open_Segment_By_Key()和“.”非常有效。)
Shells和Meshes可以打开并刷新其“硬件资源”,但所有其他类型的几何体(例如直线、多段线、多圆柱体和图像)必须从其所属段或上面的某个段刷新“硬件件资源”。如果硬件资源被刷新,所有用于显示的列表、顶点阵列和纹理等资源都将从视频卡缓存中释放。绘制场景所需的任何资源都将在下次更新时重新生成。
file:///E:/3DF_2600_DOCS/3DF_2600_DOCS/build/api_ref/3dgs/group__Flush__Contents.html