Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Opengl,画一个大正方形会减慢游戏速度_C++_Opengl_Glsl_Shader - Fatal编程技术网

C++ Opengl,画一个大正方形会减慢游戏速度

C++ Opengl,画一个大正方形会减慢游戏速度,c++,opengl,glsl,shader,C++,Opengl,Glsl,Shader,我一直在做一个游戏,遇到了一个非常奇怪的问题。在我的设置中,游戏以4k fps的速度渲染,但在绘制了一个覆盖整个屏幕的彩色正方形+稍微多一些作为背景后,它会下降到3k fps。将正方形的大小更改为较小的正方形会使问题消失 我已经画了40k个三角形和粒子系统 正方形是加载在VBO中的三角形条带 GLfloat vBackground[4][3] = { { 0.0f, 0.0f, 0.0f }, { 16.0f, 0.0f, 0.0f }, { 0

我一直在做一个游戏,遇到了一个非常奇怪的问题。在我的设置中,游戏以4k fps的速度渲染,但在绘制了一个覆盖整个屏幕的彩色正方形+稍微多一些作为背景后,它会下降到3k fps。将正方形的大小更改为较小的正方形会使问题消失

我已经画了40k个三角形和粒子系统

正方形是加载在VBO中的三角形条带

GLfloat vBackground[4][3] = {
        { 0.0f, 0.0f, 0.0f },
        { 16.0f, 0.0f, 0.0f },

        { 0.0f, 16.0f, 0.0f },
        { 16.0f, 16.0f, 0.0f }
};
Im使用尽可能最简单的着色器:

顶点 #版本140

#extension GL_ARB_explicit_attrib_location : enable

layout (location = 0) in vec4 vVertex;

uniform mat4 mvpMatrix;
uniform vec4 inColor;

varying vec4 color;

void main(void)
{
    color = inColor;
    gl_Position = mvpMatrix * vVertex;
}
out vec4 vFragColor;

varying vec4 color;

void main(void) 
{
    vFragColor = color;
}
碎片 #版本140

#extension GL_ARB_explicit_attrib_location : enable

layout (location = 0) in vec4 vVertex;

uniform mat4 mvpMatrix;
uniform vec4 inColor;

varying vec4 color;

void main(void)
{
    color = inColor;
    gl_Position = mvpMatrix * vVertex;
}
out vec4 vFragColor;

varying vec4 color;

void main(void) 
{
    vFragColor = color;
}

图形卡的像素填充率是否太慢?

4000 FPS意味着渲染一帧需要0.25毫秒。3000 FPS意味着渲染需要0.33毫秒。总差为0.08毫秒或80微秒


我不会担心的。你的卡不是“太慢”;你对微小的时差太敏感了。

它对所有计算机都有相同的效果,还是只对一台计算机有相同的效果?你用的是什么图形卡?如果你的帧速率是以千帧每秒为单位测量的,那么你就做错了。测量时间,而不是FPS。我使用HD6850,可以在HD4850上试用,但我没有Nvidia卡来测试。你不应该像这样用FPS来测量你的性能。(1/3000秒)-(1/4000秒)仅为83微秒,这一点差别不大。从4k到3k的变化比不上从40到30的变化,总是测量时间。也许我有点太敏感了,画一个正方形比20k粒子产生的差异大得多真是令人惊讶。@hefty:你怎么确定它是“大得多的差异”?什么是20k粒子?我的意思是画20k个小正方形几乎不会影响一帧渲染所需的时间,但画一个大正方形的方式很明显。我只是好奇为什么,于是问了这个问题。@hefty:“画一个大的画会让人注意到”我的观点是,它不值得注意,因为你在测量时间时,会让不值得注意的东西显得有意义。你看着噪音,相信它是一个信号。@hefty:你没有回答这个问题,你只是把“更大的差异”改成了“很明显”。“引人注目”对你意味着什么?这是一个很大的区别,因为。在你的问题中,你在哪里测量时间?我只看到FPS。