2014-10-30 3 views
0

오픈 루프를 사용하여 2D 배경을 물 아래 렌더링했습니다. 시간이 지남에 따라 텍스처를 왜곡시킬 수 있습니까? 나는 죄 (시간) 또는 궤변 (시간)으로 이것을 깨닫는다. 하지만 나는 glsl에 가난합니다. 나는 어떻게 해야할지 잘 모릅니다. 샤 우드, 시간이 지남에 따라 x, y 좌표가 바뀌 었습니까? 전체 텍스처를 반복적으로 이동하지 않으려면 어떻게해야합니까? 도움을 주셔서 감사합니다.오픈 GL을 사용하여 물 아래에서 2D 배경을 렌더링하는 방법

답변

1

이 목표를 달성하기 위해 텍스처 좌표가 왜곡 될 수 있지만 몇 가지 매개 변수가 필요합니다.

예를 들어, X 텍스처 좌표를 소량 이동하여 가로 또는 세로로 죄는 sin 또는 cos 함수 (그 차이는 크지 않음)를 사용할 수 있습니다. 예를 들어, .1이 최대 10 %까지 왜곡 될 때와 같은 텍스처에 상대적이어야하는 유니폼 (strength)을 삽입합니다. 그러면 아이디어는 X=sin(Y)*strength으로 설정하는 것입니다. Y이 0에서 1까지의 범위에 있기 때문에 예를 들어 20과 같은 범위에 있어야하는 "더 많은 웨이브"를 얻으려면 density과 같은 다른 파라미터를 추가해야합니다 (예를 들어 몇 가지 웨이브를 얻으려면이 값을 변경하십시오. 좋은 효과). 그러면 방정식은 X=sin(Y*density)*strength이됩니다. 여전히 정적 왜곡 된 이미지가 생성되지만 원하는 것은 시간이 경과함에 따라 이동하므로 시간에 따라 변경해야하는 몇 가지 수직 시간 계수 delta이 필요하고 .02*PI 사이의 범위에 도달하면 수식은 X=sin(Y*density + delta)*strength입니다. 모든 프레임에서 delta을 늘려야하고 더 큰 경우 2*PI2*PI으로 줄이면 부드러운 애니메이션을 얻을 수 있습니다. delta을 값을 늘리면 효과의 속도가 제어됩니다.

이제는 원하는 효과를 얻으려면 놀아야하는 3 가지 균일 한 매개 변수가 있습니다. 네가 찾길 바래.

+0

고맙습니다. –

관련 문제