С Новым годом! Форум программистов, компьютерный форум, киберфорум
SFML
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
11 / 11 / 10
Регистрация: 01.12.2014
Сообщений: 32
1

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

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

Author24 — интернет-сервис помощи студентам
В общем хочу сделать кнопку, которая бы отбрасывала тень, как на прикрепленной картинке (взял для примера обычную гугловскую кнопку из гугл драйва). На ней еле видно отбрасывание тени, придающее кнопке эффект объемности, приподнятости. Как сделать такое на 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2017, 02:24
Ответы с готовыми решениями:

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

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

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

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

1
11 / 11 / 10
Регистрация: 01.12.2014
Сообщений: 32
12.01.2017, 17:25  [ТС] 2
Переформулирую вопрос: как мне размыть объект sf::Image по Гауссу. И как мне его правильно заполнить, чтобы получалась размытая тень?
0
12.01.2017, 17:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2017, 17:25
Помогаю со студенческими работами здесь

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

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

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

Тень для картинок
Подскажите пожалуйста как можно сделать тень от картинок в галереи и на превьюшках(маленьких...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru