即時モード テクスチャを使用して単純なプロジェクトを構築しようとしています。残念ながら、レンダリングすると、テクスチャではなく GL カラーが表示されます。解決策を探しましたが、オンラインの例と私のコードの間に意味のある違いは見つかりませんでした。
ここで提供した最小限の失敗例に減らしました。私の理解が正しければ、これにより、黒、赤、緑、青のコーナーを持つテクスチャ付きのクワッドが生成されるはずです。残念ながら、テクスチャを完全に無視しているかのように紫色に見えます。私は何を間違っていますか?
#include <glut.h>
GLuint tex;
void displayFunc() {
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex);
glBegin(GL_TRIANGLE_STRIP);
glColor3f(0.5, 0, 1);
glTexCoord2f(0.0, 0.0);
glVertex2f(-1.0, -1.0);
glTexCoord2f(1.0, 0.0);
glVertex2f(1.0, -1.0);
glTexCoord2f(0.0, 1.0);
glVertex2f(-1.0, 1.0);
glTexCoord2f(1.0, 1.0);
glVertex2f(1.0, 1.0);
glEnd();
glutSwapBuffers();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowPosition(0, 0);
glutInitWindowSize(640, 480);
glutCreateWindow("Test");
glutDisplayFunc(displayFunc);
GLubyte textureData[] = { 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 0 };
GLsizei width = 2;
GLsizei height = 2;
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, width, height, 0, GL_RGB8, GL_UNSIGNED_BYTE, (GLvoid*)textureData);
glutMainLoop();
}
また、おそらく言及する価値があります:
このプロジェクトを Mac (El Capitan 10.11.1 を実行) でビルドしています。
グラフィックカード: NVIDIA GeForce GT 650M 1024 MB