如何在OpenGl中动态添加顶点?

时间:2012-06-02 20:53:20

标签: c++ opengl

例如,如果我想做这样的事情:

createTriangle(1.0,1.0); // Create triangle at (1,1)

我如何在代码中执行此操作?我很舒服硬编码,但如果我想动态地做,我如何绑定并填充我的缓冲区,然后将其绑定在显示器上?我只是将顶点添加到一个大缓冲区吗?但是,我如何对不同的对象进行不同的转换呢?

编辑:澄清我问我如何创建顶点然后将它们插入图形管道。

2 个答案:

答案 0 :(得分:2)

如果你想制作游戏,那就去做吧:)解决问题,没有问题,是个问题!你有没有规划过这个架构,并且有想法在场景上表示对象及其组件(物理,图形)?如果是这样,你可能在代码中放置了初始化场景(所以让我们在那里创建缓冲区),然后让'engine'对象(或者只是你有main / render / animate / loop的地方)绘制所有这些对象。根据对象以及您拥有的模型/ 3d / 2d的数量,您可以将缓冲区'id存储在对象中(正在绘制,并在渲染循环中'引擎'对象绑定缓冲区),或者只是存储在'引擎中'对象。

一切都取决于你正在制作什么游戏,以及你面临什么样的问题(例如,在这种情况下,你可以创建一个更大的对象管理器,对象组等等。问题是:你呢?真的需要这些吗?它们可能会产生更多的错误,并且需要更多的时间来维护代码,并且毕竟你将不得不再次编写这个模块。)不要制作你不需要的结构。

一条规则可以指导您:“尽可能简化事情,但不要简单”。制作游戏,而不是你想要的架构,只因为UDK有一个。

答案 1 :(得分:0)

你可能没有一个大的缓冲区,而是多个共享常见内容的缓冲区,例如着色器,转换等。然而,保持缓冲区数量是一种使图形运行得更快的好方法。