我注意到我的程序中有一个小的内存泄漏,我终于能够找到问题所在。
我正在做的是通过调用此函数在屏幕上绘制 5 个矩形:
bool OpenGlEntity::fillRect(SDL_Rect rect, float R, float G, float B, float A){
glPushMatrix();
glDisable(GL_TEXTURE_2D);
GLfloat vertices_position[] = {
(GLfloat)rect.x, (GLfloat)rect.y,
(GLfloat)(rect.x+rect.w), (GLfloat)rect.y,
(GLfloat)(rect.x+rect.w), (GLfloat)(rect.y+rect.h),
(GLfloat)rect.x, (GLfloat)(rect.y+rect.h),
};
glTranslatef(0, 0, 0);
//scale
glScalef(1,1,1);
//set color
glColor4f(R, G, B, A);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, vertices_position);
glLockArraysEXT(0, 4);
glDrawArrays(GL_QUADS, 0, 4);
glUnlockArraysEXT();
glDisableClientState(GL_VERTEX_ARRAY);
glEnable(GL_TEXTURE_2D);
//reset color
glColor4f(1.f, 1.f, 1.f, 1.f);
glPopMatrix();
return true;}
如果我从不运行“glDisable(GL_TEXTURE_2D);” (或“glEnable(GL_TEXTURE_2D);”)不会发生泄漏。为什么是这样?
对我来说,这没有多大意义,但话说回来,我在 OpenGL 渲染方面没有那么有经验。