프레임 속도를 느리게하지 않는 SFML에서 플라즈마 효과를 만드는 방법이 있습니까?SFML 플라즈마 스프라이트 효과?
3
A
답변
4
1) 이미지 비트를 메모리에서 직접 바이트로 (또는 int/target color depth에 따라 다름) 배열로 조작하십시오. 매번 이미지에서 GetsPixel()을 사용하지 마십시오.
2) 수학을 최소화하십시오. 플라스마 효과의 경우 대개 삼각 함수를 많이 사용하게 될 것입니다 (높이가 너비 프레임 속도 일 때). 계산을 위해 빠른 전용 수학 라이브러리를 사용하거나 시작시 계산을 캐시에 저장하고 각 프레임에서 수학을 완전히 제거하는 룩업 테이블을 사용하십시오.
3) 구식 플라스마 효과가 너무 빨리 달리는 이유 중 하나는 팔레트 사이클링이었습니다. 나는 SFML로 직접 (또는 일반적으로 팔레트를) 복제하는 방법을 알지 못하지만 GLSL 셰이더를 사용하면 큰 성능 저하없이 같은 종류의 결과를 얻을 수 있습니다. 다음과 같은 내용 :
float4 PS_ColorShift(float2 Tex : TEXCOORD0) : COLOR0
{
float4 color = tex2D(colorMap, Tex);
color.r = color.r+sin(colorshift_timer+0.01f);
color.g = color.g+sin(colorshift_timer+0.02f);
color.b = color.b+sin(colorshift_timer+0.03f);
color.a = 1.0f;
saturate(color);
return color;
}
1
플라즈마 효과를 RAM에 넣은 다음 텍스처에 놓고 업로드 할 수 있습니까? 셰이더 효과가 아니지만 플라즈마 효과를 줄 것입니다.