保留模式以绘制 2D 纹理图像



我正在尝试使用"保留模式"来绘制我的 2D 图像(在 pygame 中加载为具有 opengl 上下文的 texztures(,我发现这样做的方法是使用 VBO,但我找不到使用 VBO 绘制除原语之外的任何内容的 opengl 教程。有没有客场可以做?

是的,你可以(甚至应该?(使用VBO来绘制2D图形。我在 2D 渲染中主要使用的如下:

我有着色器,可以接收顶点坐标 (VBO(、UV 坐标 (VBO(、纹理映射和模型视图矩阵。我居中"单位框",简单的 1x1(从 (-0.5, -0.5( 到 (0.5, 0.5(( 由 2 个三角形组成的矩形,UV 坐标为 (0, 0( - (1, 1(。我使用相同的两个VBO来绘制所有2D位图:我在ModelView矩阵中发送位置和缩放,并更改要绘制的不同位图。

出于 GUI 目的,在左上角设置参考点可能更容易,即从 (0, 0( 到 (1, 1( 的矩形 - 如果您的着色器接受 vec2 坐标,则可以为此使用 UV 坐标缓冲区。此外,如果您设置透视以便可以使用窗口坐标,这可能会有所帮助。

以下教程是为C++编写的,但 OpenGL 调用在 Python 中也是相同的:

创建VAO和VBOs:http://www.opengl-tutorial.org/beginners-tutorials/tutorial-2-the-first-triangle/

纹理:http://www.opengl-tutorial.org/beginners-tutorials/tutorial-5-a-textured-cube/

文本(绘制 2D 位图(:http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-11-2d-text/

希望这有所帮助,抱歉我无法提供任何源代码,因为我的 OpenGL 项目是用 D 编写的......也可以尝试谷歌"pygame pyopengl 2d"来找到一些源代码。

最新更新