Direct3D9: после включения mipmaps мои координаты текстуры кажутся неправильными

У меня есть текстура, которая содержит символы и символы, которые я использую для наложения строк и иконок на конечную цель рендеринга. Например, чтобы создать строку, я отображаю каждый символ как один квад с соответствующими координатами текстуры.

Моя проблема начинается, когда я пытаюсь использовать mipmaps для текстуры, содержащей все мои символы. Без мипмапов все работает как задумано. После изменения только CreateTexture() вызов для создания всех уровней MIP и добавление D3DUSAGE_AUTOGENMIPMAP к параметру использования я получаю искаженный вывод только так:

введите описание изображения здесь

Текстура создается так:

CreateTexture(width, height, 0, D3DUSAGE_DYNAMIC | D3DUSAGE_AUTOGENMIPMAP, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &m_texture, nullptr);

Я использую следующую текстуру фильтрации при рендеринге:

SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);

Все, что рендерится, все еще является частью текстуры, но координаты текстуры кажутся как-то неправильными. Я попытался отладить эту проблему с PIX, но там моя цель рендеринга выглядит точно так, как задумано. (Я полагаю, PIX использует программный рендеринг, а мой графический процессор — это Nvidia Quadro с последними драйверами.)

Я действительно не знаю, где я должен продолжать искать. Мои координаты текстуры должны быть правильными, так как все работает без mipmaps. Я что-то упустил при включении mipmapping для этой текстуры? Есть идеи, что может быть причиной этого?

РЕДАКТИРОВАТЬ: я пробовал это с помощью драйвера ссылки (D3DDEVTYPE_REF вместо D3DDEVTYPE_HAL) и имеют ту же проблему, которая предполагает, что проблема не в драйвере, а в коде приложения. Тем не менее, я понятия не имею, где искать, как это работает, если я не использую mipmaps.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]