Python OpenGL 纹理重复

2 投票
1 回答
1012 浏览
提问于 2025-04-17 05:28

我刚开始学习OpenGL,想在GL_QUADS上重复纹理。

到目前为止,这是我加载纹理的代码:

    file = os.path.join('image','texture.png')
    surface = image.load(file)

    self.t1 = surface.image_data.create_texture(image.Texture)
    glBindTexture(GL_TEXTURE_2D, t1.id)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)

还有绘制的代码:

    glBindTexture(GL_TEXTURE_2D, self.t1.id)
    glBegin(GL_QUADS)
    glTexCoord2f(0.0, 0.0); glVertex3f(0, 0, 0)
    glTexCoord2f(1.0, 0.0); glVertex3f(self.width, 0,  0)
    glTexCoord2f(1.0, 1.0); glVertex3f(self.width, self.height, 0)
    glTexCoord2f(0.0, 1.0); glVertex3f(0, self.height,  0)
    glEnd()

当我改变self.width和self.height时,纹理就会被拉伸和扭曲。

我该怎么做才能让纹理重复呢?如果我做错了,请多多包涵。

谢谢你...

1 个回答

2

我该怎么重复纹理呢?如果我说错了请原谅我。

可以通过使用纹理坐标(glTexCoord)来实现,坐标的范围可以超出[0,1]。

撰写回答