Теперь, когда мое приложение OpenGL становится все больше и сложнее, я замечаю, что оно также становится немного медленным на очень слабых системах, таких как нетбуки. В Java я могу обойти это, рисуя BufferedImage, затем рисуя это на экран и обновляя кэшированный рендер каждый раз. Как мне поступить в OpenGL с C ++?
Я нашел несколько руководств, но они, похоже, работают только на новом оборудовании / определенных картах Nvidia. Поскольку операции рендеринга в кэше будут обновляться только время от времени, я могу пожертвовать скоростью ради совместимости.
glBegin(GL_QUADS);
setColor(DARK_BLUE);
glVertex2f(0, 0); //TL
glVertex2f(appWidth, 0); //TR
setColor(LIGHT_BLUE);
glVertex2f(appWidth, appHeight); //BR
glVertex2f(0, appHeight); //BR
glEnd();
Это то, что меня особенно беспокоит. Градиент, занимающий весь экран, перерисовывается много раз в секунду. Как я могу кешировать ее в текстуру, а затем просто нарисовать эту текстуру для увеличения производительности?
Кроме того, уловка, которую я использую в Java, состоит в том, чтобы визуализировать ее в текстуру высотой 1 X, затем масштабировать ее до ширины x высоты, чтобы повысить производительность и снизить использование памяти. Есть ли такой трюк с openGL?