プログラムで小さなメモリ リークが発生していることに気付き、ようやく問題を突き止めることができました。
私がやっていることは、この関数を呼び出して画面に 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 レンダリングの経験はあまりありません。