小编Wil*_*Kru的帖子

如何将位图着色为纯色

如何将Bitmap着色为纯色,有效地将alpha> 0的所有像素替换为给定的RGB值?另外如何做同样的事情,但保持每个像素的alpha?我不是在寻找每像素操作,因为它们往往很慢.

我尝试使用ColorMatrixColorFilter和ColorFilter,它们对Bitmap进行着色,但它们着色而不是执行100%色调.

android tint colors

18
推荐指数
2
解决办法
2万
查看次数

Opengl透视失真

我有这个奇怪的问题,我希望有人可以为我清除这一点,这样我就可以理解错误并采取相应的行动.在OpenGL(固定功能)中,我在正交投影中渲染具有内面的管.

下图显示了结果.它由4个顶点环组成,这些顶点使用左侧所示的索引模式形成三角形.为方便起见,我在管上编号顶点.右边是使用的纹理:

在此输入图像描述

正如您所看到的,纹理严重扭曲.当我最初创建仅有2个顶点环的管时,我认为提高环的数量可以解决失真但没有快乐.glHint似乎也没有影响这个特定的问题.

纹理坐标似乎没问题.此外,检查器模式似乎正确呈现,但我想失真在那个非常特定的模式中是不可见的.

请忽略交叉线,因为其中一条是不存在的边缘; 我通过GL_LINE_LOOP渲染了线框.

opengl textures distortion perspective

10
推荐指数
1
解决办法
1289
查看次数

在OpenGL和细分中滚动/缩放场景

我们将在Android上的OpenGL ES中开发一个滚动/缩放场景,非常像"愤怒的小鸟"中的一个级别,但更像是World Of Goo中的级别.更像后者,因为世界不会包含"愤怒的小鸟"中的重复图层,而是一个大图像.由于场景需要滚动/缩放,因此很多内容都不可见,我想知道实现渲染的最有效方法,只关注环境(即不是世界范围内的对象而是背景层).

我们将使用正交投影.

首先想到的是创建一个世界大小的大4个顶点矩形,其背景纹理映射到它,并使用glTranslatef/glScalef进行平移/缩放.但是,我想知道屏幕边界之外的非可见区域是否仍然由OpenGL渲染,因为它没有被剔除(你将丢失可见区域以及只有4个顶点).因此,细分这个矩形是否更有效,所以可以剔除不可见的较小的矩形?

另一种选择是创建一个填充屏幕的4顶点矩形,然后通过调整其纹理坐标来移动背景.但是,考虑到纹理大小的限制,我想在构建更大的世界时会遇到问题.对于像AngryBirds这样的重复背景来说,这似乎是一个很好的实现.

也许有另一种方式..?

如果有人知道如何在AngryBirds/World of Goo中完成它,请分享我喜欢听的内容.他们似乎已经实现了一个系统,可以让世界平稳地移动和缩放(WorldOfGoo =非常).

android scroll opengl-es zooming

9
推荐指数
1
解决办法
1431
查看次数

SurfaceTexture.OnFrameAvailableListener停止被调用

我在我的应用程序中实现了SurfaceTexture.OnFrameAvailableListener接口,因此我可以将视频帧用作OpenGL纹理.所有设置都应该设置它并且它完美地工作但是onFrameAvailable(SurfaceTexture surfaceTexture)在几秒钟后停止被调用,有效且看似冻结了OpenGL中的视频,因为没有通过SurfaceTexture.updateTextImage上传新的纹理数据.

我在onFrameAvailable中设置一个标志来从GL线程执行updateTextImage调用,并且仅在需要时.目前我在每次绘制调用时都将标志设置为true,因此在跳过onFrameAvailable检查时,每帧都会上传视频纹理数据.像这样,一切都像它应该运行但似乎效率低,因为如果它仍然是相同的(电影帧),则不需要上传新的纹理数据.

AFAIK没有内存泄漏,logcat没有显示任何错误.此外,媒体播放器设置为循环,但问题发生在单个运行完成之前.

什么会导致onFrameAvailable在几秒钟后不再被调用?

android opengl-es

6
推荐指数
2
解决办法
5319
查看次数

使用OpenGL ES在任何分辨率上的视口边界

我很难理解OpenGL透视图.我已经阅读了大量的信息,但它并没有帮助我尝试实现我所追求的目标.这确保我的3D场景充满了每个Android设备上的整个屏幕.

为了测试这个,我将在3d空间中绘制一个四边形,最后应该触及每个角落,填满整个设备的屏幕.然后我可以使用这个四边形,或者实际上它的坐标指定一个Z距离的边界框,我可以使用它来放置几何体并确保它们填满我的屏幕.当屏幕调整大小,或者我要在另一个屏幕分辨率上运行它时,我会重新计算此边界框和几何体.我不是在谈论静态几何,但是比如说我想用球填充屏幕,无论有多大或多少球都没关系,唯一重要的是屏幕被填满而且没有多余的可见平截头体外的球.

在此输入图像描述

  • 据我所知,在指定视口时,您实际上将像素值绑定到视锥体的边界.我知道您实际上可以设置一个正交视图,其窗口像素与三维几何位置相匹配,但我不确定它在透视视图中是如何工作的.
  • 这里我假设视口宽度和高度要映射到nearZ.所以当球在Z = 1f时,它具有原始尺寸
  • 当将球移动到屏幕中以便进入farZ方向时,球将按比例缩小以使透视工作.因此,例如Z = 51f的球在我的屏幕上显得更小,我需要更多的球来填满整个屏幕.
  • 现在为了做到这一点,我正在寻找紫色的边界
  • 实际上我需要这些边界以不同的平截头体尺寸(宽度x高度)填充整个屏幕,而球的平截头体角度和Z距离总是相同的
  • 我想我可以用trig来计算这些紫色边界(见蓝色三角形注释)
  • 我正确地标记了截锥体角度,它是截锥体的垂直角度吗?
  • 有人可以详细说明绿色的1f和-1f值,因为我似乎已经读过它了吗?看起来像是一些用于调整平截头体内几何体大小的标量?

我实际上希望能够在任何分辨率/窗口的任何Android设备的3d空间内针对视口边界进行programmaticaly定位几何.

注意:我有一个闪光背景,它使用一个具有任何分辨率的已知宽度x高度的舞台(视觉区域),这使得使用绝对测量或百分比测量很容易定位/缩放资产.我想我正在试图弄清楚这个系统如何应用于OpenGL的透视图.

android opengl-es perspective

5
推荐指数
1
解决办法
2005
查看次数

在Docker容器中关闭MongoDB会导致100%的CPU

我现在已经把头发拉了过头几天,直到我放弃这里.使用docker-compose我启动一些容器,其中一个运行mongodb,使用CMD ["/ usr/bin/mongod"]但是,当我使用docker stop关闭容器时,mongod进程占用100%cpu并保持永远奔跑而不能杀死它.杀死父进程时,mongod进程成为init的子进程,但处于相同的状态.Mongodb会记录它关闭但错误代码为0.

Docker版本:17.04.0-ce Docker-compose版本:1.11.2

到目前为止我尝试了什么:

  • 不同的Linux发行版
  • 容器内的supervisord处理mongod
  • 添加--init到docker守护进程
  • 将mongod作为一个分支运行
  • 寻找内核更新,但3.14似乎是最新的(在Odroid C2上运行)
  • 不同的存储驱动程序,但只有aufs工作(覆盖需要更高的内核)

一切都没有任何喜悦..

在此输入图像描述

linux mongodb docker odroid

5
推荐指数
1
解决办法
375
查看次数

通过 Node.js 通过 FCM HTTP v1 API 发送通知

由于 FCM 的所有 npm 模块似乎仍然使用旧版 HTTP API,因此我尝试自己在节点上通过最新的 HTTP v1 API 实现 FCM 消息传递。

虽然文档引用了Google Client API,但要求它似乎有些过分,因为我只需要 JWT oAuth2Client,它是Google Auth 库的一部分。

到目前为止我想出的模块:

var request = require('request');
var googleAuth = require('google-auth-library');

module.exports.Sender = function(projectId, key) {

  var _projectId = projectId;
  var _key = key;
  var _tokens = {};

  var _jwtClient = new googleAuth.JWT(
    key.client_email,
    null,
    key.private_key,
    ['https://www.googleapis.com/auth/firebase.messaging'],
    null
  );

  var _getAccessToken = function() {

    return new Promise(function(resolve, reject) {
      _jwtClient.authorize(function(error, tokens) {
        if (error) {
          reject(error); …
Run Code Online (Sandbox Code Playgroud)

node.js firebase

5
推荐指数
1
解决办法
2804
查看次数

矢量数学,在2个向量之间的平面上找到coördinates

我试图沿样条线生成一个3d管.我有样条曲线的坐标(x1,y1,z1 - x2,y2,z2 - 等),你可以在图中看到黄色.在那些点我需要生成圆,其顶点将在以后的体育场连接.圆圈需要垂直于花键的两个线段的"角",以形成正确的管.请注意,为了便于说明,这些段保持较低.

[显然我不允许发布图片所以请在此链接查看图片] http://img191.imageshack.us/img191/6863/18720019.jpg

我能够在样条的每个点处计算每个环的顶点,但它们都在相同的平面上,即相同的角度.我需要根据他们的"腿"(例如A和B到C)旋转它们.

我一直在想这个,想到了以下几点:

  • 两个线段可以看作2个向量(在图A和B中)
  • 角落(在图示C中)是需要计算顶点环的地方
  • 我需要找到所有顶点所在的平面
  • 然后,我可以使用此平面(=向量?)从中心点计算新向量,即C
  • 并使用radius*sin和cos找到它们的x,y,z

但是,我真的很困惑这个数学部分.我读到了关于点积的但是返回了一个标量,我不知道如何在这种情况下应用.

有人能指出我正确的方向吗?

[编辑]提供有关情况的更多信息:

我需要构建一个浮点缓冲区,其中包含3个描述顶点位置的组,并将由OpenGL ES连接,给定另一个带索引的缓冲区以形成多边形.

为了给管形状,我首先创建了一个浮点数组,其中3-组描述了3d空间中的控制点.

然后连同段密度的变量,我将这些控制点传递给一个函数,该函数使用这些控制点来创建CatmullRom样条曲线,并以另一个浮点数组的形式返回它,这些浮点数组包含3个描述顶点的组. catmull rom样条.

在每个顶点上,我想创建一个顶点环,它的密度也可以不同(每个环的平滑度/顶点数).

所有以前的顶点(控制点和描述catmull rom样条的那些顶点)都将被丢弃.

只有形成管环的顶点才会传递给OpenGL,而OpenGL又将这些顶点连接起来形成最终的管.

我能够创建catmullrom样条,并在其顶点的位置创建环,但是,它们都在相同角度的平面上,而不是遵循样条路径.

[/编辑]

谢谢!

math 3d opengl-es vector angle

3
推荐指数
1
解决办法
2581
查看次数

Android Market中的多个APK

我刚刚阅读了Android Market开发人员信息中心中添加的多个APK功能.它似乎使您能够使用针对不同设备的相同包名称上传不同的APK.

但是,此功能是否也可用于捆绑具有不同包名称的APK,因此您可以提供一组应用程序?

android apk google-play

0
推荐指数
1
解决办法
488
查看次数