2011-07-22 3 views
0

Я пытаюсь отобразить 2D-изображение на квадрат в качестве фонового изображения. Изображение рисуется в центре экрана, поэтому оно заканчивается только закрытием верхнего правого квартета, а остальное - на экране. Есть ли в любом случае я могу перевести или изменить TexCoord, чтобы он рисовал из нижнего левого края? Ниже приведен код, который я использую.LWJGL 2D отображение текстур за кадром

 background.bind();   
     GL11.glBegin(GL11.GL_QUADS); 
      GL11.glTexCoord2f(1,1); 
      GL11.glVertex2i(0,0); 
      GL11.glTexCoord2f(1,0); 
      GL11.glVertex2i(0,600); 
      GL11.glTexCoord2f(0,0); 
      GL11.glVertex2i(800,600); 
      GL11.glTexCoord2f(0,1); 
      GL11.glVertex2i(800,0); 
     GL11.glEnd(); 
+0

Это, честно говоря, лучшее название вопроса, о котором вы можете подумать? – razlebe

+0

Надеюсь, это облегчит понимание. – DaleCantwell

ответ

1

Это не имеет никакого отношения к текстурам; если вы убрали текстуру, она будет выглядеть точно так же, как сейчас.

OpenGL естественно не принимает вершины в координатах окна. Чтобы это разрешить, вам обычно нужно создать матрицу орфографической проекции некоторой формы, обычно с glOrtho. Это выглядело бы примерно так:

glMatrixMode(GL_PROJECTION); 
glPushMatrix(); 
glLoadIdentity(); 
glOrtho(0, width, 0, height, -1.0, 1.0); 

glMatrixMode(GL_MODELVIEW); 
glPushMatrix(); 
glLoadIdentity(); 

//Render stuff in window coordinates here. 

glPopMatrix(); 

glMatrixMode(GL_PROJECTION); 
glPopMatrix(); 

Масштабирование и выталкивание матрицы гарантирует сохранение предыдущей матрицы.

+0

Спасибо за помощь, теперь я использую glOrtho, как вы предлагаете выше, изображение теперь подгоняется к экрану, так как я отступом, но он перевернуто hoziontally, есть ли заказ на мой код выше, который я мог бы изменить, чтобы исправить, как изображение сопоставляются? – DaleCantwell

+0

Я изменил порядок, и он правильно перевернулся, спасибо за помощь. – DaleCantwell

Смежные вопросы