0
私は現在、PyGameでPyOpenGLを使用して、トップダウンの2Dサイドスクロール用のコードを記述しています。1つの2Dイメージを別のイメージに重ねますか? PyOpenGL?
次のコードは、ウィンドウ内に2D画像を生成します。
追加される画像は背景です。 OpenGLを使用して背景にスプライトを追加したいと思います。言い換えれば、1つの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の代替案をお勧めしますか? –