Страница 1 из 1

Урок 175. OpenGL. Текстуры.

Добавлено: 01 мар 2016, 06:00
damager82
В этом уроке:
- используем текстуры


Click here to read this article!

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 04 мар 2016, 18:59
Kate
"В varying переменную v_Texture приходят интерполированные координаты текстуры из вершинного шейдера."

А почему не vec2, а varying?
Это опечатка?

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 07 мар 2016, 20:00
Draz1w
Kate писал(а): А почему не vec2, а varying?
Это опечатка?
нет не опечатка,
смотрите объявление
переменная объявлена как
varying vec2 v_Texture;

в данном контексте важнее, именно то что она varying - т.е. переменная которая передается из вершинного шейдера во фрагментный с интерполяцией значений.

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 08 мар 2016, 22:16
danek130995
Спасибо за отличный урок!

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 11 мар 2016, 12:57
eugenk
Народ, прошу прощения за оффтопик, но у меня вопрос, на который пока не нашел толкового ответа. Как сделать промо-ролик приложения, для гуглплея ? У меня игрушка на OpenGL. Поглядел как народ выставляется на гуглплее, почти у всех есть промо-ролики. Как это делается ? Что, каждый фрейм сохраняют экран на карточку, а потом монтируют ? Просветите на этот счет у кого есть такой опыт.

А так респект. Отличные уроки. Читал до этого книжку Харди и Филипса. Здесь по сравнению с книжкой значительно меньше воды и значительно больше внимания уделено не мишуре, а действительно серьёзным и значимым темам.

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 16 мар 2016, 22:36
sergant128
Приветствую!
Спасибо за уроки, познавательно.
Насколько сильно отличается OpenGL ES 1.0 (на котором написаны примеры) от OpenGL ES 2.0?
ES 1.0 достаточно старый API, было бы интересно посмотреть примеры на 2.0

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 18 мар 2016, 21:55
Draz1w
sergant128 писал(а):Приветствую!
Спасибо за уроки, познавательно.
Насколько сильно отличается OpenGL ES 1.0 (на котором написаны примеры) от OpenGL ES 2.0?
ES 1.0 достаточно старый API, было бы интересно посмотреть примеры на 2.0
Здесь Уроки по ES 2.0.
1.0 от 2.0 отличаются как небо и земля. В 1.0 не было шейдеров и все программы были зашиты в спецификацию openGL. Можно было просто передавать вершины, нормали и текстуры и делать с ними какие-то фиксированные действия.
С шедерами - полная свобода, трансформируй изменяй на лету как хочешь все массивы данных, можно сделать множество разных эффектов.

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 19 мар 2016, 04:54
eugenk
sergant128 писал(а): Насколько сильно отличается OpenGL ES 1.0 (на котором написаны примеры) от OpenGL ES 2.0?
ES 1.0 достаточно старый API, было бы интересно посмотреть примеры на 2.0
С OpenGL ES 1 не советую даже начинать. Эта библиотека во-первых устаревшая, сейчас Вы не найдете телефона, поддерживающего только её. Во-вторых, концептуально она гораздо сложнее OpenGL ES 2. Если в ES2 Вам необходимо изучить только шейдеры и их окружение (компиляцию, выбор, передачу через юниформы и атрибуты и т.п.), то ES1 это довольно бессистемное нагромождение разного рода инструментов, которые ещё нужно сообразить как применять. Если Вы хотите сделать что-то совсем простое, ES1 будет конечно проще. Но если хотите действительно интересный и качественный рендеринг с разного рода финтифлюшками, замучаетесь думать как это сделать. А ES2 предлагает для этого регулярный и рациональный путь - шейдеры. Единственно не увлекайтесь и помните, что особо извращенные шейдеры это тоже нагрузка на систему. Что сказывается и на фреймрейте и на времени жизни батарейки. Так что самое трудное в ES2 это умение находить компромиссы. Впрочем на более продвинутом уровне "цифрового секса" Вам тоже хватит. Использование множества текстур разного назначения, многопроходные рендеринги и т.п. Однако чтобы НАЧАТЬ и ПОНЯТЬ, усилий потребуется гораздо меньше, чем для ES1.

Если хотите глянуть более продвинутые примеры ES2 на русском языке, сходите сюда http://andmonahov.blogspot.ru/2012/10/o ... -20-1.html
Вот еще очень интересный цикл статей, мужик пишет свою упрощенную модель OpenGL (с шейдерами) на С++ https://habrahabr.ru/post/248723/ Если что-то в OpenGL не понимаете, то там всё буквально разжевано и в рот положено. Причем в исходниках на С++. Очень рекомендую.

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 22 мар 2016, 10:24
Draz1w
eugenk писал(а):
sergant128 писал(а): Если хотите глянуть более продвинутые примеры ES2 на русском языке, сходите сюда http://andmonahov.blogspot.ru/2012/10/o ... -20-1.html
Там че-то совсем мало и скучно.
Вот если именно на русском и про openGL то есть 2 классные книги.
OpenGL ES 3.0. Руководство разработчика. - тут вообще все что касается стандарта, все команды, подробно разжевано какие-там переменные что делают + шейдеры normalMapping, Enverovement, и в таком духе с примерами.
http://www.ozon.ru/context/detail/id/32658792/
И вторая
OpenGL 4. Язык шейдеров. Книга рецептов.
http://www.ozon.ru/context/detail/id/31377043/
Там собственно по шейдерам, все подробно разобрано. Модели освещения, карты теней, зеркала и прочее.

Вот их прям рекомендую обе... а уроков пока качественных на русском по openGL нет.
Разве что ветка на 4pda. Но там тоже... полезной информации много, но стиль изложения средний.
http://4pda.ru/forum/index.php?showtopic=418429

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 23 мар 2016, 14:28
eugenk
Draz1w писал(а): Там че-то совсем мало и скучно.
Там блог увы по-моему помер :( Блин, ну почему по OpenGL ES на русском ничего нет ! Хоть самому начинай что-то вести. Но как подумаю, что это потребует времени и усилий, желание пропадает. Когда дозрею до мысли сделать свой сайт (хотя он будет в основном не программистский) может и заведу там уголок, посвященный этому делу.
Draz1w писал(а): Вот если именно на русском и про openGL то есть 2 классные книги.
OpenGL ES 3.0. Руководство разработчика. - тут вообще все что касается стандарта, все команды, подробно разжевано какие-там переменные что делают + шейдеры normalMapping, Enverovement, и в таком духе с примерами.
http://www.ozon.ru/context/detail/id/32658792/
И вторая
OpenGL 4. Язык шейдеров. Книга рецептов.
http://www.ozon.ru/context/detail/id/31377043/
Там собственно по шейдерам, все подробно разобрано. Модели освещения, карты теней, зеркала и прочее.
Вот за книжки большое спасибо ! Я что-то в последнее время перестал следить за выходом новых книг. А книжки судя по аннотации и правда шикарные. Вы не в курсе, их можно где-нибудь взять в электронном виде, пусть даже и за деньги ? А то от бумажных книг я чего-то отвык в последнее время.

P.S. Нашел "OpenGL 4. Язык шейдеров. Книга рецептов" на английском на рутрекере. Но там 2013-й год. Не подскажете, оригинал русского издания за какой год ? А то хотелось бы иметь посвежее.

P.P.S. Смотрю по оглавлению, книжка посовременней, чем доступно нам на андроиде. Там например про шейдер тесселяции, доступный только в ES 3.1. Да, сейчас такие аппараты появились, но я пока в своих проектах закладываюсь только на 2.0. Иначе велик риск пролёта мимо рынка. Ладно, надеюсь там и о совместимой технике будет что почитать.

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 23 авг 2016, 08:18
AlwaysDream
Спасибо за прекрасные уроки!
Вопрос:
в методе private void bindData()
Класса OpenGLRenderer
есть строки
// помещаем текстуру в target 2D юнита 0
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture);

// юнит текстуры
glUniform1i(uTextureUnitLocation, 0);
Если их убрать, всё прекрасно работает.
Как это объяснить?

Может это связано с тем, что мы эти операции делаем в классе
TextureUtils, который вызываем ранее в
private void prepareData() ?

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 19 фев 2017, 18:08
chego
бл.., ах.еть, до чего изложено приятно просто пи..ец.
правда читать таким как я тупым по 10 раз приходится.
но когда получается такой прИход , прям по венам.
все получилось спасибо.
Чувааак ты прям мой кумир. (-_-)

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 27 мар 2017, 03:47
walterwest
Спасибо за уроки!

А как загрузить несколько текстур в один шейдер? Концы урока сказано как посмотреть кол-во доступных юнитов, но как использовать эту информацию не понятно.

Попробовал в TextureUtils выбирать разные активные юниты:
if (tex == 0){
glActiveTexture(GL_TEXTURE0);
}
else {
glActiveTexture(GL_TEXTURE1);
}

И в OpenGLRender, в метод bind:

// помещаем текстуру в target 2D юнита 0
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture1);
glUniform1i(uTextureUnitLocation, 0);

// помещаем текстуру в target 2D юнита 1
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture2);
glUniform1i(uTextureUnitLocation2, 1);

ну и создал uTextureUnitLocation2 и texture2.

Судя по результату шейдер работает но не корректно, может нужно учесть что-то еще?

Re: Урок 175. OpenGL. Текстуры.

Добавлено: 10 апр 2017, 17:08
SevenXP
Подскажите,
Проработал все уроки. Но столкнулся с 1-ной проблемкой.
У меня есть 2-матрицы. Камера(mViewMatrix), Проекция (frustumM mProjectionMatrix)
Matrix.multiplyMM(mMatrix, 0, mProjectionMatrix, 0, mViewMatrix, 0);
glUniformMatrix4fv(uMatrixLocation, 1, false, mMatrix, 0);

К примеру у меня есть линия
-1,0,-2
1,0,-2
Как узнать, какая у нее длина в пикселях.
У меня есть 2-ва трех угольника. и мне очень надо узнать размер в пикселях, чему он равен ширина и высота.
Хочу создать текстуру под него, что бы текст не скейлился.