我检查了一些东西,我得到了关于 C++ & OpenGL & GLSL 性能的奇怪结果。
在第一个程序中,我使用片段着色器将像素绘制到纹理上,然后渲染纹理。纹理的 mag\min 为GL_NEAREST
.
在第二个程序中,我使用片段着色器并直接渲染到屏幕上。
为什么第二个程序更快?渲染纹理不是更快而不是重复相同的动作吗?
这就像拍摄 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);
}