2012-11-16 3 views
0

CMesh라고하는 클래스의 객체에 저장된 OpenGL과 함께 두 개의 메쉬를 렌더링합니다. CMesh는 CVertex 객체와 삼각형으로 표현 된 많은 정점을 포함합니다. 모든 CVertex에는 위치가있는 Vector가 포함되어 있습니다.
렌더링하는 동안 정점 위치가 계속 변경되면 메시를 렌더링 할 때마다 VBO 데이터 배열을 다시 작성해야합니다. 이렇게하면 다른 대형 게임에 비해 많은 정점이 없어도 전체 프로그램 속도가 매우 느려집니다.
더 좋은 방법이 있나요?내 VBO를 채우기위한 가장 좋은 방법은 무엇입니까?

+0

번역을 사용하는 것과는 정반대로 버텍스 위치를 계속 변경하는 이유는 무엇입니까? –

+0

그들은 애니메이션입니다. 변환, 회전, ...은 셰이더에 추가 행렬을 제공하여 수행됩니다. –

+0

참조 http://stackoverflow.com/a/1494740/603688 – Dan

답변

0

GL_STATIC_DRAW를 사용 중이라고 가정하면 GL_DYNAMIC_DRAW를 사용하도록 변경할 수 있습니다. GL_DYNAMIC_DRAW를 사용하면 프로그램을 상당히 느리게하지 않아야합니다. 또는 GPU에서 객체의 새로운 위치를 계산하는 것도 고려해야 할 가능성이 있습니다.

1

은 모프 타겟 또는 여러 뼈가있는 스킨 된 메시를 사용합니다. 그것은 모든 버텍스를 수동으로 업데이트하는 것보다 훨씬 낫습니다.

관련 문제