我试图在传统FLTK应用程序中显示128x128浮点数组(0.0 - > 1.0)作为黑色绿色纹理。应用程序的其余部分使用立即模式进行所有绘图,因此我不想改变它的工作方式。通过阅读教程,我提出了以下调用, 足以将纹理加载到图形内存中,并将其绘制到当前上下文(由FLTK管理)。但是,我可以做的就是绘制一个纹理应该在的黑色方块,绘制在那里绘制的任何其他东西(GL_LINES)。
我在这里缺少什么基本的东西?我忽略了一些初始化步骤?提前致谢。这是我试图运行的代码:
// Part of class init
glGenTextures(1, &tex);
// As far as I can tell, this is optional with FLTK having already
// set these parameters. Omitting them does not change output.
glPushMatrix();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODEL);
glLoadIdentity();
// This is the meat of the problem. reports no GL errors.
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_FLAT);
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 128, 128, 0, GL_GREEN, GL_FLOAT, &image);
glBegin(GL_QUADS);
glTexCoord2d(0,0); glVertex2f(-0.9,-0.9);
glTexCoord2d(0,1); glVertex2f(-0.9, 0.9);
glTexCoord2d(1,0); glVertex2f( 0.9,-0.9);
glTexCoord2d(1,1); glVertex2f( 0.9, 0.9);
glEnd();
glDisable(GL_TEXTURE_2D);
// Again, busywork.
glPopMatrix();