stateSet->setRenderBinDetails( 2, “RenderBin” );设置无效
时间: 2024-03-21 18:41:23 浏览: 14
可能是因为您设置的 RenderBin ID 已经存在于场景图中。请尝试使用 `setRenderBinDetails()` 方法的第三个参数(renderBinName)来设置唯一的标识符,如下所示:
```
stateSet->setRenderBinDetails(2, "RenderBin", osg::StateSet::OVERRIDE_RENDERBIN_DETAILS);
```
这将覆盖已经存在的 RenderBin ID,并创建一个新的 RenderBin 名称为 "RenderBin"。如果您仍然遇到问题,请检查您的场景图中是否有其他使用相同 RenderBin ID 的节点或状态集。
相关问题
setRenderBinDetails DepthSortedBin添加无效
如果使用 `setRenderBinDetails` 方法添加 `DepthSortedBin` 后发现无效的话,可能是以下几个原因:
1. 没有开启深度测试。在使用深度排序时,需要开启深度测试才能正确进行渲染。可以使用以下代码开启深度测试:
```cpp
osg::StateSet* stateSet = node->getOrCreateStateSet();
stateSet->setMode(GL_DEPTH_TEST, osg::StateAttribute::ON);
```
2. 没有设置正确的深度信息。深度排序是根据对象离相机的距离来排序的,如果深度信息不正确,就无法正确进行排序。一般情况下,深度信息会通过相机自动计算得出,但是如果自定义了相机或者使用了多个相机,就需要手动设置深度信息。可以使用以下代码手动设置深度信息:
```cpp
osg::StateSet* stateSet = node->getOrCreateStateSet();
osg::Depth* depth = new osg::Depth;
depth->setWriteMask(true);
depth->setFunction(osg::Depth::LEQUAL);
stateSet->setAttributeAndModes(depth, osg::StateAttribute::ON);
```
其中,`setFunction` 方法用来设定深度比较的方式,这里我设定为小于等于(LEQUAL),也可以根据实际情况进行调整。
3. 没有设置正确的 RenderBin 名称。在使用深度排序时,需要使用 `setRenderBinDetails` 方法将节点添加到 `DepthSortedBin` 中才能正确进行排序。可以使用以下代码设置 RenderBin 名称:
```cpp
node->setRenderBinDetails(1, "DepthSortedBin");
```
其中,第一个参数是 RenderBin 的编号,第二个参数是 RenderBin 的名称。在使用深度排序时,RenderBin 名称应该是 “DepthSortedBin”。
希望以上信息能对你有所帮助。
state->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
这段代码的作用是设置节点的渲染提示(Rendering Hint),使得节点在渲染时被放置在透明渲染队列(Transparent Bin)中。
在 OpenSceneGraph 中,渲染提示是一种用来控制节点渲染顺序和方式的机制。不同的渲染提示可以将节点放置在不同的渲染队列中,从而实现不同的渲染效果。其中,TRANSPARENT_BIN 是一种透明渲染队列,用来处理具有透明效果的节点。
通过调用 state->setRenderingHint(osg::StateSet::TRANSPARENT_BIN) 这段代码,我们将节点的渲染提示设置为 TRANSPARENT_BIN,这样在渲染时该节点就会被放置在透明渲染队列中,从而实现透明效果。需要注意的是,设置节点为透明渲染队列时,需要将节点的混合模式设置为启用混合(Blending),以实现透明度的效果。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)