当前位置: 首页>>代码示例>>C++>>正文


C++ texture::create方法代码示例

本文整理汇总了C++中texture::create方法的典型用法代码示例。如果您正苦于以下问题:C++ texture::create方法的具体用法?C++ texture::create怎么用?C++ texture::create使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在texture的用法示例。


在下文中一共展示了texture::create方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: stb_to_texture

        void stb_to_texture(ID3D11Device* device, LPCSTR filename, texture& t)
        {
            bool is_hdr = std::string(filename).find(".hdr") != std::string::npos;
            bool is_jpg = std::string(filename).find(".jpg") != std::string::npos;

            D3D11_TEXTURE2D_DESC tex_desc;
            ZeroMemory(&tex_desc, sizeof(tex_desc));

            D3D11_SUBRESOURCE_DATA subdata;
            ZeroMemory(&subdata, sizeof(subdata));

            int width, height, nc;

            unsigned char* ldr_data = nullptr;
            float* hdr_data = nullptr;

            if (!is_hdr)
            {
                ldr_data = stbi_load(filename, &width, &height, &nc, 4);
                subdata.SysMemPitch = width * 4;
                subdata.pSysMem = ldr_data;

                if (is_jpg)
                    tex_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;
                else
                    // TODO: Remap to SRGB later when throwing out D3DX
                    tex_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;

                // TODO: Need to create mipmaps
            }
            else
            {
                hdr_data = stbi_loadf(filename, &width, &height, &nc, 4);
                subdata.SysMemPitch = width * 4 * 4;
                subdata.pSysMem = hdr_data;
                tex_desc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
            }

            if (!ldr_data && !hdr_data)
            {
                tstring error = L"can't load";

                if (stbi_failure_reason())
                    error = to_tstring(std::string(stbi_failure_reason()));

                throw exception(tstring(L"stbi: ") + error);
            }

            tex_desc.Width = width;
            tex_desc.Height = height;
            tex_desc.MipLevels = 1;
            tex_desc.ArraySize = 1;
            tex_desc.SampleDesc.Count = 1;
            tex_desc.SampleDesc.Quality = 0;
            tex_desc.Usage = D3D11_USAGE_DEFAULT;
            tex_desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
            tex_desc.CPUAccessFlags = 0;
            tex_desc.MiscFlags = 0;

            t.create(device, tex_desc, &subdata);

            if (is_hdr)
                stbi_image_free(hdr_data);
            else
                stbi_image_free(ldr_data);
        }
开发者ID:FrostedPenguin,项目名称:dirtchamber,代码行数:66,代码来源:texture_cache.cpp


注:本文中的texture::create方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。