Я хочу иметь полноэкранный режим, который поддерживает соотношение сторон, добавляя черные полосы с обеих сторон. Я попробовал просто создать режим отображения, но я не могу сделать его полноэкранным, если это не утвержденное разрешение, и когда я использую большую диапайлу, чем собственное разрешение, пиксели становятся испорченными, и между всеми фрагментами появляются строки игра по какой-то причине.LWJGL Fullscreen при сохранении пропорций?
Я думаю, мне нужно использовать FBOs для визуализации сценария к текстуре вместо окна, а затем просто использовать разрешенное полноэкранное разрешение и визуализировать текстуру, правильно растянутую в центре экрана, но я просто не знаю, t понять, как сделать текстуру, чтобы сделать это, или как растянуть изображение. Может кто-нибудь, пожалуйста, помогите мне?
EDIT
я получил в полноэкранном режиме работает, но он делает все, все сломанные глядя Есть случайные линии по краям всего, что это написанных к окну. Однако, если в родном разрешении нет глючных линий, их нет. Вот мой код:
Display.setTitle("Mega Man");
try{
Display.setDisplayMode(Display.getDesktopDisplayMode());
Display.create();
}catch(LWJGLException e){
e.printStackTrace();
}
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,WIDTH,HEIGHT,0,1,-1);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
try{Display.setFullscreen(true);}catch(Exception e){}
int sh=Display.getHeight();
int sw=WIDTH*sh/HEIGHT;
GL11.glViewport(Display.getWidth()/2-sw/2, 0, sw, sh);
Скриншот Glitchy полноэкранным здесь: http://sta.sh/021fohgnmxwa
EDIT
Вот код рендеринга текстур, которые я использую, чтобы сделать все:
public static void DrawQuadTex(Texture tex, int x, int y, float width, float height, float texWidth, float texHeight, float subx, float suby, float subd, String mirror){
if (tex==null){return;}
if (mirror==null){mirror = "";}
//subx, suby, and subd are to grab sprites from a sprite sheet. subd is the measure of both the width and length of the sprite, as only images with dimensions that are the same and are powers of 2 are properly displayed.
int xinner = 0;
int xouter = (int) width;
int yinner = 0;
int youter = (int) height;
if (mirror.indexOf("h")>-1){
xinner = xouter;
xouter = 0;
}
if (mirror.indexOf("v")>-1){
yinner = youter;
youter = 0;
}
tex.bind();
glTranslatef(x,y,0);
glBegin(GL_QUADS);
glTexCoord2f(subx/texWidth,suby/texHeight);
glVertex2f(xinner,yinner);
glTexCoord2f((subx+subd)/texWidth,suby/texHeight);
glVertex2f(xouter,yinner);
glTexCoord2f((subx+subd)/texWidth,(suby+subd)/texHeight);
glVertex2f(xouter,youter);
glTexCoord2f(subx/texWidth,(suby+subd)/texHeight);
glVertex2f(xinner,youter);
glEnd();
glLoadIdentity();
}
Разве это не проблема, которая может быть исправлена с помощью glViewport? Правильно настроив окно просмотра, вы должны удержать соотношение сторон так, как хотите. – PTosk
@PTosk Спасибо! Хотя я получаю еще одну проблему. Я продолжаю видеть линии между всеми моими объектами, и все выглядит. Я загрузил свой код, чтобы настроить полноэкранный режим как редактирование на мой вопрос. – Entity1037
Ссылка на скриншот не работает. – PTosk