使用Python和OpenGL进行数据可视化的开发时,需要确保电脑支持OpenGL 4.5版本,可以通过检测显卡和OpenGL信息来确认。配置Windows下VS Code + Python + OpenGL开发环境的步骤也在文中有所提及。在上一节中,我们深入学习了OpenGL的核心对象顶点数组对象(VAO)和顶点缓存对象(VBO)之间的绑定,以及如何使用OpenGL绘制“线”。然而,在对比point_app.py和line_app.py后,可以发现一些明显的重复代码,如创建“着色器”、“程序”、VAO、VBO的过程。为遵循DRY(Don't Repeat Yourself)原则,有必要重构代码。首先,在"D:\pydev\pygl"目录下新建一个"pygl"子文件夹,并在其中创建"shader.py"文件。在该文件中,定义了一个OpenGL着色器类,构造函数包含着色器类型和源代码文件名参数。类中定义了创建和删除着色器对象的方法,以及加载、编译着色器源代码的逻辑。接下来,在"pygl"文件夹下新建"program.py"文件,定义了OpenGL程序类,构造函数接收一个着色器对象列表作为参数。该类包含创建、使用、删除程序对象的方法,以及加载和链接着色器对象以形成最终程序的逻辑。进一步,创建了从"program.py"派生的"ProgramVF"类,专门用于创建只使用顶点着色器和片段着色器的OpenGL程序类。构造函数接收顶点和片段着色器源代码文件名作为参数,并自动创建、链接着色器对象,最后删除不再使用的对象。在"pygl"目录下,还创建了"vertexbufferobject.py"和"vertexarrayobject.py"文件,分别定义了顶点缓存对象(VBO)和顶点数组对象(VAO)类。这些类分别提供了创建、绑定、删除对象的方法,以及处理顶点数据和属性的逻辑。在"__init__.py"文件中,通过导入这些类,将"pygl"目录组织成一个Python包,使得用户可以轻松导入和使用其中的类。在"basic"文件夹中,新建"shaders"子文件夹,并在其中创建"line.vs"和"line.fs"文件,分别包含顶点和片段着色器代码。在"line_app_v1.py"文件中,导入重构后的"pygl"包,并使用新类创建OpenGL程序、顶点缓存和顶点数组对象,实现了"你好,线段!"功能,重构后代码精简明显,逻辑更清晰。对比"line_app_v1.py"和原始代码"line_app.py",重构后的源代码减少了重复代码,提高了代码的可读性和可维护性。重构工作不仅简化了代码结构,还通过使用面向对象方法提高了代码的模块化程度,使得后续扩展和修改变得更加容易。