OpenGLでテクスチャマッピングを理解しようとしていますが、簡単な例を実行できません。
ポリゴンは描画されていますが、テクスチャではなく単色です。また、これまでglDrawPixelsを正常に使用していたため、ビットマップはsprite1[]に正しくロードされています。
glGenTexturesを使用してtex名を取得していますが、texName1が変更されていないことに気付きました。このGLuintは、glGenTexturesを呼び出した後でも、初期化したものです。
GL_TEXTURE_2Dを有効にしました。
コードは次のとおりです。
GLuint texName1 = 0;
glGenTextures(1, &texName1);
glBindTexture(GL_TEXTURE_2D, texName1);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
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_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA_EXT, sprite1[18], sprite1[22], 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, &sprite1[54]);
glColor3f(1, 1, 0);
glBindTexture(GL_TEXTURE_2D, texName1);
glBegin(GL_QUADS);
glTexCoord2f (0.0, 0.0);
glVertex3f (0.0, 0.0, -5.0f);
glTexCoord2f (1.0, 0.0);
glVertex3f (.5, 0.0, -5.0f);
glTexCoord2f (1.0, 1.0);
glVertex3f (.5, .5, -5.0f);
glTexCoord2f (0.0, 1.0);
glVertex3f (0.0, .5, -5.0f);
glEnd();
更新:私は途方に暮れています。これが私が試したすべてです:
OGLが初期化される前に、テクスチャを初期化していたことがわかりました。テクスチャはクラスコンストラクタで初期化され(glGenTextures-> glTexImage2D)、フレームごとに呼び出されるメンバー関数で描画されます(glBegin-> glEnd)。genTexturesは現在正しく機能しているようで、名前は1になっています。
GL_RGBA8、GL_BGRA_EXTのすべての可能な組み合わせ(GL_BGRAは私のシステムでは機能しません。_EXTが必要です)、さらにビットマップからアルファチャネルを削除し、GL_RGB、GL_BGR_EXTなどのすべての組み合わせを試しました。運が悪いです。
手続き的にビットマップを作成し、それを使用してみました
GL_COLOR_MATERIALが有効になっていないことを確認してください。
ビットマップサイズを32x32に変更しました。
glTexEnvfの代わりにglTexEnviを試しました。