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();
}

