小编Chr*_*bek的帖子

OpenGL纹理缓冲对象的目的是什么?

我们使用缓冲区对象来减少来自CPU-GPU的复制操作,对于纹理缓冲区对象,我们可以将目标从顶点更改为缓冲区对象中的纹理.这里有纹理缓冲对象的其他优点吗?另外,它不允许过滤,这有什么不利之处吗?

opengl textures opengl-3

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

VBA Document.Protect未设置wdProtectionType(Office 2007)

我想自动执行仅使用Office 2007 VBA的Document.Protect保护word文档以进行注释的过程.如果文档还没有保护,这可以正常工作,但是一旦设置了保护,它就会失败.

以下是一个最小的工作示例,显示了我面临的错误(见下文).我在另一台运行Office 2007 SP3的PC上重现了.即使使用空白文档也会出现此问题.

要重现,请在保存新的空白文档后使用以下宏:

Sub ProtectionBugOffice2007()

    ' Apply a first type of locking to simulate an existing lock
    RecentFiles(1).Open
    If ActiveDocument.ProtectionType <> wdNoProtection Then ActiveDocument.Unprotect
    ActiveDocument.Protect wdAllowOnlyFormFields
    ActiveDocument.Close (wdSaveChanges)

    ' Now do the real test: Lock with our intended protection type
    RecentFiles(1).Open
    ActiveDocument.Unprotect
    ActiveDocument.Protect wdAllowOnlyComments
    ActiveDocument.Close (wdSaveChanges)

    ' Validate!
    RecentFiles(1).Open
    If ActiveDocument.ProtectionType = wdAllowOnlyComments Then
        MsgBox "Success!"
    Else
        MsgBox "Failure! Should be " & wdAllowOnlyComments & " but is " & ActiveDocument.ProtectionType
    End If
    ActiveDocument.Close

End Sub …
Run Code Online (Sandbox Code Playgroud)

automation vba ms-word ms-office word-vba

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

ARKit肖像和风景之间的内在差异?

我正在使用OpenCV(使用ARuco)实现ARKit的标记跟踪,并在进行相机的纵向定位时看到良好的效果,但在做横向时略微偏移.

已知位置的ARuco标记:

ARu​​co模式

纵向模式下的检测有效:

肖像标记

在横向方向,检测显示偏移:

景观标记

详细说明我在做什么:

  • 每个人都ARFrame做以下事情:
  • 获取CVPixelBuffer height, width, baseaddress并转换为cv::Mat
  • 使用内在来运行标记检测和姿势估计(cv::aruco::detectMarkers,cv::aruco::estimatePoseSingleMarkers)ARFrame.
    • 内部需要将ARKit column-major转换为OpenCV行主矩阵存储.
    • OpenCV rvectvec使用转换为4x4变换cv::Rodrigues,然后从OpenCV转换为OpenGL坐标空间diag(1,-1,-1,1) * transform
    • 结果从row-major转换回column-major,并且是相机空间中标记的变换.
  • 将变换与ARCameras变换相乘得到世界坐标中的标记平面,我将其视为绿色矩形.

我的问题:

  • 我错过了什么吗?
  • 应该frame.displayTransform扮演转换的任何部分吗?
  • 旋转设备时为什么内在会发生变化?像素缓冲区的宽度和高度不会改变.
  • 还有其他想法吗?

更新25.07.2017:

  • 我想出来了!这是Apple的错误!他们弄乱了UIInterfaceOrientation.landscapeLeft和landscapeRight之间的内在函数.如果你缓存这些值并交换它们,那么一切都很好.
  • iOS 11 Beta 4不会改变任何东西
  • 我一直保持这个问题,直到它被Apple解决(雷达上的错误ID 33519315).

更新于2014年9月14日:

  • Apple关闭了这个bug,说一切都是正确的.我不确定它们是否正确,但可能它确实是OpenCV和ARKit之间的问题.

opencv augmented-reality ios arkit

8
推荐指数
0
解决办法
1348
查看次数

ActiveAdmin - 为has_many/belongs_to关系生成表单下拉列表

我有GalleryImagehas_many/belongs_to关系的模型.

我的admin的admin_active表单如下所示:

form do |f|
  f.inputs "Image Details" do
    f.input :gallery_id
    f.input :file
  end
end
Run Code Online (Sandbox Code Playgroud)

相反或输入gallery_id的数字我想从下拉列表中选择图库名称.通过deafault这个表单看起来像这样,但我不知道如何手动执行此操作.

ruby-on-rails ruby-on-rails-3 activeadmin

7
推荐指数
2
解决办法
9296
查看次数

Ruby Async Gem:基本使用示例是什么?

使用 Ruby 3.0,asyncgem现在与标准库函数中的阻塞 IO 兼容,我想了解基本功能,但已经被一个简单的示例困惑了:

require 'async'

n = 10
n.times do |i|
  Async do
    HTTParty.get("https://httpbin.org/delay/1.6")
  end
end
Run Code Online (Sandbox Code Playgroud)

这没有表现出任何并行性。查看 Gem 的文档,内容Kernel#async如下:

异步运行任务中给定的代码块,并在必要时创建反应器。

项目文档似乎澄清了这一点:

在顶层调用时,将创建并运行反应器,并将块作为异步任务调用。将阻塞直到反应堆完成运行。

因此,要使上面的示例起作用:

require 'async'

n = 10
Async do
  n.times do |i|
    Async do
      HTTParty.get("https://httpbin.org/delay/1.6")
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这可行,但对读者来说似乎很混乱。作为读者,我们如何知道第一个Async do被阻塞而其他则没有?

因此问题是:宝石的规范基本用法是什么async

进一步阅读:

ruby asynchronous fibers

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

从向量到指针向量的最短转换

是否有任何转换std::vector<T>std::vector<T*>或的快捷方式std::vector<T&>

基本上我想要替换:

std::vector<T> source;
std::vector<T*> target;
for(auto it = source.begin(); it != source.end(); it++)
{
  target.push_back(&(*it));
}
Run Code Online (Sandbox Code Playgroud)

用一条线.

提供一些上下文:我有一组函数可以对a进行计算std::vector<Polygon>,有些则需要std::vector<Polygon*>.所以我需要来回转换几次,因为这些函数的接口不应该改变.

c++ stl

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

从当前光标位置创建范围 Word 2010 VBA

我有一个.docm带有用户表单的文档。在用户表单上,我有一个按钮需要在文档中最后一个已知的光标位置插入一些东西(一些文本,对于初学者)。为此,我想创建一个范围。

我怎样才能获得这个范围的起始位置?

vba ms-word word-2010

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

杀死在ruby中使用open3调用的进程

我正在使用命令行程序,它的工作原理如下:

$ ROUTE_TO_FOLDER/app < "long text"
Run Code Online (Sandbox Code Playgroud)

如果使用参数"app"需要写入"长文本",那么它将填充带有结果的文本文件.如果没有,它将连续用点填充文本文件(我无法处理或修改"app"的代码以避免这种情况).

在ruby脚本中有一行如下:

text = "long text that will be used by app"
output = system("ROUTE_TO_FOLDER/app < #{text}")
Run Code Online (Sandbox Code Playgroud)

现在,如果文本写得很好,就不会有问题,我会得到一个如前所述的输出文件.文本写得不好时会出现问题.接下来发生的是我的ruby脚本挂起,我不知道如何杀死它.

我找到了Open3,我使用了这样的方法:

irb> cmd = "ROUTE_TO_FOLDER/app < #{text}"
irb> stdin, stdout, stderr, wait_thr = Open3.popen3(cmd)
=> [#<IO:fd 10>, #<IO:fd 11>, #<IO:fd 13>, #<Thread:0x007f3a1a6f8820 run>]
Run Code Online (Sandbox Code Playgroud)

当我做:

irb> wait_thr.value
Run Code Online (Sandbox Code Playgroud)

它也挂起,并且:

irb> wait_thr.status
=> "sleep"
Run Code Online (Sandbox Code Playgroud)

所以...¿我怎样才能避免这些问题?¿是不是认识到"app"失败了?

提前致谢

ruby popen3

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

错误模块“QtQuick.Dialogs”未安装

尝试将 QtQuick.Dialogs 1.(0/1/2) 添加到我的项目时出现以下错误:

qrc:/qml/main.qml:4 module "QtQuick.Dialogs" is not installed
Run Code Online (Sandbox Code Playgroud)

现在事情是这样的,如果我创建一个全新的应用程序(标准的空 QtQuick 应用程序)并添加此行和 QML FileDialog 文档中的文件对话框示例,那么就没有问题。

关于问题可能是什么的任何想法吗?

qt qml

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

在派生类到基类转换中移动语义

考虑下面的类Buffer,其中包含一个std::vector对象:

#include <vector>
#include <cstddef>

class Buffer {
   std::vector<std::byte> buf_;
protected:
   Buffer(std::byte val): buf_(1024, val) {}
};
Run Code Online (Sandbox Code Playgroud)

现在,考虑make_zeroed_buffer()下面的功能。该类BufferBuilder是从中公开派生的本地类Buffer。其目的是创建Buffer对象。

Buffer make_zeroed_buffer() {
   struct BufferBuilder: Buffer {
      BufferBuilder(): Buffer(std::byte{0}) {}
   };

   BufferBuilder buffer;

   // ...

   return buffer;
}
Run Code Online (Sandbox Code Playgroud)

如果没有进行复制清除,是否buffer可以保证将上面的物体移走?

我的推理如下:

  1. 表达bufferreturn语句是一个左值。由于它是不再使用的本地对象,因此编译器将其转换为rvalue
  2. buffer对象是类型BufferBuilderBuffer是的公共基类BufferBuilder,因此此BufferBuilder对象隐式转换为Buffer对象。
  3. 反过来,此转换意味着隐式引用到派生到引用到基点的转换(即,BufferBuilder对的引用 …

c++ derived-class move-semantics object-slicing c++17

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