2015-01-31 5 views
0

Я использую pyopengl с pygame, и я хочу отобразить изображение на квадроцикле. Каждый раз, когда я использовал glGenTextures(1,img), он возвращает 0. Я читал о необходимости вызова этой функции в контексте, но я не знаю, как ее установить.PyOpenGL glGenTextures возвращает 0

Вот мой код до недо с помощью glGenTexures:

import pygame, OpenGL, math, numpy 
from pygame.locals import * 
from OpenGL.GL import * 
from OpenGL.GLU import * 
from PIL import Image #have Pillow instead of PIL 

img = Image.open('myPixelArt2.bmp') 
glGenTextures(1,img) 

print glGenTextures(1,img) 
print img 

, которая печатает

0 
<PIL.BmpImagePlugin.BmpImageFile image mode=RGB size=64x64 at 0x3A4E9B8> 

Как получить glGenTextures для возвращения 1? Я пробовал вызов glGenTexures (1) и попробовал jpg-образ, но ничего не меняет.

ответ

0

Я прочитал о необходимости вызова этой функции в контексте, но я не знаю, как ее установить.

Но это ключевой момент здесь. Вы не можете использовать OepnGL без контекста OpenGL. Обычно существуют некоторые API-интерфейсы платформы, которые позволяют создавать и управлять контекстами GL и «подключать» их к окнам, чтобы вы могли фактически получить что-либо видимое на экране с помощью GL.

Часто не используются эти низкоуровневые API-интерфейсы платформы, но некоторые абстракции более высокого уровня, которые внутренне обрабатывают все эти детали, специфичные для платформы. Поскольку вы используете python и PyGame, вы, вероятно, захотите использовать PyOpenGL, который может создавать контексты для вас. Но OpenGL - сложная тема, и она учит, что это потребует много усилий.

+0

Thankyou, я теперь установлен OpenGLContext, (и PyVRML97 и PyDispatcher), но как активировать контекст? Я могу назвать что-либо в частности в моем скрипте перед glGenTextures? Я импортировал OpenGLContext.textures в верхней части моего скрипта - это активирует контекст сам по себе? –

+0

@MattMaich: Хмм, это намиг неудачно. OpenGLContext PyOpenGL напрямую не связан с контекстами OpenGL. Но это своего рода простая библиотека сценографа. Я не знал об этом раньше ... Но в этой статье OpenGLContext предусмотрены различные механизмы создания контекста GL: через перенасыщение через wxwindows и через сам pygame – derhass

0

Я не знаю PyOpenGL, подумайте о создании контекста как запуска двигателя OpenGL. Вы можете увидеть здесь, как создать контекст:

http://pyopengl.sourceforge.net/context/tutorials/shader_1.html (использует PyOpenGL-х OpenGLContext)

glGenTextures просит систему возвращать целое число, которое может быть использовано в качестве текстуры ID. Первый параметр - количество целых чисел идентификатора текстуры, которое вы хотите, и оно возвращает много идентификаторов.

Существует PyOpenGL перевод в NeHe учебник по текстурирования здесь: http://pyopengl.sourceforge.net/context/tutorials/nehe6.html

Смежные вопросы