Эстетически правильный код для хранения / отображения форм basi c - PullRequest
0 голосов
/ 24 апреля 2020

Я использую ES 3.0 (в основном GL 3.3 без геометрических шейдеров), чтобы иметь возможность переносить мои программы практически на все

Мой полезный фреймворк / оболочка, написанная на C ++. В основном это все, что можно найти внутри краткой справочной карты : Буфер / Шейдер / ShaderProgram / Framebuffer / Texture / et c. (довольно основы c, я верю, что у всех есть такие классы)

Я заметил, что когда мне нужно нарисовать базовые c фигуры, такие как полноэкранные четырехугольники, треугольники, сферы, которые я всегда делаю это на месте, это не часть моей структуры. И я ненавижу это, потому что повторяюсь снова и снова. Это действительно неприятно делать

Насколько эстетически и технически правильно я могу добавить такую ​​функциональность в мою инфраструктуру?

(заранее: для таких платформ, как android возможна потеря контекста, поэтому необходим механизм паузы / восстановления)

1 Ответ

0 голосов
/ 24 апреля 2020

SFML имеет аналогичную функциональность. Вот его структурная структура:

class Drawable {
  friend class RenderTarget;
 protected: // hidden from everyone but subclasses and RenderTarget
  virtual void draw(RenderTarget&) const = 0;
};

class RenderTarget {
 public:
  void draw(Drawable& drawable) {
    drawable.draw(*this);
  } 
};

class RectangleShape : public Drawable {
 protected:
  void draw(RenderTarget&) const override {
    // the algorithm
  }
};

void use() {
  RectangleShape shape;
  RenderTarget& target = get();
  target.draw(shape);
} 

(На самом деле все сложнее: я опустил виртуальные деструкторы, ненужные уровни наследования и т. Д. c.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...