Python 在纹理OpenGL上绘制矩形

Python 在纹理OpenGL上绘制矩形,python,python-3.x,opengl,pygame,Python,Python 3.x,Opengl,Pygame,我将Python3与pygame和OpenGL结合使用,试图完成我认为简单的任务:绘制一个矩形。 想法是在透明纹理上(或下方)有一个白色矩形,但每当我将纹理添加到屏幕上时,无论是在纹理之前还是之后渲染,矩形都会消失 下面是一个显示问题的示例代码(您可以添加您选择的任何Player1.png图像,问题将保持不变-至少在我的计算机中) 它很可能需要做一些关于OpenGL如何处理纹理和矩形的事情,但我不确定是什么 顺便说一句:我知道图像是颠倒的 提前感谢在绘制纹理之前,您必须启用二维纹理,就像您所做的

我将Python3与pygame和OpenGL结合使用,试图完成我认为简单的任务:绘制一个矩形。 想法是在透明纹理上(或下方)有一个白色矩形,但每当我将纹理添加到屏幕上时,无论是在纹理之前还是之后渲染,矩形都会消失

下面是一个显示问题的示例代码(您可以添加您选择的任何Player1.png图像,问题将保持不变-至少在我的计算机中)

它很可能需要做一些关于OpenGL如何处理纹理和矩形的事情,但我不确定是什么

顺便说一句:我知道图像是颠倒的


提前感谢

在绘制纹理之前,您必须启用二维纹理,就像您所做的那样()

但在绘制矩形之前,必须再次禁用二维纹理:

# draw rectangle
glDisable(GL_TEXTURE_2D)
glColor3fv((1, 1, 1))
glRectf(-1, 1, 0, 0.5)
请注意,绘制矩形时,纹理仍处于绑定状态。由于不提供纹理坐标,因此在绘制矩形时。这将导致当前纹理坐标应用于矩形,并在整个矩形上绘制单个纹理

e、 g.最后一个纹理坐标集是
glTexCoord2f(1,0)

进一步注意,如果要更改矩形的颜色,则整个纹理将通过该颜色着色。如果启用纹理,则默认情况下,纹理的颜色将乘以当前颜色,因为默认情况下纹理环境模式(
GL\u texture\u ENV\u mode
)是
GL\u MODULATE
)。看

在绘制纹理之前设置“白色”:

glEnable(GL_TEXTURE_2D)
glColor3fv((1, 1, 1))

glDisable(GL_TEXTURE_2D)
glColor3fv((1, 0, 0))    # red
glRectf(-1, 1, 0, 0.5)
glEnable(GL_TEXTURE_2D)
glColor3fv((1, 1, 1))