Форум сайта python.su
Не могу понять почему.
Вот код.
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
def InitGL(Width, Height):
glClearColor(0.0, 0.0, 0.0, 0.0)
#gluLookAt(-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)
#glClearDepth(1.0)
#glDepthFunc(GL_LESS)
#glEnable(GL_DEPTH_TEST)
#glEnable(GL_LIGHTING)
#glEnable(GL_LIGHT0)
#glEnable(GL_COLOR_MATERIAL)
def ReSizeGLScene(Width, Height):
if Height == 0: Height = 1
glViewport(0, 0, Width, Height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
def DrawGLScene():
glClear(GL_COLOR_BUFFER_BIT)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
gluLookAt(-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)
glPushMatrix()
glTranslatef(-1.0, 0.0, 0.0)
glEnable(GL_POINT_SMOOTH)
glPointSize(3)
glBegin(GL_POINTS)
glVertex3f(0.0, 0.0, 0.0)
glEnd()
glPopMatrix()
glTranslatef(1.0, 0.0, 0.0)
glBegin(GL_LINE_LOOP)
glVertex3f(0.4, 0.5, 0.6)
glVertex3f(0.2, 0.4, 0.1)
glEnd()
glutSwapBuffers()
def KeyPressed(*args):
if args[0] == "\033": sys.exit()
def main():
glutInit(sys.argv)
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH)
glutInitWindowSize(800, 600)
glutInitWindowPosition(0, 0)
glutCreateWindow("Will it ever works properly at last?")
glutDisplayFunc(DrawGLScene)
glutIdleFunc(DrawGLScene)
glutReshapeFunc(ReSizeGLScene)
glutKeyboardFunc(KeyPressed)
InitGL(800, 600)
glutMainLoop()
main()
Офлайн
пиши в GUI
Офлайн
нельзя ли поподробнее? желательно с примером кода, поскольку я новичок как в питоне так и в OpenGL и программировании вообще.
Офлайн
Попробуйте вместо GL_LINE_LOOP использовать GL_LINE_STRIP. Если у вас видеокарта семейства ATI Radeon - от GL_LINE_LOOP откажитесь (есть баги). Единственное отличие - GL_LINE_LOOP сам “закрывает” ламаную, то есть в вашем случае должен отрисоваться треугольник. В случае GL_LINE_STRIP придется указать три точки.
Отредактировано (Апрель 6, 2010 16:47:25)
Офлайн
нет, GL_LINE_STRIP нге дает результата к сожалению. Вероятно что то не то с положением камеры или еще с чем то, в общем я разобратся не могу.
Офлайн
rudmВерно, камера расположена так, что вы не можете увидеть линию. Попробуйте перед отрисовкой LINE_LOOP в функции glTranslatef поиграться с параметрами. Походу если все ноли указать, то увидите.
Вероятно что то не то с положением камеры или еще с чем то, в общем я разобратся не могу.
Офлайн
Да, действительно, рисует и точку и линию, спасибо!
Надо теперь научится рисовать их друг за другом. То есть рисоватьточку, делать небольшую задержку, потом рисовать линию
Подскажите пожалуйста, как в OpenGL (или наврное даже лучше средствами Python) сделать задержку по времени?
И как “стирается” с экрана объект OpenGL?
Офлайн
rudmЭто уже к OpenGL не имеет отношение, он только делает рендеринг.
То есть рисоватьточку, делать небольшую задержку
rudmЭто не совсем правильно. DrawGLScene рисует. Если вы хотите “стереть”, просто не рисуйте при наступлении некоторого условия.
И как “стирается” с экрана объект OpenGL?
Отредактировано (Апрель 15, 2010 19:48:15)
Офлайн