0

LWJGL でマルチテクスチャリングを試して達成するために、このチュートリアルに従いました。しかし、コードを実行するたびに、2 番目のテクスチャが表示されないか、最初のテクスチャが代わりに表示されます。テクスチャをバインドする方法は次のとおりです。

ARBMultitexture.glActiveTextureARB(ARBMultitexture.GL_TEXTURE0_ARB);
bindTexture(myTex);
glEnable(GL_TEXTURE_2D);
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, EXTTextureEnvCombine.GL_COMBINE_EXT);
glTexEnvf (GL_TEXTURE_ENV,EXTTextureEnvCombine.GL_COMBINE_RGB_EXT, GL_REPLACE);
ARBMultitexture.glActiveTextureARB(ARBMultitexture.GL_TEXTURE1_ARB);
bindTexture(myTex2);
glEnable(GL_TEXTURE_2D);
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, EXTTextureEnvCombine.GL_COMBINE_EXT);
glTexEnvf (GL_TEXTURE_ENV, EXTTextureEnvCombine.GL_COMBINE_RGB_EXT, GL_INCR);

drawStuff();

myTex と myTex2 の両方がTexturesdrawStuff()すべてを描画する関数です。私はテクスチャなどをロードするためにslickを使用しています。これが私のbindTexture関数です:

void bindTexture(Texture t) {
    glBindTexture(GL_TEXTURE_2D, t.getTextureID());
}

drawStuff()カスタムの「Face」クラスがあり、そこにすべてを描画する場所は次のとおりです。

glBegin(GL_TRIANGLES);
    glNormal3f(getNormal().x, getNormal().y, getNormal().z);
    glNormal3f(norm1.x, norm1.y, norm1.z);
    ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE0_ARB, t1.x, t1.y);
    ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE1_ARB, t1.x, t1.y);
    glVertex3f(p1.x, p1.y, p1.z);
    glNormal3f(norm2.x, norm2.y, norm2.z);
    ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE0_ARB, t2.x, t2.y);
    ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE1_ARB, t2.x, t2.y);
    glVertex3f(p2.x, p2.y, p2.z);
    glNormal3f(norm3.x, norm3.y, norm3.z);
    ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE0_ARB, t3.x, t3.y);
    ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE1_ARB, t3.x, t3.y);
    glVertex3f(p3.x, p3.y, p3.z);
glEnd();

私が作成した 3D ベクトル クラスのすべてのインスタンスはどこt1, t2, t3, norm1, norm2, norm3, p1, p2, p3にありますか (私はt1, t2、 との z コンポーネントに 0 を保持していますt3)。頂点シェーダーとフラグメント シェーダーのソースは、前述のチュートリアルとまったく同じです。すべてのコードは、単純な古いテクスチャで問題なく機能していました。これをどのように機能させることができるかについてのアイデアはありますか? それとも、LWJGL を使用するときに簡単に理解できる、より優れたチュートリアルでしょうか?

4

1 に答える 1