2

opengl関数を使用して、テクスチャをピグレットのクワッドにマッピングしようとしていますが、クワッドが白で表示されています。

私のコードは次のようになります:

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 ()

白いクワッドとして描画されるために、私が間違っている、または見逃していることがありますか?

4

1 に答える 1

4

間違っている可能性があることがいくつかあります。ペーストビンのように完全なコードがあるといいのですが、そう尋ねるためにコメントすることはできません...

テクスチャを OpenGL テクスチャにする必要があります。まず、画像を生データ形式に変換する必要があります。画像を読み込むときは、image.get_data() を実行し、以下の 1 行に圧縮します。これは最も効率的な方法ではありませんが、単純な例です。

テクスチャ セットの描画パラメータをバインドした後。

次に、データを 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 でバインドすると、このテクスチャを使用できるようになります。13は私が見ることができるすべてのために何もないかもしれません. すべてのコードを提供してください。おそらく修正できます。

于 2012-10-08T12:04:09.490 に答える