C++ glut glew speed?

C++ glut glew speed?

本文关键字:speed glew glut C++      更新时间:2023-10-16

好吧,所以我不知道我是愚蠢还是什么。

但当我运行我的应用程序而不画任何东西时,我会得到大约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

RAM: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副本