【Android App】Vulkan实现宇宙中旋转雷达动画效果(附源码和原始视频 超详细必看)

简介: 【Android App】Vulkan实现宇宙中旋转雷达动画效果(附源码和原始视频 超详细必看)

需要源码请点赞关注收藏后评论区留言私信~~~

一、Vulkan简介

Vulkan是一个跨平台的图形绘制接口,被称为下一代OpenGL,因为尽管OpenGL提供了丰富的图形API,但他在底层实现的C代码早已封装起来,由于开发者修改不了底层代码,因此不可避免地会遇到功能与性能上的瓶颈,Vulkan正是为了解决这些问题而开发地。它提供地图形API都是C方法,开发者可以运用JIN技术自行封装Vulkan方法,使得图形编程更佳灵活,高效,下图是有关图形编程标准地发展历程

更具体地说,Vulkan充分发挥了GPU与多核CPU的性能,效率和功能优势,它在下列几个方面改善颇多

(1)重写了底层的图形绘制代码,从而降低资源开销、优化程序性能;

(2)允许开启多个线程工作,例如构建命令缓冲区等等,进而加快了程序的运行效率;

(3)支持直接访问硬件,由此获得通过OpenGL无法访问的GPU硬件特性;

进行Vulkan开发要求具备以下几个条件:

(1)Android Studio版本为4.0或者更高版本;

(2)Android的系统版本至少为7.0(API 24);

(3)Android设备的硬件必须支持Vulkan;

(4)电脑上已经安装了最新的Python,也在系统的环境变量Path中设置了Python的安装目录;

二、Vulkan实战应用

先来绘制一个简单正方体

可见无论是外观还是背景都比OpenGL绘制的更佳美观

下面是星空中旋转雷达动画实战效果演示视频

旋转雷达动画

效果图如下 支持通过触屏全方位调节时间和转速 非常美观实用

代码如下

Java类

/*
 * Copyright (C) 2018 by Sascha Willems - www.saschawillems.de
 *
 * This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
 */
package com.example.threed;
import android.app.AlertDialog;
import android.app.NativeActivity;
import android.content.DialogInterface;
import android.content.pm.ApplicationInfo;
import android.os.Bundle;
import java.util.concurrent.Semaphore;
public class VulkanRadarActivity extends NativeActivity {
    static {
        System.loadLibrary("native-lib"); // 加载so库
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    // Use a semaphore to create a modal dialog
    private final Semaphore semaphore = new Semaphore(0, true);
    public void showAlert(final String message) {
        final VulkanRadarActivity activity = this;
        ApplicationInfo applicationInfo = activity.getApplicationInfo();
        final String applicationName = applicationInfo.nonLocalizedLabel.toString();
        this.runOnUiThread(() -> {
            AlertDialog.Builder builder = new AlertDialog.Builder(activity, android.R.style.Theme_Material_Dialog_Alert);
            builder.setTitle(applicationName);
            builder.setMessage(message);
            builder.setPositiveButton("Close", (dialog, id) -> semaphore.release());
            builder.setCancelable(false);
            AlertDialog dialog = builder.create();
            dialog.show();
        });
        try {
            semaphore.acquire();
        }
        catch (InterruptedException e) { }
    }
}

正方体类

package com.example.threed;
import android.app.NativeActivity;
import android.os.Bundle;
public class VulkanCubeActivity extends NativeActivity {
    static {
        System.loadLibrary("vulkan_sample"); // 加载so库
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
11天前
|
XML Java Android开发
Android实现自定义进度条(源码+解析)
Android实现自定义进度条(源码+解析)
|
11天前
|
Java Android开发
Android反编译查看源码
Android反编译查看源码
|
1月前
|
定位技术 API 数据库
基于Android的在线移动电子导航系统的研究与实现(论文+源码)_kaic
基于Android的在线移动电子导航系统的研究与实现(论文+源码)_kaic
|
1月前
|
搜索推荐 测试技术 定位技术
基于Android的自助导游系统的设计与实现(论文+源码)_kaic
基于Android的自助导游系统的设计与实现(论文+源码)_kaic
|
1月前
|
Java 关系型数据库 应用服务中间件
基于Android的人事管理系统设计与实现(论文+源码)_kaic
基于Android的人事管理系统设计与实现(论文+源码)_kaic
|
1月前
|
设计模式 测试技术 数据库
基于Android的食堂点餐APP的设计与实现(论文+源码)_kaic
基于Android的食堂点餐APP的设计与实现(论文+源码)_kaic
|
21天前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
66 3
|
22天前
|
Android开发 开发者 UED
个人开发 App 成功上架手机应用市场的关键步骤
个人开发 App 成功上架手机应用市场的关键步骤
|
22天前
|
开发工具 数据安全/隐私保护 Android开发
【教程】APP 开发后如何上架?
【教程】APP 开发后如何上架?
|
1月前
|
API
uni-app 146朋友圈列表api开发
uni-app 146朋友圈列表api开发
16 0