2012-11-17 3 views
1

나는 OpenGL 프로그램을 수행하고 있으며 사용자 정의 차원 쿼드 메쉬를 만들어야합니다.쿼드 배열을 사용하여 쿼드 배열

내가 지금까지 이해 한 바로는 사실 4 중 메쉬를 형성 할 사각형을 그리는 정점 배열을 사용한다는 것입니다. 그것은 꽤 간단한 컨셉이지만 그것을 이해하는 데 힘든 시간을 보내고 있습니다.

내가 잘못 이해하면 제발 수정하십시오.

사용자가 4x4 메쉬를하고 싶다면 16 개의 쿼드와 64 개의 꼭지점이 있습니다. 그래서 사용자가 메쉬의 해상도를 정의하면 (오, 그런데 처음에는 경계 크기가 이미 주어진다), 나는 64 개의 꼭지점을 만든다.

지금까지 올바른가?

나는 그 쿼드와 상호 작용하여 산 모양을 형성하기 위해 모양을 바꿀 것입니다.

물론 더 나은 해상도를 원한다면 32x32 이상이 필요합니다.

+0

이 쿼드는 하나의 큰 쿼드를 형성합니까? 예, 2x2 모양이 정사각형의 법원과 같을까요? – GraphicsMuncher

답변

0

정확하게 이해한다면, 하나의 커다란 쿼드를 만드는 쿼드 메쉬를 만들고 싶습니다.

그것은 당신이 단지 (4 + 1) × (4 + 1) 정점, 그래서 25 개 정점을 필요가있다이 경우 4 × 4

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

에 대해 다음과 같이 보일 것입니다. 메쉬에 불필요한 것 (메모리와 속도 낭비)을 제외하고는 "산"기능을 추가하는 것이 더 어려워 질 수 있습니다 (지형과 같은 것입니다. 추측). 메쉬의 중간에서 정점을 움직이면 그 정점을 사용하는 네 개의 쿼드 모두를 움직 이길 원할 것입니다. 쿼드가 인 경우 (메시 에서처럼)의 정점을 공유하는 경우 한 포인트를 이동하면 해당 포인트를 사용하는 모든 쿼드가 변경됩니다.

기본적으로 모든 고유 정점을 지정하고 쿼드로 연결하십시오. 중복성을 피하는 것이 가장 좋습니다.

또한 OpenGL을 배우는 경우 고정 기능 파이프 라인을 사용하지 않는지 확인하십시오. glBegin() 또는 glVertex3f()이있는 경우 고정 기능 파이프 라인을 사용하고 있습니다. 당신이 그것을 사용해서는 안되는 이유는 너무 많습니다. (수십 년이 지났지 만, 느리며 유연하지도 않습니다.) 가장 큰 이유는 실제 그래픽을 만들고 싶다면 시간 낭비 일 것입니다. 프로그래머블 파이프 라인을 사용하는 방법을 배워야하고 고정 된 기능 파이프 라인 습관과 사고 방식으로 머리를 숙이고 있어야만 어려울 것입니다.

+0

도와 주셔서 대단히 감사합니다! 나는 그것에 대해 작업하기 시작했고, 그것은 나를 올바른 방향으로 인도했습니다! 저는 오래된 함수를 첫 번째 요소로 사용했습니다. 세분화 된 곡선을 그려서 놀고, 변환하고, 그런 종류의 물건을 회전 시켰습니다. 그것은 나를 위해 매우 도전적이지만 나는 그것을 할 수있는 매우 긍정적입니다! – user1830954

+0

그래서 꼭지점 배열은 꼭지점 일뿐입니다 [] = {0, 3, ...}? 그것은 내 메쉬의 모든 꼭지점을 유지하는 데 충분합니까? 요구 사항은 32x32 또는 64x64이고 blobbly 오브젝트를 삭제하고 가우시안 블롭 및 부드러운 음영을 사용하여 위치를 지정합니다. – user1830954

+0

정적으로 정의하지 마십시오 (너무 많은 작업!) - 쿼드의 크기를 기반으로 생성하십시오. 그들은 (0,0), (1,0), (2,0) ... (0,1), (1,1), (2,1) ... (n, 엔).그런 다음 생성해야하는 배열에 인덱스를 통해 각 쿼드의 정점을 정의 할 수 있습니다. – GraphicsMuncher