2014-03-14 2 views
0

OpenGL에 익숙하지 않습니다. 왜 glutPostRedisplay()를 호출하기 전에 함수의 GetPixelDifference()가 항상 호출되는지 궁금합니다. 어떻게 해결할 수 있습니까?왜 glutPostRedisplay에 지연이 있습니까?

import sys 
import time 
from OpenGL.GL import * 
from OpenGL.GLU import * 
from OpenGL.GLUT import * 


def GetPixelDifference(): 
    print("calculate") 


def Draw(): 
    print("draw") 
    glClear(GL_COLOR_BUFFER_BIT) 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 
    glEnable(GL_BLEND) 
    glColor4f(1.0, 1.0, 1.0, 0.4) 
    glPolygonMode(GL_FRONT, GL_FILL) 
    glBegin(GL_POLYGON) 
    glVertex2f(1,1) 
    glVertex2f(-1,1) 
    glVertex2f(0,0) 
    glEnd() 
    glFlush() 
    GetPixelDifference() 


def Mutate(): 
    print("mutate") 
    glutPostRedisplay() 
    #time.sleep(5) 
    print("=======") 
    print("=wrong=") 
    print("=======") 
    GetPixelDifference() 


glutInit() 
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA) 
glutInitWindowSize(300, 300) 
glutCreateWindow(b"My clock") 
glutDisplayFunc(Draw) 
print("main") 
glutIdleFunc(Mutate) 
glutMainLoop() 

''' 
And this is what i get 

main 
draw 
calculate 
mutate 
======= 
=wrong= 
======= 
calculate 
draw 
calculate 
draw 
''' 

그리기 전에 계산이 필요합니다.하지만 계산이 완료되면 그림 계산이 완료됩니다.이 계산은 모든 픽셀에 대해 발생합니다.

답변

관련 문제