direct3d11

    0热度

    1回答

    我目前有3个纹理在我的地形项目中使用斜坡量进行混合。我通过对每个纹理进行采样,确定斜率量并基于两个纹理之间的lerp设置纹理颜色来完成此操作。这是该代码段从我的像素着色器: static const float TEX_LOW_BOUND = 0.4f; static const float TEX_HIGH_BOUND = 0.7f; ... float4 texColour; f

    0热度

    1回答

    这可能吗?这个想法是将场景渲染为虚拟摄像头(虚拟摄像头本身是微不足道的部分)。我的工作是基于DirectShow SDK的PushSource示例和D3D11游戏示例。 我知道我已经可以将DIB字节复制到IMediaStream示例提供的指针,但是有没有办法将它用作渲染目标?或者我只是更好地脱离屏幕以某种方式渲染并锁定D3D渲染目标并将其字节复制过来?如果是这样,我该如何正确初始化Direct3D

    0热度

    2回答

    如果我想清除Direct3D 11中的整个深度/模板视图,我可以轻松地拨打ID3D11DeviceContext::ClearDepthStencilView。 Direct3D 11.1增加了对清除的矩形部分的支持,使用ID3D11DeviceContext1::ClearView呈现目标的视图。 但是我看不到在Direct3D 11中只清除深度/模板视图的一部分,缺少在所需区域渲染四边形的问题

    2热度

    1回答

    当我尝试从内存加载着色器结果时,编译器会说:一个或多个参数无效。着色器编译成功,但在内存中的D3DCompileFromFile()命令似乎是不正确的,ID3DBlob接口由于某种原因得不到正确的值。 ID3DBlob* pBlobFX = NULL; ID3DBlob* pErrorBlob = NULL; hr = D3DCompileFromFile(str, NULL, NULL, N

    2热度

    1回答

    我正在研究C++和Direct3D11中的游戏引擎,现在我想在场景中添加一个可变数量的灯。到目前为止,我设法在着色器程序中添加并渲染已知和编码的计数的简单灯光。 在shader.fx: static const int LightsCount= 4; struct NF3D_LIGHT { // Members... }; cbuffer Light : register(b

    0热度

    1回答

    我目前正在尝试在HLSL中使用Blinn-Phong底纹的游戏中实现点光源。我遵循的教程链接到here。 我现在的代码是: struct VS_INPUT { float4 Position : POSITION; float3 Normal : NORMAL; float2 TexCoord : TEXCOORD; }; struct VS_OUTPUT

    3热度

    1回答

    我正在C++/D3D11下创建一个用于教授基本图形概念的简单框架。该框架需要通过简单的界面功能(例如Putpixel(x,y,r,g,b))直接操作屏幕光栅内容。 在D3D9下,这是一个相对简单的目标,它通过在堆组成一个表面的堆上分配一个表面缓冲区来实现。然后,后台缓冲区将被锁定,并且堆缓冲区的内容被传送到后台缓冲区。据我了解,在D3D11下无法直接从CPU访问后缓冲器。必须准备一个纹理资源,然后

    0热度

    1回答

    当调用IDXGISwapChain::ResizeBuffer()时,调用失败并从HRESULT 0x887a0001返回此错误,否则返回DXGI_ERROR_INVALID_CALL。 在此通话之前会发生什么,我拨打ID3D11DeviceContext::ClearState()并发布ID3D11RenderTargetView和ID3D11DepthStencilView。 上面的视图是绑定

    1热度

    1回答

    我有很多树通过在我的地形生成应用程序内使用实例呈现。我将一个实例列表与我的相机视锥体进行比较,以测试它们是否可见。如果它们可见,则将它们推送到实例向量。每一帧,如果有树可见,我更新树实例缓冲区。这工作非常好,每帧渲染树没有任何问题,但是,我重新创建实例缓冲区每帧,而不是更新它。 我最近改变了更新功能,我认为反而会更新缓冲区: void CModel::UpdateInstances(const s

    3热度

    2回答

    我有一个HLSL着色器定义了一些资源,比如一个常数缓冲: cbuffer MyCB : register(b0); 如果我编译我着色器,那么我就要能够通过反射API查询寄存器。但有没有可能更改寄存器(例如,到b3)在编译着色器blob中以类似的方式,你可以分配绑定点到资源编译的OpenGL程序?