Во время отладки приложения, написанного на Qt, используя OpenGL ES 2.0 на платформе ARM, встроенной в Linux, я заметил, что при многократной загрузке и выгрузке текстур встроенная платформа, над которой я работаю, начала вести себя странно.Поэтому я написал простой тестовый код, чтобы подчеркнуть библиотеку OpenGL:
main.cpp
#include <QApplication>
#include "mainwidget.h"
int main(int argc, char** argv)
{
QApplication a(argc, argv);
MainWidget widget;
widget.showFullScreen();
return a.exec();
}
и mainwidget.h:
#include <QElapsedTimer>
#include <QTimer>
#include "mainwidget.h"
MainWidget::MainWidget(QWidget *parent) :
QGLWidget(parent)
{
makeCurrent();
QTimer* t = new QTimer();
t->setSingleShot(false);
t->setInterval(10);
connect(t, SIGNAL(timeout()), this, SLOT(textureLoadingTest()));
t->start();
}
void MainWidget::textureLoadingTest()
{
QImage image(256, 512, QImage::Format_ARGB32);
image.fill(Qt::red);
QElapsedTimer timer;
timer.start();
GLuint code = bindTexture(image);
qDebug("Texture loaded in %lldms to code = %u.", timer.elapsed(), code);
deleteTexture(code);
}
Этот код кажется полностьюкрах системы после 20/30 тысяч текстур.Это ошибка в тестовом коде или системная проблема?