| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2133 人关注过本帖
标题:Directx11给立方体上纹理出现上不了现象(图形为黑色),不知道什么原因,麻 ...
只看楼主 加入收藏
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
结帖率:84.21%
收藏
 问题点数:0 回复次数:5 
Directx11给立方体上纹理出现上不了现象(图形为黑色),不知道什么原因,麻烦高手帮忙看下
这是通过龙书的Box代码改的。
void BoxApp::DrawScene()
{
md3dImmediateContext->ClearRenderTargetView(mRenderTargetView, reinterpret_cast<const float*>(&Colors::LightSteelBlue));
md3dImmediateContext->ClearDepthStencilView(mDepthStencilView, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);

md3dImmediateContext->IASetInputLayout(mInputLayout);
md3dImmediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);

UINT stride = sizeof(Vertex);
UINT offset = 0;
md3dImmediateContext->IASetVertexBuffers(0, 1, &mBoxVB, &stride, &offset);
md3dImmediateContext->IASetIndexBuffer(mBoxIB, DXGI_FORMAT_R32_UINT, 0);

// Set constants
XMMATRIX world = XMLoadFloat4x4(&mWorld);
XMMATRIX view = XMLoadFloat4x4(&mView);
XMMATRIX proj = XMLoadFloat4x4(&mProj);
XMMATRIX worldViewProj = world * view*proj;
XMMATRIX I = XMMatrixIdentity();

mfxWorldViewProj->SetMatrix(reinterpret_cast<float*>(&worldViewProj));
mfxWorld->SetMatrix(reinterpret_cast<float*>(&world));
mfxTranform->SetMatrix(reinterpret_cast<float*>(&I));
D3DX11_TECHNIQUE_DESC techDesc;
mTech->GetDesc(&techDesc);

mfxDiffuseMapVar = mFX->GetVariableByName("gDiffuseMap")->AsShaderResource();
ID3D11ShaderResourceView* mDiffuseMapSRV;//获得纹理视图
HR(D3DX11CreateShaderResourceViewFromFile(md3dDevice,L"darkbrickdxt1.dds", 0, 0, &mDiffuseMapSRV, 0));

mfxDiffuseMapVar->SetResource(mDiffuseMapSRV);
for (UINT p = 0; p < techDesc.Passes; ++p)
{

mTech->GetPassByIndex(p)->Apply(0, md3dImmediateContext);

// 36 indices for the box.
md3dImmediateContext->DrawIndexed(36, 0, 0);
}

HR(mSwapChain->Present(0, 0));
}
//这上面是做图形的一个函数代码,其余变量都已经设置好了

下面是.fx代码
图片附件: 游客没有浏览图片的权限,请 登录注册


Texture2D gDiffuse;

SamplerState samAnisotropic
{
Filter = MIN_MAG_MIP_LINEAR;
MaxAnisotropy=4;
AddressU = WRAP;
AddressV = WRAP;
};
cbuffer cbPerObject
{
float4x4 gWorldViewProj;
float4x4 gTexTranform;//动态对纹理坐标进行变换
float4x4 gWorld;
};

struct VertexIn
{
float3 PosL  : POSITION;
float2 Tex : TEXCOORD;
};

struct VertexOut
{
float4 PosH  : SV_POSITION;
float2 Tex : TEXCOORD;
};

VertexOut VS(VertexIn vin)
{
VertexOut vout;

// Transform to homogeneous clip space.
vout.PosH = mul(float4(vin.PosL, 1.0f), gWorldViewProj);//通过更改世界矩阵来将局部坐标更换到世界区域

// Just pass vertex color into the pixel shader.
vout.Tex = mul(float4(vin.Tex, 0.0f, 1.0f), gTexTranform).xy;//若不需要变换,gTexTranform为I

return vout;
}

float4 PS(VertexOut pin) : SV_Target
{
float4 texcolor = gDiffuse.Sample(samAnisotropic,pin.Tex);//插值
return texcolor;
}

technique11 ColorTech
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS()));
}
}

我看了好久也没找出原因,因为第一次画,看了龙书来做的。
搜索更多相关主题的帖子: 纹理 图形 原因 float world 
2018-05-21 20:17
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
收藏
得分:0 
好晕,第一次尝试贴纹理,如果没空的话提一些可能出错的原因也好。。。
2018-05-21 20:18
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
收藏
得分:0 
啊啊!!
2018-05-21 21:41
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
收藏
得分:0 
我的天,上不了色,.fx中的texcolor这个颜色上不了,不知道怎么搞,啊啊!!
2018-05-21 22:42
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
收藏
得分:0 
我的天,上不了色,.fx中的texcolor这个颜色上不了,不知道怎么搞,啊啊
2018-05-21 22:57
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
收藏
得分:0 
散了散了,mfxDiffuseMapVar = mFX->GetVariableByName("gDiffuseMap")->AsShaderResource();中的gDiffuseMap改为gDiffuse,就ojbk了,妈耶
2018-05-21 23:09
快速回复:Directx11给立方体上纹理出现上不了现象(图形为黑色),不知道什么原 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.063855 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved