![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| grecd |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 29.7.2011 Репутация: нет Всего: нет |
Загружаю текстуру при помощи ImageMagic++ как показано в этом туторе http://ogldev.atspace.co.uk/www/tutorial16/tutorial16.html
далее рендер сцены, почему то после загрузки текстуры сцена становится черной и при отрисовке "флагов" на фоне другой текстуры там где должно быть прозрачно там чернота
|
||||
|
|||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
Вообще, понять что-нибудь по некомпилирующемуся отрывку довольно сложно -- особенно учитывая, как важны в OpenGL всякие глобальные флаги. Но, как минимум:
В текстурах GL_RGB нет никакой прозрачности. |
|||
|
||||
| grecd |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 29.7.2011 Репутация: нет Всего: нет |
поменял на GL_RGBA все равно чернота вместо прозрачности Может мне проект линуксовый сюда скинуть? |
||||
|
|||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
Возможно. Или вырежьте из него минимальный пример, демонстрирующий непонимание. Это вообще будет полезнее -- можэт, выпока будете вырещать сами разберётесь. |
|||
|
||||
| grecd |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 29.7.2011 Репутация: нет Всего: нет |
Вот файл с проектом codeblocks.
Методика отслеживания глюка -> FIle->Open file - открыть видео файл, появится его первый кадр. Затем нажать флажок и щёлкнуть на картинке. Присоединённый файл ( Кол-во скачиваний: 1 )
copy1.zip 206,75 Kb |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
1) Собирать пока лень, потому не тэстировал. И не понимаю, что такое "сцэна чёрная". Можэт, вечером.
2) Из очевидного: такой вид прозрачности требует, чтобы примитивы выдавались в Z-буфер от далёких к близким. У Вас кажэтся ровно наоборот -- сначала близкий флаг, затем непрозрачная далёкая видеотекстура. Учитывая, что тут практически 2D -- просто попробуйте поменять местами. Если будет минимальное 3D -- то на пяти примитивах проще всего будет отсортировать их вручную. Если с сортровкой совсем сложно -- можно попробовать что-то такое http://www.openglsuperbible.com/2013/08/20...ally-necessary/ |
|||
|
||||
| grecd |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 29.7.2011 Репутация: нет Всего: нет |
||||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
А, тут ещё одна ошыбка и одна нестыковка, которых я с первого раза не заметил. (я пока не скомпилировал, потому так, из анализа). Во-первых, Вы пытаетесь всё сделать через двумерные координаты. Ну, в смысле, у Вас у всех примитивов Z-координата -- 0. Это, в общем, можно, но вот DEPTH_TEST при этом можэт быть применять немного муторно и странно в связи с тем, что Z-буфер вроде как рассчитан как раз на наличие вменяемой третьей координаты (глубины). В частности, вопрос о том, как реально расположатся друг относительно друга два прямоугольника в одной плоскости с учётом ошыбок округления при проецыровании -- он, во многих случаях, решаемый, но требует отдельной проработки. Так что если действительно зачем-то потребуется DEPTH_TEST -- то, возможно, надо будет отказаться от двумерности. Или заполнить глубины какими-то правильными значениями не из координат. Можэт, впрочем, для трёх прямоугольников с Idenitity transformation matrix ничего и не потребуется -- но и DEPTH_TEST тогда откровенно лишний, и только привносит тормозов и ошыбок. А ошыбка -- в том, что Вы нигде не вызываете prepare3DViewport. В примерах от wxWindows он вызывается вручную изнутри ::render. Соответственно, glDepthFunc у Вас остаётся GL_LESS, что означает, что из перекрывающихся частей двух примитивов в одной плоскости нарисуется только первый, второй по большэй части провалит DEPTH_TEST (насчёт меньшэй части -- см.про ошыбки округления). Соответственно, Вашу текстуру с альфой никто рисовать и не подумает. |
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |