草庐IT

mapbox-gl-native

全部标签

.net - 如何将 cli::array 从 native 代码转换为 native 数组?

我正在围绕用C++\CLI编写的托管组件编写native包装器。我在托管代码中有以下功能:array^Class::Function();我想从具有以下签名的nativeC++类公开此函数:shared_arrayClass::Function();我已经知道如何从native代码调用托管函数,但我不确定如何安全地将托管数组复制到非托管数组中。gcroot^>managedArray=_managedObject->Function(); 最佳答案 有两种常用的方法:使用native代码执行编码(marshal)处理,这需要使用pi

c++ - 通过 glTranslatef - OpenGL 在另一个位置重绘 gl_Quads

起初我有一个像这样的简单的白色直角棱镜:代码如下:glBegin(GL_QUADS);glColor3f(255,255,255);glVertex3f(0.3,0,2.5);//sisibawahglVertex3f(0.5,0,2.5);glVertex3f(0.5,0,2.6);glVertex3f(0.3,0,2.6);glVertex3f(0.5,0,2.6);//sisikiriglVertex3f(0.3,0,2.6);glVertex3f(0.3,1.5,2.6);glVertex3f(0.5,1.5,2.6);glVertex3f(0.5,0,2.5);//sisid

c++ - 在 Qt 中创建原始 GL 上下文?

我在一个项目中使用Qt。它有一些QGLWidgets,它们工作得很漂亮。问题是,我有一些我想使用的遗留代码,它们使用原始OpenGL命令来执行一些纹理和网格处理(将网格渲染为图像等)。我想从我的Qt代码中调用这些函数,当然这需要我在调用OpenGL命令之前设置一个新的OpenGL上下文。我尝试执行以下操作:QGLContextcontext(QGLFormat::defaultFormat());std::cout但它不起作用。QGLContext::create()返回false。这是在Windows7上使用Qt4.8,编译时支持OpenGL。这是要求Qt为我创建新的OpenGL上下

c++ - 如何使用 CppUnitTestFramework 在 Visual Studio native C++ 单元测试中获取 $(ProjectDir) 路径?

我需要能够检索我的单元测试的项目目录路径,以便加载测试所需的一些文件。我不想对其进行硬编码,以防将来解决方案结构和绝对路径发生变化。 最佳答案 好的,我就是这样做的:在我的项目属性->配置->C/C++->预处理器中,我添加了这个预处理器定义UNITTESTPRJ="$(ProjectDir)."然后在我的cpp文件中我做了:#defineSTRINGIFY(x)#x#defineEXPAND(x)STRINGIFY(x)strings=EXPAND(UNITTESTPRJ);s.erase(0,1);//erasethefirst

c# - 以纯 native 模式开始调试 C# 启动项目

我有一个包含C#(托管)和C++(native)项目的MSVC2013解决方案。一个C#项目设置为启动项目。我想通过调试启动这个项目,这通常在devenv中只需按F5即可实现。但是,我想以native-only模式启动调试器(即无托管调试)。我无法通过更改C#项目的设置来实现此行为:它只有一个选项“启用native代码调试”,它允许启用或禁用native调试。我知道的唯一标准方法是在不调试的情况下启动应用程序,然后附加到只选择native调试的进程。有没有办法使这个过程自动化?理想情况下,按下一个按钮就足以启动纯native调试。也许一些扩展可以简化这项任务。P.S.我在混合模式调试中

java - 我可以从 native c++ 检测 Java 版本吗

我正在使用nativeC++/MFC编写一个复杂的设置/安装程序应用程序。我非常希望能够检测到已安装的Java版本(如果有的话)。这可能吗?如何实现? 最佳答案 派生一个执行以下命令的进程:java-version。收集输出并解析它。它看起来像下面这样:javaversion"1.5.0_16"Java(TM)2RuntimeEnvironment,StandardEdition(build1.5.0_16-b06-284)JavaHotSpot(TM)ClientVM(build1.5.0_16-133,mixedmode,sha

c++ - 将固定大小内存边界上的 native 代码与 GCC/G++/AS 对齐?

我有一个C函数,其中包含将实现字节码解释器的字节码的所有代码。我想知道是否有一种方法可以在固定大小的边界上对齐内存中的编译代码段,以便我可以直接计算从字节码的值跳转到的地址?有点像数组的工作方式,但我不是从计算的地址读取,而是跳转到它。我知道我必须将执行下一个跳转的代码放在每个“字节码代码”段的末尾,并且我必须使边界大小至少与最大段的大小一样大.如果这甚至可能,我将如何告诉编译器/汇编器(gcc/g++/as)以所述方式对齐? 最佳答案 我意识到这并不是您所要求的,但这是使用GCC实现字节码解释器的标准方法。GCC的“compute

c# - Asp.net调用C#层调用Managed C++调用Native C++

我的项目结构如下:ASP.NET调用C#层调用ManagedC++调用NativeC++(我试图避免使用互操作,所以这就是托管C++层的原因)我编写了测试C#层的单元测试,它工作正常。当我尝试运行asp.net页面时出现:“无法加载文件或程序集...”错误。我发现当我将NativeC++dll复制粘贴到“TemporaryASP.NETFiles”(到相应的文件夹)时,该网站可以正常工作。似乎ManagedC++代码只有在位于同一文件夹中时才能找到NativeC++代码-显然我不能将我的Nativedll放在临时文件。有没有办法在全局位置设置Native(不适用于System32)?感

c++ - 您如何处理平台之间变化的整数的 native 大小?

恐怕我已经知道了这个问题的答案,但我想确定...我有一个相当大的项目,它有一个typedef原生类型的头文件:typedefunsignedlongintu32;typedefsignedlongints32;//etc...不可避免的事情已经发生,我现在正尝试在long是64位而不是32位的系统上编译。修复它的最佳方法是什么?我可以使用int(或来自stdint.h的int32_t/uint32_t)来typedef满足我所知道的平台上的32位大小,但这似乎仍然值得怀疑。printf样式函数也存在问题,其中使用了%ld(编译器提示并希望看到%d)。这些都必须更改,不是吗(也许在int

c++ - 写入 gl_FragDepth,同时仍然执行深度预测试

给定深度预渲染渲染器,我有给定片段可能包含的最小深度值-因此,考虑任何比指示更远的片段是没有意义的。现在,我有一个写入gl_FragDepth的着色器,但保证写入的值大于或等于其多边形面的深度值。我如何仍然执行深度预测试(即,如果片段深度比缓冲区值更远,则在不执行着色器的情况下丢弃),但允许我写入一个不同于(大于)插值面深度的值(如果它通过了预测试)测试? 最佳答案 从OpenGL4.2(GLSL4.20)开始,您正在寻找的功能可作为gl_FragDepth上的布局限定符使用。它允许您指定您将如何修改片段着色器中的深度输出的意图。例