Can’t render multiple windows?

This topic contains 2 replies, has 2 voices, and was last updated by  Gordon 7 years, 11 months ago.

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #29875
    Mistral OMAP35x EVM

    PowerVR SGX

    Windows CE 6.0

     

    Shouldn’t it be possible to render multiple windows from one context?  I can open multiple processes (each with a window), but I can’t open multiple windows in a single process.  The first window renders but the second remains black:

     

        //
        // Create a single display, config, context, shader program and texture
        //
        …

        //
        // Create two native windows: g_HostWindowA and g_HostWindowB
        //
        …

        //
        // Create an EGL surface for each window
        //
        g_surfaceA = eglCreateWindowSurface( g_eglDisplay, g_eglActiveConfig, (NativeWindowType)(g_HostWindowA) , NULL);
        g_surfaceB = eglCreateWindowSurface( g_eglDisplay, g_eglActiveConfig, (NativeWindowType)(g_HostWindowB) , NULL);

        //
        // Render windows sequentially
        //
        eglMakeCurrent( g_eglDisplay, g_surfaceA, g_surfaceA, g_eglContext );
        Render();
        eglSwapBuffers( g_eglDisplay, g_surfaceA );

        eglMakeCurrent( g_eglDisplay, g_surfaceB, g_surfaceB, g_eglContext );
        Render();
        eglSwapBuffers( g_eglDisplay, g_surfaceB );

    void Render(void)
    {
        static const VERTEX verts[] = { … }

        glClearColor (0.0, 0.0, 0.0, 1.0);
        glClear      (GL_COLOR_BUFFER_BIT);

        glVertexAttribPointer(VERTEX_POSITION,    3, GL_FLOAT,            GL_FALSE,   sizeof(VERTEX), &verts[0].x);
        glVertexAttribPointer(VERTEX_DIFFUSE,     4, GL_UNSIGNED_BYTE,    GL_TRUE,    sizeof(VERTEX), &verts[0].color);
        glVertexAttribPointer(TEXTURE_COORD,      2, GL_FLOAT,            GL_FALSE,   sizeof(VERTEX), &verts[0].u);

        glActiveTexture( GL_TEXTURE0 );
        glBindTexture  ( GL_TEXTURE_2D, g_TextureIDs[0] );
        GLint sampler1 = glGetUniformLocation ( g_uiProgramObject, “inTexture1” );
        glUniform1i ( sampler1, 0 );

        glDrawArrays(GL_TRIANGLES, 0, 6);
    }

     

    Thanks!

    Sean
    #33283

    Update: I’ve verified this code works as expected on two other OpenGL ES 2.0 implementations.  So I think this is a bug in the PowerVR SGX drivers for Windows CE.

     
    #33284

    Gordon
    Moderator

    Sorry for the very late reply to this – we’ve not made much progress on this issue. We haven’t been able to reproduce the problem on any system we have and we don’t have the actual board you’re running on here.

    I’m afraid the best I can suggest is talking to TI about this issue.

Viewing 3 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic.