Нарисуйте точки с разным размером точки - PullRequest
0 голосов
/ 29 октября 2019

Я должен что-то нарисовать, и мне нужно использовать две или более точек размера. Я не знаю, как его получить, у меня только один размер точки от моего вершинного шейдера.

<script id="myVertexShader" 
          type="x-shader/x-vertex">#version 300 es

      in  vec3 VertexPosition;
      in  vec4 VertexColor;

      out vec4 colorOut;

      uniform float pointSize;

      void main()  {

        colorOut    = VertexColor;
        gl_Position = vec4(VertexPosition, 1.0);
        gl_PointSize = 10.0;

      }

    </script>

1 Ответ

0 голосов
/ 29 октября 2019

Ответ: Вы устанавливаете gl_PointSize

Примеры:

Использование константы

 gl_PointSize = 20.0;

Использование униформы

 uniform float pointSize;
 gl_PointSize = pointSize;

Использование некоторыхпроизвольная формула

 // base the size on the red and blue colors
 gl_PointSize = abs(VertexColor.r * VertexColor.b) * 20.0;

Использование атрибута

 attrbute float VertexSize;
  ...
 gl_PointSize = VertexSize;

Любая комбинация из вышеперечисленного (например:

 attrbute float VertexSize;
 uniform float baseSize;

 // use a uniform, an atribute, some random formula, and a constant
 gl_PointSize = baseSize + VertexSize + abs(VertexColor.r * VertexColor.b) * 10.0;

PS: форум выше - чушь. Вы задаете gl_PointSize. То, как вы устанавливаете, зависит от вас.

Обратите внимание, что есть проблемы с gl.POINTS

  1. Реализации WebGL имеют максимальный размер точкиЭтот максимальный размер не требуется> 1,0. Поэтому, если вы хотите рисовать точки любого размера, вы не можете использовать gl.POINTS

  2. WebGL не гарантирует, будут ли большие точки, ктоцентр находится вне области просмотра, поэтому если вы хотите рисовать размеры больше 1,0 и хотите, чтобы они вели себя одинаково на устройствах, которые вы не можете использовать gl.POINTS

См. это

...