switch(playersCount)
{
case 1:
glViewport(0, 0, currentX, currentY);
glScissor(0, 0, currentX, currentY);
renderGame(&players[0]);
break;
case 2:
glViewport(currentX/2, 0, currentX/2, currentY);
glScissor(currentX/2, 0, currentX/2, currentY);
renderGame(&players[0]);
glViewport(0, 0, currentX/2, currentY);
glScissor(0, 0, currentX/2, currentY);
renderGame(&players[1]);
//draw line
glViewport(0, 0, currentX, currentY);
glScissor(0, 0, currentX, currentY);
global::ortho();
glTranslatef(0,0,-1);
glDisable(GL_TEXTURE_2D);
glColor3f(1,1,1);
glLineWidth(2);
glBegin(GL_LINES);
glVertex2f(0, currentY/2);
glVertex2f(0, -currentY/2);
glEnd();
glEnable(GL_TEXTURE_2D);
break;
case 3:
glViewport(0, currentY/2, currentX/2, currentY/2);
glScissor(0, currentY/2, currentX/2, currentY/2);
renderGame(&players[0]);
glViewport(currentX/2, currentY/2, currentX/2, currentY/2);
glScissor(currentX/2, currentY/2, currentX/2, currentY/2);
renderGame(&players[1]);
glViewport(currentX/4, 0, currentX/2, currentY/2);
glScissor(currentX/4, 0, currentX/2, currentY/2);
renderGame(&players[2]);
glViewport(0, 0, currentX, currentY);
glScissor(0, 0, currentX, currentY);
global::ortho();
glTranslatef(0,0,-1);
glDisable(GL_TEXTURE_2D);
glColor3f(1,1,1);
glLineWidth(2);
glBegin(GL_LINES);
glVertex2f(-currentX/2, 0);
glVertex2f(currentX/2, 0);
glVertex2f(0, currentY/2);
glVertex2f(0, 0);
glEnd();
glEnable(GL_TEXTURE_2D);
break;
case 4:
glViewport(0, currentY/2, currentX/2, currentY/2);
glScissor(0, currentY/2, currentX/2, currentY/2);
renderGame(&players[0]);
glViewport(currentX/2, currentY/2, currentX/2, currentY/2);
glScissor(currentX/2, currentY/2, currentX/2, currentY/2);
renderGame(&players[1]);
glViewport(0, 0, currentX/2, currentY/2);
glScissor(0, 0, currentX/2, currentY/2);
renderGame(&players[2]);
glViewport(currentX/2, 0, currentX/2, currentY/2);
glScissor(currentX/2, 0, currentX/2, currentY/2);
renderGame(&players[2]);
glViewport(0, 0, currentX, currentY);
glScissor(0, 0, currentX, currentY);
global::ortho();
glTranslatef(0,0,-1);
glDisable(GL_TEXTURE_2D);
glColor3f(1,1,1);
glLineWidth(2);
glBegin(GL_LINES);
glVertex2f(-currentX/2, 0);
glVertex2f(currentX/2, 0);
glVertex2f(0, currentY/2);
glVertex2f(0, -currentY/2);
glEnd();
glEnable(GL_TEXTURE_2D);
break;
}
4 вьевпорта
Скажите, как правильно рисовать поочередно в каждый из 4-х вьевпортов?
это автор имеет ввиду?
здесь в зависимости от количества игроков будет кол-во вьюпортов
писалось давно, так что возможны мелкие неточности, и тд... ^)
Код:
спасибо большое за помощь, но я уже давно всё сделал :)