Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 10 of 10

Thread: glimg is breaking the opengl context?

Hybrid View

  1. #1
    Junior Member Newbie
    Join Date
    Apr 2013
    Posts
    18

    glimg is breaking the opengl context?

    My code is breaking when I use the glMatrixMode( GL_PROJECTION ) command, and I think this is because the context is breaking when I try to load a picture using glimg. Here is my code:

    Code :
    #include <stdlib.h>
    #include <stdio.h>
    #include <memory>
    #include <glload/gl_all.h>
    #include <glload/gll.hpp>
    #include <glimg/glimg.h>
    #include <GL/glfw.h>
    #include <glimg/TextureGeneratorExceptions.h>
     
    int main()
    {
        int     width, height;
        int     frame = 0;
        bool    running = true;
     
        glfwInit();
     
        if( !glfwOpenWindow( 512, 512, 0, 0, 0, 0, 0, 0, GLFW_WINDOW ) )
        {
            glfwTerminate();
            return 0;
        }
     
        glfwSetWindowTitle("GLFW Application");
     
    //////////////////////////////////////////////////////////////////////////////////
        if(glload::LoadFunctions() == glload::LS_LOAD_FAILED)
        {
            printf("glload failure.\n");
            running = false;
            return 0;
        }
     
        GLuint theTexture = 0;
     
        try{
            std::auto_ptr<glimg::ImageSet> pImgSet(glimg::loaders::stb::LoadFromFile("test.png"));
            theTexture = glimg::CreateTexture(pImgSet.get(), 0);
        }catch(glimg::loaders::stb::StbLoaderException &e){
            printf("Image file loading failed.\n");
        }catch(glimg::TextureGenerationException &e){
            printf("Texture creation failed.\n");
        }
     
        printf("Texture creation successful.\n");
    /////////////////////////////////////////////////////////////////////////////////
     
        while(running)
        {
        frame++;
     
            glfwGetWindowSize( &width, &height );
            height = height > 0 ? height : 1;
     
            glViewport( 0, 0, width, height );
     
            glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
            glClear( GL_COLOR_BUFFER_BIT );
     
            glMatrixMode( GL_PROJECTION );
            glLoadIdentity();
            gluPerspective( 65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f );
     
            // Draw some rotating garbage
            glMatrixMode( GL_MODELVIEW );
            glLoadIdentity();
            gluLookAt(0.0f, -10.0f, 0.0f,
                    0.0f, 0.0f, 0.0f,
                    0.0f, 0.0f, 1.0f );
     
            //glTranslatef( 1.0f, 1.0f, 0.0f );
            glRotatef(frame, 0.25f, 1.0f, 0.75f);
            glBegin( GL_TRIANGLES );
              glColor3f(0.1f, 0.0f, 0.0f );
              glVertex3f(0.0f, 3.0f, -4.0f);
              glColor3f(0.0f, 1.0f, 0.0f );
              glVertex3f(3.0f, -2.0f, -4.0f);
              glColor3f(0.0f, 0.0f, 1.0f );
              glVertex3f(-3.0f, -2.0f, -4.0f);
            glEnd();
            glBegin( GL_TRIANGLES );
              glColor3f(0.0f, 0.1f, 0.0f );
              glVertex3f(0.0f, 3.0f, -3.0f);
              glColor3f(0.0f, 0.0f, 1.0f );
              glVertex3f(3.0f, -2.0f, -2.0f);
              glColor3f(1.0f, 0.0f, 0.0f );
              glVertex3f(-3.0f, -2.0f, 2.0f);
            glEnd();
     
            glfwSwapBuffers();
     
            // exit if ESC was pressed or window was closed
            running = !glfwGetKey(GLFW_KEY_ESC) && glfwGetWindowParam( GLFW_OPENED);
        }
     
        glfwTerminate();
     
        return 0;
    }

    If I comment out glMatrixMode( GL_PROJECTION ) to the last glEnd(), the program runs, but I am trying to get the program to load an image as well as display the triangle demo.

  2. #2
    Senior Member OpenGL Guru
    Join Date
    May 2009
    Posts
    4,948
    You say "the context is breaking". What error do you get? What GPU are you using? What OpenGL version are you running? And more importantly, what happens if you comment out the glimg stuff?

  3. #3
    Junior Member Newbie
    Join Date
    Apr 2013
    Posts
    18
    The console returns:
    Code :
    Texture creation successful.
     
    Process returned -1073741819 (0xC0000005)   execution time : 1.631 s
    Press any key to continue.

    I am using an NVIDIA GeForce GT 635M GPU, and OpenGL version 4.0

    If I comment out the glimg image loading stuff and the include files for it then the program runs the triangle demo properly. If I don't comment out the header for the glimg stuff, then the program crashes.

  4. #4
    Senior Member OpenGL Guru
    Join Date
    May 2009
    Posts
    4,948
    Wait. Just including the header causes the crash?

    I can't reproduce the crash on my machine (I tried running the 0.4.4 release). I copied your code into a test application and it seems to work just fine.

    Can you narrow down exactly which glimg header is causing the problem?

  5. #5
    Junior Member Newbie
    Join Date
    Apr 2013
    Posts
    18
    I managed to get the program to work! For some reason commenting out
    Code :
    #include <glload/gl_all.h>
    stopped the crashes.

  6. #6
    Senior Member OpenGL Guru
    Join Date
    May 2009
    Posts
    4,948
    That makes no sense. If you don't include the GL Load header, then your code is going to start failing to compile once you use anything that's not from GL 1.1.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •