Уведомления

Группа в Telegram: @pythonsu

#1 Март 19, 2010 18:15:22

rudm
От:
Зарегистрирован: 2009-10-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

OpenGL. Перенес код с С на Python-вылетает едва начав отрисовыватся.

Вот код на С
http://opengl.org.ru/books/open_gl/chapter2/giroscop/giroscop.c
а вот перенесенный

from OpenGL.GL import *   
from OpenGL.GLU import *
from OpenGL.GLUT import *
#from OpenGL.GLAUX import *

def resize(width, height):
glViewport(0,0,width,height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(-5.5, -5.5, 2.12)
gluLookAt(0,0,5, 0,0,0, 0,1,0)
glMatrixMode(GL_MODELVIEW)

def display():
time = 0
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glPushMatrix()
glRotated(time/2, 0.0, 1.0, 0.0)
glLineWidth(5.0)
glColor3f(1.0,0.0,0.0)
glBegin(GL_LINES)
glVertex3d(-0.3,0.0,0.0)
glVertex3d(1.5,0.0,0.0)
glEnd()

glPushMatrix()
glRotated(2*time,1,0,0)
glTranslated(-0.3,0,0)
glColor3f(0,0,1)

glPushMatrix()
glRotated(90,0,1,0)
glLineWidth(1)
auxWireTorus(0.2, 0.7)
glPopMatrix()

glLineWidth(7)
glColor3f(0,1,0)

glBegin(GL_LINES)
glVertex3d(0,0,0)
glVertex3d(0,1,0)
glVertex3d(0,0,0)
glVertex3d(0,-0.5,1)
glVertex3d(0,0,0)
glVertex3d(0,-0.5,-1)
glEnd()
glPopMatrix()
#glPopMatrix()

while time < 100:
time = time+1
time+1

glutSwapBuffers()
pos = [3,3,3,1]
dir_ = [-1,-1,-1]

def main():
glutInitWindowPosition(0,0)
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE)
glutInitWindowSize(800, 600)
glutCreateWindow("Anim")
glutDisplayFunc(display)
glutReshapeFunc(resize)
glEnable(GL_ALPHA_TEST)
glEnable(GL_COLOR_MATERIAL)
glEnable(GL_LIGHT0)
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glLightfv(GL_LIGHT0, GL_POSITION, pos)
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir_)
glutMainLoop()

main()
Не могу разобратся в чем дело.

ЗЫ В ориинальном коде импортируется библиотека GLAUX - видимо ее уже не существует?



Офлайн

#2 Март 20, 2010 08:03:02

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

OpenGL. Перенес код с С на Python-вылетает едва начав отрисовыватся.

когда я пытался разобраться с OpenGL лет 10 назад, библиотеки GLAUX не существовало уже тогда, почти всю её функциональность перенесли в GLUT.
Раз уж строка #from OpenGL.GLAUX import * закоментирована, то и со строкой auxWireTorus(0.2, 0.7) тоже надо было что-то сделать. Я поставил вместо неё glutSolidTorus(0.2, 0.7, 20, 20) - вроде стала появляться какая-то картинка. Но в коде ещё одна ошибка - питон ругается на glOrtho(-5.5, -5.5, 2.12) в функции resize, там должно быть 6 аргументов, а не 3.



Офлайн

#3 Март 20, 2010 08:44:11

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

OpenGL. Перенес код с С на Python-вылетает едва начав отрисовыватся.

Посмотрел сейчас сишный код - там переменная time статическая, увеличивается на 1 с каждым заходом в display(), а у тебя она всегда равна 0 в этой строке glRotated(2*time,1,0,0).



Офлайн

#4 Март 22, 2010 09:33:57

rudm
От:
Зарегистрирован: 2009-10-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

OpenGL. Перенес код с С на Python-вылетает едва начав отрисовыватся.

GLAUX я сам закоментил )) Потому что понял что библиотека уже несуществует когда питон стал ругатся. Значит учебник просто безнадежно устарел, и по нему не буду я наврное заниматся.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version