何かをチェックしたところ、C++ と OpenGL と GLSL のパフォーマンスについて奇妙な結果が得られました。
最初のプログラムでは、フラグメント シェーダーを使用してテクスチャにピクセルを描画し、テクスチャをレンダリングしました。テクスチャの mag\min は でしたGL_NEAREST
。
2 番目のプログラムでは、フラグメント シェーダーを使用して画面に直接レンダリングしました。
2 番目のプログラムの方が速いのはなぜですか? 同じアクションを繰り返すよりも、テクスチャのレンダリングが高速ではありませんか?
これは、AAA ゲームのビデオを撮影して同じコンピューターで表示し、ビデオの FPS を下げるようなものです。
フラグメント シェーダーは次のとおりです。
uniform int mx,my;
void main(void) {
vec2 p=gl_FragCoord.xy;
p-=vec2(mx,my);
if (p.x<0.0)
p.x=-p.x;
if (p.y<0.0)
p.y=-p.y;
float dis=sqrt(p.x*p.x+p.y*p.y);
dis+=(abs(p.x)+abs(p.y))-(abs(p.x)-abs(p.y));
p.x/=dis;
p.y/=dis;
gl_FragColor=vec4(p.x,p.y,0.0,1.0);
}