2013-08-13 2 views
0

전체 화면이 하나의 전체 화면으로 그려진 평면이 있습니다 GL_QUAD.프로그래밍 방식으로 백만 그물?

GL_Texture2D으로 지정된 각 점에서이 표면을 변형하고 싶습니다. 어떤 종류의 셰이더를 사용하는 것이 좋습니다.

내 생각에 검은 색은 평면과 흰색이 언덕에 해당 할 수 있습니다.

내 지형에 약 4 백만 포인트를 갖고 내 프로그램의 각 단계에서 업데이트하려고합니다.

어떻게 이것을 수행하기 위해 기하 구조 셰이더를 사용할 수 있습니까? 셰이더가 새로운 Verit를 생성 할 수 있습니까?

+4

간단한 "예"또는 "아니오"로 대답 할 수 없도록 질문을 재구성 할 수 있습니까? –

+0

이것이 GLSL 이외의 다른 프로그래밍 언어와 어떤 관련이 있는지는 알 수 없습니다. C++ 태그를 제거하십시오. – DanielKO

+2

OpenGL 4.0 이상을 사용하고 있습니까? 그렇다면 원하는 것을 수행하기 위해 테셀레이션 쉐이더 (기하학 셰이더가 아닌)를 사용해야하는 것처럼 들립니다. – GuyRT

답변

2

가장 간단한 방법은 큰 삼각형 스트립 그리드를 생성하고 VBO에 업로드 한 다음 그립니다. 정점 셰이더를 사용하여 위 좌표 만 변경하면됩니다. 버텍스 쉐이더는 하이트 맵에서 법선을 생성 할 수도 있고 (또는 노멀 맵을 제공 할 수도 있습니다.) 그러면 조명을 위해 프래그먼트 셰이더로 전달됩니다.

엄청난 양의 데이터를 저장하지 않으려면 glVertexID를 사용하여 버텍스 쉐이더에서 처음부터 정점 위치를 생성하십시오. 버퍼를 바인드하지 말고 glDrawArrays (GL_TRIANGLE_STRIP, 0, lots)를 호출하면됩니다.

GuyRT가 언급했듯이 테셀레이션 쉐이더도 좋을 것이고 메쉬에 대한 카메라의 거리에 따라 테셀레이션 세부 사항을 변경할 수 있습니다. 그러나 이것은 더 많은 일이 될 것입니다.