OpenGL/SharpGL. Текстура рисуется неправильно

При запуске программы на WPF вместе с OpenGL, картинка на долю секунды рисует нормально, но после все цвета пропадают и остается только красный. Для эксперимента сделал Thread.Sleep(1000); перед циклом рисования, и стало видно что при первом цикле оно рисует нормально, но при последующих все цвета пропадают и остается только красный, в чем может быть проблема?

При первом цикле рисования

При последующих циклах рисования

  public static void Initialize(OpenGL opengl)
    {
        gl = opengl;

        textureImage = new Bitmap(@"C:\Users\user\Desktop\3048122.jpg");
        gl.Enable(GL_TEXTURE_2D);
        gl.GenTextures(1, textures);
        gl.BindTexture(GL_TEXTURE_2D, textures[0]);

        gl.TexParameter(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
        gl.TexParameter(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
        gl.TexParameter(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        gl.TexParameter(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

        gl.TexImage2D(GL_TEXTURE_2D, 0, 3, textureImage.Width, textureImage.Height,
            0, GL_BGR, GL_UNSIGNED_BYTE,
            textureImage.LockBits(new Rectangle(0, 0, textureImage.Width, textureImage.Height),
            ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb).Scan0);



        gl.ClearColor(0.3f, 0.3f, 0.3f, 1f);
    }
 
    public static uint[] textures = new uint[1];
    static Bitmap textureImage;

    public static void DrawLoop()
    {
        System.Threading.Thread.Sleep(1000);
        gl.Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        gl.LoadIdentity();
        gl.Translate(0, 0, 0);
        gl.Scale(0.4, 0.4, 0.4);
        gl.Rotate(180, 0, 0, 0);
        gl.BindTexture(GL_TEXTURE_2D, textures[0]);
        gl.Begin(GL_QUADS);
        //////////////////


        gl.TexCoord(0, 0); gl.Vertex(-1, -1, 1);
        gl.TexCoord(1, 0); gl.Vertex(1, -1, 1);
        gl.TexCoord(1, 1); gl.Vertex(1, 1, 1);
        gl.TexCoord(0, 1); gl.Vertex(-1, 1, 1);

        gl.TexCoord(1, 0); gl.Vertex(-1, -1, -1);
        gl.TexCoord(1, 1); gl.Vertex(-1, 1, -1);
        gl.TexCoord(0, 1); gl.Vertex(1, 1, -1);
        gl.TexCoord(0, 0); gl.Vertex(1, -1, -1);

        gl.TexCoord(0, 1); gl.Vertex(-1, 1, -1);
        gl.TexCoord(0, 0); gl.Vertex(-1, 1, 1);
        gl.TexCoord(1, 0); gl.Vertex(1, 1, 1);
        gl.TexCoord(1, 1); gl.Vertex(1, 1, -1);

        gl.TexCoord(1, 1); gl.Vertex(-1, -1, -1);
        gl.TexCoord(0, 1); gl.Vertex(1, -1, -1);
        gl.TexCoord(0, 0); gl.Vertex(1, -1, 1);
        gl.TexCoord(1, 0); gl.Vertex(-1, -1, 1);

        gl.TexCoord(1, 0); gl.Vertex(1, -1, -1);
        gl.TexCoord(1, 1); gl.Vertex(1, 1, 1);
        gl.TexCoord(0, 1); gl.Vertex(1, 1, 1);
        gl.TexCoord(0, 0); gl.Vertex(1, -1, 1);

        gl.TexCoord(0, 0); gl.Vertex(-1, -1, -1);
        gl.TexCoord(1, 0); gl.Vertex(-1, -1, 1);
        gl.TexCoord(1, 1); gl.Vertex(-1, 1, 1);
        gl.TexCoord(0, 1); gl.Vertex(-1, 1, -1);



        ////////////////////          
        gl.End();
        gl.Flush();
    }

Ответы (0 шт):