如何在OpenGL ES中绘制星星?

时间:2015-07-06 19:53:32

标签: android animation opengl-es background live-wallpaper

我试图在我的动态壁纸应用程序的背景中绘制闪烁的星星,以给它一些" spice"。我想过有两种方法可以做到这一点。 1,在Photoshop中制作动画gif,将其转换为Android studio中的电影并将其设置为背景。或者说,使用OpenGL ES绘制闪烁的星星。我更喜欢第二种方式,但我该怎么做呢?我在考虑绘制一个圆圈,然后将其缩小到非常小并复制它(一百次)并将其全部翻译到整个屏幕上,但这看起来效率不高。谁能告诉我有什么方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以看到此How to draw a star in iOS OpenGL ES 2.0

  

顶点着色器

     

在顶点着色器中,您可以像往常一样变换顶点,   并设置内置的gl_PointSize变量:

 uniform float PointSize; attribute vec4 Position;

 void main() {
    gl_Position = ...;  // Transform Position attribute;
    gl_PointSize = PointSize; } 
  

对于这个例子,我使用了一个统一的点大小,这意味着所有的星星都有相同的大小。

     

根据所需效果,您还可以计算尺寸   基于距离,或使用额外的顶点属性   为每颗星指定不同的大小。

     

片段着色器

     

在片段着色器中,您现在可以访问内置的gl_PointCoord   变量来获取片段内的片段的相对坐标   点精灵。如果你的点精灵是一个简单的纹理图像,你可以   直接使用它作为纹理坐标。

uniform sampler2D SpriteTex;

 void main() {
     gl_FragColor = texture2D(SpriteTex, gl_PointCoord); }