Skip to content

【PyOpenGL】3.绘制图片

在上一节【绘制三角形】的基础上执行如下操作

1.准备数据

  • 加载绘制图片使用的Shader

  • 使用图形库从硬盘中加载并解析图片数据到内存中:CPU

  • 创建Actor,作为绘制图片的主体对象

    • 添加Mesh组件:渲染使用的三角形数据。

    • 添加Material组件:Shader以及渲染使用的数值参数、Texture参数。

    • 添加MeshRenderer组件:用来使用Material渲染Mesh。

    注意组件的更新顺序,Mesh > Material > MeshRenderer

Shader

texture.vert.glsl

glsl
#version 330
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
layout (location = 2) in vec2 aTexCoord;

out vec3 ourColor;
out vec2 TexCoord;

void main()
{
    gl_Position = vec4(aPos, 1.0);
    ourColor = aColor;
    TexCoord = aTexCoord;
}

textrue.frag.glsl

glsl
#version 330
out vec4 FragColor;

in vec3 ourColor;
in vec2 TexCoord;

uniform sampler2D icon_tex;

void main()
{
    FragColor = texture(icon_tex, TexCoord);
}

2.执行渲染

  • 创建VAO、VBO、EBO等顶点数据资源,配置顶点数据格式:GPU

  • 设置Shader,创建Texture,并将Texture与Shader中的sampler绑定:GPU

    python
    location = GL.glGetUniformLocation(mat_shader.get_program(), mat_tex_name)
    GL.glUniform1i(location, gl_texture_index)
  • 调用绘制命令 DrawElements() :GPU

  • 清理GPU资源:GPU

3.结果展示

alt text