我正在尝试创建一个可缩放的容器,我的目标是API 14+
在我的onScale中(我使用ScaleGestureDetector来检测捏缩放)我正在做这样的事情:
public boolean onScale (ScaleGestureDetector detector) {
float scaleFactor = detector.getScaleFactor();
setScaleX(getScaleX() * scaleFactor);
setScaleY(getScaleY() * scaleFactor);
return true;
};
Run Code Online (Sandbox Code Playgroud)
它工作但缩放不顺畅.事实上,它明显闪烁.
我也尝试过硬件层认为一旦纹理上传就会在GPU上进行缩放,因此速度非常快.但它并没有什么区别 - 变焦不是很平滑,有时候也很奇怪.
我究竟做错了什么?
换句话说,如果要尝试使用GPGPU(CUDA,OpenCL)重新实现OpenGL或DirectX(或模拟),那么NVIDIA和AMD卡上的库存实现的位置和原因会更慢?
我可以看到如何使用GPGPU使顶点/片段/几何/ tesselation着色器变得漂亮和快速,但是生成要渲染的片段列表,剪切,纹理采样等等呢?
我纯粹是为了学术兴趣.
这个重复的动画代码会减慢我的系统吗?:
@-webkit-keyframes animate {-webkit-animation-iteration-count:infinite;...}
Run Code Online (Sandbox Code Playgroud)
所有CSS3属性都是CPU密集型的吗?
谢谢.
在我的自定义视图中,我使用Canvas.drawBitmap,其源位图比2048px宽.这当然会在启用硬件加速时引起问题,每次调用drawBitmap时,LogCat会喷出"W/OpenGLRenderer(4968):位图太大而无法上传到纹理".
所以为了解决这个问题,我试着调用setLayerType(View.LAYER_TYPE_SOFTWARE, null)我的观点.唯一的问题是它似乎没有帮助.当我尝试运行我的应用程序时,LogCat仍然会发出警告,并且最终都不会被绘制.
我不明白为什么会这样.Android网站上的这篇文章明确指出:
您可以使用以下代码在运行时禁用单个视图的硬件加速:
Run Code Online (Sandbox Code Playgroud)myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
有什么我做错了吗?为什么Android不尊重setLayerType调用?
[万一重要:我正在运行Android 3.2的三星Galaxy Tab 10.1上进行测试]
android hardware-acceleration android-custom-view android-4.0-ice-cream-sandwich
无论如何使用webkit中的CSS在不使用3D的情况下强制进行2D变换的硬件加速(例如translateZ(0))(根据在Mobile Safari中加速的2D变换硬件?).
我发现了position: fixed元素的问题,其中元素被设置为等价的东西position: absolute,因此没有相对于视口定位,而是最终相对于父容器定位(如本文中所述http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms /).
我正在选择硬件加速,因为iOS中的转换背景往往会闪烁白色,就像这个错误概述https://github.com/jquery/jquery-mobile/issues/2856一样.
我有IC76的HD7690M XT(超频版6770M)和Android模拟器(sdk工具rev.20)无法启动硬件OpenGL ES仿真,并出现以下错误消息:
模拟器:错误:无法加载OpenGLES仿真库:无法加载DLL!
模拟器:警告:无法使用软件渲染器初始化OpenglES仿真.
并且使用软件渲染器我的色彩分辨率非常差(请参阅附带的截图).我怀疑这是由于软件渲染器(模拟早期版本的Android没有这样的问题).有人可以运行硬件模拟看到这个问题吗?
什么图形卡可以运行硬件GPU仿真?(您可以通过执行查看详细的调试消息$ emulator -avd your_avd_name -verbose)
我希望我在Android 4.0中的动画很慢而且缺乏.所以我想启用硬件加速,并试图做这个页面所说的但没有运气.
你可以在这里看到我的清单:
<?xml version="1.0" encoding="UTF-8"?>
<manifest android:versionCode="1" android:versionName="1.0"
package="com.jws.battleship" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:hardwareAccelerated="true">
<activity
android:label="@string/app_name"
android:name=".HomeActivity"
android:hardwareAccelerated="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".UserPreferences"/>
<activity android:name=".BattleActivity" android:screenOrientation="landscape"/>
<activity android:name=".HighScoreActivity"/>
<activity android:name=".StoreActivity"/>
<activity android:name=".JoinBattle"/>
<activity android:name=".CreateBattleActivity"/>
<activity android:name=".FriendList"/>
<activity android:name=".FriendListActivity"/>
<activity android:name=".SelectNetworkActivity"/>
<activity android:name=".BluetoothDevicesListActivity"/>
<activity android:name=".NetworkFactoryActivity"/>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
然后我测试它是否在onCreate()中启用了硬件加速,如下所示:
ListView list = (ListView)findViewById(R.id.home_list_active_games);
Boolean test = list.isHardwareAccelerated();
Run Code Online (Sandbox Code Playgroud)
但它总是返回假!?我是否需要添加某种权限或此处有什么问题?
BR
我正在开发一个视频分析应用程序,我必须解码RTSP流以提供IplImage帧,然后将其输入我的分析管道.现在,OpenCV VideoCapture结构允许我从RTSP流中提取帧(我认为它使用ffmpeg这样做),但性能不是那么好.它需要实时工作.
我也继续编写了自己的ffmpeg解码器.但就像OpenCv一样,使用RTSP流的性能并不好.丢弃了很多帧.但是,从本地文件解码工作正常.我仍然在努力改进代码.
我需要帮助的是这个.首先,我可以在这里使用硬件加速解码来提高性能吗?我的应用程序应该是跨平台的,所以我可能需要使用Directx VA(windows)和VAAPI(linux).如果是的话,那么在那里我可以学习如何在代码中实现硬件加速,特别是对于ffmpeg解码H264?
我正在尝试使用Android MediaCodec API对NV12流进行硬件编码(avc).
当使用OMX.qcom.video.encoder.avc时,分辨率1280x720和640x480工作正常,而其他(即640x360,320x240,800x480)产生输出,其中色度分量似乎移位(请参阅 快照).
我通过将输入图像保存到jpeg文件来仔细检查输入图像是否正确.此问题仅发生在QualComm设备(即三星Galaxy S4)上.
任何人都有这个正常工作?还需要任何额外的设置/怪癖吗?
android video-encoding hardware-acceleration android-hardware mediacodec
我正在尝试做硬件h.264视频编码平台,我了解到"MediaCodec"似乎支持硬件视频解码,但它是否支持硬件视频编码?
谷歌的一些搜索结果建议我应该考虑根据用户的Android设备搜索不同芯片的不同解决方案,这是否意味着我应该去每个芯片提供商的网站搜索不同的解决方案?
谢谢你的建议
android ×5
css ×2
h.264 ×2
3d ×1
android-4.0-ice-cream-sandwich ×1
android-ui ×1
css3 ×1
decoder ×1
encode ×1
ffmpeg ×1
gpgpu ×1
mediacodec ×1
opencv ×1
opengl ×1
performance ×1
video ×1