gpt4 book ai didi

c - OpenGL SOIL 使用纹理颜色绘制整个屏幕

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

我尝试使用 SOIL 库在 OpenGL 中加载 PNG 纹理,并在 GL QUAD 中显示纹理,但是当我调用该函数时,图像加载正确,但改变了整个屏幕的颜色!

如果是蓝色图像,屏幕会变成蓝色颜料!如果是红色,则变为红色!任何人都知道是什么原因造成的

未加载图像的正确颜色:http://i.stack.imgur.com/OHroq.jpg

加载图像时颜色错误:http://i.stack.imgur.com/LyRwJ.jpg

代码:

int LoadGLTextures()     {              

texture[0] = SOIL_load_OGL_texture("test.png", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID,SOIL_FLAG_INVERT_Y);

glBindTexture(GL_TEXTURE_2D, texture[0]);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);}

和方码:

  glBindTexture(GL_TEXTURE_2D, texture[0]);

glBegin(GL_QUADS);

glColor3f(1.0f, 1.0f, 1.0f);

glTexCoord2f(0.0f, 0.0f); glVertex3f(mover, 11.0f, 1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( mover+44,11.0f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(mover+44, 44.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(mover, 44.0f, 1.0f);

glEnd();
}

最佳答案

你似乎再也没有禁用纹理。 OpenGL 是一个状态机,因此您设置或启用的任何内容都会保持这种状态,直到您设置其他内容/禁用它。在您的情况下,看起来您对这个四边形进行了纹理处理并根据需要指定了纹理坐标。但对于所有其他对象,纹理仍然存在。 texcoords 也是 GL 状态。但是当你打算绘制无纹理时,你似乎没有为其他四边形设置新的 texcoords,所有顶点都将使用 0.0,1.0 作为 texcoords,所以你基本上使用纹理的边缘 texel 来修改所有其他对象的颜色。

关于c - OpenGL SOIL 使用纹理颜色绘制整个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16370594/

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