gpt4 book ai didi

由 C++ OpenGL 重复

转载 作者:太空宇宙 更新时间:2023-11-04 15:08:01 24 4
gpt4 key购买 nike

我试过画图的一部分,但不是重复图的一部分,拉长了图,看起来很丑。

我怎样才能重复图片而不是拉伸(stretch)它。

相关部分代码:

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();
}

最佳答案

当使用 glTexCoord2f(x, y) 映射纹理时,使用 x > 1.0 在 x 方向和 y 方向重复它。如果您使用 glTexCoord2f(2.5, 3.0);,则图像将完全重复 2 次加上其宽度的一半在 x 方向和 3 次在 y 方向。

关于由 C++ OpenGL 重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9339948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com