GrizZzly-TerRor Дата: Суббота, 02 Марта 2013, 10:04 | Сообщение # 1 | Тема: Наложение текстур OpenGL
был не раз
Сейчас нет на сайте
Archido , Спасибо, получилось
GrizZzly-TerRor Дата: Пятница, 01 Марта 2013, 23:34 | Сообщение # 2 | Тема: Наложение текстур OpenGL
был не раз
Сейчас нет на сайте
Добрый день, изучаю OpenGL и попутно пишу 2D игру .Но у меня почему-то при рисовании 2х текстур они накладываются , и получается что большая текстура закрывает меньшую ( при равных X,Y). А хотелось бы что бы меньшая накладывалась сверху. При этом, еще существует текстурированный объект на все окно (фон), у которого такой проблемы нет. В общем, хотелось бы разместить ту большую текстуру между фоном и меньшей. Рисую все это так:
1) преамбула (вып. 1 раз в самом начале)
Код
GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glLoadIdentity(); GL11.glOrtho(0, Width, Height, 0, 1, -1); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_ALPHA); GL11.glTexEnvi( GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_MODULATE );
2) Код печати фона
Код
GL11.glDisable(GL11.GL_DEPTH_TEST); GL11.glDepthMask(false); GL11.glLoadIdentity(); GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glPushMatrix(); GL11.glLoadIdentity(); GL11.glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); GL11.glTexEnvf (GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_MODULATE); GL11.glMatrixMode(GL11.GL_MODELVIEW); Baground.bind(); GL11.glBegin(GL11.GL_QUADS); GL11.glTexCoord2f(0.0f, 0.0f);//1 GL11.glVertex2f(0.0f, 0.0f); GL11.glTexCoord2f(0.0f, 1.0f);//2 GL11.glVertex2f(0.0f, 1.0f); GL11.glTexCoord2f(1.0f, 1.0f);//3 GL11.glVertex2f(1.0f, 1.0f); GL11.glTexCoord2f(1.0f, 0.0f);//4 GL11.glVertex2f(1.0f, 0.0f); GL11.glEnd(); GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glPopMatrix(); GL11.glMatrixMode( GL11.GL_MODELVIEW); GL11.glPopMatrix(); GL11.glTexEnvf (GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_REPLACE); GL11.glDepthMask(true); GL11.glEnable(GL11.GL_DEPTH_TEST);
3) Печать "Обычного объекта".
Код
Ball.TexColor.bind(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4ub((byte) 255, (byte) 255, (byte)255, (byte)255); GL11.glBegin(GL11.GL_QUADS); GL11.glColor4f(1.0f,1.0f,1.0f,0.0f); GL11.glTexCoord2f(0,0); GL11.glVertex2i((int)Ball.getX()-ObjSize,(int)Ball.getY()-ObjSize); GL11.glTexCoord2f(1,0); GL11.glVertex2i((int)Ball.getX()-ObjSize,(int)Ball.getY()+ObjSize); GL11.glTexCoord2f(1,1); GL11.glVertex2i((int)Ball.getX()+ObjSize,(int)Ball.getY()+ObjSize); GL11.glTexCoord2f(0,1); GL11.glVertex2i((int)Ball.getX()+ObjSize,(int)Ball.getY()-ObjSize); GL11.glEnd(); GL11.glDisable(GL11.GL_BLEND);
4) Печать проблемного объекта
Код
GL11.glDisable(GL11.GL_DEPTH_TEST); GL11.glDepthMask(false); GL11.glLoadIdentity(); GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glPushMatrix(); GL11.glLoadIdentity(); GL11.glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); GL11.glTexEnvf (GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_MODULATE); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glTexCoord2f(0,0); GL11.glVertex2i(Player.X-(int)Player.Size/2,Player.Y-(int)Player.Size/2); GL11.glTexCoord2f(1,0); GL11.glVertex2i(Player.X+(int)Player.Size/2,Player.Y-(int)Player.Size/2); GL11.glTexCoord2f(1,1); GL11.glVertex2i(Player.X+(int)Player.Size/2,Player.Y+(int)Player.Size/2); GL11.glTexCoord2f(0,1); GL11.glVertex2i(Player.X-(int)Player.Size/2,Player.Y+(int)Player.Size/2); GL11.glEnd(); //GL11.glDisable(GL11.GL_BLEND); GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glPopMatrix(); GL11.glMatrixMode( GL11.GL_MODELVIEW); GL11.glPopMatrix(); GL11.glTexEnvf (GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_REPLACE); GL11.glDepthMask(true); GL11.glEnable(GL11.GL_DEPTH_TEST);
Прошу подсказать что я делаю не так, и как добиться желаемого результата.
GrizZzly-TerRor Дата: Вторник, 15 Июня 2010, 12:48 | Сообщение # 3 | Тема: На каком конструкторе легче сделать такую игру?
был не раз
Сейчас нет на сайте
Quote
да хреновое у тебя имхо
Да я не спорю))) Спасибо
GrizZzly-TerRor Дата: Среда, 09 Июня 2010, 15:14 | Сообщение # 4 | Тема: На каком конструкторе легче сделать такую игру?
был не раз
Сейчас нет на сайте
Здрасте всем, скажите пожалуйста какой конструктор лучше взять.Короче есть дракон. Он ходит/ летает и убивает всякую ересь. В зависимости от здоровья\сил у него появляются некие возмлжности. Но главное условие! Когда под ногами "твердо" он идет, кода нет - летит! Заранее спасибо PS. ИМХО, Game Maker не самый лучшей конструктор для данного примера. Но если кто знает подобный пример, напишите на мыло Плиззз ))) или в личку... Заранее СпС))
Сообщение отредактировал GrizZzly-TerRor - Среда, 09 Июня 2010, 15:15