gpt4 book ai didi

python - PyOpenGL 中纹理的伪影

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:14 26 4
gpt4 key购买 nike

我使用了Python Imaging Library来加载.ttf字体。这是代码:

self.rect = Image.new("RGBA", (600,100), (255,255,255))
self.draw = ImageDraw.Draw(self.rect)
self.font = ImageFont.truetype("font.ttf", 96)
self.draw.text((5,0), "activatedgeek", (0,0,0), font=self.font)
self.texture = self.loadFont(self.rect)

这是相应类的loadFont()函数:

def loadFont(self, im):
try:
ix, iy, image = im.size[0], im.size[1], im.tostring("raw", "RGBA", 0, -1)
except SystemError:
ix, iy, image = im.size[0], im.size[1], im.tostring("raw", "RGBX", 0, -1)

retid = gl.glGenTextures(1)
gl.glPixelStorei(gl.GL_UNPACK_ALIGNMENT,1)
gl.glBindTexture(gl.GL_TEXTURE_2D,retid)
gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MAG_FILTER, gl.GL_LINEAR_MIPMAP_LINEAR)
gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MIN_FILTER, gl.GL_LINEAR_MIPMAP_LINEAR)
gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_WRAP_S, gl.GL_CLAMP)
gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_WRAP_T, gl.GL_CLAMP)
gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_GENERATE_MIPMAP, gl.GL_TRUE)
gl.glTexImage2D(gl.GL_TEXTURE_2D,0,3,ix,iy,0,gl.GL_RGBA,gl.GL_UNSIGNED_BYTE,image)
return retid

这是我使用 glReadPixels() 拍摄的快照,不幸的是与使用 PyQt 创建的窗口上渲染的快照相同。

Snapshot OpenGL context

它显示了不需要的边框,一些人工制品。请帮我纠正这个问题。

最佳答案

您是否考虑过使用更合理的换行状态,例如GL_CLAMP_TO_EDGE?我有一种强烈的感觉,这与纹理图像边缘之外的边框颜色有关。

您可以采取多种方法来解决此类问题,从预乘 Alpha 到整个图像周围的额外纹理元素边框,但最简单的方法是GL_CLAMP_TO_EDGE.

GL_CLAMP 就换行模式而言是一个笑话,它不会将纹理坐标的范围限制到纹素中心,并且当最近的纹素成为边框颜色时,灾难就会随之而来。不用说,这种行为通常是不受欢迎的。

关于python - PyOpenGL 中纹理的伪影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19689930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com