C++ (Qt)void MyWindow::DrawObject( Object * obj, // рисуемый объект (напр сфера) TDrawStyle style ) // стиль рисования (напр phong){ m_engine->SetupShaders(...); // установили нужный шейдер // установка данных switch (style) { case style_Phong: // устанавливаем текстуры auto maps = obj->GetMaps2Draw(); for (const auto & m : maps) m_engine->AddTexture(m); // устанавливаем вертексы m_engine->SetVertices(obj->GetVertices()); // устанавливаем нормали...// устанавливаем ..... break; } m_engine->Draw(); // рисуем m_engine->ReleaseShaders(); // культурно уходим}
class COpenGlMyBigGreenSphere : public MyBigGreenSphere {public:virtual void draw(COpenGLContext &dc){// специфичный для OpenGL код отрисовки}private:// специфичные для OpenGL методы и данные ...};