Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/55: Рейтинг темы: голосов - 55, средняя оценка - 4.64
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254

Сделать невидимой часть объекта(А) перед объектом(В), который заполняет буфер глубины, но сам прозрачен

14.06.2018, 15:22. Показов 10520. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Подскажите, пожалуйста, как сделать невидимой часть объекта(A) перед объектом(B), который частично перекрывает объект(A) и заполняет буфер глубины для отсечения геометрии, но сам прозрачен.

То есть получается, что объект(B) невидим, и за собой делает невидимой часть объекта(A), которая перекрыта объектом(B).

Надо что-то с этим сделать:
нужно указать в пассе следующее:
ZWrite On
ColorMask 0

и в тегах пасса:
"Queue" = "Geometry-1"
Но не получается.

Нужно еще сделать так, чтобы объект(В) влиял только на объект(A)(имеется ввиду на объекты, в которых определенный шейдер)

Как сделать 2 таких шейдера?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.06.2018, 15:22
Ответы с готовыми решениями:

Можно ли сделать так что при наведении мыши на часть слоя, который ниже активного - сам становился активным?
Ситуация такая у меня есть n кол-во слоев, причем некоторые (точнее их части) перекрывают другие... Можно ли сделать так что при...

Буфер кадра, буфер трафарета и буфер глубины
Здравствуйте, Я никак не могу найти информацию о том, что такое буфер кадра, буфер трафарета и буфер глубины. Что они из себя...

Как пользоваться методом Fill, который читает содержимое файла и заполняет соответствующее поле объекта?
Я искал и не нашел информацию о методе Fill. Можете привести пример, как им пользоваться?

18
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
14.06.2018, 16:35
Лучший ответ Сообщение было отмечено NovaEiz как решение

Решение

Цитата Сообщение от NovaEiz Посмотреть сообщение
То есть получается, что объект(B) невидим, и за собой делает невидимой часть объекта(A), которая перекрыта объектом(B).
Так что-ли?


Шейдер для объекта:
glSlang
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
35
36
Shader "HoleTarget" 
{
    Properties
    {
        _MainTex("Base (RGB)", 2D) = "white" {}
    }
 
    SubShader
    {
        Tags{ "RenderType" = "Opaque" }
 
        Stencil{
            Ref 1
            Comp NotEqual
            Pass keep
        }
 
        CGPROGRAM
        #pragma surface surf Lambert
        sampler2D _MainTex;
 
        struct Input 
        {
            float2 uv_MainTex;
        };
 
        void surf(Input IN, inout SurfaceOutput o) 
        {
            half4 c = tex2D(_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}
Шейдер для объекта-маски прозрачности:
glSlang
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
Shader "Hole"
{
        SubShader
        {
            Tags{ "RenderType" = "Transparent" }
 
            Stencil{
            Ref 1
            Comp always
            Pass replace
        }
 
        CGPROGRAM
        #pragma surface surf Lambert alpha
 
        struct Input 
        {
            float2 uv_MainTex;
        };
 
        void surf(Input IN, inout SurfaceOutput o) 
        {
            o.Albedo = fixed3(1, 1, 1);
            o.Alpha = 0;
        }
        ENDCG
    }
    FallBack "Diffuse"
}
Вложения
Тип файла: zip Demo14.zip (120.0 Кб, 77 просмотров)
2
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254
14.06.2018, 17:31  [ТС]
Storm23, спасибо Большое!

Добавлено через 3 минуты
Еще подскажи, пожалуйста.

Вот такой шейдер весит на плейне(Plane), такой же как у вас на картинке с цифрами.
glSlang
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Shader "Infinity Code/Online Maps/Tileset" 
{
    Properties 
    {
        _Color ("Main Color", Color) = (1,1,1,1)
        _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
        _OverlayBackTex("Overlay Back Texture", 2D) = "black" {}
        _OverlayBackAlpha("Overlay Back Alpha", Range(0, 1)) = 1
        _TrafficTex ("Traffic Texture", 2D) = "black" {}
        _OverlayFrontTex("Overlay Front Texture", 2D) = "black" {}
        _OverlayFrontAlpha("Overlay Front Alpha", Range(0, 1)) = 1
    }
 
    SubShader 
    {
        Tags {"Queue"="Transparent-100" "IgnoreProjector"="True" "RenderType"="Transparent"}
        LOD 200
 
        CGPROGRAM
        #pragma surface surf Lambert alpha
 
        sampler2D _MainTex;
        sampler2D _OverlayBackTex;
        half _OverlayBackAlpha;
        sampler2D _TrafficTex;
        sampler2D _OverlayFrontTex;
        half _OverlayFrontAlpha;
        fixed4 _Color;
 
        struct Input 
        {
            float2 uv_MainTex;
            float2 uv_OverlayBackTex;
            float2 uv_TrafficTex;
            float2 uv_OverlayFrontTex;
        };
 
        void surf (Input IN, inout SurfaceOutput o) 
        {
            fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
 
            fixed4 t = tex2D(_OverlayBackTex, IN.uv_OverlayBackTex);
            fixed3 ct = lerp(c.rgb, t.rgb, t.a * _OverlayBackAlpha);
 
            t = tex2D(_TrafficTex, IN.uv_TrafficTex); 
            ct = lerp(ct, t.rgb, t.a);
 
            t = tex2D(_OverlayFrontTex, IN.uv_OverlayFrontTex); 
            ct = lerp(ct, t.rgb, t.a * _OverlayFrontAlpha);
            
            ct = ct * _Color;
            o.Albedo = ct;
            o.Alpha = c.a * _Color.a;
        }
        ENDCG
    }
 
    Fallback "Transparent/VertexLit"
}
На кубе лежит текстура с альфа каналом, 50% черного. И т.к. в текстуре есть альфа канал, то куб не виден перед плейном. Т.е. если плейн лежит за кубом, то куб не отображается. А если часть куба выходит за границы плейна, то видно что он полупрозрачный.

Т.е. здесь проблема вот в этом шейдере. Как его исправить?
0
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254
14.06.2018, 17:33  [ТС]
Вот скрин во вкладке "Scene"
Миниатюры
Сделать невидимой часть объекта(А) перед объектом(В), который заполняет буфер глубины, но сам прозрачен  
0
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254
14.06.2018, 17:34  [ТС]
На скрине карта находится позади полупрозрачного плейна.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
14.06.2018, 18:03
Цитата Сообщение от NovaEiz Посмотреть сообщение
На кубе лежит текстура с альфа каналом, 50% черного. И т.к. в текстуре есть альфа канал, то куб не виден перед плейном. Т.е. если плейн лежит за кубом, то куб не отображается. А если часть куба выходит за границы плейна, то видно что он полупрозрачный.
У меня все нормально отображается:


Если проблема осталась - сделайте демосцену, положите туда только необходимые объекты, так что бы была видна проблема, и расшарьте проект.
1
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254
14.06.2018, 18:15  [ТС]
Storm23, я убрал эту строчку
C#
1
Tags {"Queue"="Transparent-100" "IgnoreProjector"="True" "RenderType"="Transparent"}
И работает как надо теперь.
0
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254
15.06.2018, 13:54  [ТС]
Storm23, помоги еще)
Возникла проблема с шейдером
glSlang
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
35
36
Shader "HoleTarget" 
{
    Properties
    {
        _MainTex("Base (RGB)", 2D) = "white" {}
    }
 
    SubShader
    {
        Tags{ "RenderType" = "Opaque" }
 
        Stencil{
            Ref 1
            Comp NotEqual
            Pass keep
        }
 
        CGPROGRAM
        #pragma surface surf Lambert
        sampler2D _MainTex;
 
        struct Input 
        {
            float2 uv_MainTex;
        };
 
        void surf(Input IN, inout SurfaceOutput o) 
        {
            half4 c = tex2D(_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}
Через него не работает Mask в UI.

Вот 2 скрина. На одном из них видно, как я включил сферу с этим шейдером и в нем маска не работает.

Подскажи, как исправить?)
Миниатюры
Сделать невидимой часть объекта(А) перед объектом(В), который заполняет буфер глубины, но сам прозрачен   Сделать невидимой часть объекта(А) перед объектом(В), который заполняет буфер глубины, но сам прозрачен  
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
15.06.2018, 14:38
NovaEiz, Я на ваших скринах ничего понять не могу.
Если есть проблемы - делайте тестовый проект и выкладывайте.
И кстати на каждую проблему нужно создавать новую тему.
1
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254
15.06.2018, 14:56  [ТС]
Storm23, решил. Так написал для обоих шейдеров.
C#
1
2
3
4
        Tags{ "RenderType"="Queue" "Queue"="Geometry+2"}
 
        Stencil{
            Ref 2
0
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254
15.07.2018, 17:04  [ТС]
Storm23, добрый вечер.
Подскажите еще, пожалуйста. Как сделать, чтобы был плавный переход из текстуры в полную прозрачность?
Сейчас это выглядит резко, как на изображении.
Хочется чтобы был плавный переход через градиент.
Можно так?
Миниатюры
Сделать невидимой часть объекта(А) перед объектом(В), который заполняет буфер глубины, но сам прозрачен  
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
15.07.2018, 19:03
Цитата Сообщение от NovaEiz Посмотреть сообщение
плавный переход из текстуры в полную прозрачность
Нужно считать расстояние до "края" и постепенно уменьшать alpha.
1
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254
15.07.2018, 19:15  [ТС]
Storm23, как это сделать подскажите, пожалуйста)
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
15.07.2018, 20:30
Цитата Сообщение от NovaEiz Посмотреть сообщение
как это сделать подскажите, пожалуйста)
Нужно уточнять - для какой формы объекта, как должна падать прозрачность и т.д. Нужно давать больше данных. Судя по вашему скриншоту у вас круглая карта. Для круглой области на плоском объекте можно сделать так:
Code
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Shader "Custom/Fade" {
    Properties {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
 
        _StartFade("Start Alpha Fade", Range(0,1)) = 0.9
    }
    SubShader {
        Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"}
 
        LOD 200
 
        CGPROGRAM
        #pragma surface surf Standard fullforwardshadows alpha:fade
        #pragma target 3.0
 
        sampler2D _MainTex;
 
        struct Input {
            float2 uv_MainTex;
        };
 
        half _Glossiness;
        half _Metallic;
        fixed4 _Color;
        float _StartFade;
 
        UNITY_INSTANCING_BUFFER_START(Props)
        UNITY_INSTANCING_BUFFER_END(Props)
 
        void surf (Input IN, inout SurfaceOutputStandard o) {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
            o.Albedo = c.rgb;
            o.Metallic = _Metallic;
            o.Smoothness = _Glossiness;
 
            //calc alpha fading (based on UV)
            //calc distance from center
            float2 r = length(IN.uv_MainTex - float2(0.5, 0.5)) * 2;
            float alpha = saturate(1 - (r - _StartFade) / (1 - _StartFade + 0.0001));
 
            o.Alpha = alpha;
        }
        ENDCG
    }
    FallBack "Diffuse"
}
Вложения
Тип файла: zip Test15.zip (266.9 Кб, 7 просмотров)
1
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254
15.07.2018, 20:44  [ТС]
Storm23, спасибо за пример.
Но мне нужно иначе. Я сделал демку.
Нужно чтобы прозрачное место, которое образует сфера, начиналось не так резко, а через плавный переход градиента.
Вложения
Тип файла: zip TestNovaEiz.zip (4.73 Мб, 3 просмотров)
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
15.07.2018, 21:54
NovaEiz,
Зачем вам вообще эта сфера? Если вам нужно просто вырезать круг в плоскости - это можно сделать просто шейдером.
Цитата Сообщение от NovaEiz Посмотреть сообщение
Нужно чтобы прозрачное место, которое образует сфера, начиналось не так резко, а через плавный переход градиента.
Ну так передавайте в шейдер координаты центра круга и необходимый радиус. А шейдер вырежет в плоскости необходимый круг, и сделает постепенный переход. Я пример дал, как доработать - додумайте сами.
1
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254
15.07.2018, 21:58  [ТС]
Storm23, мне нужно указывать радиус этого круга в метрах. В метры переводит скрипт, изменяя scale объекта(сфера). Я не знаю как это сделать шейдером. Вот и спрашиваю тут)
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
15.07.2018, 22:32
Лучший ответ Сообщение было отмечено NovaEiz как решение

Решение

NovaEiz,
Шейдер:
Code
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Shader "Custom/Fade" {
    Properties {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
 
        _StartFade("Start Alpha Fade", Range(0,1)) = 0.9
        _CenterX("Circle Center X", float) = 0.5
        _CenterY("Circle Center Y", float) = 0.5
        _Radius("Circle Radius", float) = 0.25
    }
    SubShader {
        Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"}
 
        LOD 200
 
        CGPROGRAM
        #pragma surface surf Standard fullforwardshadows alpha:fade
        #pragma target 3.0
 
        sampler2D _MainTex;
 
        struct Input {
            float2 uv_MainTex;
        };
 
        half _Glossiness;
        half _Metallic;
        fixed4 _Color;
        float _StartFade;
        float _CenterX;
        float _CenterY;
        float _Radius;
 
        UNITY_INSTANCING_BUFFER_START(Props)
        UNITY_INSTANCING_BUFFER_END(Props)
 
        void surf (Input IN, inout SurfaceOutputStandard o) {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
            o.Albedo = c.rgb;
            o.Metallic = _Metallic;
            o.Smoothness = _Glossiness;
 
            //clac alpha fading (based on UV)
            //calc distance from circle center
            float2 r = length(IN.uv_MainTex - float2(_CenterX, _CenterY)) / _Radius;
            float alpha = saturate(1 - (r - _StartFade) / (1 - _StartFade + 0.0001));
 
            o.Alpha = alpha;
        }
        ENDCG
    }
    FallBack "Diffuse"
}
Скрипт передающий в шейдер центр и радиус круга:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using UnityEngine;
 
public class ShowCircle : MonoBehaviour
{
    public Vector2 Center = new Vector2(0.5f, 0.5f);
    [Range(0, 1)]
    public float Radius = 0.25f;
    private Material mat;
 
    void Start()
    {
        mat = GetComponent<MeshRenderer>().material;
    }
 
    void Update()
    {
        mat.SetFloat("_CenterX", Center.x);
        mat.SetFloat("_CenterY", Center.y);
        mat.SetFloat("_Radius", Radius);
    }
}
Координаты и радиус задаются в относительных величинах, в интервале от 0 до 1. Координаты (0,0) - нижний левый угол карты, (1,1) - верхний левый.
Как пересчитать в ваши координаты - подумайте сами, я не знаю как у вас координаты заданы.

Вложения
Тип файла: zip Test15 (2).zip (304.2 Кб, 7 просмотров)
1
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254
15.07.2018, 23:26  [ТС]
Storm23, вы помогли. Спасибо!)

Добавлено через 2 минуты
Storm23, хотя можете еще помочь)
Как в этом шейдере убрать текстуру? Добавил её чтобы цвет получить. Потому что там uv_MainTex. В общем муть)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Shader "Radius"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
 
        _StartFade("Start Alpha Fade", Range(0,1)) = 0.9
        _Radius("Radius", Range(0,1)) = 0.9
    }
    SubShader
    {
        Tags{ "RenderType"="Queue" "Queue"="Geometry+1"}
 
        Stencil{
            Ref 2
            Comp always
            Pass replace
        }
 
        CGPROGRAM
        #pragma surface surf Lambert alpha
 
        sampler2D _MainTex;
         
        struct Input 
        {
            float2 uv_MainTex;
        };
 
        float _StartFade;
        float _Radius;
        fixed4 _Color;
 
 
        void surf(Input IN, inout SurfaceOutput o) 
        {
            //o.Albedo = _Color;
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
            o.Albedo = c.rgb;
 
            float2 r = _Radius / length(IN.uv_MainTex - float2(0.5, 0.5));
            float alpha = saturate(1 - (r - _StartFade) / (1 - _StartFade + 0.0001));
            o.Alpha = alpha * c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.07.2018, 23:26
Помогаю со студенческими работами здесь

Буфер глубины (Qt)
почему glEnable(GL_DEPTH_TEST) работает только с выпуклыми фигурами?

Qt Буфер глубины
Всем здрасьте. У меня какие то необъяснимые проблемы с буфером глубины. А может и не с ним.. В общем артефчит по хардкору. То...

Буфер глубины
Доброго времени суток приведу два исходника Первый без Z-буфера работает второй с ним,но не работает среда Microsoft Visual Studio...

Буфер глубины
Не могу включить буфер глубины на x10. На x9 все просто: pDevice-&gt;SetRenderState (D3DRS_ZENABLE, D3DZB_TRUE). Только понял, что как-то...

Буфер глубины
Почему то не работает скрытие задних граней и т.д.Нарисовал пирамиду с помощью двух вееров треугольника.А задние стороны не удаляются и...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru