하스켈을 사용하여 주어진 넓이의 삼각형 사각형 지형을 절차 상 생성하여 OpenGL에 제공하려고합니다.하스켈 OpenGL 절차 생성
실제로 절차 적으로 생성되는 유일한 것은 높이가 아니며 전혀 어렵지 않습니다. 단지 무작위 함수를 사용하여 높이 행을 나타내는 [[GLfloat]]
을 만듭니다.
heightsToCoords
이 함수는 [[GLfloat]]
이고 각 정점의 x, y 및 z 좌표를 포함하는 [GLfloat]
을 반환합니다. 내가 heightsToCoords [[0, 1], [1, 0]]
를 호출하는 경우
그래서,
[0, 0, 0,
1, 1, 0,
0, 1, 1,
1, 0, 1]
내가 OpenGL을에 데이터를 점점 데 문제를 반환합니다. OpenGL은 각 얼굴을 삼각형으로 배치해야합니다 (최소한 내 설정이 필요함). 그리고 내가 가진 것만으로도 얼굴을 만드는 방법을 모르겠습니다.
포인트 목록에서이 데이터를 어떻게 얼굴 목록으로 변환 할 수 있습니까? 법선과 정점 순서는 무시하십시오.
관련없는 제안 : 내가 [배열]을 사용하십시오 (https://hackage.haskell.org/package/array)보다는 높이에 대한 목록의 목록 그러면 각 행의 너비가 동일하게 유지됩니다. (그리고 아마도 더 효율적일 것입니다.) – icktoofay
아마 [벡터] (https://hackage.haskell.org/package/vector)일지도 모르겠습니다. 아마 훨씬 더 효율적입니다. – icktoofay
나는 haskell에서 2D로 절차 적으로 생성 된 그래픽을 작성한 것을 썼다. 그것은 디스플레이리스트와 haskell리스트를 사용했습니다. 코드는 [여기] (https://github.com/DiegoNolan/Generated)입니다. – DiegoNolan