C++ Opengl,画一个大正方形会减慢游戏速度
我一直在做一个游戏,遇到了一个非常奇怪的问题。在我的设置中,游戏以4k fps的速度渲染,但在绘制了一个覆盖整个屏幕的彩色正方形+稍微多一些作为背景后,它会下降到3k fps。将正方形的大小更改为较小的正方形会使问题消失 我已经画了40k个三角形和粒子系统 正方形是加载在VBO中的三角形条带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
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。