【问题标题】:Terrain Texture in PyOpenGL not RenderedPyOpenGL中的地形纹理未渲染
【发布时间】:2015-11-27 04:02:36
【问题描述】:

我需要有关此代码的帮助。 我想使用我已经拥有的文件“grass.bmp”来渲染草纹理。 这是加载图片的代码。

texsurfGrass = pygame.image.load('grass.bmp')
imageGrass = pygame.image.tostring(texsurfGrass, "RGB", 1)
texID = glGenTextures(1)
glBindTexture(GL_TEXTURE_2D,texID)

这是绘图模式下的代码(为地板绘制纹理和网格)

# 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()

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

【问题讨论】:

    标签: python opengl textures texture2d pyopengl


    【解决方案1】:

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

    其次,您最终必须以某种方式输入一些纹理坐标。看起来您正在编程 OpenGL 1.0 或 2.0,因此您可以查看 glTexCoord2f 或相关的 TexCoord 函数。

    【讨论】:

    • 感谢 Ned Zepplin 的帮助...现在我已经按照您的说法将 glPolygonMode() 更改为填充,是的,地板变成了绿色,但仍然没有渲染草......它只是给绿色。关于 glTexCoord2f,我应该把这些函数放在我的代码哪里?你能帮我指出来吗?因为我真的是 PyOpenGL 的新手。在此先感谢:D
    • 每个顶点都应该有一个纹理坐标。纹理坐标必须在 glVertex 调用之前给出。所以 glTexCoord2f(); glVertex3f(); glTexCoord2f(); glVertex3f();
    猜你喜欢
    • 2018-09-16
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2021-04-21
    • 2021-10-12
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    相关资源
    最近更新 更多