2015-07-06 4 views
0

Я пытаюсь нарисовать мерцающие звезды на фоне моего приложения для живых обоев, чтобы придать ему «специю». Я подумал о двух способах этого. 1-й, сделайте анимированный gif в Photoshop, превратите его в фильм в студию Android и установите в качестве фона. Или 2-й, нарисуйте мерцающие звезды, используя OpenGL ES. Я бы предпочел второй способ, но как мне это сделать? Я думал, возможно, рисовать круг, а затем масштабировать его, чтобы быть очень маленьким, и дублировать его (сто раз) и переводить его по всему экрану, но это не кажется слишком эффективным. Может ли кто-нибудь сказать мне какие-либо способы сделать это?Как нарисовать звезды в OpenGL ES?

+0

Связанный: http://stackoverflow.com/questions/28254209/how-to-draw-a-star-in-ios-opengl-es-2-0. –

ответ

1

Вы можете увидеть это 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); } 
+0

Если у вас есть ответ, пожалуйста, закройте вопрос :) – UtopiaIsGood

+0

Спасибо, но я использую OPENGLES 1.0, знаете ли вы, как я мог бы достичь этого результата с помощью OpenGlES 1? благодаря – Dashboarrd