farkmt2official 1
farkmt2official
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Bvural41 1
Bvural41
Hikaye Ekle

[C++] Client'te Daha İyi Doku (Tekstür) Kalitesi

  • Konuyu başlatan Konuyu başlatan Cynex™
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 11
  • Görüntüleme Görüntüleme 832
Paylaşım için teşekkürler.

d3d8 Kullanılan Default senaryoda dwFilter ve 0xffff00ff color key'i koruyalım.

Kod:
bool CGraphicImageTexture::CreateFromMemoryFile(
    UINT bufSize,
    const void* c_pvBuf,
    D3DFORMAT d3dFmt,
    DWORD dwFilter)
{
    assert(ms_lpd3dDevice != nullptr);
    assert(m_lpd3dTexture == nullptr);

    static CDXTCImage image;

    if (image.LoadHeaderFromMemory(static_cast<const BYTE*>(c_pvBuf)))
    {
        return CreateDDSTexture(image, static_cast<const BYTE*>(c_pvBuf));
    }

    D3DXIMAGE_INFO imageInfo{};

    if (FAILED(D3DXCreateTextureFromFileInMemoryEx(
        ms_lpd3dDevice,
        c_pvBuf,
        bufSize,
        D3DX_DEFAULT,
        D3DX_DEFAULT,
        D3DX_DEFAULT,
        0,
        d3dFmt,
        D3DPOOL_MANAGED,
        dwFilter,
        dwFilter,
        0xffff00ff,
        &imageInfo,
        nullptr,
        &m_lpd3dTexture)))
    {
        TraceError("CreateFromMemoryFile: Cannot create texture from memory");
        return false;
    }

    m_width  = imageInfo.Width;
    m_height = imageInfo.Height;
    m_bEmpty = false;

    return true;
}

Unlock() fonksiyonunu da şu şekilde:


Kod:
void CGraphicImageTexture::Unlock(int level)
{
    if (m_lpd3dTexture)
        m_lpd3dTexture->UnlockRect(level);
}
 
Paylaşım için teşekkürler.

d3d8 Kullanılan Default senaryoda dwFilter ve 0xffff00ff color key'i koruyalım.

Kod:
bool CGraphicImageTexture::CreateFromMemoryFile(
    UINT bufSize,
    const void* c_pvBuf,
    D3DFORMAT d3dFmt,
    DWORD dwFilter)
{
    assert(ms_lpd3dDevice != nullptr);
    assert(m_lpd3dTexture == nullptr);

    static CDXTCImage image;

    if (image.LoadHeaderFromMemory(static_cast<const BYTE*>(c_pvBuf)))
    {
        return CreateDDSTexture(image, static_cast<const BYTE*>(c_pvBuf));
    }

    D3DXIMAGE_INFO imageInfo{};

    if (FAILED(D3DXCreateTextureFromFileInMemoryEx(
        ms_lpd3dDevice,
        c_pvBuf,
        bufSize,
        D3DX_DEFAULT,
        D3DX_DEFAULT,
        D3DX_DEFAULT,
        0,
        d3dFmt,
        D3DPOOL_MANAGED,
        dwFilter,
        dwFilter,
        0xffff00ff,
        &imageInfo,
        nullptr,
        &m_lpd3dTexture)))
    {
        TraceError("CreateFromMemoryFile: Cannot create texture from memory");
        return false;
    }

    m_width  = imageInfo.Width;
    m_height = imageInfo.Height;
    m_bEmpty = false;

    return true;
}

Unlock() fonksiyonunu da şu şekilde:

Kod:
void CGraphicImageTexture::Unlock(int level)
{
    if (m_lpd3dTexture)
        m_lpd3dTexture->UnlockRect(level);
}
Eline Sağlık
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst