1

我是 OpenGL 的新手,我刚刚阅读了一篇关于 OpenGL 2.0 的不错的教程。我的目标是 OpenGL ES 2.0。

我需要创建一个由控件组成的 UI。控件可以在编辑模式下移动。我认为为每个控件创建顶点并将它们上传到 GPU,然后使用简单的顶点着色器将所有这些映射到屏幕在移动和缩放单个部分(控件)时有其局限性。我在这里吗?

我认为为每个控件创建统一属性会更好,例如宽度/高度/左/顶部/其他控件定义的属性,如滑块位置等......然后使用智能着色器将恒定顶点智能地映射到屏幕。然后,宿主应用程序只需更新控件的统一属性,而不是每次都上传新的顶点集。

你有什么建议吗?有没有针对此的示例或教程?

4

1 回答 1

1

好吧,您的问题是该着色器一次只能使用一个顶点,并且除非它们是统一的,否则无法访问其他顶点。这是几何着色器的一个很好的例子,你可以只发送中心,它会产生你喜欢的一切......圆形,盒子......几乎没有其他制服,如方面或大小......

但是您也可以使用顶点着色器。您将创建与中心相关的顶点。对于 2x2 正方形顶点,如下所示:

1. -1, -1
2.  1, -1
3.  1,  1
4. -1,  1

然后你可以移动这个形状的中心并设置它的缩放。如您所见,您只需缩放 2D 矢量,简单的任务,并将它们添加到中心位置.. 这样您就可以在正确的位置获得 4 个位置,并且可以绘制正方形。这样做的想法是您可以创建任何形状(不仅仅是可能具有宽度、高度、顶部、左侧......的框),您可以将这些形状上传到纹理缓冲区。对于使用着色器绘图,您只需指定哪个形状,中心在哪里以及大小是多少..我认为添加新东西会非常快速和容易..

是的,您是对的,映射所有内容并且更新非常缓慢。昨天我实际上正在对映射进行一些研究,结果证明它的性能非常糟糕..

于 2011-02-16T12:43:29.920 回答