OpenGL 3.2: Ungültiger Enumerant in SwapBuffers(hdC)



  • Problem steht im Topic.
    Frage ist: Was dagegen tun? Ist immerhin ein Fehler.
    http://www51.zippyshare.com/downloadImage?key=85046233&time=655067 (Direktansicht)

    [NLWindowGL] OpenGL Vendor String: ATI Technologies Inc.
    [NLWindowGL] OpenGL Version: 3.2.10362 Core Profile Context
    [NLWindowGL] OpenGL Renderer: ATI Radeon HD 4800 Series
    [NLWindowGL] OpenGL Shader Version: 3.30
    [NLWindowGL] GLew Version: 1.5.7
    [NLWindowGL] SDL Version: 1.3.0
    [NLTextureLoader] Corona Version: 1.0.2
    

  • Mod

    flipst du vielleicht bevor du alles initialisiert hast? pruefst du gllasterror ob vorher alles geklapt hat? (kann deinem link zZ nicht folgen)



  • Also ich selbst flippe nur in meiner Main-Loop. Was SDL macht, weiss ich natürlich nicht. Aber ich vermute dass das evtl davon kommt.

    // Code der fenster Erstellung:

    void NLWindowGL::create(const NLWindowSettings& s)
    {
    	// Copy settings
    	m_settings = s;
    
        // Start SDL
        if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER ) == -1)
        {
            NLTrace("[NLWindowGL] Cannot initialize SDL!");
            throw NLException("Cannot initialize SDL!", true);        
        }
    
        // Prepare Flags for SDL
    	long flags = NLWindowGL::NIGHTLIGHT_SDL_VIDEO_FLAG;
        if (m_settings.fullscreen)
        {
            flags |= SDL_FULLSCREEN;
        }
    
    	// 3.2 Context
    	SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
    	SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
    
        // Create Window
        m_window = SDL_CreateWindow(m_settings.caption.c_str(), 50, 50, m_settings.width, m_settings.height, flags);
    
    	// Create Context
    	m_context = SDL_GL_CreateContext(m_window);
    
    	// VSync
    	SDL_GL_SetSwapInterval(1);
    
    	// Check Window
        if (m_window == NULL)
        {
            NLTrace("[NLWindowGL] Cannot create SDL-Window!");
            throw NLException("[NLWindowGL] Cannot create SDL-Window!", true);
        }
    
        // Bring mouse to the middle of the screen.
        SDL_WarpMouse(m_settings.width / 2, m_settings.height / 2);
    
        // Choose perspective
        if (m_settings.mode == NightLight::OpenGL2D)
        {
            this->initGL2D(m_settings.width, m_settings.height);
        }
    
        // Init Glew
        glewInit();
    
    	// Dump infos about renderDevice to the log.
        this->dumpInfos();
    }
    

    Render-Loop, SDL Event handling hab ich mal rausgenommen:

    void NLWindowGL::enterLoop()
    {
        u32 lastTick = 0;
        u32 ticks = 0;
        u32 delta = 0;
        bool mouseBState = false;
    
        // Infinite Loop!
        while (true)
        {
            /************************************************************************/
            /* Timing                                                               */
            /************************************************************************/
            ticks = SDL_GetTicks();        
            delta = ticks-lastTick;
            lastTick = ticks;
    
    // [..] SDL Event Handling abgeschnitten.
    
            /************************************************************************/
            /* Clear Buffers                                                        */
            /************************************************************************/
    		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); 
    
            /************************************************************************/
            /* Frame-limiter                                                        */
            /************************************************************************/      
            if ( m_hasFrameLimit)
            {
                while ( m_tmNext > SDL_GetTicks() )
                {
                    SDL_Delay(1);
                }
                m_tmNext += (1000 / m_fps_limit);
            }       
    
            /************************************************************************/
            /* Render-Event                                                         */
            /************************************************************************/   
            m_renderEvent.emit(delta);
    
            /************************************************************************/
            /* OpenGL-Debugging                                                     */
            /************************************************************************/
    #       if defined(_DEBUG) && NL_PERFORM_OPENGLCHECK == 1
            u32 err = glGetError();
            while (err != GL_NO_ERROR && err != m_prevGLError)
            {
                m_prevGLError = err;
                std::stringstream ss;
                ss << "[OpenGL] " << gluErrorString(err);
                NLError(ss.str().c_str());
                err = glGetError();
            }
    #        endif
    
            /************************************************************************/
            /* Framecounter                                                         */
            /************************************************************************/
            m_frameCounter.update(delta);
    
    		/************************************************************************/
    		/* Timers                                                               */
    		/************************************************************************/
    		SystemController().getTimerController().update(delta);
    
            /************************************************************************/
            /* Swapping the buffers                                                 */
            /************************************************************************/
            SDL_GL_SwapWindow(m_window);        
        }
    }
    

    Es wird sowohl von gDEBug ein Fehler angezeigt als auch von OpenGL gemeldet. Beide mit ungültiger Enumerant. Leider steht nicht dabei welcher ungültig wäre.


Anmelden zum Antworten