Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
slagemer1
44 / 26 / 16
Регистрация: 01.01.2014
Сообщений: 163
1

Оптимизировать WebGL useProgram

05.04.2015, 17:30. Просмотров 282. Ответов 2
Метки нет (Все метки)

Я оптимизировал в WebGL уже все что мог, у меня динамические объекты, обновляются с помощью requestAnimationFrame, но когда наделал много текстурированных объектов - залагало. Решил чекнуть в профайле браузера и мне выдало, что метод useProgram потребляет 90% от всех функций. У меня для каждого объекта обрабатывается шейдер и используется данный метод. Можно ли как-то его "подкоротить"? Вот код:

Javascript
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
initShader: function ( object ){
 
    var gl = this.WebGL;
 
    var vertexShader = object.mesh.shaderVs;
    var fragmentShader = object.mesh.shaderFs;
 
    var shaderProgram = gl.createProgram();
 
    gl.attachShader(shaderProgram, vertexShader);
    gl.attachShader(shaderProgram, fragmentShader);
 
    gl.linkProgram(shaderProgram);
    
    /*if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
      console.warn( 'Error initialization shader' );
    }*/
    
    gl.useProgram(shaderProgram);
 
    shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition");
    gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute);
 
    if( object.mesh.colors ){
 
      shaderProgram.vertexColorAttribute = gl.getAttribLocation(shaderProgram, "aVertexColor");
      gl.enableVertexAttribArray(shaderProgram.vertexColorAttribute);
 
    }
 
    if( object.mesh.UV ){
 
      shaderProgram.vertexTextureAttribute = gl.getAttribLocation( shaderProgram, "aVertexTextureCoords" );
      gl.enableVertexAttribArray( shaderProgram.vertexTextureAttribute );
 
    }
 
    //MVMatrix, PMatrix
 
    shaderProgram.MVMatrix = gl.getUniformLocation(shaderProgram, "uMVMatrix");
    shaderProgram.ProjMatrix = gl.getUniformLocation(shaderProgram, "uPMatrix");
 
    gl.uniformMatrix4fv(shaderProgram.ProjMatrix, false, this.pMatrix);
    gl.uniformMatrix4fv(shaderProgram.MVMatrix, false, this.mvMatrix);
 
    object.shaderProgram = shaderProgram;
 
  }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2015, 17:30
Ответы с готовыми решениями:

WebGL
Подскажите, как можно пустить объект вдоль определенной линии, например землю вокруг солнца.

WEBGL и Blender
Подскажите пожалуйста, как из Blender'а экспортировать массив вершин и индексов, которые можно...

фрэймворк WebGL
В блоге Sencha 22 февраля был представлен новый фрэймворк под названием PhiloGL. Как утверждает...

Матрицы и webgl
Здравствуйте, уважаемые программисты! Помогите разобраться с матрицами( как их создавать,...

фотогалерея WebGL
Подскажите пожалуйста! Проблема такая: создаю фото галерею в WebGL в виде крутящегося куба, на...

2
mazahist
34 / 34 / 26
Регистрация: 27.05.2012
Сообщений: 204
07.04.2015, 19:09 2
slagemer1, а много- это сколько?

Добавлено через 6 минут
slagemer1, Еще было бы неплохо увидеть весь код
0
slagemer1
44 / 26 / 16
Регистрация: 01.01.2014
Сообщений: 163
11.04.2015, 21:21  [ТС] 3
Все решил. Присвоил объекту шейдер и сразу его инициализировал, дальше при обновлении фреймов не использую инитшейдер.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2015, 21:21

Мощная презентация WebGL
Разработчики Blend4Web одновременно с релизом опубликовали новую, крутую презентацию. Это...

Alpha blending в webgl
Здравствуйте, программисты. Есть проблема с прозрачностью объектов в webgl. код, который...

Создание UI для webgl приложения
Всем привет. Где можно найти информацию о создании ui интерфейса для webgl. Не могу понять, как его...


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

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

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