[英]OpenGL Texture Transparency
我正在使用C ++和OpenGL制作基本的2D游戏,我的播放器具有带透明区域的png图像。 它可以完美地在我的笔记本电脑和实验室计算机上工作,但是在我的台式机上,整个图像大部分都可以透视,而不仅仅是需要的区域。 是什么导致或解决此问题?
这是我使用的代码,在所有机器上都相同
glPushMatrix();
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBindTexture(GL_TEXTURE_2D, playerTex);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTranslatef(XPos, YPos, 0.0);
glRotatef(heading, 0,0,1);
glBegin(GL_POLYGON);
glTexCoord2f(0.0, 1.0); glVertex2f(-40,40);
glTexCoord2f(0.0, 0.0); glVertex2f(-40,-40);
glTexCoord2f(1.0, 0.0); glVertex2f(40,-40);
glTexCoord2f(1.0, 1.0); glVertex2f(40,40);
glEnd();
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
glPopMatrix();
我发现了问题,我改变了
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
至
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
它可以正常工作,但不确定为什么。
设置glColor4f(1,1,1,1)有帮助吗? (我不记得GL_REPLACE是否受顶点颜色影响)
在适当的地方检查glGetError(),看看您是否确实做错了什么。
其他通用提示:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.