저는 최근에 최신 3D OpenGL 프로그래밍의 로프를 배우기 위해 온라인 기사를 읽었으며 "독립적 인 연습"리뷰 중 하나에 매달려 있습니다. 질문을 읽 단편 프로그램이 아닌 루프의 끝에서 다시 처음에 secondColor에서 터지는보다 firstColor 및 secondColor 사이 바운스되도록 fragChangeColor.cpp에서조건문을 사용하여 팝핑에 반대하는 색상들 사이 바운스
가 변경. first-to-second-to-first 전환은 모두 fragLoopDuration 시간 간격 내에 발생해야합니다. 궁금한 점이있는 경우 GLSL 은 if 문과? : 연산자를 지원합니다. 그러나 보너스가 포인트 인 경우 명시 적 조건문없이 수행하십시오. 죄 또는 cos 함수를 자유롭게 사용하십시오.
내가 두 색상을 반송 조건문을 사용하는 데 문제는, 나는 GLSL 쉐이더 언어의 지식을 제한했다. 다음 코드는 삼각형의 색이 천천히 증가 할 때까지 천천히 색을 증가시키고 색을 흰색으로 다시 나타냅니다. 어딘가에 내가 삼각형 색상이 최대의 도달하면 다시 등등 흰색, 후 최대 컬러에 도달 할 때까지 색상을 감소하기 시작합니다 있도록, 조건문의 일종을 포함 할 필요가 코드
#version 330
out vec4 outputColor;
uniform float fragLoopDuration;
uniform float time;
const vec4 firstColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);
const vec4 secondColor = vec4(0.0f, 1.0f, 0.0f, 1.0f);
void main()
{
float currTime = mod(time, fragLoopDuration); //makes the color pop from green to white once mod goes from 5 to 0 again
float currLerp = currTime/fragLoopDuration;
outputColor = mix(firstColor, secondColor, currLerp);
}
. 이 일을 어떻게하면 될까요? 내 초기 추측은 정적 일종의 if 문을 사용할 것입니다.
설명을 주셔서 감사합니다. –