小编Sku*_*del的帖子

XNA查看矩阵 - 寻求解释

我在理解XNA中的视图矩阵时遇到了一些麻烦.我已经完成了所有其他部分,因为我刚刚学会了所需的数学,我不想使用内置的Matrix函数,而不了解他们先做的事情.

现在我理解了旋转,投影和翻译的基础知识,但我无法理解视图矩阵在XNA中的工作原理.

从我收集的信息来看,视图矩阵应该将"世界"转变为它自己的空间.看似合理,但库中的Matrix.CreateLookAt方法非常令人费解.

我已经建立(通过检查库函数输出的内容)这两段代码产生相同的结果:

Matrix view = Matrix.CreateReflection(new Plane(Vector3.UnitX, 0)) * Matrix.CreateReflection(new Plane(Vector3.UnitZ, 0)) * Matrix.CreateTranslation(Position);
// ..equals this if (Position = (0 0 -5), since LookAt "looks at" but the above just looks straight down Z)..
Matrix blah = Matrix.CreateLookAt(Position, Vector3.Zero, Vector3.UnitY);
Run Code Online (Sandbox Code Playgroud)

为什么要翻转X和Z轴?我认为你应该根据摄像机的旋转来旋转世界,但是在相反的方向,然后在相反的方向上将世界翻转相同的量.

或者视图矩阵根本不用作转换,而只是编码摄像机在世界中的位置和旋转?

c# 3d xna camera matrix

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

在Visual Studio C++ 2009中将源文件存储在项目文件目录之外

Visual Studio项目假定属于项目的所有文件都与项目文件位于同一目录中,或者位于其下方.

对于特定项目(在非Visual Studio意义上),这不是我想要的.我想将MSVC特定的文件存储在另一个文件夹中,因为可能还有其他方法来构建应用程序,例如使用SCons.此外,MSVC所有东西都会破坏源目录.

例:

/source
/scons
/msvc <- here is where I want my MSVC-specific stuff
Run Code Online (Sandbox Code Playgroud)

我可以在Explorer中将source文件手动添加到目录中,然后在Visual Studio中将它们与项目链接.它不是世界末日,但它让我感到恼火的是,Visual Studio试图决定我项目的文件夹结构.

我正在查看项目文件的模式,但意识到这个令人讨厌的假设是在IDE中,而不是项目文件的格式.

除了从source目录手动将文件链接到项目之外,有人知道更简洁的解决方法吗?

directory-structure project-files visual-studio visual-c++

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

2D运动模糊解决方案

我想把运动模糊放到我的2D程序中,但我怀疑我当前算法的结果.

我的方法目前看起来像这样:

  • 画到后台.
  • 当更新前缓冲区的时间时,将后缓冲区混合到前缓冲区.
  • 重复

什么会导致"运动模糊"效果显然是混合,因为运动中的物体将留下褪色的痕迹.

这显然对硬件要求不高,无论如何都会进行双缓冲,唯一的额外步骤是alpha混合,这是一个简单的计算.然而,小径将非常尖锐,并且根本不模糊,这可能看起来有点奇怪.在混合步骤之前,我可以在后台缓冲区上做一个盒子模糊,但感觉它可能对像Nintendo DS这样的低端系统非常沉重.

是否有任何解决方案可以让我更有效地做到这一点或产生更好看的效果?

language-agnostic graphics 2d effects motion-blur

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

AVR程序必须始终以相对跳转指令开始吗?

我见过的所有AVR程序都是以如下代码开头的:

.org $0000
    rjmp Reset
    ; ...
Reset:
    ; Start of program
Run Code Online (Sandbox Code Playgroud)

如果我没有使用任何中断,我可以不用rjmp并启动程序$0000吗?

assembly avr atmel

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

将N ^ 2 3x3矩阵连接成3Nx3N矩阵

我有N ^ 2个矩阵.每一个都是3x3矩阵.将它们连接到3Nx3N矩阵的一种方法是写入 A(:,:,i)= # 3x3 matrix i=1:N^2

矩阵

B=[A11 A12 ..A1N;A21 ...A2N;...] 但是当N很大是一项繁琐的工作.你有什么优惠?

matlab matrix

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

通过自动矢量化帮助GCC

我有一个着色器,我需要优化(有很多向量操作),我正在尝试SSE指令,以便更好地理解问题.

我有一些非常简单的示例代码.使用USE_SSE定义它使用显式SSE内在函数; 没有它,我希望海湾合作委员会能为我做这项工作.自动矢量化感觉有点挑剔,但我希望它能为我节省一些头发.

编译器和平台是:gcc 4.7.1(tdm64),目标x86_64-w64-mingw32和Ivy Bridge上的Windows 7.

这是测试代码:

/*
    Include all the SIMD intrinsics.
*/
#ifdef USE_SSE
#include <x86intrin.h>
#endif
#include <cstdio>

#if   defined(__GNUG__) || defined(__clang__) 
    /* GCC & CLANG */

    #define SSVEC_FINLINE __attribute__((always_inline))

#elif defined(_WIN32) && defined(MSC_VER) 
    /* MSVC. */

    #define SSVEC_FINLINE __forceinline

#else
#error Unsupported platform.
#endif


#ifdef USE_SSE

    typedef __m128 vec4f;

    inline void addvec4f(vec4f &a, vec4f const &b)
    {
        a = _mm_add_ps(a, b);
    }

#else

    typedef float vec4f[4];

    inline void addvec4f(vec4f &a, vec4f const &b) …
Run Code Online (Sandbox Code Playgroud)

c++ gcc sse mingw vectorization

4
推荐指数
2
解决办法
2894
查看次数

如何知道我是否使用System.Net.Mail成功发送电子邮件

我使用C#使用System.Net.Mail发送电子邮件.

但我怎么知道电子邮件是成功发送还是失败?

.net c# email

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

使用反射向字典添加值

我有一堂课

class a
{  
    private Dictionary <int , string> m_Dict = new Dictionary<int , string>();
}
Run Code Online (Sandbox Code Playgroud)

来自其他一些组件/类需要使用反射将值添加到 m_Dict 字典!我该怎么做 ?我搜索并尝试过,但没有成功。

c# reflection

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

优雅的方法,以避免不依赖于模板类型的多个模板实例化的函数

我有一个基本类看起来像这样:

template <typename TCode, TCode SuccessVal>
class Error
{
public:
    typedef TCode code_t;

    Error(TCode code, char const *descr="Unknown Error."):
        code(code), descr(descr)
    {

    }

    ...

    char const *description() const
    {
        return descr;
    }

    ...

private:
    TCode code;
    char const *descr;
};
Run Code Online (Sandbox Code Playgroud)

它所做的就是封装某种错误代码枚举类,以便为日志记录提供更多的上下文.

现在说我有一个功能panic:

template <typename TCode, TCode SuccessVal>
void panic(Error<TCode, SuccessVal> const &e)
{
    puts("Panic!");
    printf("Unrecoverable error: %s", e.description());
    abort();
}
Run Code Online (Sandbox Code Playgroud)

使用-fdump-tree-original进行编译表明,在我的情况下,这会导致一些不同的函数,使用完全相同的代码.这是你所期望的,但可能不是你想要的.

一个显而易见的路径是一个只有消息和构造函数接收消息的基类,但我发现它相当缺乏吸引力.

我们从不使用错误代码本身,所以我们所做的一切都取决于T.我如何避免大量模板实例化编译成基本相同的代码?

另一个理想的特性是确保无论TCode是什么类型,它都可以对整数类型进行强制转换.

c++ gcc templates c++11

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

更换信用卡号码

我正在使用sql用xxxx替换信用卡号,并发现REGEX_REPLACE不能始终如一地替换所有内容.下面是我在SQL上使用的SET命令

SET COMMENTS_LONG = 
    REGEXP_REPLACE (COMMENTS_LONG,'\D[1-6]\d{3}.\d{4}.\d{4}.\d{3}(\d{1}.\d{3})?|\D[1-6]\d{12,15}|\D[1-6]\d{3}.\d{3}.?\d{3}.\d{5}', ' XXXXXXXXXXXXXXXX') 
Run Code Online (Sandbox Code Playgroud)

之前

伊丽莎白请改变地址.5430-6000-2111-1931 A.

伊丽莎白帮忙改变地址XXXXXXXXXXXXXXXX1 A.

我尝试增加X的数量,但结果是一样的.我还发现我必须在第一个X前面放一个空格,因为它似乎向左移动1个字符.

regex

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