Урок 175. OpenGL. Текстуры.
Урок 175. OpenGL. Текстуры.
В этом уроке:
- используем текстуры
Click here to read this article!
- используем текстуры
Click here to read this article!
Последний раз редактировалось damager82 06 июн 2017, 23:11, всего редактировалось 5 раз.
Re: Урок 175. OpenGL. Текстуры.
"В varying переменную v_Texture приходят интерполированные координаты текстуры из вершинного шейдера."
А почему не vec2, а varying?
Это опечатка?
А почему не vec2, а varying?
Это опечатка?
Re: Урок 175. OpenGL. Текстуры.
нет не опечатка,Kate писал(а): А почему не vec2, а varying?
Это опечатка?
смотрите объявление
переменная объявлена как
varying vec2 v_Texture;
в данном контексте важнее, именно то что она varying - т.е. переменная которая передается из вершинного шейдера во фрагментный с интерполяцией значений.
-
- Сообщения: 42
- Зарегистрирован: 25 янв 2015, 18:57
Re: Урок 175. OpenGL. Текстуры.
Спасибо за отличный урок!
Re: Урок 175. OpenGL. Текстуры.
Народ, прошу прощения за оффтопик, но у меня вопрос, на который пока не нашел толкового ответа. Как сделать промо-ролик приложения, для гуглплея ? У меня игрушка на OpenGL. Поглядел как народ выставляется на гуглплее, почти у всех есть промо-ролики. Как это делается ? Что, каждый фрейм сохраняют экран на карточку, а потом монтируют ? Просветите на этот счет у кого есть такой опыт.
А так респект. Отличные уроки. Читал до этого книжку Харди и Филипса. Здесь по сравнению с книжкой значительно меньше воды и значительно больше внимания уделено не мишуре, а действительно серьёзным и значимым темам.
А так респект. Отличные уроки. Читал до этого книжку Харди и Филипса. Здесь по сравнению с книжкой значительно меньше воды и значительно больше внимания уделено не мишуре, а действительно серьёзным и значимым темам.
-
- Сообщения: 2
- Зарегистрирован: 16 мар 2016, 22:32
Re: Урок 175. OpenGL. Текстуры.
Приветствую!
Спасибо за уроки, познавательно.
Насколько сильно отличается OpenGL ES 1.0 (на котором написаны примеры) от OpenGL ES 2.0?
ES 1.0 достаточно старый API, было бы интересно посмотреть примеры на 2.0
Спасибо за уроки, познавательно.
Насколько сильно отличается OpenGL ES 1.0 (на котором написаны примеры) от OpenGL ES 2.0?
ES 1.0 достаточно старый API, было бы интересно посмотреть примеры на 2.0
Re: Урок 175. OpenGL. Текстуры.
Здесь Уроки по ES 2.0.sergant128 писал(а):Приветствую!
Спасибо за уроки, познавательно.
Насколько сильно отличается OpenGL ES 1.0 (на котором написаны примеры) от OpenGL ES 2.0?
ES 1.0 достаточно старый API, было бы интересно посмотреть примеры на 2.0
1.0 от 2.0 отличаются как небо и земля. В 1.0 не было шейдеров и все программы были зашиты в спецификацию openGL. Можно было просто передавать вершины, нормали и текстуры и делать с ними какие-то фиксированные действия.
С шедерами - полная свобода, трансформируй изменяй на лету как хочешь все массивы данных, можно сделать множество разных эффектов.
Re: Урок 175. OpenGL. Текстуры.
С OpenGL ES 1 не советую даже начинать. Эта библиотека во-первых устаревшая, сейчас Вы не найдете телефона, поддерживающего только её. Во-вторых, концептуально она гораздо сложнее OpenGL ES 2. Если в ES2 Вам необходимо изучить только шейдеры и их окружение (компиляцию, выбор, передачу через юниформы и атрибуты и т.п.), то ES1 это довольно бессистемное нагромождение разного рода инструментов, которые ещё нужно сообразить как применять. Если Вы хотите сделать что-то совсем простое, ES1 будет конечно проще. Но если хотите действительно интересный и качественный рендеринг с разного рода финтифлюшками, замучаетесь думать как это сделать. А ES2 предлагает для этого регулярный и рациональный путь - шейдеры. Единственно не увлекайтесь и помните, что особо извращенные шейдеры это тоже нагрузка на систему. Что сказывается и на фреймрейте и на времени жизни батарейки. Так что самое трудное в ES2 это умение находить компромиссы. Впрочем на более продвинутом уровне "цифрового секса" Вам тоже хватит. Использование множества текстур разного назначения, многопроходные рендеринги и т.п. Однако чтобы НАЧАТЬ и ПОНЯТЬ, усилий потребуется гораздо меньше, чем для ES1.sergant128 писал(а): Насколько сильно отличается OpenGL ES 1.0 (на котором написаны примеры) от OpenGL ES 2.0?
ES 1.0 достаточно старый API, было бы интересно посмотреть примеры на 2.0
Если хотите глянуть более продвинутые примеры ES2 на русском языке, сходите сюда http://andmonahov.blogspot.ru/2012/10/o ... -20-1.html
Вот еще очень интересный цикл статей, мужик пишет свою упрощенную модель OpenGL (с шейдерами) на С++ https://habrahabr.ru/post/248723/ Если что-то в OpenGL не понимаете, то там всё буквально разжевано и в рот положено. Причем в исходниках на С++. Очень рекомендую.
Re: Урок 175. OpenGL. Текстуры.
Там че-то совсем мало и скучно.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. Текстуры.
Там блог увы по-моему помер Блин, ну почему по OpenGL ES на русском ничего нет ! Хоть самому начинай что-то вести. Но как подумаю, что это потребует времени и усилий, желание пропадает. Когда дозрею до мысли сделать свой сайт (хотя он будет в основном не программистский) может и заведу там уголок, посвященный этому делу.Draz1w писал(а): Там че-то совсем мало и скучно.
Вот за книжки большое спасибо ! Я что-то в последнее время перестал следить за выходом новых книг. А книжки судя по аннотации и правда шикарные. Вы не в курсе, их можно где-нибудь взять в электронном виде, пусть даже и за деньги ? А то от бумажных книг я чего-то отвык в последнее время.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. Иначе велик риск пролёта мимо рынка. Ладно, надеюсь там и о совместимой технике будет что почитать.
-
- Сообщения: 1
- Зарегистрирован: 19 авг 2016, 14:45
Re: Урок 175. OpenGL. Текстуры.
Спасибо за прекрасные уроки!
Вопрос:
в методе private void bindData()
Класса OpenGLRenderer
есть строки
// помещаем текстуру в target 2D юнита 0
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture);
// юнит текстуры
glUniform1i(uTextureUnitLocation, 0);
Если их убрать, всё прекрасно работает.
Как это объяснить?
Может это связано с тем, что мы эти операции делаем в классе
TextureUtils, который вызываем ранее в
private void prepareData() ?
Вопрос:
в методе 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. Текстуры.
бл.., ах.еть, до чего изложено приятно просто пи..ец.
правда читать таким как я тупым по 10 раз приходится.
но когда получается такой прИход , прям по венам.
все получилось спасибо.
Чувааак ты прям мой кумир. (-_-)
правда читать таким как я тупым по 10 раз приходится.
но когда получается такой прИход , прям по венам.
все получилось спасибо.
Чувааак ты прям мой кумир. (-_-)
-
- Сообщения: 4
- Зарегистрирован: 13 мар 2014, 06:28
Re: Урок 175. OpenGL. Текстуры.
Спасибо за уроки!
А как загрузить несколько текстур в один шейдер? Концы урока сказано как посмотреть кол-во доступных юнитов, но как использовать эту информацию не понятно.
Попробовал в 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.
Судя по результату шейдер работает но не корректно, может нужно учесть что-то еще?
А как загрузить несколько текстур в один шейдер? Концы урока сказано как посмотреть кол-во доступных юнитов, но как использовать эту информацию не понятно.
Попробовал в 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. Текстуры.
Подскажите,
Проработал все уроки. Но столкнулся с 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-ва трех угольника. и мне очень надо узнать размер в пикселях, чему он равен ширина и высота.
Хочу создать текстуру под него, что бы текст не скейлился.
Проработал все уроки. Но столкнулся с 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-ва трех угольника. и мне очень надо узнать размер в пикселях, чему он равен ширина и высота.
Хочу создать текстуру под него, что бы текст не скейлился.