小编Pri*_*s0n的帖子

单元测试 Hive 抽象层

因此,我创建了一个更简单的抽象级别,以便在我的 Flutter 应用程序中使用 Hive。这应该是管理和访问所有配置单元的中心点。由于eggetApplicationDocumentsDirectory在测试期间不可用,我如何才能测试整个文件?

import '../services/workout.dart';
import 'package:hive/hive.dart';
import 'package:path_provider/path_provider.dart' as path_rovider;

import 'workout.dart';

class HiveService {
  static final HiveService _singleton = HiveService._internal();

  static const String _workoutBox = "workoutBox";

  factory HiveService() {
    return _singleton;
  }
  HiveService._internal();

  static Future<void> init() async {
    final appDocumentDirectory =
        await path_rovider.getApplicationDocumentsDirectory();
    Hive.init(appDocumentDirectory.path);
    Hive.registerAdapter(WorkoutAdapter());
  }

  static Future openWorkouts() {
    return Hive.openBox<Workout>(_workoutBox);
  }

  static Future close() {
    return Hive.close();
  }
  
}
Run Code Online (Sandbox Code Playgroud)

unit-testing dart flutter flutter-hive

4
推荐指数
1
解决办法
1901
查看次数

WebGL显示帧缓冲?

我使用了WEBKIT_WEBGL_depth_texture扩展.并初始化缓冲区.但是我怎么能画这个帧缓冲?我现在总是被困住了.-.-

function InitDepthtextures (){


var size = 256;

// Create a color texture
var colorTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, colorTexture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, size, size, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);

// Create the depth texture
depthTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, depthTexture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, size, size, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_SHORT, null);

framebuffer = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, colorTexture, …
Run Code Online (Sandbox Code Playgroud)

javascript framebuffer depth webgl

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

WebGL 深度纹理全白?

我在 chrome 中使用 WEBGL_depth_texture 将场景渲染到具有颜色和深度纹理的帧缓冲区。当我显示我的颜色纹理时效果很好,但我的深度纹理全是白色的。不应该像灰色吗?

我的绘制纹理功能:

this.drawTexture = function() {

    //gl.viewport(0, 0, this.canvas.width, this.canvas.height);
    gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);  

    gl.bindBuffer(gl.ARRAY_BUFFER, this.vertBuffer);
    gl.vertexAttribPointer(this.VertexPosition, 2, gl.FLOAT, false, 0, 0);

    gl.bindBuffer(gl.ARRAY_BUFFER, this.vertTexCoordBuffer);
    gl.vertexAttribPointer(this.VertexTexture, 2, gl.FLOAT, false, 0, 0);

    gl.bindTexture(gl.TEXTURE_2D, this.depthTexture);


    gl.drawArrays(gl.TRIANGLES, 0, 6);

    gl.bindTexture(gl.TEXTURE_2D, null);
Run Code Online (Sandbox Code Playgroud)

在里面:

           this.colorTexture = gl.createTexture();
        gl.bindTexture(gl.TEXTURE_2D, this.colorTexture);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
        gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, size, size, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);

        this.depthTexture = gl.createTexture();
        gl.bindTexture(gl.TEXTURE_2D, this.depthTexture);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, …
Run Code Online (Sandbox Code Playgroud)

textures google-chrome depth webgl

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

设置 Glsl 矩阵中的列

如何更改 Glsl 中矩阵中的值?我想改变第三列中 nMatrix 的错误。

到目前为止我尝试过这个:

mat4 nMatrix;

for (int i = 0; i < 3; i++) {

    nMatrix = uMatrix;
    for (int k = 0; k < 2; k++) {
         //nMatrix[3].xyz = 0.0;
         nMatrix[3][k]= 0.0;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个编译错误:

将向量从大小 1 隐式截断为大小 3。

opengl glsl

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

For循环不会增加i

在我的例子中count = 2.第一个工作正常,但为什么第二个不工作?对于所有循环,我等于0,因此它变为无限循环并崩溃我的浏览器选项卡.

我不是javascript的新手,但之前没有遇到过这个问题.我能想到的唯一解释是,在for循环中,不可能将计数值增加1以上.但这对我来说没有意义.

for (i = 0; i < count * 3; i++){
    console.log(i);
};  
Run Code Online (Sandbox Code Playgroud)

结果:0,1,2,3,4,5

for (i = 0; i < count * 3; i+3){
    console.log(i);
};  
Run Code Online (Sandbox Code Playgroud)

结果:0,0,0,0,0,0,0 .....

javascript

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