Articles of directx

如何从某个角度查看我的数据时,如何解决这个透明度问题?

using Microsoft.DirectX.Direct3D; using Microsoft.DirectX; 我通过设置device.RenderState.AlphaBlendEnable = true渲染3D数据 现在我的顶视图看起来像下面,外表层覆盖下面的图层,结果只有外层显示在顶视图。 我想从顶视图中查看底层。 我该怎么做呢? 是否有任何设置可以使用Microsoft.DirectX ? 更新:问题由我自己解决 device.RenderState.ZBufferWriteEnable = false;

如何检测相同的键盘按键只有一次

我正在devise一个可以检测键盘按键的键盘类,但是我仍然无法想出办法。 我的目标只是在同一按键同时按下两个动作键的同时按住或保持不动,而只执行一次动作。 例如,当我一直按住A键时,动作1只执行一次。 然后我继续按下或按住另一个键B,动作2也执行一次。 如果我同时按下A和B键,我不能执行任何操作。 在KeyboardClass头文件和cpp文件中有两个类,即KeyboardClientClass和KeyboardServerClass。 //////////////////////////////////////////////////////////////////////////////// // Filename: KeyboardClass.h //////////////////////////////////////////////////////////////////////////////// #ifndef _KEYBOARDCLASS_H_ #define _KEYBOARDCLASS_H_ //////////////////////////////////////////////////////////////////////////////// // Class prototype //////////////////////////////////////////////////////////////////////////////// class KeyboardServerClass; //////////////////////////////////////////////////////////////////////////////// // Class name: KeyboardClientClass //////////////////////////////////////////////////////////////////////////////// class KeyboardClientClass { public: KeyboardClientClass( const KeyboardServerClass& KeyboardServer ); ~KeyboardClientClass(); bool KeyIsPressed( unsigned char keycode ) const; bool KeyIsPressedOnce( unsigned char keycode ); private: unsigned char tempKeyCode; […]

如何在Windowsapp store游戏中创建一个高效的,可移动的,精灵animation的场景?

我正在用XAML创建我的第一个Windowsapp store应用程序,而且我似乎无法find适合我需求的示例。 该应用程序的基本思想是有一个大的可滚animation布,只要用户停止平移某个内容(也播放一些audio),就会懒惰地开始为视图的可见部分设置animation: 我最初的想法是使用StackPanel添加一堆自定义控件,每个自定义控件一旦可见(有一个很短的延迟),然后我有一些担心: 如果整个canvas的宽度大约为50屏幕宽度,可以在开始时加载所有内容,还是需要计划在滚动过程中进行一些延迟加载? 例如,当我在Bing Travel应用程序中select某个区域时,似乎在向最后滚动时会延迟加载图块。 由于内容被垂直拉伸了100%,并且这些animation被vector化为独立于分辨率,所以我不确定XAML( CompositionTarget )是否能够处理这个问题,或者我必须为DirectX(MonoGame或C ++)去掉闪烁。 更好的是,有没有一个Windows 8的例子,使用100%的垂直大小的GridView与自定义animation控件里面?

HLSL是否执行Shader Model LOD指令?

DX Shader Model 5.0 有一个lod指令 。 它返回“将用于纹理过滤的LOD(详细程度)”。 HLSL是否具有可以做同样的内置内在function? 我知道我可以手动评估LOD ,但我想知道是否有更好的方法。

HLSL如何处理剪辑(vector)?

我的目标是将clip()转换为1.5版本的GLSL。 我目前正在做一个基本的: if (x < 0) discard; 但是如果x不是标量,显然我不能使用“<”运算符。 所以我想知道HLSL究竟是如何处理剪辑函数中的vector(或matrix),所以我可以解释这些。 任何资源将不胜感激,因为我找不到任何有关该function的详细信息。 谢谢!

如何在DirectX11中创建和填充2D纹理数组

我已经生成了一堆ID3D11ShaderResourceView ,这是一个2D纹理,其深度图屏幕截图为我的灯光阴影。 我想把所有这些纹理,并把它们放入一个单一的2D纹理数组。 我已经看到了如何在这个问题中创建2D纹理数组的示例,但是我不知道如何将数据复制到新创建的纹理数组中。

我如何重复一个四边形纹理的一部分?

我想重复纹理的一个选定的部分成一个四边形。 我正在看这个线程 ,但是解决scheme涉及改变我的HLSL。 有没有办法做到这一点,而不改变我的着色器设置? SamplerState SampleType { Filter = MIN_MAG_MIP_LINEAR; AddressU = Wrap; AddressV = Wrap; }; float4 TexturePixelShader(PixelInputType input) : SV_Target { float4 textureColor; // Sample the pixel color from the texture using the sampler at this texture coordinate location. textureColor = shaderTexture.Sample(SampleType, input.tex); return textureColor; } 这是我目前的纹理计算: // Get desired texture coordinates. tLeft […]

以照相机眼睛为中心定向光线阴影

我正在使用这个视图和投影来绘制我的方向光影 XMFLOAT3 dir((float)pitch, (float)yaw, (float)roll); XMFLOAT3 center(0.0f, 0.0f, 0.0f); XMVECTOR lightDir = XMLoadFloat3(&dir); XMVECTOR lightPos = radius * lightDir; XMVECTOR targetPos = XMLoadFloat3(&center); XMVECTOR up = XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f); XMMATRIX V = XMMatrixLookAtLH(lightPos, targetPos, up); // This is the view // Transform bounding sphere to light space. XMFLOAT3 sphereCenterLS; XMStoreFloat3(&sphereCenterLS, XMVector3TransformCoord(targetPos, V)); // Ortho […]

重用VertexBuffer或新的VertexBuffer对象?

我现在想在directX10中渲染位图字体,而且我想尽可能高效地完成。 因为这个问题,我很难开始devise我的devise。 那么我应该重用一个VertexBuffer还是制作多个VertexBuffer对象? 目前我在程序中为每个Quad对象分配一个dynamic的VertexBuffer。 如果没有任何东西在我的屏幕上移动,我将不必映射/取消映射VertexBuffer。 对于字体,我可以在每个文本框或类似的地方分配一个缓冲区的地方实现类似的方法。 search后,我读了关于重用所有对象的单个VertexBuffer。 顶点caching也出现了。 这有什么优点/缺点,比我以前的方法快吗? 对于最后,还有其他的方法,我应该看看在屏幕上渲染许多二维四边形? 先谢谢你。

计algorithm线高度图的问题

到目前为止,我一直使用正常的平均值来计算我的顶点在我的高度图中的法线,具有良好的graphics结果(见图片),但速度非常慢。 随着图像大小的增加,计算时间呈指数增长。 所以我想尝试实现这个algorithm,但不是很好。 我试图绕过变数一点,并尝试不同的组合,但似乎没有工作。 似乎在经常出现的是这种阴影线模式,我到处都是(图片有点黑,但我希望你能看到图案)。 我最好的猜测,为什么这不工作是因为algorithm没有考虑到邻居顶点2计算(见图片,蓝色是我们正在计算正常的vertice,绿色是在algorithm中使用的,红色isnt用过的) 然而,这个algorithm似乎在很多地方出现,所以我认为它必须是可行的。 所以我不知道如果我做错了或者如果algorithm是错误的。 我希望你们中的一些人能够解决同样的问题,可以给我一些提示,以解释可能导致这个问题的原因。 这是我使用的algorithm的翻译 int cols = hmInfo.terrainWidth; int rows = hmInfo.terrainHeight; #define height(x, y) hmInfo.heightMap[(y*cols) + x].y XMVECTOR normal; for(DWORD y = 0; y < rows; ++y) { for(DWORD x = 0; x < cols; ++x) { float sx = height( x < cols-1 ? x+1 : x, […]