使用顶点阵列、四边形阵列来创建四边形网格

Using vertex array, quad array to create mesh of quad

本文关键字:阵列 四边形 创建 网格 顶点      更新时间:2023-10-16

我正在执行OpenGL程序,需要创建一个用户定义的维度四元网格。

到目前为止,我所了解的是,我使用顶点数组来绘制四边形,这些四边形实际上将形成四边形网格。这是一个非常简单的概念,但我很难理解它

所以,如果我理解错误,请纠正我。

因此,如果用户想要创建4x4网格,将有16个四边形和64个顶点。因此,当用户定义网格的分辨率时(哦,顺便说一下,边界大小已经在一开始给出了),我创建了这64个顶点。

到目前为止我说得对吗?

我将与这些四头肌互动,重塑它们,形成一种山的形状。

当然,我需要更大的分辨率,可能是32x32,甚至更大,才能正确地显示这样的东西。

如果我理解正确,您需要制作一个四边形网格,从而创建一个大四边形。

对于4x4 来说,它看起来像这样

_ _ _ _
|_|_|_|_|
|_|_|_|_|
|_|_|_|_|
|_|_|_|_|

在这种情况下,您将只需要(4+1)x(4+1)个顶点,因此需要25个顶点。您可以唯一地指定每个四边形的四个顶点,尽管这对于网格来说是不必要的(并且浪费内存和速度),但最终可能会更难添加"山"功能(我猜有点像地形)。如果移动网格中间的一个顶点,则可能希望它为使用该顶点的所有四个四边形移动。如果四边形共享顶点(就像它们在网格中所做的那样),移动一个点将更改使用该点的所有四边形。

基本上,指定所有唯一的顶点并将它们连接为四边形。最好避免冗余。

此外,如果您正在学习OpenGL,请确保您不是使用固定函数管道进行学习(如果您有glBegin()glVertex3f(),则表示您使用的是固定函数管道)。你不应该使用它的原因太多了(它已经有几十年的历史了,速度较慢,几乎没有那么灵活),但最大的原因可能是,如果你想做真正的图形,这是浪费时间。你必须学会如何使用可编程管道,而在你的脑海中拥有固定功能的管道习惯和思维方式只会让它变得更加困难