我正在尝试使用“保留模式”来绘制我的2D图像(在带有opengl上下文的pygame中加载为texztures),我发现这样做的方式是使用VBO,但我找不到opengl教程,使用VBO绘制除基元之外的任何东西。有没有去做呢?
答案 0 :(得分:2)
是的,您可以(甚至应该?)使用VBO绘制2D图形。我在2D渲染中主要使用的是:
我有着色器,它采用顶点坐标(VBO),UV坐标(VBO),纹理贴图和ModelView矩阵。我已经集中了#34;单位框",简单的1x1(从(-0.5,-0.5)到(0.5,0.5))由2个三角形组成的矩形,带有UV坐标(0,0) - (1,1) )。我使用这两个相同的VBO来绘制所有2D位图:我发送位置和放大器在ModelView矩阵中缩放并更改要绘制的不同位图。
对于GUI目的,可能更容易在左上角有一个参考点,即从(0,0)到(1,1)的矩形 - 如果你的着色器你可以使用UV坐标缓冲区接受vec2坐标。此外,如果您设置透视图以便可以使用窗口坐标,它可能会有所帮助。
以下教程是为C ++编写的,但OpenGL调用在Python中也是一样的:
创建VAO&维也纳各组织: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语言编写的...也可以google" pygame pyopengl 2d"找到一些源代码来完成这个技巧。