小编me-*_*e--的帖子

为什么 iOS 上的 OpenGL ES 渲染会垂直翻转?

我有一些 C 代码来渲染一些 OpenGL 内容,它可以在 Android 和 iOS 上运行。在 Android 上看起来不错。但在 iOS 上它是垂直翻转的。

下面是一些简单的代码来演示(因为OpenGL C代码很啰嗦,所以只复制了相关部分):

GLfloat vVertices[] = {
    0.0f,  0.5f,
    -0.5f, -0.5f,
    0.5f, -0.5f
};

glViewport(0, 0, context->width, context->height);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUseProgram(data->programObject);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vVertices);
glEnableVertexAttribArray(0);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray(0);
Run Code Online (Sandbox Code Playgroud)

在 Android 上它看起来像这样:

在此输入图像描述

但在 iOS 上它看起来像这样:

在此输入图像描述

两个平台之间唯一的区别是 OpenGL ES 的初始化代码,因为所有 OpenGL 代码都是共享的 C 代码。但是,我看不出初始化代码有任何明显的错误。

这是初始化代码(我删除了大部分错误处理,因为除了我留下的错误之外,没有任何错误被触发):

- (void)initGL {
    _context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];

    [EAGLContext setCurrentContext:_context];
    [self createCVBufferWithSize:_renderSize withRenderTarget:&_target withTextureOut:&_texture];

    glBindTexture(CVOpenGLESTextureGetTarget(_texture), CVOpenGLESTextureGetName(_texture));

    glTexImage2D(GL_TEXTURE_2D,         // target
                 0, …
Run Code Online (Sandbox Code Playgroud)

c android opengl-es ios

6
推荐指数
0
解决办法
303
查看次数

jparsec中的混乱

我正在尝试使用jparsec来定义和利用我相当简单的语法,但我对如何解决它完全感到困惑.我不知道在这一点上是否是我对问题空间的不充分理解,或者jparsec的稀疏和无信息文档.或两者.

我有一个像这样的语法:

foo='abc' AND bar<>'def' OR (biz IN ['a', 'b', 'c'] AND NOT baz = 'foo')
Run Code Online (Sandbox Code Playgroud)

所以你可以看到它支持运营商,如AND,OR,NOT,IN,=,<>.它还支持任意嵌套的括号来指示优先级.

我认为我在标记方面做得相当远.这就是我所拥有的:

public final class NewParser {
    // lexing
    private static final Terminals OPERATORS = Terminals.operators("=", "OR", "AND", "NOT", "(", ")", "IN", "[", "]", ",", "<>");
    private static final Parser<?> WHITESPACE = Scanners.WHITESPACES;
    private static final Parser<?> FIELD_NAME_TOKENIZER = Terminals.Identifier.TOKENIZER;
    private static final Parser<?> QUOTED_STRING_TOKENIZER = Terminals.StringLiteral.SINGLE_QUOTE_TOKENIZER.or(Terminals.StringLiteral.DOUBLE_QUOTE_TOKENIZER);
    private static final Parser<?> IGNORED …
Run Code Online (Sandbox Code Playgroud)

java jparsec

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

这个CIL有什么问题?

我正在通过Cecil生成一些代码.代码生成没有错误,但当我尝试加载程序集时,我得到:

DataSerializersTest.exe中发生了未处理的"System.InvalidProgramException"类型异常

附加信息:公共语言运行时检测到无效程序.

这是生成的IL:

.method public static 
    class Data.FooData Read (
        class [mscorlib]System.IO.BinaryReader input
    ) cil managed 
{
    // Method begins at RVA 0x3a58
    // Code size 60 (0x3c)
    .maxstack 3
    .locals (
        [0] class Data.FooData,
        [1] valuetype [System.Runtime]System.Nullable`1<int32>
    )

    IL_0000: newobj instance void Data.FooData::.ctor()
    IL_0005: stloc.0
    IL_0006: ldloc.0
    IL_0007: ldarg.0
    IL_0008: callvirt instance bool [System.IO]System.IO.BinaryReader::ReadBoolean()
    IL_000d: ldc.i4.0
    IL_000e: ceq
    IL_0010: brtrue.s IL_001f

    IL_0012: ldarg.0
    IL_0013: callvirt instance int32 [System.IO]System.IO.BinaryReader::ReadInt32()
    IL_0018: newobj instance void valuetype [System.Runtime]System.Nullable`1<int32>::.ctor(!0)
    IL_001d: br.s IL_0028

    IL_001f: …
Run Code Online (Sandbox Code Playgroud)

.net c# cil mono.cecil

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

如何使 Service Fabric 包大小实用?

我正在开发部署到 Azure 的 Service Fabric 应用程序。它目前仅包含 5 个无状态服务。压缩档案的重量约为 200MB,这已经成为问题。

通过检查存档的内容,我可以看到主要问题是所有服务都需要许多文件。因此,每个服务的文件夹中都存在这些文件的完全副本。但是,zip 压缩格式对于存档中的重复文件并没有做任何聪明的事情。

作为一项实验,我编写了一个小脚本来查找部署中的所有重复文件,并删除每个文件中除一个之外的所有文件。然后我尝试对结果进行压缩,结果得到了更实用的 38MB。

我还注意到系统库是捆绑的,包括:

  • System.Private.CoreLib.dll (12MB)
  • System.Private.Xml.dll (8MB)
  • coreclr.dll (5MB)

这些都是大文件,所以我很想知道是否有办法只将它们捆绑一次。我试过完全删除它们,但 Service Fabric 无法启动应用程序。

任何人都可以就我如何大幅减少部署包的大小提供任何建议吗?

注意:我已经阅读了有关压缩包的文档,但我很困惑为什么他们的压缩方法会有所帮助。确实,我试过了,但没有。他们所做的只是将主 zip 中的每个子文件夹压缩,但不涉及文件重复数据删除。

deployment azure-service-fabric

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

Git认为一些复制的代码是一个子模块

为了调试第三方库中的问题,我将他们的源代码复制到我自己的git仓库中.我立刻重现了这个问题所以想要记录一个起点.当我尝试提交时,我复制的所有文件都没有显示在我的工作树中,因此我无法进行分级.

我尝试在复制的源中显式暂存其中一个文件:

git add README 
fatal: Path 'Src/Foo/README' is in submodule 'Src/Foo/FooBar'
Run Code Online (Sandbox Code Playgroud)

所以似乎git认为它是一个子模块,尽管我从来没有告诉过它.我尝试删除第三方源的根目录中的.git目录,但这没有帮助.然后我尝试按照这些说明操作,但它告诉我没有子模块:

git submodule deinit .
No submodule mapping found in .gitmodules for path 'Src/Foo/FooBar'
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

git git-submodules

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

将最新值与先前值组合在一个可观察流中

我正在试图弄清楚如何采用可观察的序列T并获得T我的订阅者中最近和以前的值.这是我的秒杀代码:

static void Main(string[] args)
{
    var latest = new Subject<string>();
    var previous = latest.SkipLast(1);
    var latestWithPrevious = latest.CombineLatest(previous, (l, p) => new { Latest = l, Previous = p });

    latestWithPrevious.Subscribe(x => Console.WriteLine("Latest: {0} Previous: {1}", x.Latest, x.Previous));

    latest.OnNext("1");
    latest.OnNext("2");
    latest.OnNext("3");

    Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)

我想要以下输出:

Publishing 1
Publishing 2
Latest: 2 Previous: 1
Publishing 3
Latest: 3 Previous: 2
Run Code Online (Sandbox Code Playgroud)

但是,我得到以下内容:

Publishing 1
Publishing 2
Latest: 2 Previous: 1
Publishing 3
Latest: 3 Previous: 1
Latest: 3 …
Run Code Online (Sandbox Code Playgroud)

.net c# reactive-programming system.reactive

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

为什么 AsyncUnaryCall&lt;T&gt; 和其他人不扩展 Task&lt;T&gt;?

在 C# 中使用 gRPC 时,异步调用返回AsyncUnaryCall<T>(对于一元调用 - 当然,其他调用的返回类型略有不同)。但是,AsyncUnaryCall<T>不扩展Task<T>。因此,您通常使用 aTask<T>执行的常见操作不适用于AsyncUnaryCall<T>. 这包括:

  • 指定延续策略(使用ConfigureAwait
  • 使用像Task.WhenAny和这样的助手Task.WhenAll

后者目前正在咬我,因为我想启动多个 gRPC 调用并等待它们全部完成。看来我唯一的办法就是写一个小帮手,一个接一个地等待。

为什么不AsyncUnaryCall<T>反映 中的功能Task<T>

c# asynchronous task-parallel-library grpc

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

Visual Studio Code 中 C 代码的行长

在 VS Code 中格式化 C 代码时,似乎坚持在 80 个字符处换行。我想会有一个设置来控制这个,但我一生都找不到一个。

有谁知道如何在 VS Code 中设置用于包装 C 代码的列宽?

c formatting visual-studio-code

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

如何使用AWS SAM动态构建资源名称?

我是 AWS 和 SAM 的新手,所以这可能是一个显而易见的问题,但我就是找不到答案。我正在尝试构建一个 SAM 模板,该模板允许用户注入一个参数,该参数将影响其中所有资源的名称。具体来说,可以传入一个“环境”参数,然后使用该参数来限定所有资源名称:

AWSTemplateFormatVersion: "2010-09-09"
Transform: "AWS::Serverless-2016-10-31"
Parameters:
  EnvironmentParameter:
    Type: "String"
    Default: "default"
Resources:
  GetTermsAndConditionsFunction:
    Type: "AWS::Serverless::Function"
    Properties:
      # TODO: prepend the environment somehow so I get "$ENVIRONMENT_MyFunction" instead
      FunctionName: "MyFunction"
      Handler: "..."
      ...
Run Code Online (Sandbox Code Playgroud)

如何动态构建FunctionNameusing EnvironmentParameter

amazon-web-services aws-sam

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