gpt4 book ai didi

python - opengl设置纹理颜色和顶点颜色

转载 作者:行者123 更新时间:2023-12-01 06:20:05 25 4
gpt4 key购买 nike

因为我需要显示huge number of labelsmove independently ,我需要在pyglet中渲染一个标签到纹理(否则更新每个字形的顶点列表太慢)。

我有一个解决方案可以做到这一点,但我的问题是包含字形的纹理是黑色的,但我希望它是红色的。请参阅下面的示例:

from pyglet.gl import *

def label2texture(label):
vertex_list = label._vertex_lists[0].vertices[:]
xpos = map(int, vertex_list[::8])
ypos = map(int, vertex_list[1::8])
glyphs = label._get_glyphs()

xstart = xpos[0]
xend = xpos[-1] + glyphs[-1].width
width = xend - xstart

ystart = min(ypos)
yend = max(ystart+glyph.height for glyph in glyphs)
height = yend - ystart

texture = pyglet.image.Texture.create(width, height, pyglet.gl.GL_RGBA)

for glyph, x, y in zip(glyphs, xpos, ypos):
data = glyph.get_image_data()
x = x - xstart
y = height - glyph.height - y + ystart
texture.blit_into(data, x, y, 0)

return texture.get_transform(flip_y=True)

window = pyglet.window.Window()
label = pyglet.text.Label('Hello World!', font_size = 36)
texture = label2texture(label)

@window.event
def on_draw():
hoff = (window.width / 2) - (texture.width / 2)
voff = (window.height / 2) - (texture.height / 2)

glClear(GL_COLOR_BUFFER_BIT)
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glClearColor(0.0, 1.0, 0.0, 1.0)
window.clear()
glEnable(GL_TEXTURE_2D);

glBindTexture(GL_TEXTURE_2D, texture.id)
glColor4f(1.0, 0.0, 0.0, 1.0) #I'd like the font to be red
glBegin(GL_QUADS);
glTexCoord2d(0.0,1.0); glVertex2d(hoff,voff);
glTexCoord2d(1.0,1.0); glVertex2d(hoff+texture.width,voff);
glTexCoord2d(1.0,0.0); glVertex2d(hoff+texture.width,voff+texture.height);
glTexCoord2d(0.0,0.0); glVertex2d(hoff, voff+texture.height);
glEnd();

pyglet.app.run()

知道如何给它上色吗?

最佳答案

您想要设置glEnable(GL_COLOR_MATERIAL)。这使得纹理颜色与当前 OpenGL 颜色混合。您还可以使用glColorMaterial函数来指定是否影响每个多边形的前/后/两者。文档 here .

关于python - opengl设置纹理颜色和顶点颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/244720/

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