Python 未渲染PyOpenGL中的地形纹理

Python 未渲染PyOpenGL中的地形纹理,python,opengl,textures,texture2d,pyopengl,Python,Opengl,Textures,Texture2d,Pyopengl,我需要这个代码的帮助。 我想使用我已有的文件“grass.bmp”渲染草纹理。 这是加载图像的代码 texsurfGrass = pygame.image.load('grass.bmp') imageGrass = pygame.image.tostring(texsurfGrass, "RGB", 1) texID = glGenTextures(1) glBindTexture(GL_TEXTURE_2D,texID) 这是绘图模式下的代码(为地板绘制纹理和网格) 这些代码仍然会生成栅格

我需要这个代码的帮助。 我想使用我已有的文件“grass.bmp”渲染草纹理。 这是加载图像的代码

texsurfGrass = pygame.image.load('grass.bmp')
imageGrass = pygame.image.tostring(texsurfGrass, "RGB", 1)
texID = glGenTextures(1)
glBindTexture(GL_TEXTURE_2D,texID)
这是绘图模式下的代码(为地板绘制纹理和网格)

这些代码仍然会生成栅格地板,而不是纹理渲染地板。 请帮我展示渲染过的地板。
提前谢谢。

我看到几个问题。首先,glPolygonMode()调用请求线框(您告诉它您想要线框,您可能想要填充,这是默认设置)


第二,你最终必须输入一些纹理坐标。看起来您正在编写OpenGL 1.0或2.0,因此您可以查看glTexCoord2f或相关的TexCoord函数。

感谢Ned Zepplin的帮助。。。现在我已经将glPolygonMode()更改为如您所说的填充,是的,地板变为绿色,但草仍然没有渲染。它只提供绿色。关于glTexCoord2f,我应该把这些函数放在哪里?你能给我指一下吗?因为我是PyOpenGL的新手。提前感谢:DEvery顶点应该有一个纹理坐标。纹理坐标必须在glVertex调用之前给定。所以glTexCoord2f();glVertex3f();glTexCoord2f();glVertex3f();
# set drawing mode
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE) # POINT, LINE, FILL
    glPushMatrix()
    glTranslate(-ground_gridsize/2,ground_gridsize/2,0)
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texsurfGrass.get_width(), texsurfGrass.get_height(), 0, GL_RGB, GL_UNSIGNED_BYTE, imageGrass)
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) # GL_LINEAR
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
    glColor3f(0.0, 1.0, 0.0)
    for i in range(-ground_size/2, (ground_size/2)+ground_gridsize, ground_gridsize):
        for j in range (-ground_size/2, (ground_size/2)+ground_gridsize, ground_gridsize):
            glPushMatrix()
            glTranslate(i,j,0)
            glEnable(GL_TEXTURE_2D)
            glBindTexture(GL_TEXTURE_2D,texID)
            glBegin(GL_QUADS)
            glColor3f(0.0, 0.5, 0.0)
            glVertex3f(0, 0, 0)
            glVertex3f(ground_gridsize, 0, 0)
            glVertex3f(ground_gridsize, -ground_gridsize, 0)
            glVertex3f(0, -ground_gridsize, 0)
            glEnd()
            glDisable(GL_TEXTURE_2D)
            glPopMatrix()
    glPopMatrix()