2010-05-16 9 views

답변

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에 넣은 다음 텍스처에 놓고 업로드 할 수 있습니까? 셰이더 효과가 아니지만 플라즈마 효과를 줄 것입니다.