Blender源码分析之屏幕和区域对象结构
Posted caimouse
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Blender源码分析之屏幕和区域对象结构相关的知识,希望对你有一定的参考价值。
在Blender的设计里,UI是采用单一系统窗口的设计,比如在Windows系统里,只需要创建一个窗口,然后所有的绘制和子窗口都是自己在这个窗口里实现,并且不再使用系统的UI功能,全部是自己通过OpenGL实现。所以在Blender每一个系统窗口采用一个屏幕对象结构--bScreen数据结构来描述,然后在屏幕里再分割子窗口--screen area。因此我们先要来学习bScreen数据结构,才能明白UI是怎么样实现屏幕级别的层次。
typedef struct bScreen
ID id;
/* TODO: Should become ScrAreaMap now.
* NOTE: KEEP ORDER IN SYNC WITH #ScrAreaMap! (see AREAMAP_FROM_SCREEN macro above). */
/** Screens have vertices/edges to define areas. */
ListBase vertbase;
ListBase edgebase;
ListBase areabase;
/* End variables that must be in sync with #ScrAreaMap. */
/** Screen level regions (menus), runtime only. */
ListBase regionbase;
struct Scene *scene DNA_DEPRECATED;
/** General flags. */
short flag;
/** Winid from WM, starts with 1. */
short winid;
/** User-setting for which editors get redrawn during anim playback.
以上是关于Blender源码分析之屏幕和区域对象结构的主要内容,如果未能解决你的问题,请参考以下文章
Blender源码分析之创建区域对象UI_block_begin函数