![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Доброе время суток.
Такой обычный кусок кода:
Но вот текстура накладывается не только на этот прямоугольник, но и на всё подряд, причём половина сцены вообще не рисуется. Пробовал закомментировать функцию glEnable(GL_TEXTURE_2D); и в инициализации и в этой части кода (то есть везде) - всё равно текстура накладывается! (и также везде). Подскажите, пожалуйста, в чём проблема? |
|||
|
||||
FIaR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.11.2006 Репутация: 2 Всего: 2 |
Насколько я еще помню, glEnable(GL_TEXTURE_2D); нужно вставлять перед glBegin(GL_.....);, а не внутри. Т.е. Если хочеш затекстуировать прямоугольник, то он должен быть отдельным мэшем.
--------------------
Шуруп забитый молотком, держится лучше, чем гвоздь закрученый отверткой. |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Помогло. Молодец, ты. Такую мелочь запомнил - репутация +1.
Полигон, на который накладывается текстура, окрашивается в чёрный цвет, а сама текстура рисуется только цветом, который выбран для заполнения полигона. В чём дело? |
|||
|
||||
FIaR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.11.2006 Репутация: 2 Всего: 2 |
Может проблема с текстурными координатами, но лучше бы было посмотреть на код отрисовки
![]() --------------------
Шуруп забитый молотком, держится лучше, чем гвоздь закрученый отверткой. |
|||
|
||||
KaraKum |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Код инициализации DevIL и загрузки текстуры:
Код прорисовки полигона:
|
||||
|
|||||
FIaR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.11.2006 Репутация: 2 Всего: 2 |
Попробуй так:
*.bmp формат - это GL_BGR, поэтому для универсальности кода, лучше пользоваться ilGetInteger(IL_IMAGE_FORMAT) --------------------
Шуруп забитый молотком, держится лучше, чем гвоздь закрученый отверткой. |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Да, точно. Но от этого только цвета инвертируются, но текстура так и рисуется только одним цветом (цветом полигона, на который она "наклеивается").
|
|||
|
||||
FIaR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.11.2006 Репутация: 2 Всего: 2 |
Я не совсем понимаю, зачем тут нужен unTexture[0] = ilutGLBindTexImage();
А если загрузить текстуру из JPG или TGA - тот же результат?? --------------------
Шуруп забитый молотком, держится лучше, чем гвоздь закрученый отверткой. |
|||
|
||||
KaraKum |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Так было в статье, по которой я писал этот код. Удалил эту строку и всё также работает.
Да, результат тот же (текстура рисуется только чёрным цветом и цветом, которым закрашен полигон, на который она наложена). |
||||
|
|||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Решил вопрос.
Чтобы текстура рисовалась только своим цветом и не смешивалась с цветом полигона, на который она накладывается (что не по умолчанию), нужно вызвать функцию glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); Вопрос решён ![]() |
|||
|
||||
sgi1981 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: нет Всего: 10 |
А вот у меня вопрос следующий.
Есть возможность написать свой собственный шейдер фрагментов и загрузить его на выполнение в графическую карту. Допустим, на входе у шейдера атрибуты фрагментов такие fragment.color fragment.texcoord[0] texture[0] Пример части шейдера
Но ведь на фрагмент может быть не наложена никакая текстура. Тогда нужно это как-то определить. Допустим, что на вход шейдера поступает фрагмент примитива без текстуры. Тогда что будет содержаться в texture[0] ? Как пропустить наложение цвета текселя. Дело в том, что я уже испытывал свой шейдер фрагментов для генерации тумана, и те примитивы, что задавались без текстуры - рисовались цветом одного из текселей текстуры, которая была наложена на другое тело. -------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |