pyglet:使用指定的Alpha蒙版使纹理变暗
作者:互联网
如何使用指定的其他Alpha蒙版使纹理变灰?简单来说,我想做这样的事情:
解决方法:
我不知道您的驱动程序是否支持FrameBufferObject扩展(如果它不提供着色器,但是值得一试).好吧,这不是您想要的,您可能必须毕竟使用glTexEnv,或者比我更聪明,但这会在和图像上加上一个遮罩,但实际上并没有添加alpha值:
import pyglet
from pyglet.gl import *
window = pyglet.window.Window()
image = pyglet.resource.image('pic.jpg')
mask = pyglet.resource.image('mask.jpg')
createdtex=False;
imagetex = 0
@window.event
def on_draw():
window.clear()
global createdtex
texfrmbuf =(GLuint*1)()
global imagetex
if createdtex!=True:
imagetex = image.get_texture()
glEnable(GL_BLEND)
glBlendFunc(GL_ZERO, GL_SRC_COLOR)
glGenFramebuffersEXT(1,texfrmbuf)
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT,texfrmbuf[0])
glFramebufferTexture2DEXT(GL_DRAW_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT, imagetex.target,imagetex.id,0)
mask.blit(0,0)
glFlush()
glDisable(GL_BLEND)
glDeleteFramebuffersEXT(1,texfrmbuf)
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT,0)
createdtex=True
imagetex.blit(0,0)
pyglet.app.run()
标签:pyglet,opengl,python 来源: https://codeday.me/bug/20191201/2084204.html