Opengl es 移动+;缩放单个OpenGL UI控件

Opengl es 移动+;缩放单个OpenGL UI控件,opengl-es,opengl-es-2.0,Opengl Es,Opengl Es 2.0,我是OpenGL新手,刚刚读了一篇关于OpenGL 2.0的教程。 我的目标是OpenGLES2.0 我需要创建一个由控件组成的UI。控件可以在编辑模式下移动。 我认为,为每个控件创建顶点并将其上载到GPU,然后使用简单的顶点着色器将所有这些映射到屏幕上,在移动和缩放单个部分(控件)时有其局限性。 我就在这里吗 我认为最好为每个控件创建统一的属性,如宽度/高度/左/上/其他控件定义的属性,如滑块位置等。。。然后使用智能着色器将收缩顶点智能地映射到屏幕上。 然后,主机应用程序只需更新控件的统一属性

我是OpenGL新手,刚刚读了一篇关于OpenGL 2.0的教程。 我的目标是OpenGLES2.0

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

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

你推荐什么?
有没有一个例子或教程关注这一点?

你的问题是,着色器一次只能处理一个顶点,并且不能访问其他顶点,除非它们是一致的。这是一个很好的几何体着色器的例子,你可以只发送中心,它会产生你喜欢的一切。。。圆圈,方框。。几乎没有其他制服像外形或尺寸

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

1. -1, -1
2.  1, -1
3.  1,  1
4. -1,  1
然后,只需移动此形状的中心并将其设置为缩放。如您所见,您将只缩放二维向量,这是一项简单的任务,并将它们添加到中心位置。。这样你在正确的位置得到4个位置,你可以画出你的正方形。这样做的想法是,您可以创建任何形状(不仅仅是宽度、高度、顶部、左侧等可能的框),并可以将这些形状上载到纹理缓冲区。对于使用着色器绘制的图形,您只需指定形状、中心位置和大小。。我认为添加新的东西会很快很容易


是的,你是对的,映射所有东西,更新是非常慢的事情。事实上,我昨天在做一些关于映射的研究,结果证明它的性能相当差

您的问题是,该着色器一次只能处理一个顶点,并且不能访问其他顶点,除非它们是一致的。这是一个很好的几何体着色器的例子,你可以只发送中心,它会产生你喜欢的一切。。。圆圈,方框。。几乎没有其他制服像外形或尺寸

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

1. -1, -1
2.  1, -1
3.  1,  1
4. -1,  1
然后,只需移动此形状的中心并将其设置为缩放。如您所见,您将只缩放二维向量,这是一项简单的任务,并将它们添加到中心位置。。这样你在正确的位置得到4个位置,你可以画出你的正方形。这样做的想法是,您可以创建任何形状(不仅仅是宽度、高度、顶部、左侧等可能的框),并可以将这些形状上载到纹理缓冲区。对于使用着色器绘制的图形,您只需指定形状、中心位置和大小。。我认为添加新的东西会很快很容易


是的,你是对的,映射所有东西,更新是非常慢的事情。事实上,我昨天在做一些关于映射的研究,结果证明它的性能相当差

我正在考虑这样使用顶点着色器:定义顶点介于-1和1之间的每个对象,并为每个顶点添加controlIndex属性。制服将包括每个控件的所有设置。因此,veryex着色器始终使用一个顶点,但使用与其关联的controlIndex信息,它可以沿x,y缩放和偏移它。这是可能的吗?如果顶点在-1和1之间(顺便说一句,标准化形状),controlIndex的信息是什么?controlIndex只会从统一的控件设置数组中告诉着色器要使用哪个控件的比例和位置设置。或者常用的方法是为每个“控件”创建单独的opengl程序?所以,没有聪明的着色器使用controlIndex属性查找控件设置,只有单独的程序处理一个控件?这不是比一个聪明的程序慢很多吗?是的,就像你说的。。事实上,你们的控制指数和我的中心几乎是一样的,但不同的是我们对绘画的看法。所以,如果你想在一个过程中画出所有的东西,是的,你需要得到这些控制索引的数组,并告诉每个顶点使用哪一个。。。有趣的方法;)我正在考虑这样使用顶点着色器:定义顶点介于-1和1之间的每个对象,并为每个顶点添加controlIndex属性。制服将包括每个控件的所有设置。因此,veryex着色器始终使用一个顶点,但使用与其关联的controlIndex信息,它可以沿x,y缩放和偏移它。这是可能的吗?如果顶点在-1和1之间(顺便说一句,标准化形状),controlIndex的信息是什么?controlIndex只会从统一的控件设置数组中告诉着色器要使用哪个控件的比例和位置设置。或者常用的方法是为每个“控件”创建单独的opengl程序?所以,没有聪明的着色器使用controlIndex属性查找控件设置,只有单独的程序处理一个控件?这不是比一个聪明的程序慢很多吗?是的,就像你说的。。事实上,你们的控制指数和我的中心几乎是一样的,但不同的是我们对绘画的看法。所以,如果你想在一个过程中画出所有的东西,是的,你需要得到这些控制索引的数组,并告诉每个顶点使用哪一个。。。有趣的方法;)