我正在制作一个画布视频播放器,它具有一些基于视频帧的特殊功能.为了克服视频HTML5标签中不可靠的时序,我们使用的视频在每个帧中都嵌入了条形码,指示当前帧编号.使用canvas getImageData方法,我可以抓取像素并读取条形码以获取帧编号.这很好用,我有一个JSFiddle证明它可以工作(我无法绕过这个小提琴中的CORS将视频提供给画布,所以要看它工作,你必须在本地下载示例视频然后通过按钮.不理想,但它的工作原理).
在某些移动设备上(到目前为止只有Android),这种逻辑会中断.getImageData返回不正确的值.
它在我的三星Galaxy S5 v6.0.1上正常工作,但在运行android v7.1.2的Google Pixel上失败.我将尝试收集有关它失败的设备/操作系统版本的更多数据.
例如,在桌面上播放时,getImageData的第一次迭代返回:
Uint8ClampedArray(64) [3, 2, 3, 255, 255, 255, 255, 255, 246, 245, 247, 255, 243, 242, 243, 255, 241, 239, 241, 255, 242, 240, 242, 255, 242, 240, 242, 255, 242, 240, 242, 255, 242, 240, 242, 255, 242, 240, 242, 255, 242, 240, 242, 255, 242, 240, 242, 255, 242, 240, 242, 255, 242, 240, 242, 255, 242, 240, 242, 255, 242, 240, 242, 255]
Run Code Online (Sandbox Code Playgroud)
正确计算为framenumber 1.
然而在星系中,第一次迭代返回:
Uint8ClampedArray(64) …Run Code Online (Sandbox Code Playgroud) 我正在尝试为OpenGL图像查看器实现一种“突出显示”功能的方法。我的想法是,我希望用户能够点击图像以突出显示一个区域,到目前为止,效果很好。我面临的问题是用户再次点击时。我想将两个高光都保留在放置它们的图像上。在第二次点击到达的时刻,第一个突出显示消失。
这是我当前的片段着色器:
precision mediump float;
uniform vec4 vColor;
varying vec2 v_TexCoordinate;
uniform sampler2D u_Image;
uniform float u_touchX;
uniform float u_touchY;
void main() {
float radius = 0.1;
float a = v_TexCoordinate.x - u_touchX;
float b = v_TexCoordinate.y - u_touchY;
float d = sqrt(abs(a*a + b*b));
if(d < radius){
gl_FragColor = texture2D(u_Image, v_TexCoordinate) + vColor;
}else{
gl_FragColor = texture2D(u_Image, v_TexCoordinate);
}
}
Run Code Online (Sandbox Code Playgroud)
相当简单,我传入图像,突出显示颜色以及用户点击屏幕的位置的x和y。如果片段在该点的一定距离内,则添加高光。到目前为止效果很好。
但是,显然,一旦该触摸点移动,原始的高光就消失了。
我的目标是使此功能尽可能在GPU端运行。
到目前为止,我有一些想法,但是我希望比我更聪明的人可以向我展示一种更好的方法。
必须有一种更好的方法,但是我目前空虚,希望有人可以指出正确的方向。
我正在从事密码学项目。我们需要使用NTL big num库,尤其是使用该库的CRT函数生成公共密钥。该库的CRT功能未使用标准的中国剩余定理算法;它是修改后的版本,我无法确切了解其工作方式。
CRT(a,b,c,d)
据我所知,如果a%b == c%d,CRT会返回1,但情况并非总是如此,在以下结果中,我将b = 5设置为d = 6,而a = c是介于1和2之间的随机整数-6:
a%b:3 c%d:3 CRT:1
a%b:0 c%d:5 CRT:1
a%b:2 c%d:2 CRT:0
a%b:1 c%d:1 CRT:0
a%b:4 c%d:4 CRT:1
a%b:1 c%d:0 CRT:1
以下是库中CRT功能的代码。ZZ是一种库特定类型,用于表示大数。
long CRT(ZZ& gg, ZZ& a, const ZZ& G, const ZZ& p){
long modified = 0;
ZZ g;
if (!CRTInRange(gg, a)) {
modified = 1;
ZZ a1;
rem(g, gg, a); // g = gg%a
RightShift(a1, a, 1); // a1 = (a >> 1)
if (g > a1) sub(g, g, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用下面粘贴的代码从Java运行可执行文件.通过在终端中使用&&运算符,我可以使用单个命令导航到并运行可执行文件.我试图通过Runtime.getRuntime().exec()命令传递相同的命令,但它似乎不喜欢&&运算符.有谁知道这方面的工作?在下面发布的代码中,我只是将"cd && pwd"作为测试用例; 一个更简单的命令,但它仍然无法正常工作.谢谢
try{
int c;
textArea.setText("Converting Source Code to XML");
//String[] commands = {"/bin/bash", "-c", "cd /home/Parallel/HomeMadeXML", "&&", "./src2srcml --position" + selectedFile.getName() + "-o targetFile.xml"};
String commands = "bash -c cd && pwd";
System.out.println(commands);
Process src2XML = Runtime.getRuntime().exec(commands);
InputStream in1 = src2XML.getErrorStream();
InputStream in2 = src2XML.getInputStream();
while ((c = in1.read()) != -1 || (c = in2.read()) != -1) {
System.out.print((char)c);
}
src2XML.waitFor();
}
catch(Exception exc){/*src2srcml Fail*/}
}
Run Code Online (Sandbox Code Playgroud) 我刚拿到一台新机器并把它放在上面.我是学生,所以我有一个dreamspark帐户,显然想要下载最新版本的VS,我认为与dreamspark是2015社区.我想使用本地数据库创建包含数据库的网站,然后将它们部署到Azure.2015社区是否提供了我需要做的所有事情,或者我还必须获得SQL Server 2014并且它是否都可以在Windows 10上运行?
我有一个非常奇怪的问题,我正在努力解决有关在 Android 上使用 GLSurfaceView 和 React Native 的问题。
我创建了一个自定义 OpenGL 渲染器,我想将其用作更大的 React Native 视图中的组件。问题是,当我将 JS 端的组件调整为我希望屏幕的其余部分变黑的大小时。
这是创建该视图的 React Native 代码:
public render() {
return (
<View style={{ backgroundColor: '#ffffff' }}>
<Text>Hello World!</Text>
<ImageBlendView style={{ height: 50 }} boxColour="#f442df" />
</View>
);
}
Run Code Online (Sandbox Code Playgroud)
ImageBlendView 是一个反应原生 UI 组件,我按照 RN 网站上的说明制作,这就是创建带有紫色矩形的红色的原因。它只是一个非常基本的 Opengl 渲染器,它使用从 JS 传入的颜色和红色透明颜色绘制一个矩形。我在其上方添加了一个文本字段,并将组件的大小调整为 50 高度。
我不明白为什么 ImageBlendView 组件被黑色包围。
清晰的颜色是红色,所以我知道它不是我的渲染器清除像素,它不应该是这样。但是,它似乎与我的渲染器类有关,因为当我注释掉 GLSurfaceView 类中将其设置为渲染器的行时,正常的白色背景会回来,并且组件上方的文本可见。
// setRenderer(new OpenGLRenderer(_context, colour));
Run Code Online (Sandbox Code Playgroud)
自定义 UI 组件遵循与教程中相同的结构,但我将彻底介绍它。
ImageBlendView 被添加到包中并捆绑在视图管理器列表中:
public class OTSNativePackage implements ReactPackage {
@Nonnull
@Override
public …Run Code Online (Sandbox Code Playgroud) 我正在使用我在网上找到的模板函数,它用于返回C++中数组的长度.我发现,如果我直接调用该方法,但是当我通过另一种方法调用它时,我会得到错误no instance of function template "array_size" matches the argument list.
我显然误解了如何通过方法传递数组,但我很难过为什么这不起作用.
template<size_t SIZE, class T> inline size_t array_size(T(&arr)[SIZE]) {
return SIZE;
}
int wordLength(char* word) {
return array_size(word) - 1; // Gets argument error
}
void fooBar() {
int n = array_size("Hello"); // Works!
int m = wordLength("Hello"); // What I want }
Run Code Online (Sandbox Code Playgroud)
我错过了哪些细节以及如何修复它以便我可以打电话 wordLength
尽管似乎有很多关于它的博客文章,我仍然在努力通过npm完善使用自定义库作为我的ember应用程序的依赖项.
我编写了一个WebGL库,目前通过npm从私有存储库安装它导入我的Ember应用程序.这当前有效并且正在生产中,但工作流程有点笨重.该库是使用NodeJS模块编写的(require - > export.modules).目前我只是在我的src文件上使用babel,这导致一个构建文件夹,文件的ES5版本仍然分开.
然后我有一个如下所示的索引文件:
var Helper = require('./com/XXXX/utils/Helper');
module.exports = {
Module1: require('./com/XXXX/media/Module1'),
Module2: require('./com/XXXX/media/Module2'),
Module3: require("./com/XXXX/media/Module3"),
Module4: require('./Module4'),
Module5: require('./com/XXXX/media/Module5'),
Module6: Helper.Module6,
Module7: Helper.Module7
};
Run Code Online (Sandbox Code Playgroud)
使用npm我可以将此构建目录安装到我的Ember应用程序中,并使用以下语法导入我需要的模块:
import webglRenderLibrary from 'npm:webglRenderLibrary';
const { Module5 } = webglRenderLibrary;
Run Code Online (Sandbox Code Playgroud)
其中Module5是库中导出的类,如下所示:
class Module5 {
//Magic rendering code
}
module.exports = Module5;
Run Code Online (Sandbox Code Playgroud)
我没有必要安装任何其他插件或将库文件导入到ember供应商文件中,因为很多博客文章都说你必须这样才能让它工作.我真的不明白为什么这种方法有效,但确实如此.
¯\ _(ツ)_ /¯
我从来没有真正喜欢这个设置/工作流程(并且不知道它为什么会起作用)所以我正在努力改进它,但我在Ember,JS模块等方面的许多知识差距使得它变得困难.
我想做的第一件事是将库移到ES6模块(导入 - >导出).从我的理解ES6模块更精简和未来所以我宁愿将它们用于我的库.更改所有源代码有点劳动密集,但它工作得很好,并允许我为我的库开发创建一个很好的工作流程.
Module5现在看起来像这样:
export default class Module5 {
//Magic rendering code
}
Run Code Online (Sandbox Code Playgroud)
在package.json库中我有很多npm脚本现在调用watchify,所以我可以单独在demo文件中测试我的模块.
{
"name": "webglRenderLibrary",
"main": "dist/js/app.js",
"version": "2.0.5",
"author": "JibJab …Run Code Online (Sandbox Code Playgroud) 我有两个类,A和B.ClassA调用classB中的一个方法,它迭代一个大循环.ClassA还会打印到Qt消息框.我想要的是能够将%完成打印到classA的消息框中.有没有办法在C++中做到这一点?
ClassA calls ClassB.method();
ClassA <-- 10% -- ClassB.method();
ClassA -- 10% --> MessageBox
Run Code Online (Sandbox Code Playgroud) c++ ×3
javascript ×3
android ×2
java ×2
bash ×1
canvas ×1
cryptography ×1
ecmascript-6 ×1
ember.js ×1
html5 ×1
linux ×1
localdb ×1
npm ×1
opengl-es ×1
qt ×1
react-native ×1
runtime.exec ×1
sql-server ×1
terminal ×1