我正在开发一个C#项目,VisualAssist /// <summary></summary>为我生成这些花哨的评论,我一直在使用它们来记录我的代码.
我假设必须有一种方法可以使用这些注释来创建像Doxygen或Javadoc那样的HTML文档.我怎么做?
我正在使用Kinect传感器,我正在尝试对齐深度和颜色框架,以便我可以将它们保存为彼此"适合"的图像.我花了很多时间浏览msdn论坛和Kinect SDK的适度文档,我完全无处可去.
基于这个答案:Kinect:从RGB坐标转换为深度坐标
我有以下功能,在哪里depthData和colorData从中获取NUI_LOCKED_RECT.pBits并且mappedData是包含新颜色框架的输出,映射到深度坐标:
bool mapColorFrameToDepthFrame(unsigned char *depthData, unsigned char* colorData, unsigned char* mappedData)
{
INuiCoordinateMapper* coordMapper;
// Get coordinate mapper
m_pSensor->NuiGetCoordinateMapper(&coordMapper);
NUI_DEPTH_IMAGE_POINT* depthPoints = new NUI_DEPTH_IMAGE_POINT[640 * 480];
HRESULT result = coordMapper->MapColorFrameToDepthFrame(NUI_IMAGE_TYPE_COLOR, NUI_IMAGE_RESOLUTION_640x480, NUI_IMAGE_RESOLUTION_640x480, 640 * 480, reinterpret_cast<NUI_DEPTH_IMAGE_PIXEL*>(depthData), 640 * 480, depthPoints);
if (FAILED(result))
{
return false;
}
int pos = 0;
int* colorRun = reinterpret_cast<int*>(colorData);
int* mappedRun = reinterpret_cast<int*>(mappedData);
// For each pixel of new color frame
for (int …Run Code Online (Sandbox Code Playgroud) 我试图找出一种方法,如何能够为具有不同数量的参数的函数分配函数指针.
我有一个while循环,它将许多不同的函数作为一个条件语句,所以我没有用完全相同的代码编写多个while循环,而是希望有一个带有函数指针的函数.所有功能都是格式化的bool f(...).我认为一些代码最能说明我的意思:
int a, b, c, d;
MyClass* my_class;
typedef bool (MyClass::*my_fun_t)();
my_fun_t my_fun;
if (condition1)
my_fun = &MyClass::function_one();
else if (condition2)
my_fun = &MyClass::function_two(a, b);
else if (condition3)
my_fun = &MyClass::function_three(a, b, c);
else if (condition4)
my_fun = &MyClass::function_four(a, b, c, d);
while ((my_class->*my_fun)())
{ ... }
Run Code Online (Sandbox Code Playgroud)
现在这显然不起作用,因为函数具有不同的签名.是否可以以类似的方式使其工作?我应该看一下functoids吗?
我有一个基于DirectX 10的旧游戏引擎(有点),我一直计划将其转移到DX 11.我还安装了Windows 8和VS 2013,并且在尝试运行这个旧项目时我学到了是的DirectX SDK已被弃用,现在的Windows 8 SDK所取代.在这种情况下,我想知道更新到DX 11是否有意义,或者我应该尝试让我的引擎使用新的Windows 8 SDK.在做出决定之前,我想知道几件事:
1)Windows 8 SDK现在要学习还是DX 11仍然相关?比如,如果你想学习C++,你应该学习C++ 11,所以如果你现在想学习Direct3D,你应该学习Windows 8 SDK吗?
2)学习DirectX SDK有很多很好的资源:很多教程,微软自己的样本,NVidia Graphics SDK样本,AMD Radeon SDK样本等.目前有没有类似的优质资料可用于Windows 8的Direct3D或者只是msdn ?
3)基于Windows 8 SDK的引擎是否只能在Windows 8上运行?
4)两者之间的任何第一手经验/比较?
非常感谢!
假设我有一个带有滑块的主窗口和一个窗口内的窗口小部件,其方法称为setValue(int).每次滑块的值发生变化时,我都想调用此方法.
以下两种实现方式之间是否存在实际差异:
void MainWindow::on_slider_valueChanged(int value)
{
ui->widget->setValue(value);
}
Run Code Online (Sandbox Code Playgroud)
// somewhere in constructor
connect(ui->slider, SIGNAL(valueChanged(int)), ui->widget, SLOT(setValue(int)));
Run Code Online (Sandbox Code Playgroud)
对我来说,第一种方法看起来更好,因为它可能避免与信号和插槽机制相关的一些开销,并且,如果需要它,允许我value在发送之前处理widget它.
是否存在第二种解决方案更好的情况?
我有一个理论上的问题,但是在设计类时我有时会遇到这个问题,而且在阅读其他代码时我看到它有所不同.以下哪项会更好,为什么:
例1:
class Color
{
public:
Color(float, float, float);
~Color();
friend bool operator==(Color& lhs, Color& rhs);
void multiply(Color);
// ...
float get_r();
float get_g();
float get_b();
private:
float color_values[3];
}
Run Code Online (Sandbox Code Playgroud)
例2:
class Color
{
public:
// as above
private:
float r;
float g;
float b;
}
Run Code Online (Sandbox Code Playgroud)
在这样的情况下是否应该遵循一般规则,还是仅仅取决于程序员以及看起来更有意义?
所以我经常看到这样的事情:
#define gf_PI f32(3.14159265358979323846264338327950288419716939937510)
#define gf_PIhalf f32(3.14159265358979323846264338327950288419716939937510 * 0.5)
Run Code Online (Sandbox Code Playgroud)
这意味着每次在我的代码中使用gf_PIhalf时计算一半PI值,对吧?
相反,字面上写下一半PI的值不是更好吗?
做以下事情不是更好吗?
#define gf_PI f32(3.14159265358979323846264338327950288419716939937510)
const float gf_PIHalf = gf_PI * 0.5f; // PIHalf is calculated once
Run Code Online (Sandbox Code Playgroud)
最后这样做是不是最好(为什么它似乎不是一种常见做法):
const float gf_PI = 3.14159265358979323846264338327950288419716939937510;
const float gf_PIHalf = gf_PI * 0.5f;
Run Code Online (Sandbox Code Playgroud) 我有类似下面的类设计,我想知道我是否可以使用许多信号槽连接来进行通信.有一个MainWindow类可以保存所有的GUI,然后是一个Wrapper类,它提供了一个后端接口,然后有一个Controller类来生成和管理线程,最后有一些类Worker可以完成所有的工作.
现在让我们说我正在加载一个文件,并希望使用进度条显示进度MainWindow.我的Worker班级发送updateProgress(int progress)到Controller::handleProgress(int progress)插槽,再次向Wrapper课程发送进度信号,然后向主窗口发送进度信号,最后更新进度条.
类似地,当数据被加载时,它在Wrapper类中被处理,并且再次通过信号和槽进行通信(尽管少一步).
它是在Qt中做事的标准方式还是我应该重新考虑我的设计?
我知道typedef不能在C++中进行前向声明,但我想知道什么是以下问题的最佳解决方案.我有一个头文件,声明MyClass如下:
#include <TemplateClassHeaders>
struct MyStruct
{
// ...
}
typedef Really::Long::TemplateClassName<MyStruct> MyClass;
Run Code Online (Sandbox Code Playgroud)
MyClass在许多地方使用,但大部分只是作为指针通过Qt信号槽机制.前向声明将是所有需要的,但因为MyClass是一个不起作用的typedef.有没有办法避免将myclass.h添加到使用指针的每个标头MyClass?
我有一个3D网格,它表示一个有一些粗糙边界的表面,我想要平滑:

我使用半边数据结构来存储几何体,因此我可以轻松地迭代边界边,顶点和面.我也可以很容易地确定一对给定的边缘是否是使用点和叉积的凸/凹.
什么是平滑边缘的最佳方法,因此它们形成连续的曲线,而不是图片中看到的锐利图案?