Tag: shader

使用SlimDX设置常量缓冲区

我一直在关注Microsoft Direct3D11教程,但使用的是C#和SlimDX。 我正在尝试设置常量缓冲区但不确定如何创建或设置它。 我只是尝试使用常量缓冲区设置三个矩阵(世界,视图和投影),但我在每个阶段都在苦苦挣扎,创建,数据输入并将其传递给着色器。 MSDN上的HLSL(我基本上复制了)是: cbuffer ConstantBuffer : register( b0 ) { matrix World; matrix View; matrix Projection; } MSDN上的C ++代码是: ID3D11Buffer* g_pConstantBuffer = NULL; XMMATRIX g_World; XMMATRIX g_View; XMMATRIX g_Projection; //set up the constant buffer D3D11_BUFFER_DESC bd; ZeroMemory( &bd, sizeof(bd) ); bd.Usage = D3D11_USAGE_DEFAULT; bd.ByteWidth = sizeof(ConstantBuffer); bd.BindFlags = D3D11_BIND_CONSTANT_BUFFER; bd.CPUAccessFlags = 0; if( […]

在旋转后,查找线/点左侧的哪一点

我目前正试图在团结中编写一个着色器,如果两个国家不属于同一个玩家(视觉辅助以查看您的边界),则在风险游戏中围绕各国绘制三角形图案。 现在,我遇到了使着色器正确设置国家的问题。 它始终将国家0设置为左侧,将国家1设置为右侧 – 国家0和1以编程方式设置。 线条边界可以在0到359度之间。 我如何找到0和1国家是我在线的中点左右两点画一个点,一个.01f,一个.1f和一个1f远离每个方向的中点,然后围绕中点旋转它们适当的位置。 之后,我做了一个奇怪的检查,看看这些点是在每个国家的内部还是外部,并比较重量结果(最接近得到3分,中间得到2,最远得到1,以防万一有人建立一个真正搞砸了面向另一个国家的国家)。 在我的测试图中,接近等切的八边形,边框正确显示(在我将角度超过90且小于或等于180的情况下颠倒了国家0和1的位置之后)。 工作没有缺陷,但在其他地图中它不能很好地工作。 除了国家分配之外的所有东西都运作良好,所以我很好奇是否有人知道更好的方法来找出哪个点是左边还是一个细线,或者更好的概念方法来处理这个问题。 上面的情况基本上就是在我做的时候,红色是左边是蓝色,然后我只是检查3个不同的点,然后权衡左边和权利发现偶数/ odding它到适当的国家(一个在+/-。 01,另一个在+/- .1和第三个1,在偶数/奇数舍入问题的情况下接近)。 然后,如果我发现国家A在右边,我会翻转它们,因为它是根据我绘制的角度在左边。 (我的着色器在第一个和第二个左边渲染,因此为什么我这样做)。