簡體   English   中英

繪制精靈時,openGL / Pyglet紋理圖形消失

[英]openGL/Pyglet texture graphics vanish when drawing sprites

我的代碼繪制了一個3D世界,頂部有一組2D圖形。 3D世界由紋理四邊形組成,紋理使用以下代碼生成:

textures = []

image = pyglet.image.load(os.path.join(img_dir, "magic.png"))

textures.append(image.get_texture())

glEnable(textures[-1].target)
glBindTexture(textures[-1].target, textures[-1].id)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image.width, image.height,
    0, GL_RGBA, GL_UNSIGNED_BYTE,
    image.get_image_data().get_data('RGBA',
    image.width * 4))

然后繪制四邊形(另外兩個只有不同的坐標):

glBindTexture(texture.target, texture.id)
glBegin(GL_QUADS)
glTexCoord2f(0.0, 0.0); glVertex3f(4.0, -2.0, 100.0+self.clock)
glTexCoord2f(1.0, 0.0); glVertex3f(4.0, -2.0, -100.0+self.clock)
glTexCoord2f(1.0, 1.0); glVertex3f(-4.0,  -2.0, -100.0+self.clock)
glTexCoord2f(0.0, 1.0); glVertex3f(-4.0,  -2.0, 100.0+self.clock)
glEnd()

我在繪制3D和2D圖形時設置了正確的參數,當我在3D四邊形上繪制一個2D三角形時(使用以下代碼)一切正常:

glBegin(GL_TRIANGLES)
glVertex3f(0.0, 10, 0.0)
glVertex3f(-10, -10, 0)
glVertex3f(10, -10, 0)
glEnd()

工作紋理

然而,我然后嘗試繪制一個精靈,3D四邊形失去紋理,並繪制為白色。

self.spr=pyglet.sprite.Sprite(pyglet.image.load(os.path.join(img_dir, "largebullet.png")).get_texture())
...
self.spr.draw()

破碎的紋理 請注意,背景中有一些霧

我找到了一個解決方案,通過在繪制后在啟用的紋理上運行glDisable(texture.target)。 它並不理想,因為它們必須再次重新啟用,但現在它可以正常工作。

我遇到了類似的問題,我發現pyglet Sprite類傾向於禁用它設置的OpenGL狀態中的所有內容。 每次繪制精靈時都必須重置很多東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM