Использование Pygame и PyOpenGL, я создал 2D поверхность, я использовал 815x815 PNG, созданный в Photoshop в качестве текстуры: Изображение круга показывается как квадрат в OpenGL
Вот как я загрузка изображение, используя pygame, и превращая его в текстуру.
pygame.init()
display = (800,600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
myTex = pygame.image.load('0.png')
myTex = myTex.convert_alpha()
myTexData = pygame.image.tostring(myTex, 'RGBA', 1)
myTexID = 0
glGenTextures(1, myTexID)
glBindTexture(GL_TEXTURE_2D, myTexID)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, myTex.get_width(), myTex.get_height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, myTexData)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
Вот код, который я использую, чтобы нарисовать квадрат и текстуру.
glBlendFunc(GL_SRC_ALPHA, GL_ONE)
glBegin(GL_QUADS)
glVertex2fv((-1,-1))
glTexCoord2f(0,1)
glVertex2fv((-1,1))
glTexCoord2f(1,1)
glVertex2fv((1,1))
glTexCoord2f(1,0)
glVertex2fv((1,-1))
glTexCoord2f(0,0)
glEnd()
Вот что происходит, когда я запускаю код. Как получить текстуру для правильной отображения, и почему это происходит?
EDIT
Это какая-то ошибка прозрачности, так как изменение фона изображения от прозрачного до белого исправления проблемы, однако, convert_alpha() не решить эту проблему. Кроме того, я не знаю, почему это сокращается, это законный вопрос.
Ничего не изменилось. PNG был создан с использованием Photoshop. – Bretsky