Я пытаюсь нарисовать мерцающие звезды на фоне моего приложения для живых обоев, чтобы придать ему «специю». Я подумал о двух способах этого. 1-й, сделайте анимированный gif в Photoshop, превратите его в фильм в студию Android и установите в качестве фона. Или 2-й, нарисуйте мерцающие звезды, используя OpenGL ES. Я бы предпочел второй способ, но как мне это сделать? Я думал, возможно, рисовать круг, а затем масштабировать его, чтобы быть очень маленьким, и дублировать его (сто раз) и переводить его по всему экрану, но это не кажется слишком эффективным. Может ли кто-нибудь сказать мне какие-либо способы сделать это?Как нарисовать звезды в OpenGL ES?
ответ
Вы можете увидеть это How to draw a star in iOS OpenGL ES 2.0.
Vertex Shader
В вершинном шейдере, вы превращаете вершину, как обычно, , а также установить встроенный gl_PointSize переменный:
uniform float PointSize; attribute vec4 Position;
void main() {
gl_Position = ...; // Transform Position attribute;
gl_PointSize = PointSize; }
Для Например, я использовал униформу для размера точки, а это означает, что все звезды будут иметь одинаковый размер.
В зависимости от желаемого эффекта вы также можете рассчитать размер на основе расстояния или использовать дополнительный атрибут вершины до , чтобы указать другой размер для каждой звезды.
Фрагмент Shader
В пиксельный шейдер, теперь вы можете получить доступ к встроенным gl_PointCoord переменной, чтобы получить относительные координаты фрагмента в пределах точки спрайта. Если ваш точечный спрайт является простым текстурным изображением, вы можете использовать его непосредственно в качестве координат текстуры.
uniform sampler2D SpriteTex;
void main() {
gl_FragColor = texture2D(SpriteTex, gl_PointCoord); }
Если у вас есть ответ, пожалуйста, закройте вопрос :) – UtopiaIsGood
Спасибо, но я использую OPENGLES 1.0, знаете ли вы, как я мог бы достичь этого результата с помощью OpenGlES 1? благодаря – Dashboarrd
Связанный: http://stackoverflow.com/questions/28254209/how-to-draw-a-star-in-ios-opengl-es-2-0. –