Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';t向GL_QUAD添加纹理_C++_Opengl_Mapping_Textures - Fatal编程技术网

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<代码>像素
是一些(剩余的?)数组,几乎不能满足图像的大小。您必须将图像中加载的数据传递给它,还必须使用存储在该变量中的宽度和高度参数。