簡體   English   中英

SFML等離子雪碧效應?

[英]SFML Plasma Sprite Effect?

有沒有辦法在SFML中創建一個不會減慢幀速率到爬行的等離子效果?

1)直接在內存中操作圖像位作為字節(或int /任何取決於您的目標顏色深度)陣列。 不要每次都使用圖像中的任何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;
}

你能在RAM中制作等離子效果,然后將它放在紋理上並上傳嗎? 它不是着色器效果,但它會給你一個等離子效果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM