Desenhando uma textura 2D no OpenGL [fechado]

Eu tinha uma função de desenho chamadaDrawImage mas é realmente confuso e está apenas trabalhando com uma forma específica da função remodelar, então eu tenho duas perguntas:

Como faço para desenhar uma textura no OpenGL? Eu só quero criar uma função que obtenha uma textura, x, y, largura, altura e talvez ângulo e pinte e desenhe de acordo com os argumentos. Eu quero desenhá-lo como um GL_QUAD regularmente, mas não tenho mais certeza de como fazer isso .-. As pessoas dizem que eu devo usar SDL ou SFML para fazer isso, é recomendado? Se for, você pode me dar uma função simples que carrega uma textura e outra que a desenha? Atualmente, estou usando o SOIL para carregar texturas.

a função é como aqui:

void DrawImage(char filename, int xx, int yy, int ww, int hh, int angle) 
{
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, filename);

  glLoadIdentity();
  glTranslatef(xx,yy,0.0);
  glRotatef(angle,0.0,0.0,1.0);
  glTranslatef(-xx,-yy,0.0);

// Draw a textured quad
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2f(xx,yy);
glTexCoord2f(0, 1); glVertex2f(xx,yy + hh);
glTexCoord2f(1, 1); glVertex2f(xx + ww,yy + hh);
glTexCoord2f(1, 0); glVertex2f(xx + ww,yy);

glDisable(GL_TEXTURE_2D);
glPopMatrix();

glMatrixMode(GL_PROJECTION);
glPopMatrix();

glMatrixMode(GL_MODELVIEW);
glEnd();
}

Alguém me disse que você não pode ligarglDisable, glPopMatrix ouglMatrixMode entreglBegin eglEnd. O problema é - o código não funcionará sem ele. Alguma idéia de como fazê-lo funcionar sem ele? 2. Sobre o glutReshapeFunc, a documentação diz que ele fornece um ponteiro para funções com 2 args, largura e altura - eu criei (até agora) uma função que é anulada - qualquer idéia de como escrever uma função de remodelação que tenha uma largura e altura e realmente faz o que a remodelagem precisa fazer.

e uma pergunta secundária: qual é a melhor qualidade do C ++ que o C quando se trata de GUIs como o OpenGL? Como tudo o que posso ver, apenas OOP é o problema e eu não enfrentei nenhum problema que OOP pudesse resolver e C não (no OpenGL, quero dizer).

Não é necessário responder a todas as perguntas - a pergunta número 1 é basicamente a mais importante para mim: P

questionAnswers(2)

yourAnswerToTheQuestion