Форум программистов, компьютерный форум, киберфорум
JavaScript: HTML5 Canvas
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456

Почему нет окраса, сетка точек

29.12.2020, 15:58. Показов 833. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Так рисует
Название: ScreenShot01027.jpg
Просмотров: 49

Размер: 13.7 Кб
JavaScript
1
2
3
4
5
6
7
8
9
10
        var fragmentShaderSource =
            `void main()
            {             
                // float x = gl_FragCoord.x;
                // float r = 0.5+0.45*sin(0.02*x+1.0);
                // float g = 0.5+0.45*sin(0.02*x+2.0);
                // float b = 0.5+0.45*sin(0.02*x+3.0);
                // gl_FragColor = vec4(r, g, b, 1.0);
                gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
            }`;
А так нет
JavaScript
1
2
3
4
5
6
7
8
9
       var fragmentShaderSource =
            `void main()
            {             
                float x = gl_FragCoord.x;
                float r = 0.5+0.45*sin(0.02*x+1.0);
                float g = 0.5+0.45*sin(0.02*x+2.0);
                float b = 0.5+0.45*sin(0.02*x+3.0);
                gl_FragColor = vec4(r, g, b, 1.0);
                //gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);

PHP/HTML
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <title>array draw</title>
</head>
 
<body>
    <canvas id="renderCanvas" width="100" height="100" style="border: 1px solid 

#aaaafa"></canvas>
 
    <script>
        var vertexShaderSource =
            `attribute vec2 a_Position;
 
            void main()
            {
                gl_Position = vec4(a_Position, 0.0, 1.0);
                gl_PointSize = 4.0;
            }`;
 
        var fragmentShaderSource =
            `void main()
            {             
                float x = gl_FragCoord.x;
                float r = 0.5+0.45*sin(0.02*x+1.0);
                float g = 0.5+0.45*sin(0.02*x+2.0);
                float b = 0.5+0.45*sin(0.02*x+3.0);
                gl_FragColor = vec4(r, g, b, 1.0);
                //gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
            }`;
 
        function main()
        {
            var gl = document.getElementById("renderCanvas").getContext("webgl");
 
            var vShader = gl.createShader(gl.VERTEX_SHADER);
            gl.shaderSource(vShader, vertexShaderSource);
            gl.compileShader(vShader);
 
            var fShader = gl.createShader(gl.FRAGMENT_SHADER);
            gl.shaderSource(fShader, fragmentShaderSource);
            gl.compileShader(fShader);
 
            var program = gl.createProgram();
            gl.attachShader(program, vShader);
            gl.attachShader(program, fShader);
            gl.linkProgram(program);
            gl.useProgram(program);
 
            var a_Position = gl.getAttribLocation(program, "a_Position");
 
            var pointsNumX=10;
            var pointsNumY=10;
    
            var dx=1.8/pointsNumX;
            var dy=1.8/pointsNumY;
 
            for(var x1=-0.9;x1<0.9;x1+=dx)
            {
                for(var y1=-0.9;y1<0.9;y1+=dy)
                {
                    var x=x1; 
                    var y=y1; 
                    gl.vertexAttrib2f(a_Position, x, y);
                    gl.drawArrays(gl.POINTS, 0, 1);                
                }
            }
 
 
 
        }
        main();
    </script>
</body>
 
</html>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.12.2020, 15:58
Ответы с готовыми решениями:

Сетка из точек на мониторе
Что делатьть точки призапуске винды и точки возле ярлыков а при запуске игр ваше сетка из точек!!!!

Почему в chart появляется вторая сетка?
Почему появляется вторая сетка и за этого съезжают линии и сетка?

Определить радиус и центр наибольшей окружности в области заданных точек, внутри которой нет точек
Определить радиус и центр наибольшей окружности в области заданных точек, внутри которой нет точек Помогите пожалуйста,точки нужно задать...

1
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
29.12.2020, 16:38  [ТС]
почему так не работает?
JavaScript
1
2
3
4
5
6
7
8
9
10
        var fragmentShaderSource =
            `void main()
            {         
                //float x = gl_FragCoord.x;
                float r = 0.5+0.45*sin(0.02*a_Position.x+1.0);
                float g = 0.5+0.45*sin(0.02*a_Position.x+2.0);
                float b = 0.5+0.45*sin(0.02*a_Position.x+3.0);
                gl_FragColor = vec4(r, g, b, 1.0);
                //gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
            }`;
Добавлено через 16 минут
Поменял на юниформ.
JavaScript
1
2
3
4
5
            `//attribute vec2 a_Position;
            uniform vec2 u_Position;
 
            //var a_Position = gl.getAttribLocation(program, "a_Position");
            var a_Position = gl.getUniformLocation(program, "a_Position");
Написание большие маленькие правильное gl.getUniformLocation?
В инете по разному укзано.
Как получать отладку у меня GL 2.1. Как получать ошибки?

HTML5
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <title>array draw</title>
</head>
 
<body>
    <canvas id="renderCanvas" width="100" height="100" style="border: 1px solid 

#aaaafa"></canvas>
 
    <script>
        var vertexShaderSource =
            `//attribute vec2 a_Position;
            uniform vec2 u_Position;
 
 
            void main()
            {
                gl_Position = vec4(a_Position, 0.0, 1.0);
                gl_PointSize = 4.0;
            }`;
 
        var fragmentShaderSource =
            `void main()
            {         
                //float x = gl_FragCoord.x;
                float r = 0.5+0.45*sin(0.02*a_Position.x+1.0);
                float g = 0.5+0.45*sin(0.02*a_Position.x+2.0);
                float b = 0.5+0.45*sin(0.02*a_Position.x+3.0);
                gl_FragColor = vec4(r, g, b, 1.0);
                //gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
            }`;
 
        function main()
        {
            var gl = document.getElementById("renderCanvas").getContext("webgl");
 
            var vShader = gl.createShader(gl.VERTEX_SHADER);
            gl.shaderSource(vShader, vertexShaderSource);
            gl.compileShader(vShader);
 
            var fShader = gl.createShader(gl.FRAGMENT_SHADER);
            gl.shaderSource(fShader, fragmentShaderSource);
            gl.compileShader(fShader);
 
            var program = gl.createProgram();
            gl.attachShader(program, vShader);
            gl.attachShader(program, fShader);
            gl.linkProgram(program);
            gl.useProgram(program);
 
            //var a_Position = gl.getAttribLocation(program, "a_Position");
            var a_Position = gl.getUniformLocation(program, "a_Position");
 
            var pointsNumX=10;
            var pointsNumY=10;
    
            var dx=1.8/pointsNumX;
            var dy=1.8/pointsNumY;
 
            for(var x1=-0.9;x1<0.9;x1+=dx)
            {
                for(var y1=-0.9;y1<0.9;y1+=dy)
                {
                    var x=x1; 
                    var y=y1; 
                    gl.vertexAttrib2f(a_Position, x, y);
                    gl.drawArrays(gl.POINTS, 0, 1);                
                }
            }
 
 
 
        }
        main();
    </script>
</body>
 
</html>
Добавлено через 11 минут
Если у меня пару млн. точек и тяжелые для процессора формулы.
Как заполнить и рисовать вершины внутри шейдеров? В книгах заполняют массивы на JS вне шейдеров, мне неподходит. Юниформ будет принимать только настройки.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
      var vertexShaderSource =
            `attribute vec2 a_Position;
 
            void main()
            {
                gl_Position = vec4(a_Position, 0.0, 1.0);
                gl_PointSize = 4.0;
 
            float dx=1.8/10;
            float dy=1.8/10;
 
                for(float x1=-0.9;x1<0.9;x1+=dx)
                {
                    for(float y1=-0.9;y1<0.9;y1+=dy)
                    {
                        float x=x1; 
                        float y=y1; 
                        gl.vertexAttrib2f(a_Position, x, y);
                        gl.drawArrays(gl.POINTS, 0, 1);                
                    }
                } 
             
            }`;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.12.2020, 16:38
Помогаю со студенческими работами здесь

Определить радиус и центр наибольшей окружности в области заданных точек, внутри которой нет точек
Определить радиус и центр наибольшей окружности в области заданных точек, внутри которой нет точек задать точки через массив и оформить...

нет точек востановления
перестали создаваться точки встановления.подскажите как исправить пожалуйста.

Нет функционала для создания точек восстановления системы
Подскажите, пожалуйста, в чем проблема, нет интерфейса для создания точек восстановления и нет соответственно ни одной точки. Издержки...

Восстановление запуска (нет точек восстановления) после обновлений
Доброго времени суток всем. следующая проблема после обновлений такова. Выбрав &quot;Устранение неполадок компьютора&quot; в...

Почему массив точек задается в фигурных скобках
PointF point= new PointF { v, v, v, v }; Объясните, пожалуйста, мне что значит в фигурных скобках v.


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru