Ahoj,
hraju si teď v OpenGL s viewportama a mám problém, který nechápu. Když si udělám split screen, tak mi všechno funguje, dokud mají viewporty podobné vertikální rozlišení.
Když nastavím jednomu z viewportů přehnané vertikální rozlišení, ten druhý se posune někam pryč z obrazovky. Podobné je to s minimapou. Mám herní plochu:
A do červeného obdélníku chci umístit minimapu. Okno je 1024x576, viewport herní plochy taky. Minimapa bude zabírat plochu 160x90px a rozlišení bude 2048x1142:
Nehledě na to, v jakém pořadí vykresluju na viewporty, hlavní viewport se doslova odsune do strany. Pokud bych si hrál dostatečně dlouho, byl bych i schopen ho vrátit na původní polohu, ale rád bych věděl, jak tomuto předejít.
Přepínání viewportů:
// logické struktury
struct Rect2D{
float x, y;
int w, h;
};
struct Viewport{
int width, height; //Resolution
Rect2D view; // pozice a velikost na obrazovce
};
//definice
Viewport minimap={2048,1142,{0,0,160,90}};
Viewport mainview={1024,576,{0,0,1024,576}};
// přehození
void setViewport(Viewport viewport){
glViewport(GLint(viewport.view.x),GLint(viewport.view.y),viewport.view.w,viewport.view.h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,viewport.width,0,viewport.height,0.0f,10.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
mezi tím nevyměňuju, ani nevyprazdňuju žádné buffery. a už vůbec nechápu, proč nezáleží na pořadí vykreslování, minimapa je prostě vždy správně a hlavní plocha je posunutá.
díky předem za rady