PMG https://forum.pmg.org.ru/ |
|
2D графика средствами OpenGL https://forum.pmg.org.ru/viewtopic.php?f=1&t=7754 |
Страница 1 из 1 |
Автор: | s3dworld [ 21 янв 2010 18:02 ] |
Заголовок сообщения: | 2D графика средствами OpenGL |
Доброго всем вечера! Интересует несколько вопросов: 1. Как вывести 2D рисунок на экран монитора средствами OpenGL, чтобы независимо от положения камеры, рисунок не изменял своё положение? Вот захочу я над здоровьем отобразить рисунок красным крестиком, как мне это сделать? 2. Как загрузить программным способом (не из файла, а самому) в видеопамять рисунок средствами OpenGL? Вот предположим у меня есть массив: Код: unsigned int picture[]={ 0xFF0000,0xFF0000,0xFF0000,0xFF0000 0xFF0000,0xFF0000,0xFF0000,0xFF0000 0xFF0000,0xFF0000,0xFF0000,0xFF0000 0xFF0000,0xFF0000,0xFF0000,0xFF0000}; Это рисунок 4x4 (квадрат красного цвета). Как мне сделать так, чтобы это стало рисунком (OpenGL смог это использовать как текстуру для наложения на полигоны)? Заранее, большое спасибо! |
Автор: | bad_duck [ 21 янв 2010 18:25 ] |
Заголовок сообщения: | Re: 2D графика средствами OpenGL |
1. вот код для рисующий прямоугольника во весь экран в 2D Код: //подготавливаем вьюпорт Чтобы нарисовать значок здоровья этого достаточно, но для того чтобы там был не прямоугольник, а крестик нужно использовать glBlend() http://pmg.org.ru/nehe/nehe08.htmglViewport(0,0,Width,Height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0, (float)Width, 0, (float)Height); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //ну а теперь рисуешь что хочешь. Система координат начинается в левом нижнем углу. Единица измерения - один пиксель glBindTexture( GL_TEXTURE_2D, texture[0]); glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex2f(0, 0); glTexCoord2f(1, 0); glVertex2f(WindowW, 0); glTexCoord2f(1, 1); glVertex2f(WindowW, WindowH); glTexCoord2f(0, 1); glVertex2f(0, WindowH); glEnd(); 2.Что-то типа этого, только здесь думаю есть ошибки. Код: unsigned int picture[]={
0xFF0000,0xFF0000,0xFF0000,0xFF0000 0xFF0000,0xFF0000,0xFF0000,0xFF0000 0xFF0000,0xFF0000,0xFF0000,0xFF0000 0xFF0000,0xFF0000,0xFF0000,0xFF0000}; glGenTextures(1, &texture[0]); glBindTexture(GL_TEXTURE_2D, texture[0]); gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA16F_ARB, 4, 4, GL_RGB, GL_UNSIGNED_BYTE, picture); //в этом месте компилятор будет ругаться glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR); |
Автор: | s3dworld [ 21 янв 2010 18:32 ] |
Заголовок сообщения: | Re: 2D графика средствами OpenGL |
Спасибо большое! Я просто свой движок разрабатываю для стратегии, вот когда дойду до момента вывода 2D графики, обязательно всё это понадобится. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |