小编men*_*man的帖子

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 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();
Run Code Online (Sandbox Code Playgroud)

和纹理的负荷:

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);
Run Code Online (Sandbox Code Playgroud)

这是您的帮助后的固定代码,但现在还有另一个问题,我想只重复图像的特定部分.非常感谢!

修复:现在我使用我自己的代码来重复它并且它有效:

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), …
Run Code Online (Sandbox Code Playgroud)

c++ opengl

0
推荐指数
1
解决办法
1870
查看次数

标签 统计

c++ ×1

opengl ×1