好吧,所以我不知道我是否愚蠢或什麼。C++ glut glew的速度?
但是,當我運行我的應用程序沒有繪製任何東西,我得到約6k FPS。
當繪製約150-200點(從obj)它只有800 ... 如果我然後添加字體渲染它甚至更低。
我不知道這是正常還是某些事情,但我不明白你是如何渲染整個遊戲世界的。 如果只有150-200分將其降低。 同時,我試圖渲染約4k點=> FPS = 80
這裏是我的渲染方法OBJ文件:
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:Intel酷睿i5 760 @ 2.80GHz的
RAM:4 GB
顯卡:ATI的Radeon HD 48000系列
屏幕:1920x1080 @ 60Hz
你也許在調試模式下運行程序?如果是這樣,你將會有很多無用的構造函數/析構函數調用。嘗試刪除OBJData和OBJFace的構造函數/析構函數,並使它們成爲普通的舊結構體' –
我現在已經使它們成爲結構體。但不幸的是FPS仍然在80-100左右 –
你使用的是什麼圖形硬件?英特爾和許多僅限ES的垃圾(如手機)往往會很痛苦... – defube