我需要完全禁用OSG中的紋理。我嘗試了glDisable(GL_TEXTURE_2D)
並且還使用了osg :: stateSet,但是一些具有紋理的節點仍然呈現它們的紋理。有什麼辦法可以全局關閉紋理嗎?一點背景:我需要爲一個場景生成一個物體覆蓋圖,也就是知道什麼物體產生了每個可見像素。我使用平坦的顏色渲染每個對象並讀回顏色緩衝區 - 這就是爲什麼紋理破壞我想要做的事情。有關如何完成此任何其他想法?在OpenSceneGraph中禁用紋理
回答
您是否考慮將您的問題發佈到OSG郵件列表?這似乎是一個更合適的地方要問。
您是否確定在設置Texture2D屬性時設置了osg :: StateAttribute :: OVERRIDE位?即像
osg::Texture2D*const tex2D = new osg::Texture2D;
ss->setAttributeAndModes(tex2D, osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);
其中ss
足夠高,在你的場景圖涵蓋可能有紋理萬物節點上的stateset。
當然,如果GL_TEXTURE_2D模式或任何Texture2D屬性降低了設置了osg :: StateAttribute :: PROTECTED位,那麼忽略將被忽略,但是您可能處於一個你知道不會發生的位置。
您使用osgViewer :: Viewer(單一/默認查看器)還是osgViewer :: View?如果已經使用addEventHandler()添加了osgGA :: StateSetManipulator,則't'鍵將在那些紋理中切換紋理。
最終,被調用的是void StateSetManipulator :: setTextureEnabled(bool newtexture)。 它所做的是:
unsigned int mode = osg::StateAttribute::OVERRIDE|osg::StateAttribute::OFF;
for(unsigned int ii=0; ii < 4; ii++)
{
_stateset->setTextureMode(ii, GL_TEXTURE_1D, mode);
_stateset->setTextureMode(ii, GL_TEXTURE_2D, mode);
_stateset->setTextureMode(ii, GL_TEXTURE_3D, mode);
_stateset->setTextureMode(ii, GL_TEXTURE_RECTANGLE, mode);
_stateset->setTextureMode(ii, GL_TEXTURE_CUBE_MAP, mode);
}
其中* _stateset *是高達節點(例如根節點設置爲瀏覽器/查看 - > setSceneData())
您有問題的原因可能是某些節點使用osg :: StateAttribute :: OVERRIDE,就像Troubadour(正確)建議你應該。假設是這種情況,你可以創建一個實際遍歷整棵樹並關閉紋理渲染的節點訪問器 - 非常粗糙,但是會起作用。
至於你的問題的第二部分:一種選擇是使用OSG中已經內置的函數進行交點 - 從眼睛投射光線到屏幕上的每個像素,並查看它相交的位置 - 非常慢,但肯定會工作:) 還有openGL的選擇模式(雖然我不得不說我自己從來沒有用過它,所以我不知道它有多複雜) - 你可以在這裏閱讀 這裏:http://www.opengl.org/resources/faq/technical/selection.htm
- 1. 在OpenSceneGraph中運行時更新紋理
- 2. UV紋理TextureUnits在textureUnits中,openscenegraph
- 3. 錯誤加載紋理OpenSceneGraph的
- 4. OpenSceneGraph,HUDs和紋理Qt Widget問題
- 5. 如何將紋理應用於openscenegraph中的模型?
- 6. OpenGL紋理映射禁用底紋
- 7. 禁用opengl es紋理ios
- 8. OpenSceneGraph - 模型的每個面上的紋理
- 9. OpenSceneGraph:設置三角形的紋理座標
- 10. 爲什麼OpenSceneGraph將所有Sampler2D映射到第一個紋理
- 11. 禁用GL_DEPTH_TEST時,紋理消失
- 12. OpenGL,禁用紋理單元,glActiveTexture和glBindTexture
- 13. Libgdx禁用紋理並添加着色
- 14. 如何禁用在OpenGL中移動紋理?
- 15. 使用C#在Direct X中將紋理渲染到紋理中
- 16. OpenSceneGraph的Fedora中
- 17. 在OpenSceneGraph的
- 18. 在Twisted Web中禁用指紋
- 19. LWJGL使用紋理時顏色混亂+在禁用紋理時通常使用較低的FPS
- 20. 禁用圓形紋理NSButton中的文本不灰顯
- 21. 暫時禁用指紋
- 22. 禁用資產指紋
- 23. 紋理在2.3.3
- 24. OpenTK C#紋理紋理
- 25. 在Microsoft Surface上禁用紋波反饋
- 26. 在SDl2中混合紋理
- 27. 在three.js中加載紋理
- 28. 紋理數組在Java中
- 29. 在pyopengl中渲染紋理
- 30. 在Init中加載紋理()