|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.05.2011, 13:15 | #1 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
OpenGL. Текстуры.
Добрый день. Опять я что-то неправильно "смешал". Изучая текстуры в OpenGL, решил (всегда так делаю) изменить код, а не списать. И что-то не так сделал. Получившийся куб не имеет текстуры, точнее самой текстурой является один и тот же цвет, а еще точнее - пиксель картинки 64 на 64. Исходник во "вложениях".
Буду благодарен. |
22.05.2011, 15:27 | #2 |
Форумчанин
Регистрация: 11.04.2010
Сообщений: 143
|
Ну тут всё просто. Координаты текстуры тоже указывать надо. По вашему коду(особенно по комментарию) я вижу что вы не поняли принципа наложения текстур. Советую ознакомится с таковой ещё раз. А пока вот держите пример.
|
22.05.2011, 17:05 | #5 |
Форумчанин
Регистрация: 11.04.2010
Сообщений: 143
|
Текстура перевёрнутая потому что в Windows принято что ось Y направлена вниз, а в OpenGL вверх. Проблема решается тремя способами:
1) направить ось Y в OpenGL вниз(самый плохой способ) 2) инвертировать второй параметр функции gltexcoord2f(x, 1-y); 3) перевернуть растр текстуры в любом графическом редакторе( я так всегда и делаю) |
22.05.2011, 18:41 | #6 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Спасибо большое. Извините, у меня еще один вопрос (надоел, наверное, я уже) думаю, что он будет в тему, так как мой способ не очень хорош (использование битмапа, цикла и т.д.).
Вот нашел код, который опубликовал XProger(не могу нарушать авторское право). Код:
Код:
Большое спасибо за ответы. |
22.05.2011, 18:56 | #7 |
Форумчанин
Регистрация: 11.04.2010
Сообщений: 143
|
Ну начнём с того с в первой версии OpenGL чтобы заново использовать текстуру нужно было повторно загрузить её в память при помощи всем известной функции glTexImage2D. Это было очень неудобно поэтому в версии 1.1(вроде бы, а может в 1.2=)) ввели понятие текстурных объектов. Это такие указатели на область памяти в видеокарте. теперь благодаря им можно один раз загрузить текстуру в видео память и работать с ней через указатель. Был введён ряд новых функций.
Код:
А вообще вам ещё рано так далеко уходить в изучении OpenGL. |
22.05.2011, 19:38 | #9 |
Форумчанин
Регистрация: 11.04.2010
Сообщений: 143
|
Ну это просто тип OPenGL, используй обычный Cardinal
|
22.05.2011, 20:05 | #10 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Еще раз извините. Можете написать, а точнее дописать эти две строчки правильно(glGenTextures(1, @Result); glBindTexture(GL_TEXTURE_2D, Result); )? Я думаю, что нигде такой информации я не найду.
У меня delphi 7, поэтому заголовочный файл устаревший и данных процедур нет. Я их сам дописал (не знаю правильно ли) и не получил результата. В папку с приложением положил свой OpenGL.pas, поэтому, если будите компилировать удалите его. Еще одна просьба. Киньте свой OpenGL.pas, если он у вас "рабочий» (т.е. работают эти процедуры). С огромным уважением. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Приближение и удаление от текстуры.(Opengl) | peredozer | Мультимедиа в Delphi | 3 | 10.05.2010 02:59 |
OpenGL и текстуры | N!ckeL | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 7 | 05.05.2010 15:46 |
OpenGL некорректное наложение текстуры | Selestis | Мультимедиа в Delphi | 1 | 03.02.2009 19:59 |
Текстуры OpenGl | Stanislav | Мультимедиа в Delphi | 7 | 17.12.2008 17:55 |
OpenGL текстуры | NoName_emaNoN | Win Api | 3 | 29.11.2007 20:11 |