gpt4 book ai didi

python - 将纹理映射到四边形 opengl 和 pyglet

转载 作者:行者123 更新时间:2023-11-28 22:59:50 30 4
gpt4 key购买 nike

我正在尝试使用 opengl 函数将纹理映射到 pyglet 中的四边形,但四边形只是显示为白色。

我的代码是这样的:

import pyglet
from pyglet.gl import *

glEnable(GL_TEXTURE_2D)
image = pyglet.image.load("redbrick.png")
texture = image.get_texture()

和我的绘制函数:

def on_draw():
window.clear()

glBindTexture (GL_TEXTURE_2D, 13)
glBegin (GL_QUADS);
glTexCoord2i (0, 0)
glVertex2i (0, 0)
glTexCoord2i (1, 0)
glVertex2i (100, 0)
glTexCoord2i (1, 1)
glVertex2i (100, 100)
glTexCoord2i (0, 1)
glVertex2i (0, 100)
glEnd ()

为了将其绘制为白色四边形,我是否做错了或遗漏了什么?

最佳答案

我看到了一些可能是错误的地方。把完整的代码放在一个 pastebin 里就好了,但我不能评论这样问......

您的纹理需要制作成 opengl 纹理。您需要先将图像转换为原始数据格式。当你加载图像时执行 image.get_data(),压缩到下面的一行中。这不是最有效的方法,而是一个简单的示例。

绑定(bind)纹理后设置绘制参数。

然后在glTexImage2D中将数据交给显卡。

data=pyglet.image.load("redbrick.png").get_data()
texture_id = glGenTextures(1)
glBindTexture(GL_TEXTURE_2D, texture_id)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (image_width), (image_height), 0, GL_RGBA, GL_UNSIGNED_BYTE, data)

之后,如果您使用 texture_id 进行绑定(bind),您应该可以使用该纹理。就我所见,13 可能算不了什么。提供所有代码,我可能会修改。

关于python - 将纹理映射到四边形 opengl 和 pyglet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12778913/

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