小编and*_*dre的帖子

TextureView与GLSurfaceView或如何将GLSurfaceView与EGL14一起使用

我对EGL感到困惑.

我的GLSurfaceView创建了一个EGLContext.现在我创建一个共享上下文.现在我需要使用EGLExtension.

我必须使用的方法称为(> = API18):

EGLExt.eglPresentationTimeANDROID(android.opengl.EGLDisplay display, android.opengl.EGLSurface surface, long time);
Run Code Online (Sandbox Code Playgroud)

问题是,GLSurfaceView只创建了javax.microedition.khronos.egl.EGLContext.

这告诉我,不要使用GLSurfaceView.所以我尝试了稍微类似的TextureView,区别在于你必须处理自己的EGL内容.哪个对此有益.

但是:TextureView速度较慢,至少它看起来像那样,所以我用Method Profiler记录了一些图表:

这里的TextureView有自己的EGL处理: 在此输入图像描述 顶部的Thread是一个唤醒Thread中间的时钟,它呈现在TextureView上.之后将调用主线程,用于重绘TextureView.

......这里的GLSurfaceView有自己的EGL处理这次时钟在中间,它调用顶部的线程将我的图像渲染成帧缓冲区,我直接将其提供给SurfaceView(RENDERMODE_WHEN_DIRTY)并调用requestRender请求视图呈现. 在此输入图像描述

正如您所看到的那样,通过GLSurfaceView,它看起来比使用TextureView更清晰.

在这两个例子中,我在屏幕上没有任何其他东西,并且它们使用相同的着色器呈现完全相同的网格物体.

我的问题:有没有办法将GLSurfaceView与EGL14上下文一起使用?

我做错什么了吗?

android glsurfaceview textureview

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

询问MongoDB是否是一个bashscript中的Master

我的mongodb应该每天运行备份.它与一个主设备和两个从设备一起运行.

我需要备份其中一个(因为它们只是复制品)

最简单的方法是仅在一个实例上运行备份脚本.但如果这个实例失败怎么办?所以我认为在主服务器上运行备份文件会很好,因为总有一个主服务器,即使其中一个服务器已关闭.

所以我需要在cron.daily中调整我的备份文件,询问mongodb是否是当前的主人.

我怎么做?

bash ubuntu mongodb

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

Django 1.8在Serializer中获得了kwargs

这对我来说有点奇怪,但现在有效.由于我是django/python中的新手,请告诉我你将如何解决这个问题.目标是创建一个Waypoint对象,其中Trip ID作为路径中的参数.旅行是Waypoint的外键.

class WaypointSerializer(serializers.ModelSerializer):
    trip = serializers.PrimaryKeyRelatedField(read_only=True)

    class Meta:
        model = Waypoint
        fields = ('id', 'trip', 'position', 'time')

    def create(self, validated_data):
        trip_id = self.context.get('request').parser_context['kwargs']['pk']
        validated_data['trip'] = Trip.objects.get(pk=trip_id)
        return super(WaypointSerializer, self).create(validated_data)
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

5
推荐指数
2
解决办法
1873
查看次数

Traits 返回一个 trait:在某些情况下有效,在其他情况下则无效

我需要实现一个返回futures::StreamExt特征的特征。

一般来说,这听起来很简单,对此有几个答案,例如这里的这个

我试过这个,StreamExt但这确实 - 由于某种原因 - 不起作用。这是我的示例代码:


// [dependencies]
// futures = "0.3.6"
// async-std = { version = "1.6.5", features = ["attributes", "unstable"] } // interval function is unstable atm.
use std::time::Duration;

use futures::StreamExt;

trait StreamProvidingTrait {
  fn returnastream(self: &Self) -> Box<dyn StreamExt<Item=i32>>;
}

struct StreamProvider {}

impl StreamProvidingTrait for StreamProvider {
  fn returnastream(self: &Self) -> Box<dyn StreamExt<Item=i32>> {
    return Box::new(async_std::stream::interval(Duration::from_millis(1000)).map(|_| 1));
  }
}

#[async_std::main]
async fn main() {
  let mut counter = …
Run Code Online (Sandbox Code Playgroud)

rust

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

Jetpack Compose 导航和 StateFlow 的问题

Composable函数Application创建一个NavHostController定义 2 个目标的函数。一个StartScreen和一个ContentScreen。只有StartScreen一个按钮,它会触发模拟后端请求并StateFlow根据请求的状态更改状态(使用 kotlins )。当结果返回时,将调用NavControllersnavigate方法以在 上显示返回的内容ContentScreen

问题:状态InitLoading工作正常,但是一旦应该显示内容,就会ContentScreen循环重绘并且不会停止。

我在这里做错了什么?


/** Dependencies
    implementation 'androidx.core:core-ktx:1.6.0'
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation "androidx.compose.ui:ui:1.0.2"
    implementation "androidx.compose.ui:ui:1.0.2"
    implementation "androidx.compose.material:material:1.0.2"
    implementation "androidx.compose.ui:ui-tooling-preview:1.0.2"
    implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
    implementation "androidx.navigation:navigation-compose:2.4.0-alpha08"
    implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07'
    implementation 'androidx.activity:activity-compose:1.3.1'
 *
 * **/


sealed class MainState {
    object Init : MainState()
    object Loading : MainState()
    data class Content(val data: String) : MainState() …
Run Code Online (Sandbox Code Playgroud)

android android-architecture-navigation android-jetpack-compose kotlin-stateflow

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

替换一堆std :: vector条目

我有一个std :: vector.我指定这个矢量

vec.assign(20000, 0);
Run Code Online (Sandbox Code Playgroud)

现在我有一个额外的数组,我想插入到向量中.但不仅仅是插入,更多的替换元素在向量中.

uint8_t a[] = {1,2,3,4,5,6,7,8};
Run Code Online (Sandbox Code Playgroud)

将该数组移动到位置x - x + 8上的向量中,而不分配新内存.

我尝试和工作的当然是

vec.insert(start, a, a+8);
Run Code Online (Sandbox Code Playgroud)

但是我在那里分配新的内存并且向量的大小发生变化,这是不应该发生的.是的,我可以删除,条目太多,但仍然有问题,我分配更多的内存.是否有可能只用向量的内容替换数组?像这样的Smth:

vec.replace(start, a, a+8);
Run Code Online (Sandbox Code Playgroud)

我想避免更换每个元素,因为我担心这可能需要太长时间.

你怎么看?有没有办法做到这一点?你以前也遇到过这个问题吗?你怎么修好它的?

c++ stdvector

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

使用智能算法缩短开关盒

我正在寻找一种智能算法来获得(更少)与下面方法相同的结果.

返回哪个数字实际上并不重要.重要的是,每个低/高组合都有唯一的返回值,返回值介于1到36之间.

idx在0到8之间(9个值),从不低于,从不高.

有任何想法吗?

// idx1 is never = idx2
private long getIdentifier(int idx1, int idx2) {
    int low = (idx1>idx2)?idx2:idx1;
    int high = ((idx1>idx2)?idx1:idx2);
    switch (low) {
        case 0:
            return high;
        case 1:
            switch (high) {
                case 2:
                    return 9;
                case 3:
                    return 10;
                case 4:
                    return 11;
                case 5:
                    return 12;
                case 6:
                    return 13;
                case 7:
                    return 14;
                case 8:
                    return 15;
            }
        case 2:
            switch (high) {
                case 3:
                    return 16;
                case 4:
                    return 17;
                case …
Run Code Online (Sandbox Code Playgroud)

java algorithm

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