【问题标题】:Pyglet use entire texture when drawingPyglet 在绘制时使用整个纹理
【发布时间】:2015-09-06 13:30:45
【问题描述】:

我正在尝试在 pyglet 中绘制一个基本立方体,并对其应用纹理。我可以绘制立方体,但纹理只是我加载的文件的一个像素。这是我如何加载纹理并设置它。

self.texture = pyglet.image.load("texture.png").get_texture()
self.batch.add(
            len(vertices) / 3, gl_QUADS, self,
            ("v3f" , vertices)
        )

self.batch.draw()

这将成功地在我想要的地方绘制我的立方体,但纹理不是我想要的。仅显示纹理文件(“texture.png”)的最左下角像素。我需要立方体的每个面来使用整个文件

【问题讨论】:

    标签: python opengl textures render pyglet


    【解决方案1】:

    GL 不知道如何将纹理映射到您的图元。 您需要在图元和纹理空间之间定义 映射。一种方法是为每个顶点指定 纹理坐标

    由于 GL 被设计为状态机,当您不以每个顶点的方式设置某些属性的值时,它将使用为 所有 个顶点设置的最后一个值,所以它将在整个图元的同一点对纹理进行采样 - 只会使用纹理的一个像素。

    从问题来看,不清楚您是使用 loegacy GL 还是现代基于着色器的 GL。我您使用的是旧的固定功能管道,没有自写着色器(否则,添加纹理可能根本没有效果)。在这种情况下查看the chapter on texture mapping in the OpenGL red book。它应该解释使它起作用所需的基础知识。

    【讨论】:

      猜你喜欢
      • 2017-11-20
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多