Форум программистов, компьютерный форум, киберфорум
Наши страницы

SFML

Войти
Регистрация
Восстановить пароль
 
Fantasma
10 / 10 / 7
Регистрация: 01.12.2014
Сообщений: 32
#1

Размытая тень для RectangleShape - SFML

09.01.2017, 02:24. Просмотров 254. Ответов 1
Метки нет (Все метки)

В общем хочу сделать кнопку, которая бы отбрасывала тень, как на прикрепленной картинке (взял для примера обычную гугловскую кнопку из гугл драйва). На ней еле видно отбрасывание тени, придающее кнопке эффект объемности, приподнятости. Как сделать такое на SFML?
Попробовал с этим шейдером прорисовать тень, но в итоге получается то же, что и без шейдера.
Вот мой кусок кода (где:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    sf::Sprite sprite;
    sf::Texture texture;
    sf::Image img;
    img.create(250, 125);
 
    texture.loadFromImage(img);
    sprite.setTexture(texture);
    sprite.setPosition(10, 10);
 
    sf::Shader blurShader;
    blurShader.loadFromMemory(BLUR_SHADER, sf::Shader::Fragment);
    blurShader.setUniform("blur_radius", 5.f);
    blurShader.setUniform("texture", texture);
 
    sf::RenderStates blurStates;
    blurStates.shader = &blurShader;
 
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
 
        
 
        window.clear(sf::Color::White);
 
        window.draw(sprite, blurStates);
 
        window.display();
    }
константа BLUR_SHADER
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const std::string BLUR_SHADER = \
"uniform sampler2D texture;" \
"uniform float blur_radius;" \
"void main()" \
"{" \
"vec2 offx = vec2(blur_radius, 0.0);" \
"vec2 offy = vec2(0.0, blur_radius);" \
"vec4 pixel = texture2D(texture, gl_TexCoord[0].xy)               * 4.0 + " \
"texture2D(texture, gl_TexCoord[0].xy - offx)        * 2.0 + " \
"texture2D(texture, gl_TexCoord[0].xy + offx)        * 2.0 + " \
"texture2D(texture, gl_TexCoord[0].xy - offy)        * 2.0 + " \
"texture2D(texture, gl_TexCoord[0].xy + offy)        * 2.0 + " \
"texture2D(texture, gl_TexCoord[0].xy - offx - offy) * 1.0 + " \
"texture2D(texture, gl_TexCoord[0].xy - offx + offy) * 1.0 + " \
"texture2D(texture, gl_TexCoord[0].xy + offx - offy) * 1.0 + " \
"texture2D(texture, gl_TexCoord[0].xy + offx + offy) * 1.0; " \
"gl_FragColor = gl_Color * (pixel / 16.0);"
"}";
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2017, 02:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Размытая тень для RectangleShape (SFML):

SFML ошибка с RectangleShape - SFML
Не понимаю что означает эта ошибка и как ее исправить. Помогите пожалуйста.

C++ / SFML контур текста и тень - SFML
Приветствую. Столкнулся с такой проблемой - не знаю как сделать текст с контуром. Использую SFML Text. Пробовал менять размер и выводить...

Тень-граница правой стороны строки таблицы. Не могу убрать эту тень. - HTML, CSS
Всем доброго времени суток. Сделал сайт, после чего добавил его англоязычный вариант. В верхней части страницы, справа, я добавляю...

Решение ребуса ТЕНЬ + ТЕНЬ = МРАК - Turbo Pascal
Помогите решить ребус: ТЕНЬ + ТЕНЬ = МРАК

Размытая рамка картинки - HTML, CSS
Кто-нибудь знает, каким образом можно сверстать отображение аватарки в таком виде? Фото юзера в круге с тенью понятно, как делается, но как...

Размытая картинка на мониторе - Мониторы
Купил новый VGA кабель (старий уже не вернуть) после подключения картинка стала размытая. Может ли помочь смена кабеля на DVI? И что...

1
Fantasma
10 / 10 / 7
Регистрация: 01.12.2014
Сообщений: 32
12.01.2017, 17:25  [ТС] #2
Переформулирую вопрос: как мне размыть объект sf::Image по Гауссу. И как мне его правильно заполнить, чтобы получалась размытая тень?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2017, 17:25
Привет! Вот еще темы с ответами:

Размытая Иконка на панели задач - Delphi
Здравствуйте, подскажите что мне нужно сделать, чтоб иконка в панели задач, не была такая размытая... С этой же иконкой, компилировал...

Тень для текста - HTML, CSS
Есть ли возможность добавить тень вокруг текста методами css?

Тень для блока - HTML, CSS
Здравствуйте! Помогите пожалуйста советом как реализовать тень между блоками как на картинке

Тень для картинок - HTML, CSS
Подскажите пожалуйста как можно сделать тень от картинок в галереи и на превьюшках(маленьких картинках, при нажатии появляется большая)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru