C++ Can';t向GL_QUAD添加纹理
我有一系列的矩形,我试图添加一个纹理到其中一个。这是我目前的代码:C++ Can';t向GL_QUAD添加纹理,c++,opengl,mapping,textures,C++,Opengl,Mapping,Textures,我有一系列的矩形,我试图添加一个纹理到其中一个。这是我目前的代码: glEnable (GL_TEXTURE_2D); QBitmap image; GLuint texture; float pixels[] = { 42, 0, 1, 0, 42, 1, -42 , 0, 1, 0, -42, 1, }; image.load("texture.bmp"); GLuint m_Te
glEnable (GL_TEXTURE_2D);
QBitmap image;
GLuint texture;
float pixels[] = {
42, 0, 1, 0, 42, 1,
-42 , 0, 1, 0, -42, 1,
};
image.load("texture.bmp");
GLuint m_TextureID;
glGenTextures(1, &m_TextureID);
glBindTexture ( GL_TEXTURE_2D, m_TextureID);
glTexEnvf ( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE , GL_MODULATE);
glTexParameterf ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 84, 84, 0, GL_RGB, GL_FLOAT, pixels);
glEnable(GL_TEXTURE_2D);
glBindTexture ( GL_TEXTURE_2D, m_TextureID);
glBegin(GL_QUADS);
glBegin(GL_QUADS);
glVertex3f(42, 0, 42);
glVertex3f(42, 0, -42);
glVertex3f(-42, 0, -42);
glVertex3f(-42, 0, 42);
glEnd();
我哪里出错了?你打给
glTexImage2D
的电话在哪里?image
变量中的数据不会“神奇地”跳转到OpenGL纹理中。哦,您不应该在每次重画时重新加载图像/纹理。此外,您还提供了GL\u LINEAR\u MIPMAP\u作为过滤器,但您永远不会生成MIPMAP。这将始终导致黑色。谢谢各位,我稍微修改了代码并调用了GLTEXAGE2D,但它仍然没有改变纹理。我想这是因为我把glTexImage2D的参数搞错了?@BDL:不完整的mipmap级别实际上会产生白色,但是是的,你看不到纹理。@T.s:为什么你要将像素作为参数传递给glTexImage2D<代码>像素
是一些(剩余的?)数组,几乎不能满足图像的大小。您必须将图像中加载的数据传递给它,还必须使用存储在该变量中的宽度和高度参数。