Вопрос

В данный момент я работаю с DX9/SM3 и документацией MSDN по HLSL-сэмплеры Кажется, ему очень не хватает объяснения того, как использовать различные типы сэмплеров.Что еще хуже, они пытаются охватить DX9 и DX10 в одной статье, поэтому смешивают все ключевые слова:

пробоотборник Имя = Тип пробоотборника { Текстура = <текстура_переменная>; [имя_государства = значение_состояния;] ... };

...

Тип пробоотборника

[in] Тип сэмплера, который может быть одним из следующих: пробоотборник, сэмплер1D, сэмплер2D, сэмплер3D, сэмплерКУБ, sampler_state, Сэмплерстате.

Различия между Direct3D 9 и Direct3D 10:

Direct3D 10 поддерживает один дополнительный тип сэмплера: SamplerComparisonState.

У меня такое ощущение, что вопреки этому описанию, SamplerState только DX10.Практически весь код, который я вижу, использует sampler_state для Тип пробоотборника.Быстрый пример из BasicHLSL (DX9):

sampler MeshTextureSampler =
sampler_state
{
    Texture = <g_MeshTexture>;
    MipFilter = LINEAR;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
};

Почему существуют все разные _SamplerType_ и когда вы будете использовать, скажем, sampler или sampler2D вместо sampler_state?В любом случае вам необходимо указать явное значение при выборке, например. tex2D, texCUBE, и так, что здесь происходит?

Это было полезно?

Решение

Ты прав.Это очень странно.

Кажется, что документация по синтаксису DirectX 9 неверна.Я ни в коем случае не являюсь экспертом ни в HLSL, ни в DirectX, но я всегда видел, чтобы семплеры в DirectX 9 объявлялись следующим образом:

SamplerType Name = sampler_state{   Texture = <texture_variable>;   [state_name = state_value;]   ... }; 

Возможно, я что-то упускаю, но для меня приведенный выше синтаксис имеет больше смысла, чем тот, который указан в документации.Вы объявляете сэмплер заданного типа и указываете его состояние.

ОБНОВЛЯТЬ: Видимо это неправильно.я начал тема на официальном форуме и до сих пор я получил только подтверждение того, что это неправильно.Я также отправил письмо непосредственно команде DirectX.Просто на всякий случай.

Другие советы

Имя семплера = SamplerType { Текстура = ;[имя_состояния = значение_состояния;]};

Верно!Декларация действительна только для эффектов.

РЕДАКТИРОВАТЬ:официальные форумы находятся на MSDN.Вы можете опубликовать предложение или ошибку, используя «Дополнения сообщества».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top