2011-08-31 2 views
1

임의의 값을 변수에 사용하여 생성 된 프랙탈 개체가 있습니다. 저는 C++과 OpenGL을 사용하고 있습니다. 그러나 이제 glutTimerFunc을 사용하여 장면의 다른 객체에 애니메이션을 적용하려면 glutPostRedisplay()을 호출해야 장면을 다시 그려야합니다. 그러나 glutPostRedisplay()은 새로운 무작위 값을 다시 시드하고 전체 개체가 Outlook을 변경하기 때문에 무작위 값을 기반으로 한 프랙탈 개체에 영향을줍니다.glutPostRedisplay()에서 특정 객체 만 다시 그리기 할 수 있습니까?

어떻게하면 모든 개체가 아닌 특정 개체 만 다시 그리도록 OpenGL을 만들 수 있습니까? 먼저 무작위 값의 배열을 생성 한 다음 프랙탈 객체를 그리는 함수에 배열을 전달하는 별도의 함수를 만드는 방법을 생각해 보았습니다. 그러나 여러 다른 임의 값이 사용 되었기 때문에 배열은 매우 혼란 스러울 수 있습니다. 이것에 더 좋은 방법이있을 수 있을까요?

답변

3

OpenGL은 "개체"가 무엇인지 알지 못합니다. 당신이주는 것을 알고 있습니다. 도형을 사용하여 정점을 생성하는 경우 나중에 도형을 다시 생성 할 수있는 충분한 정보를 보유하거나 후속 세대 데이터를 어딘가에 배치해야합니다.

여러분의 도형을 만들기위한 난수 생성 알고리즘이 있다고 가정합니다. 글쎄, 그들은 보통 씨앗 번호로 일합니다. 따라서 프랙탈을 생성하기 전에 단순히 시드를 얻은 다음 프랙탈을 변경할 시간이 될 때까지 다음 렌더링에서 시드를 설정할 수 있습니다.

또는 프랙탈을 화면에 표시되지 않는 버퍼로 렌더링 한 다음 화면에 blit 할 수 있습니다. 프레임 버퍼 객체를 사용해야합니다.

관련 문제