объект ‘GLXPlatform’ не имеет атрибута ‘WGL’

#python #linux #pyqt4 #pyopengl #pyopencl

#python #linux #pyqt4 #pyopengl #pyopencl

Вопрос:

Я новичок в OpenGL / OpenCL. Я пытаюсь выполнить код из этого примера, но возникает ошибка:

 Traceback (most recent call last):
File "/home/anka-rybalko/workspace/bla/openGL.py", line 99, in initializeGL
self.initialize_buffers()
File "/home/anka-rybalko/workspace/bla/openGL.py", line 61, in initialize_buffers
self.ctx, self.queue = clinit()
File "/home/anka-rybalko/workspace/bla/openGL.py", line 37, in clinit
  get_gl_sharing_context_properties())
File "/usr/lib64/python2.7/site-packages/pyopencl-2014.1-py2.7-linux-x86_64.egg/pyopencl/tools.py", line 422, in get_gl_sharing_context_properties
from OpenGL import platform as gl_platform, GLX, WGL
File "/usr/lib/python2.7/site-packages/OpenGL/WGL/__init__.py", line 1, in <module>
from OpenGL.raw.WGL.VERSION.WGL_1_0 import *
File "/usr/lib/python2.7/site-packages/OpenGL/raw/WGL/VERSION/WGL_1_0.py", line 48, in <module>
@_p.types(_cs.c_int,_cs.HDC,ctypes.POINTER(_cs.PIXELFORMATDESCRIPTOR))
File "/usr/lib/python2.7/site-packages/OpenGL/raw/WGL/VERSION/WGL_1_0.py", line 13, in _f
return _p.createFunction( function,_p.PLATFORM.WGL,'WGL_VERSION_WGL_1_0',error_checker=_errors._error_checker)
AttributeError: 'GLXPlatform' object has no attribute 'WGL'
  

Как я понимаю, WGL — это API для ОС Windows, а не для Linux. Должен ли я как-то указать свою платформу раньше? Или как я могу это исправить?

Заранее спасибо!

Комментарии:

1. Пожалуйста, укажите, какая часть кода вызывает проблему, и, если возможно, опубликуйте минимальный пример, в котором, по вашему мнению, код ДОЛЖЕН выполняться. Если бы вы могли предоставить это, я был бы рад попробовать.

2. @andi Насколько я понимаю, ошибка появляется прямо перед вызовом функции «resizeGL». До этого все работало гладко.

3. Я спрашивал, можете ли вы опубликовать код, вызывающий проблему, чтобы я мог воспроизвести ошибку.

4. @andi О, извините. Код является примером из нижней части этой страницы

5. Хорошо, я запускаю его на компьютере с Windows 8. Я получаю немного другую ошибку. Я рассмотрю это.

Ответ №1:

Используемый вами код (PyOpenGL 2014.1) импортирует два модуля, зависящих от платформы (WGL и GLX). PyOpenGL должен был вызвать эту ошибку как ImportError (а не AttributeError), но это все равно привело бы к сбою.

PyOpenCL тем временем решил проблему в своем репозитории github. Если у вас установлен git (и pip), то это должно дать вам новую версию (примечание: не настроено для разработки OpenCL здесь, поэтому на самом деле не может это протестировать):

 pip install git https://github.com/pyopencl/pyopencl#egg=pyopencl