gpt4 book ai didi

C++ 过剩速度?

转载 作者:行者123 更新时间:2023-11-30 01:56:09 27 4
gpt4 key购买 nike

好吧,我不知道我是不是太蠢了。

但是当我运行我的应用程序而不绘制任何东西时,我得到大约 6k FPS。

当绘制大约 150-200 点(从 obj )时,它只有 800...如果我再添加字体渲染,它会变得更低。

我不知道这是正常现象还是什么,但我不明白你应该如何渲染整个游戏世界。如果只有 150 - 200 点将它降到那个低点。而且我还尝试渲染大约 4k 点 => FPS=80

这是我的 objs 渲染方法:

void Render::RenderOBJVBO(OBJData data)
{
if(data.RenderID == 0) return;
glBindBufferARB(GL_ARRAY_BUFFER, data.RenderID);
glVertexPointer(3, GL_FLOAT, sizeof(float) * 8, (GLvoid*)(sizeof(float) * 5));
glNormalPointer(GL_FLOAT, sizeof(float) * 8, (GLvoid*)(sizeof(float) * 2));
glTexCoordPointer(2, GL_FLOAT, sizeof(float) * 8, (GLvoid*)0);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);

glDrawArrays(GL_TRIANGLES, 0, data.F.size() * 3);

glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glBindTexture(GL_TEXTURE_2D, 0);
}

这是 OBJData:

class OBJData
{
public:
OBJData(void){}
~OBJData(void){}
std::vector<OBJFace> F;
std::vector<Vector3f> V;
std::vector<Vector3f> VN;
std::vector<Vector3f> VT;
int RenderID;
};

最后是 OBJFace:

class OBJFace
{
public:
OBJFace(void){}
~OBJFace(void){}
Vector3f verts;
Vector3f norms;
Vector3f textures;
OBJFace(Vector3f v, Vector3f n, Vector3f t)
{
verts = v;
norms = n;
textures = t;
}
};

所以我的问题是:这正常吗?如果不是,是什么导致了这个问题?

规范:

操作系统:Windows 8 64 位

CPU:英特尔酷睿 i5 760 @ 2.80GHz

内存:4GB

图形:ATI Radeon HD 48000 系列

屏幕:1920x1080@60Hz

最佳答案

void Render::RenderOBJVBO(OBJData data)

应该是

void Render::RenderOBJVBO(OBJData & data)

或者更好

void Render::RenderOBJVBO(const OBJData & data)

否则,每次调用 RenderOBJVBO 时,都会创建一个新的 OBJData 拷贝

关于C++ 过剩速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20098038/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com