Форум программистов, компьютерный форум, киберфорум
Наши страницы
SFML
Войти
Регистрация
Восстановить пароль
 
Fantasma
10 / 10 / 10
Регистрация: 01.12.2014
Сообщений: 32
1

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

09.01.2017, 02:24. Просмотров 322. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

Размытая рамка картинки
Кто-нибудь знает, каким образом можно сверстать отображение аватарки в таком...

1
Fantasma
10 / 10 / 10
Регистрация: 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

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

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

Тень для блока
Я хотел сделать тень главного блока и столкнулся с проблемой. высота 100% но,...


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

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

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