Dear All,
I have this class inherited from Fl_Gl_Window but I do not manage to draw the background image. here is the code:
void MyGLWindow::draw()
{
if (!valid())
{
glGenTextures(1, &tex_id);
glBindTexture(GL_TEXTURE_2D, tex_id);
Fl_Shared_Image *img{ Fl_Shared_Image::get("picture.jpg") };
if (img->d() != 3)
std::cout << "Not 3 dimensions" << std::endl;
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->w(), img->h(), 0,
GL_RGB, GL_UNSIGNED_BYTE, img->data()[0]);
img->release();
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glOrtho(-1, 1, -1, 1, -1, 1);
glClearColor(1., 1., 1., 1.f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
gl_font(FL_HELVETICA_BOLD_ITALIC, 30);
}
glPushMatrix();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glColor4f(1., 1., 0., .7);
for (auto& b : balls)
b.draw();
glPopMatrix();
glPushMatrix();
glLoadIdentity();
glColor4f(1.f, 0.f, 0.0, 1.f);
std::string s{ "HELLO" };
gl_draw(s.c_str(), s.size(), 0.5f, 0.5f);
glPopMatrix();
glPushMatrix();
glLoadIdentity();
glBegin(GL_QUADS);
glColor4f(1.f, 1.f, 1.0, 0.f);
glTexCoord2f(0, 1.f); glVertex2f(-1, -1);
glTexCoord2f(1.f, 1.f); glVertex2f(1, -1);
glTexCoord2f(1.f, 0); glVertex2f(1, 1);
glTexCoord2f(0, 0); glVertex2f(-1, 1);
glEnd();
glPopMatrix();
}
The problem is that the text and the balls all show up nicely but no image is shown in the background. Could someone help me with this problem?