2017-12-22 6 views
0

나는 안드로이드에서 OpenGL ES의 glsl을 연구 중이며 안드로이드 장치에서 this code을 실행하려고합니다. 그러나, 나는 time 매개 변수를 정의하는 방법을 모른다. 다음과 같이 내가 time 매개 변수를 전달하면,android에서 glsl의 "time"매개 변수를 정의하는 방법

int time = GLES20.glGetUniformLocation(mProgram, "time"); 
GLES20.glUniform1f(time, System.currentTimeMillis()); 

나는 화면의 점진적인 이미지의 움직임을 볼 수 없었다.

답변

1

사용

GLES20.glUniform1f(time, (System.currentTimeMillis()/1000) % 60); 

것은 this code에 시간 값을 수정합니다. 설정된 시간 값이 1513913007000이고 1000 또는 2000 값을 추가하면 모든 동작이 표시되지 않습니다. 이것은 Subexpression의 시간이 다른 것보다 너무 길어서 실시간 흐름이 너무 적기 때문에 System.currentTimeMillis()

+0

감사합니다. 그러나 코드를 사용할 때 부드럽게 움직이지 않습니다. 여러 개의 고정 된 샷의 슬라이드 쇼와 같습니다. –

+0

'(System.currentTimeMillis()/m) % n)/(부동) t'입니다. 더 빨리 원하면'm'을 더 작게 설정할 수 있습니다. 또는'System.currentTimeMillis()'를 사용하지 말고, 대신에'auto-increment' 값을 사용하십시오. 보다 부드럽게하고 싶으면'm'을 작게 설정하고'n'을 크게 설정하고 적당한't'를 선택하십시오. 더 많은 표현이 있으며,이 표현은 분명히 좋지 않습니다. – neuo

+0

마지막으로, 당신의 아이디어 덕분에 적절한 코드를 발견했습니다. 이것은 내 코드'GLES20.glUniform1f (시간, ((System.currentTimeMillis() - mStartTime)/1000.0f))'입니다. mStartTime은 내 앱이 시작된 시간입니다. 감사. –

관련 문제