// texture TextureHandle Gfx_Texture_Load(RenderDevice* dev, const char* filename, TextureType::type type) { (void)type; // TODO ID3D11Texture2D* tex_dx11 = NULL; D3DX11_IMAGE_LOAD_INFO image_load_info; D3D_CALL( D3DX11CreateTextureFromFileA(dev->native, filename, &image_load_info, NULL, (ID3D11Resource**)&tex_dx11, NULL) ); if( tex_dx11 == NULL ) return InvalidResourceHandle(); D3D11_TEXTURE2D_DESC desc; tex_dx11->GetDesc(&desc); TextureDescr tex = TextureDescr::create_2D(desc.Width, desc.Height, dx11_convert<PixelFormat::type>(desc.Format), TextureType::Tex2D); R_ASSERT( tex.format!=PixelFormat::Unknown ); TextureDX11 res; res.desc = tex; res.native2D = tex_dx11; res.srv = create_srv(dev->native, tex_dx11); return dev->resources.textures.push(res); }
int main(int ac, char **av) { t_env e; struct timeval tv; my_init_dlist(&(sdata.user)); my_init_dchan(&(sdata.chan)); init_env(&e); parser(&e, ac, av); create_srv(&e, &tv); loop(&e); return (0); }
TextureHandle Gfx_Texture_Create(RenderDevice* dev, const TextureDescr& tex, const void* data, size_t /*size*/) { ID3D11Texture2D* tex_dx11 = NULL; DXGI_FORMAT format = dx11_convert<DXGI_FORMAT>(tex.format); D3D11_TEXTURE2D_DESC desc = CD3D11_TEXTURE2D_DESC(format, tex.width, tex.height, 1, 1); UINT pitch = (tex.width * PixelFormat::bits_per_pixel(tex.format))/8; D3D11_SUBRESOURCE_DATA initial_data; initial_data.pSysMem = data; initial_data.SysMemPitch = pitch; initial_data.SysMemSlicePitch = pitch * tex.height; D3D_CALL(dev->native->CreateTexture2D(&desc, data?&initial_data:NULL, &tex_dx11)); TextureDX11 res; res.desc = tex; res.native2D = tex_dx11; res.srv = create_srv(dev->native, tex_dx11); return dev->resources.textures.push(res); }