[OpenGL] TV noise - animacja
Ostatnio zmodyfikowano 2017-10-20 23:44
czaffik |
» 2017-10-19 19:53:00 Wyświetlanie tekstury się tnie czy migocze? Możliwe że przez to że za szybko zmieniane sa tekstury i wychodzi taki efekt. Zmiana tekstury to dość kosztowna operacja, dlatego jednak lepiej napisać takie coś w shaderze, wykorzystac patent ze zmianami koordynatów tekstury, coś jak tutaj: http://www.geeks3d.com/20091009/shader-library-night-vision-post-processing-filter-glsl/. Edit: W zasadzie nie trzeba tego pisać w shaderze, możesz wprowadzić jakieś zmienne vec2 uv i je jakoś modyfikować (np sinus z uv * const) glBegin( GL_QUADS ); glColor3f( 1.0f, 1.0f, 1.0f ); glTexCoord2f( uv1.x, uv1.y ); glVertex3f( - 15.0, - 15.0, 0.0 ); glTexCoord2f( uv2.x, uv2.y ); glVertex3f( - 15.0, 15.0, 0.0 ); glTexCoord2f( uv3.x, uv3.y ); glVertex3f( 15.0, 15.0, 0.0 ); glTexCoord2f( uv4.x, uv4.y ); glVertex3f( 15.0, - 15.0, 0.0 ); glEnd();
|
|
slowbro Temat założony przez niniejszego użytkownika |
» 2017-10-20 23:37:04 Dzięki za sugestie. Można faktycznie zrobić to jak piszesz, np: glTexCoord2f( 0.0 + rand() % 20, 0.0 + rand() % 20 ); glVertex3f( - 15.0, - 15.0, 0.0 ); glTexCoord2f( 0.0 + rand() % 20, 1.0 + rand() % 20 ); glVertex3f( - 15.0, 15.0, 0.0 ); glTexCoord2f( 1.0 + rand() % 20, 1.0 + rand() % 20 ); glVertex3f( 15.0, 15.0, 0.0 ); glTexCoord2f( 1.0 + rand() % 20, 0.0 + rand() % 20 ); glVertex3f( 15.0, - 15.0, 0.0 );
tylko trzeba losować liczby o dużych wartościach i wychodzi naprawdę piękne śnieżenie ekranu (przy małych losowanych liczbach pojawiają się skośne linie na ekranie i psują efekt śnieżenia). Niestety nie używam shaderów i rozwiązałem to inaczej. W każdej ramce pobieram wartość zwracanego wiersza granej muzyki, robię dzielenie z resztą i ustawiam wartość logiczną, a na jej podstawie ustawiam właściwą teksturę (każda tekstura ma noisowy charakter) quada w dalszej funkcji. Też działa dobrze. if(( intPosCurrVal % 4 == 0 ) ||( intPosCurrVal % 4 == 1 ) ) { changeNoiseTexture = true; } else { changeNoiseTexture = false; }
Można jeszcze za pomocą glTexSubImage2D, ale wyniki nie są dobre. |
|
Saran |
» 2017-10-20 23:44:44 W zasadzie nie trzeba tego pisać w shaderze |
|
|
1 « 2 » |