C++ c++;opengl重复

C++ c++;opengl重复,c++,opengl,C++,Opengl,我试着画一幅画的一部分,但不是重复画的一部分,而是把画拉长了,看起来很难看 我怎样才能重复这张照片而不是把它弄脏呢 守则的有关部分: glEnable (GL_BLEND); glColor4f(1.0f,1.0f,1.0f,1.0f); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glColor3f(1.f, 1.f, 1.f); glBindTexture(GL_TEXTURE_2D, texture[image]); int repe

我试着画一幅画的一部分,但不是重复画的一部分,而是把画拉长了,看起来很难看

我怎样才能重复这张照片而不是把它弄脏呢

守则的有关部分:

glEnable (GL_BLEND);
glColor4f(1.0f,1.0f,1.0f,1.0f);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glColor3f(1.f, 1.f, 1.f);
glBindTexture(GL_TEXTURE_2D, texture[image]);
int repeat = (x2-x)/73;
glBegin(GL_QUADS); //create polygon
glTexCoord2f((part/3.f), 0.0f);glVertex2d(x, y);
glTexCoord2f(((part+1.f)/3.f)+repeat, 0.0f);glVertex2d(x2, y);
glTexCoord2f(((part+1.f)/3.f)+repeat, 1.0f);glVertex2d(x2, y2);
glTexCoord2f((part/3.f), 1.0f);glVertex2d(x, y2);
glEnd();
以及纹理的负载:

texture[fNum] = SOIL_load_OGL_texture
            (
            fName.c_str(),
            SOIL_LOAD_AUTO,
            SOIL_CREATE_NEW_ID,
            SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y 
            );
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
这是您帮助后的固定代码,但现在有另一个问题,我只想重复图像的特定部分。 非常感谢

固定的: 现在我编写了自己的代码来重复这一点,它可以正常工作:

float nx=x, nx2 = x+length;
float ny2 = y2+25.f;
if((x2-x)/length > 1)
{
    while(nx2 < x2)
    {
        if(nx2+length < x2)
        {
            glBegin(GL_QUADS); //create polygon
            glTexCoord2f((part/3.f), 0.0f);glVertex2d(nx, y);
            glTexCoord2f(((part+1.f)/3.f), 0.0f);glVertex2d(nx2, y);
            glTexCoord2f(((part+1.f)/3.f), 1.0f);glVertex2d(nx2, ny2);
            glTexCoord2f((part/3.f), 1.0f);glVertex2d(nx, ny2);
            glEnd();
            nx = nx2;
            nx2 += length;
        }
        else
        {
            glBegin(GL_QUADS); //create polygon
            glTexCoord2f((part/3.f), 0.0f);glVertex2d(nx, y);
            glTexCoord2f(((part+1.f)/3.f), 0.0f);glVertex2d(x2, y);
            glTexCoord2f(((part+1.f)/3.f), 1.0f);glVertex2d(x2, ny2);
            glTexCoord2f((part/3.f), 1.0f);glVertex2d(nx, ny2);
            glEnd();
            break;
        }
    }
}
else
{
    glBegin(GL_QUADS); //create polygon
    glTexCoord2f((part/3.f), 0.0f);glVertex2d(x, y);
    glTexCoord2f(((part+1.f)/3.f), 0.0f);glVertex2d(x2, y);
    glTexCoord2f(((part+1.f)/3.f), 1.0f);glVertex2d(x2, ny2);
    glTexCoord2f((part/3.f), 1.0f);glVertex2d(x, ny2);
    glEnd();
}
float nx=x,nx2=x+长度;
浮动ny2=y2+25.f;
如果((x2-x)/长度>1)
{
而(nx2
当使用
glTexCoord2f(x,y)映射纹理时
使用x>1.0在x方向重复纹理,对y重复纹理。
如果使用
glTexCoord2f(2.5,3.0)然后图像将在x方向上完全重复2次加上其宽度的一半,在y方向重复3次

您需要大于1.0的纹理坐标(2.0表示两次,3.0表示三次,等等),并且还需要设置特定状态:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

请显示您使用的代码的相关部分。好的,我现在添加了它。您发布的代码没有重复任何内容,只是一个四元组。那么您应该发布不起作用的代码。谁在乎它是不是愚蠢的代码。如果有人需要它给你一个像样的答案,那么就把它贴出来。否则他们只能猜测。它画出了它的一部分是透明的。事实上,现在还有另一个问题,它画了一个边界,以前没有。。我只想重复关于特定部分的内容。你能描述一下边界还是上传一张截图?