Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: leak while minimized with multiple images  (Read 2813 times)

0 Members and 1 Guest are viewing this topic.

dathoedezt

  • Newbie
  • *
  • Posts: 9
    • View Profile
leak while minimized with multiple images
« on: October 11, 2010, 09:07:36 am »
im using windows xp sp3 with mingw32 and sfml and having an issue with this program that appears to steadily eat up memory while minimized.
everything runs fine and doesnt appear to be leaking when the window visible, its only when its minimized to taskbar AND when trying to draw more than 1 image, but it is fine with only 1 image.

Code: [Select]
#include <SFML/Graphics.hpp>
#include <GL/gl.h>

void InitOpenGL(){
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glViewport(0, 0, 640, 480);

glEnable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glEnable(GL_ALPHA_TEST) ;
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glMatrixMode( GL_PROJECTION );
glLoadIdentity();

glOrtho(0.0f, 640.0f, 480.0f, 0.0f, -1.0f, 1.0f);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

void DrawImage(GLuint texture, GLfloat x, GLfloat y, GLfloat w, GLfloat h){
glBindTexture(GL_TEXTURE_2D, texture);

glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glVertex2f(x, y);

glTexCoord2f(1.0f, 0.0f);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glVertex2f(x+w, y);

glTexCoord2f(1.0f, 1.0f);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glVertex2f(x+w, y+h);

glTexCoord2f(0.0f, 1.0f);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glVertex2f(x, y+h);
glEnd();
}

GLuint CreateTexture(std::string image_path){
sf::Image temp_image;
temp_image.LoadFromFile(image_path);

GLuint temp_texture;

    glGenTextures(1, &temp_texture);
    glBindTexture(GL_TEXTURE_2D, temp_texture);

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, temp_image.GetWidth(), temp_image.GetHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, temp_image.GetPixelsPtr());

    return temp_texture;
}

int main (){
sf::RenderWindow app;
bool is_running = true;
sf::Event event;

app.Create(sf::VideoMode(640, 480, 32), "Test App");
InitOpenGL();

GLuint test1, test2;
test1 = CreateTexture("test1.png");
test2 = CreateTexture("test2.png");

while (is_running){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

app.GetEvent(event);
if (event.Type == sf::Event::Closed)
is_running = false;

DrawImage(test1, 0, 0, 64, 64);
DrawImage(test2, 320, 0, 64, 64);

app.Display();
}

return 0;
}


i am aware of the sf::Sprite class but i would rather use opengl myself if i can. been trying to only use sfml for window creation, events, and image loading.

would greatly appreciate if someone can point out my error or something.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
leak while minimized with multiple images
« Reply #1 on: October 11, 2010, 09:38:33 am »
First, we need to know if the leak is caused by SFML or by your OpenGL driver. The best way to know is to replace SFML with something else (SDL, GLUT, GLFW, Windows API, ...) and test your code again.

And make sure that your graphics driver is up to date.
Laurent Gomila - SFML developer

dathoedezt

  • Newbie
  • *
  • Posts: 9
    • View Profile
leak while minimized with multiple images
« Reply #2 on: October 11, 2010, 10:11:56 am »
hm.. guess it may be this old computer/drivers

i have the lastest updates but they were from 2007 while the hardware itself is from 2002.

apparently my opengl version is below 1.2 since GL_BGR/GL_BGRA are not even defined :(

edit:
well apparently a program called OpenGLView said its using 1.3 tho :-/

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
leak while minimized with multiple images
« Reply #3 on: October 11, 2010, 10:23:52 am »
Quote
apparently my opengl version is below 1.2 since GL_BGR/GL_BGRA are not even defined

The static OpenGL version (the core features available directly in the headers and libs) is always 1.1 on Windows, but it doesn't mean that your driver doesn't support higher versions through extensions.
Laurent Gomila - SFML developer

dathoedezt

  • Newbie
  • *
  • Posts: 9
    • View Profile
leak while minimized with multiple images
« Reply #4 on: October 11, 2010, 10:28:12 am »
yea nevermind sdl has this problem too on this hardware

dathoedezt

  • Newbie
  • *
  • Posts: 9
    • View Profile
leak while minimized with multiple images
« Reply #5 on: October 12, 2010, 07:13:50 am »
hm would anyone have any advice on how to resolve this aside from getting modern video card?
i know its not that big a problem but just dont like the idea if my program would do this on others older computers if it ever got to the point of a release...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
leak while minimized with multiple images
« Reply #6 on: October 12, 2010, 08:07:54 am »
If it's a bug in your driver, then:
- there's nothing you can do about it
- other people with other drivers won't suffer from this bug

It's pretty common to have bugs in graphics drivers, so don't waste your time with that ;)
Laurent Gomila - SFML developer

dathoedezt

  • Newbie
  • *
  • Posts: 9
    • View Profile
leak while minimized with multiple images
« Reply #7 on: October 12, 2010, 08:18:04 am »
ok thanks for the info

yea it is the graphics driver..
checked out older versions and all the ones that support 1440x900 resolution are bugged this way but ones before that dont allow resolutions higher than 1280x1024 are fine..