gpt4 book ai didi

opengl - Haskell OpenGL 程序生成

转载 作者:行者123 更新时间:2023-12-01 15:12:00 26 4
gpt4 key购买 nike

我正在尝试使用 Haskell 以程序方式生成给定宽度的三角方形地形以提供给 OpenGL。

唯一真正按程序生成的是高度,这一点也不难,我只是使用一个随机函数来创建一个 [[GLfloat]],代表高度的行。

然后我还有一个函数 heightsToCoords,它接受 [[GLfloat]] 并返回包含 x 的 [GLfloat],每个顶点的 y 和 z 坐标。

所以如果我调用 heightsToCoords [[0, 1], [1, 0]],它将返回

[0, 0, 0,  
1, 1, 0,
0, 1, 1,
1, 0, 1]

我遇到的问题是将数据传送到 OpenGL。 OpenGL 需要对每个面进行三角剖分(至少在我的设置中),而我所拥有的只是点,我不确定如何创建面。

如何将这些数据从点列表转换为面列表?忽略顶点的法线和顺序。

最佳答案

在 GL 方面,我会使用 drawElements,它需要一个点列表和一个索引列表作为输入。所以问题变成了如何在点列表中生成索引列表。

记住原始的 XZ 网格,想法是为网格的每个单元格绘制两个三角形。所以我们每个网格单元需要 6 个索引。在 Haskell 中,我们可以这样写:

concat [[x + width * (y+1), 1 + x + width*y, x + width * y, 
x + width* (y+1), 1 + x + width * (y+1), 1 + x + width*y]
| y <- [0..height-1], x <- [0..width-1]]

关于opengl - Haskell OpenGL 程序生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21081059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com