我正在使用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();
答案 0 :(得分:3)
我发现了问题,我改变了
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
到
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
并且它正常工作,但不确定为什么。
答案 1 :(得分:2)
设置glColor4f(1,1,1,1)有帮助吗? (我不记得GL_REPLACE是否受到顶点颜色的影响)
在适当的位置检查glGetError(),看看你是否做错了。
其他通用提示: