LINUX.ORG.RU

Как рисовать в WebGL всякие анимационные плавные круги, волнистые линии и т.п.?

 


0

2

Шейдерами только?

Вот например андроид. Всё что мы видим на экране - это некий OpenGL. Ну то есть вся картинка выведена набором текстурированных или шейдернутых треугольников. Даже видос в приложении YouTube - это 2 треугольника, куда на 60fps фигачат новую текстуру.

Или я гоню и путь картинки в андроидах может быть каким-то иным, кроме как через треугольники?

А как например физически рисуется (на низком уровне, т.е. на уровне треугольников) какой-нибудь пульсирующий круг, какой-нибудь там волнистый эффект и прочая плавнота? Шейдерами что-ли?

Объясните пожалуйста для дебилов.

Чем удобнее, тем и рисуется. Круг можно нарисовать текстурой на кваде, шейдером на кваде, или просто треугольниками. Для чего-то сложнее вариантов будет меньше.

slovazap ★★★★★
()

Зачем тебе такие эффекты рисовать с помощью примитивов? Геометрических шейдеров в WebGL нет, да и не нужны они часто для такой задачи. Рисуй в фрагментном шейдере.

buddhist ★★★★★
()

Как рисовать в WebGL всякие анимационные плавные круги

<оффтоп>Анонiмус насторожился.</оффтоп>

Virtuos86 ★★★★★
()
Ответ на: комментарий от i-rinat

У тебя проблемы с логикой.

Треугольник можно отобразить линиями или точками, так же как прямоугольник треугольниками. Нет никаких проблем, если в конкретной реализации, к примеру GL_QUAD объявлен устаревшим в OpenGL Core 3.1+, он будет отображаться парой треугольников.

POSIX это интерфейс, который реализуется в конкретной система, то есть он треугольник (в нашем примере), а Linux — прямоугольник.

numas13
()
Ответ на: комментарий от numas13

Нет никаких проблем, если в конкретной реализации, к примеру GL_QUAD объявлен устаревшим в OpenGL Core 3.1+, он будет отображаться парой треугольников.

Ээм, нет. Если он объявлен устаревшим в 3.0, он работает, в 3.1 GL_QUAD не должен работать вообще. Ошибку там устанавливать, или игнорировать вызов.

Отображался он парой треугольников, сколько я помню. Просто драйвер внутри перегруппировывал вершины, чтобы превратить список или ленту квадов в список или ленту треугольников. Возможно, в железе, для которого придумывали IRIS GL была родная поддержка квадов, это не знаю. Но на PC я не помню, чтобы какая-то карта умела именно квады рисовать.

У тебя проблемы с логикой.

Проблема в приравнивании концепции квада к реализации концепции квада в виде двух треугольников. И аналогия «POSIX это Linux» тут очень хорошо подходит.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Ээм, нет. Если он объявлен устаревшим в 3.0, он работает, в 3.1 GL_QUAD не должен работать вообще. Ошибку там устанавливать, или игнорировать вызов.

Да, моя ошибка. В 3.0 объявлен устаревшим, а в 3.1 удалён.

Проблема в приравнивании концепции квада к реализации концепции квада в виде двух треугольников. И аналогия «POSIX это Linux» тут очень хорошо подходит.

Возможно, но не в тебе про компьютерную графику, где всё есть набор треугольников. Его спросили, что такое прямоугольник в сцене, он прямо ответил, два треугольника. Я его сразу понял, но не понял тех, кто не знает, что есть прямоугольник в комп. графике.

numas13
()
Ответ на: комментарий от numas13

Его спросили, что такое прямоугольник

Я знакомство с графикой начал с Direct3D 9, в котором нет квадов вообще. Если в тот момент мне сказали об отрисовке прямоугольника, вопросов бы не было. Там просто нельзя иначе, чем треугольниками делать.

Но потом я ещё ознакомился с OpenGL, в котором есть квады (GL_QUAD) наравне с треугольниками. С тех пор слово квад у меня ассоциируется именно с GL_QUAD, который вообще-то совсем не прямоугольник. И в общем виде даже не обязательно плоский.

Я его сразу понял

Судя по тому, что ты квады прямоугольниками называешь, твоё понимание тоже не очень с действительностью совпадает. :-)

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

И в общем виде даже не обязательно плоский.

Это как?

Судя по тому, что ты квады прямоугольниками называешь, твоё понимание тоже не очень с действительностью совпадает. :-)

Да, есть такое.

numas13
()
Ответ на: комментарий от numas13

Это как?

Берёшь три несовпадающие точки в трёхмерном пространстве. Через эти три точки всегда можно провести плоскость, поэтому любой треугольник всегда плоский. Теперь добавляешь четвёртую точку. Нет гарантий, что эта четвёртая точка будет лежать в плоскости, проведённой через первые три. Поэтому фигура, составленная из четырёх точек не обязана быть плоской.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Теперь добавляешь четвёртую точку. Нет гарантий, что эта четвёртая точка будет лежать в плоскости, проведённой через первые три. Поэтому фигура, составленная из четырёх точек не обязана быть плоской.

The four vertices are expected to be coplanar; failure to do so can lead to undefined results.

https://www.khronos.org/opengl/wiki/Primitive#Quads

numas13
()
Ответ на: комментарий от buddhist

Зачем тебе такие эффекты рисовать с помощью примитивов? Геометрических шейдеров в WebGL нет, да и не нужны они часто для такой задачи. Рисуй в фрагментном шейдере.

Почему с помощью примитивов? Я нигде не указываю, как я хочу эти эффекты рисовать.

Я спрашиваю как их рисуют обычно в вебгээлях и опенгээлях.

hlamotron
() автор топика
Ответ на: комментарий от hlamotron

О чём и речь. Непонятно что ты оспорил.

Да, но он преподносит это не как ошибку, а как фишку этих примитивов.

Поэтому фигура, составленная из четырёх точек не обязана быть плоской.

Я привёл цитату с вики, где сказано обратное.

numas13
()
Ответ на: комментарий от numas13

Я привёл цитату с вики, где сказано обратное.

Обязана. Иначе жопа. Иначе ундефинед резултс.

Потому только треугольники, тока хардкор.

hlamotron
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.