저는 현재 PyGame에서 PyOpenGL을 사용하여 하향식 2D 측면 스크롤러 용 코드를 작성하고 있습니다.하나의 2D 이미지를 다른 이미지 위에 오버레이합니까? PyOpenGL?
아래 코드는 창에 2D 이미지를 생성합니다.
추가되는 이미지가 배경입니다. OpenGL을 사용하여 백그라운드에 스프라이트를 추가하고 싶습니다. 다른 말로하면 하나의 2D 이미지를 다른 이미지 위에 겹쳐 놓고 싶습니다. 나는 이것을 할 수있는 좋은 방법을 찾을 수없는 것 같습니다.
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
from screenDictionary import *
### Initialize variables ###
gameOn = True
dispWidth = 1920
dispHeight = 1024
bgImg = 'A1_64.png'
bgImg2 = 'HookedFront64.png'
transTuple = (255, 0, 255)
blackTuple = (100, 100, 100)
screenX = 0
screenY = 0
### Initialize display ###
def createDisplay(dispWidth, dispHeight):
pygame.init()
screen = pygame.display.set_mode((dispWidth, dispHeight), DOUBLEBUF|OPENGL)
pygame.display.set_caption('Hooked')
return screen
def createSurfaces(screen):
background = pygame.Surface(screen.get_size())
background.fill(blackTuple)
sprite = pygame.Surface(screen.get_size())
sprite.set_colorkey(transTuple)
return background
def loadScene(bgImg):
img = pygame.image.load(bgImg)
textureData = pygame.image.tostring(img, "RGB", 1)
width = img.get_width()
height = img.get_height()
bgImgGL = glGenTextures(1)
glBindTexture(GL_TEXTURE_2D, bgImgGL)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, textureData)
glEnable(GL_TEXTURE_2D)
def placeScene():
glLoadIdentity()
gluPerspective(90, 1, 0.05, 100)
glTranslatef(0,0,0)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glBegin(GL_QUADS)
glTexCoord2f(0,0)
glVertex3f(-4,-4,-4)
glTexCoord2f(0,1)
glVertex3f(-4,4,-4)
glTexCoord2f(1,1)
glVertex3f(4,4,-4)
glTexCoord2f(1,0)
glVertex3f(4,-4,-4)
glEnd()
screen = createDisplay(dispWidth, dispHeight)
background = createSurfaces(screen)
mapParams = screenDictionary(screenX, screenY)
bgImg = mapParams[0]
loadScene(bgImg)
loadScene(bgImg2)
loadScene(bgImg)
###Run the game###
while gameOn:
placeScene()
pygame.display.flip()
pygame.time.wait(1)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
gameOn = False
안녕하세요. 이 [how-to-ask] (http://stackoverflow.com/help/how-to-ask)를 읽고 거기에 나와있는 지침에 따라 프로그래밍을 설명하는 코드 및 오류 메시지와 같은 추가 정보로 질문을 수정하십시오. 문제. – thewaywewere
GL을 왜 사용하고 있습니까? 나는 또한 3D를 위해서만 그렇게했다. 하지만 2D를 원한다고 가정하므로 glVertex2f와 주문 수를 사용할 수 있습니다. – user7185318
하드웨어 가속 기능을 위해 GL을 선택했습니다. OpenGL의 대안을 추천 해 주시겠습니까? –