这个例子是一个多相机、多视口的例子,我们有机会研究一下OSG中的视口相机。
首先,程序最外面run了两次,通过EnableVBOVisitor的方式使用了定点缓冲对象,EnableVBOVisitor继
承自NodeVisitor,在accept的时候执行一次,执行NodeVisitor中的apply方法。
enum TraversalMode
{
TRAVERSE_NONE,
TRAVERSE_PARENTS,
TRAVERSE_ALL_CHILDREN,
TRAVERSE_ACTIVE_CHILDREN
};
递归的模式,不递归、向上级递归、向下级递归,递归下级所有活动的节点。
OpenGL中绘制物体的方式:glbegin,glend,顶点数组的立即模式;displaylist显示列表;VBO顶点缓冲
对象。VBO几何了前两种方法的优势,数据即可以存储在服务器端,又便于更新。
关于VBO详细的说明:http://www.cnblogs.com/azureforest/archive/2012/07/01/2572237.html
这样想一想,所有的节点的叶节点都是Geode,Geode中有多个drawable,这个drawable就应该是设置VBO
的地方,我们顺着这个思路看看drawable:
有两个函数:setUseVertexBufferObjects、setUseDisplayList
有两个变量:_useDisplayList; _useVertexBufferObjects;
在构造函数里可以看到显示列表是默认的方式,VBO是false。
特别强调,如果drawable是动态更新的,就不能用显示列表,这样不安全。
在Drawable中的draw中看看这个判断
if (_useDisplayList && !(_supportsVertexBufferObjects && _useVertexBufferOb
首先,程序最外面run了两次,通过EnableVBOVisitor的方式使用了定点缓冲对象,EnableVBOVisitor继
承自NodeVisitor,在accept的时候执行一次,执行NodeVisitor中的apply方法。
enum TraversalMode
{
TRAVERSE_NONE,
TRAVERSE_PARENTS,
TRAVERSE_ALL_CHILDREN,
TRAVERSE_ACTIVE_CHILDREN
};
递归的模式,不递归、向上级递归、向下级递归,递归下级所有活动的节点。
OpenGL中绘制物体的方式:glbegin,glend,顶点数组的立即模式;displaylist显示列表;VBO顶点缓冲
对象。VBO几何了前两种方法的优势,数据即可以存储在服务器端,又便于更新。
关于VBO详细的说明:http://www.cnblogs.com/azureforest/archive/2012/07/01/2572237.html
这样想一想,所有的节点的叶节点都是Geode,Geode中有多个drawable,这个drawable就应该是设置VBO
的地方,我们顺着这个思路看看drawable:
有两个函数:setUseVertexBufferObjects、setUseDisplayList
有两个变量:_useDisplayList; _useVertexBufferObjects;
在构造函数里可以看到显示列表是默认的方式,VBO是false。
特别强调,如果drawable是动态更新的,就不能用显示列表,这样不安全。
在Drawable中的draw中看看这个判断
if (_useDisplayList && !(_supportsVertexBufferObjects && _useVertexBufferOb