2015-02-13 3 views
1

У меня возникла проблема с множественным «предупреждением: обнаружена ошибка OpenGL« недопустимое значение »после сообщений RenderBin :: draw (...)», выпущенных OSG. Я нашел this thread, показывающий способ добавления дополнительной информации об отладке. К сожалению, я не могу найти способ установить состояние.Set CheckForGLErrors State

Я могу создать государство и установить флаг с помощью кода:

osg::ref_ptr<osg::State> debugState = new osg::State(); 
debugState->setCheckForGLErrors(osg::State::CheckForGLErrors::ONCE_PER_ATTRIBUTE); 

Но что делать после? Я не могу найти способ добавить государство в StateSet.

+0

Не могли бы вы помочь мне установить OpensceneGraph на Ubuntu .. Я изо всех сил пытаюсь установить его, не знаю с чего начать и где он должен закончиться –

ответ

1

Вы можете использовать gDEBugger, как и некоторые из ответов в потоке. Если вы все еще хотите сделать это через osg::State, то вы можете добавить osg::Drawable::DrawCallback ко всем своим чертежам. Тогда в рамках drawImplementation из DrawCallback вы можете сделать что-то вроде -

virtual void drawImplementation (osg::RenderInfo & renderinfo, const osg::Drawable * drawable) const 
{ 
    State& state = *renderInfo.getState(); 
    state->setCheckForGLErrors(osg::State::CheckForGLErrors::ONCE_PER_ATTRIBUTE); 
    drawable->drawImplementation(); 
} 

Я не очень уверен, что если изменение состояния это поздно будет работать отлично, вы должны проверить это. Если он не работает, вы также можете сделать что-то вроде state.checkGLErrors("start of Geometry::drawImplementation()"); и state.checkGLErrors("end of Geometry::drawImplementation()"); до и после звонка drawable->drawImplementation().

+0

Спасибо за ответ, в конце концов я перекомпилировал osg с флагом по умолчанию. – user1051934

 Смежные вопросы

  • Нет связанных вопросов^_^