例如,如果我想做这样的事情:
createTriangle(1.0,1.0); // Create triangle at (1,1)
我将如何在代码中执行此操作?我很乐意对此进行硬编码,但如果我想动态地执行此操作,我该如何绑定并填充我的缓冲区,然后将其绑定到显示器上?我只是将顶点添加到一个大缓冲区吗?但是那我如何对不同的对象进行不同的转换呢?
编辑:为了澄清我在问我如何创建顶点然后将它们插入到图形管道中。
如果你想制作一款游戏,那就去做吧:) 解决问题,没有一个,是个问题!您是否规划了架构,并有在场景中表示对象及其组件(物理、图形)的想法?如果是这样,您可能在代码中找到了初始化场景的位置(所以让我们在那里创建缓冲区),并让“引擎”对象(或者只是在主/渲染/动画/循环的位置)绘制所有这些。根据对象以及您拥有的模型/3d/2d 数量,您可以将缓冲区 id 存储在对象中(正在绘制,并且在渲染循环中,“引擎”对象绑定缓冲区),或者只是存储在“引擎”中' 目的。
一切都取决于,您正在制作什么游戏,以及您面临什么规模的问题(例如,在这种情况下,您可以创建一些更大的对象管理器,包含对象组等。问题是:您真的需要这些吗? ?他们可能会制造更多的错误,并且需要更多的时间来维护代码,而且你必须重新编写这个模块。)不要制作你不需要的结构。
一条规则可能会指导您:“让事情尽可能简单,但不要更简单”。制作游戏,而不是你想要的架构,仅仅因为 UDK 有一个。
您可能不应该有一个大缓冲区,而应该有多个共享共同事物的缓冲区,例如着色器、转换等。但是,减少缓冲区的数量是使图形运行得更快的好方法。