Witam mam problem, mianowicie mam metodę animation() która zwiększa wartość alfa do 60 a następnie ją zmniejsza i tak w kółko, za każdym razem kiedy wartość "alfa" się zwiększy o 1,lub zmniejszy wywoływana jest metoda display która powinna odświeżyć całe okno. Jeśli nie jest odpalany nowy wątek wtedy wszystko działa dobrze, niestety kiedy go uruchamiam sam musze klikać na okno które się wyświetla żeby cokolwiek się odświeżyło.
Jak zrobić że mimo że zaczynam nowy wątek to okno i tak jest odświeżane.
(Biblioteka którą wykorzystuje do generowania grafiki to openGL)
kawałek kodu
static int alfa = 0;
public static void animation()
{
int i;
while (true)
{
for (i = 0; i < 60; i++)
{
alfa++;
display();
}
for (i = 60; i > 0; i--)
{
alfa--;
display();
}
}
}
static void display()
{
GL.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
GL.glClear(GL.GL_COLOR_BUFFER_BIT);
GL.glColor3f(1.0f, 0.0f, 0.0f);
GL.glPushMatrix();
//GL.glTranslatef(0.0f, 0.0f, -200.0f);
GL.glRotatef(alfa, 0.0f, 1.0f, 0.0f);
GL.glBegin(GL.GL_POLYGON);
GL.glVertex3d(0, 0, 0.0);
GL.glVertex3d(0, 1, 0.0);
GL.glVertex3d(1, 1, 0.0);
GL.glVertex3d(1, 0, 0.0);
GL.glEnd();
GL.glPopMatrix();
GL.glFlush();
Glut.glutSwapBuffers();
}
static void Main(string[] args)
{
Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_DOUBLE | Glut.GLUT_RGB);
Glut.glutInitWindowSize(400, 400);
Glut.glutCreateWindow("Przekształcenia");
Glut.glutDisplayFunc(display);
new Thread(new ThreadStart(startSerial)).Start();
//jeśli wpisze po prostu startSerial(); bez rozpoczynania nowego wątku wszystko jest ok
//jeśli zaczne wątek okno nie jest odświeżane
Glut.glutMainLoop();
}
jest to program troche od czapy, ale chodzi mi o samą idee działania bo musze wykorzystać ją gdzie indziej, także wolał bym uniknąć porad typu "to się da zrobić inaczej", lub "ten program jest bezsensu"
Pozdrawiam i dzięki za pomoc