Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. void MyOpenGLWidget::loadTexture()
  2. {
  3. if (eof == true)
  4. return;
  5. img_data = SOIL_load_image(path, &width, &height, &channels, SOIL_LOAD_RGB);
  6. glEnable(GL_TEXTURE_2D);
  7. glGenTextures(1, &texture); // exception thrown here
  8. glBindTexture(GL_TEXTURE_2D, texture);
  9. glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, img_data);
  10. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  11. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  12. SOIL_free_image_data(img_data);
  13. }
  14.  
  15. void MyOpenGLWidget::initializeGL()
  16. {
  17. initializeOpenGLFunctions();
  18. // some other code here
  19. }
  20.  
  21. class MyGLThread : public QThread
  22. {
  23. Q_OBJECT
  24.  
  25. public:
  26. MyGLThread();
  27. ~MyGLThread();
  28.  
  29. void init(MyOpenGLWidget* widget);
  30. void loadTexture();
  31.  
  32. // some other code here
  33.  
  34. protected:
  35. virtual void run();
  36.  
  37. private:
  38. MyOpenGLWidget* gl_widget;
  39. };
  40.  
  41. MyGLThread::MyGLThread()
  42. {
  43. gl_widget = nullptr;
  44. }
  45.  
  46. MyGLThread::~MyGLThread()
  47. {
  48. }
  49.  
  50. void MyGLThread::init(MyOpenGLWidget * widget)
  51. {
  52. gl_widget = widget;
  53. }
  54.  
  55. void GLThread::loadTexture()
  56. {
  57. gl_widget->loadTexture();
  58. }
  59.  
  60. void MyGLThread::run()
  61. {
  62. while (true) {
  63. if (!gl_widget)
  64. continue;
  65.  
  66. loadTexture();
  67. msleep(30);
  68. }
  69. }
  70.  
  71. INSlides::INSlides(QWidget *parent)
  72. : QMainWindow(parent)
  73. {
  74. ui.setupUi(this);
  75.  
  76. extractor_thread = new ExtractorThread(); // thread used to extract images
  77. extractor_thread->start();
  78.  
  79. gl_widget = new MyOpenGLWidget(this);
  80. gl_widget->setGeometry(100, 100, 1280, 720);
  81.  
  82. gl_thread = new MyGLThread();
  83. gl_thread->init(gl_widget);
  84. gl_thread->start();
  85.  
  86. connect(ui.openFileAction, SIGNAL(triggered()), this, SLOT(openFile()));
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement