#1 Members - Reputation: 104
Posted 25 October 2012 - 02:08 AM
my texture data is 24bit(R8G8A8),any sugguestion? thanks !
[source lang="cpp"]VInt iLevel = V_log((float)iSrcWidth)/V_log((float)2)+1;//iLevel = 7//描述一个纹理对象D3D11_TEXTURE2D_DESC textureDesc = {0};textureDesc.Width = 64;textureDesc.Height = 64;textureDesc.SampleDesc.Count = 1;textureDesc.SampleDesc.Quality = 0;textureDesc.Usage = D3D11_USAGE_DEFAULT;textureDesc.CPUAccessFlags = 0;textureDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;textureDesc.MiscFlags = 0;textureDesc.MipLevels = iLevel-1;textureDesc.ArraySize = 1; switch (uiBits) { //暂时按照32位处理 case 32: case 24: textureDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; break; default: break; }//计算每一mipmap层的数据VInt iSrcWidthBits = iSrcWidth*4;VInt iYoffset = 0;VChar* pBuffer = (VChar*)CVMem::Allocate( iSrcWidthBits*iSrcHeight, __FILE__, __LINE__ );if( pBuffer == V_NULL ){ hTextrue.ReleaseAndGetAddressOf(); return 0;}D3D11_SUBRESOURCE_DATA* InitDataArray = new D3D11_SUBRESOURCE_DATA[iLevel-1];D3D11_SUBRESOURCE_DATA Data; // // 32 16 8 4 2 1 for( VInt i = 0; i < iLevel/*-2*/; i++ ) // 0 32 48 56 60 62 { VInt iWidthTextrue = iSrcWidth>>i; VInt iHeightTextrue = iSrcHeight>>(i+1); VInt iWidthBits = iWidthTextrue*4; VChar* pBufferTmp = pBuffer; VChar* pSrcBuffer = pData + iYoffset*iSrcWidthBits; iYoffset = iYoffset + iHeightTextrue; for( VInt y = 0; y < iHeightTextrue; y++ ) { V_memcpy( pBufferTmp, pSrcBuffer, iWidthBits ); pBufferTmp += iWidthBits; pSrcBuffer += iSrcWidthBits; } Data.pSysMem = pBuffer; Data.SysMemPitch = iWidthBits ;//// Data.SysMemSlicePitch = 0; InitDataArray[i] = Data; } ThrowIfFailed( m_d3dDevice->CreateTexture2D( &textureDesc, &Data, &hTextrue) );[/source]
#2 GDNet+ - Reputation: 2372
Posted 25 October 2012 - 04:53 AM
Check out our (now available) D3D11 book: Practical Rendering and Computation with Direct3D 11
Check out my Direct3D 11 engine on CodePlex: Hieroglyph 3
Check out our free online D3D10 book: Programming Vertex, Geometry, and Pixel Shaders
Lunar Rift :: Dual-Paraboloid Mapping Article :: Parallax Occlusion Mapping Article :: Fast Silhouettes Article
#4 Members - Reputation: 104
Posted 25 October 2012 - 09:19 PM
what i want to know is
1.is this the correct way to create mipmap texture2d manually?
2.when i call drawindexed ,the ouptput window show one message ->
D3D11 WARNING: ID3D11DeviceContext::DrawIndexed: The Pixel Shader unit expects a Sampler to be set at Slot 0, but none is bound. This is perfectly valid, as a NULL Sampler maps to default Sampler state. However, the developer may not want to rely on the defaults. [ EXECUTION WARNING #352: DEVICE_DRAW_SAMPLER_NOT_SET]
#5 GDNet+ - Reputation: 2372
Posted 26 October 2012 - 04:02 PM
If it is being created properly, then you should be able to inspect the contents of the texture through Visual Studio (with the capabilities that used to be in PIX).
Check out our (now available) D3D11 book: Practical Rendering and Computation with Direct3D 11
Check out my Direct3D 11 engine on CodePlex: Hieroglyph 3
Check out our free online D3D10 book: Programming Vertex, Geometry, and Pixel Shaders
Lunar Rift :: Dual-Paraboloid Mapping Article :: Parallax Occlusion Mapping Article :: Fast Silhouettes Article
#6 Members - Reputation: 104
Posted 28 October 2012 - 01:30 AM
You create the device with the D3D11_CREATE_DEVICE_DEBUG flag, and then you can get a COM interface to the debug device. That should work in Metro style usage the same as it does in the native world. You can also check the HRESULT value that comes from the ID3D11Device::CreateTexture2D call, and that will tell you if you are successfully creating the texture object or not.
If it is being created properly, then you should be able to inspect the contents of the texture through Visual Studio (with the capabilities that used to be in PIX).
thanks ,Jason
i checked HRESULT from ID3D11Device::CreateTexture2D 、CreateShaderResourceView
It returns S_OK
could you tell me how to "inspect the contents of the texture through Visual Studio" ? i'm really a new beginner
thanks again!
#7 GDNet+ - Reputation: 2372
Posted 30 October 2012 - 08:05 PM
Sorry I couldn't help more.
Check out our (now available) D3D11 book: Practical Rendering and Computation with Direct3D 11
Check out my Direct3D 11 engine on CodePlex: Hieroglyph 3
Check out our free online D3D10 book: Programming Vertex, Geometry, and Pixel Shaders
Lunar Rift :: Dual-Paraboloid Mapping Article :: Parallax Occlusion Mapping Article :: Fast Silhouettes Article






