Карта высоты местности — C++/Vertex Shader имеет разные значения

Я работал на местности и должен был полностью остановиться. Я программирую на C++, DirectX9 и HLSL для создания ландшафта, но я также использую карты высот в формате BMP. Я загружаю информацию с карты высот как на стороне C++, так и на стороне шейдера. На стороне C++ я использую D3DXCreateTextureFromFile и поверхности (D3DXSaveSurfaceToFile) для загрузки информации, тогда как на стороне шейдера я использую tex2Dlod для загрузки информации о вершинах ландшафта. Эти два получают разные значения из карты высот. После дальнейших исследований я обнаружил, что функция tex2Dlod использует карты MIP (до сих пор не понимаю их полностью) для загрузки информации.

Кто-нибудь знает способ, как совместить два числа? Если вам нужна дополнительная информация (цифры, изображения или что-то еще), просто дайте мне знать!

Спасибо!


person josh4263    schedule 05.03.2016    source источник


Ответы (1)


Первый вопрос: почему вы придерживаетесь DX9, по какой причине? Я бы понял хотя бы DX10. Можете ли вы показать мне код HLSL?

tex2Dlod — это функция выборки текстуры, которая принимает два параметра. 1. sampler2D 2. float4(текстурные координаты).

На самом деле tex2dlod — это функция, которая выполняет mip-мэппинг текстуры (детализацию текстур) и смещение текселей. Но полностью я не понял, где проблема? Не могли бы вы быть более конкретным?

И, кстати, вся функция поддерживается только в шейдерной модели 3.0 по крайней мере.

person Achiko Mezvrishvili    schedule 05.03.2016