Проблема полупрозрачности при использовании SharpDX в WinRT

У меня проблема с полупрозрачностью при использовании sharpdx для winrt. Прежде всего, мой код:

На Mainpage.xaml я добавил swapchainPanel следующим образом:

<Grid>
  <SwapChainPanel  x:Name="Panel" />
</Grid>  
// There is nothing else...

Я использовал тот же класс, что и образец из github, для рендеринга 3D-моделей:

// Initialisation part
graphicsDeviceManager = new GraphicsDeviceManager(this);
graphicsDeviceManager.PreferredGraphicsProfile = new FeatureLevel[] { FeatureLevel.Level_11_0, };
graphicsDeviceManager.DepthBufferShaderResource = true;

Все еще в том же классе при загрузке содержимого:

models = new List<Model>();
foreach (var modelName in new[] {"dude"}) 
{
   model = Content.Load<Model>(modelName); 
   BasicEffect.EnableDefaultLighting(model, true); 
   models.Add(model);
}
model = models[0]; 
// Instantiate a SpriteBatch
spriteBatch = ToDisposeContent(new SpriteBatch(GraphicsDevice)); 
base.LoadContent();

И, наконец, прорисовка:

// Clears the screen with the Color.CornflowerBlue
   GraphicsDevice.Clear(Color.CornflowerBlue);
   model.Draw(GraphicsDevice, world, view, projection);
   base.Draw(gameTime);

Все рендерится нормально, но это то, что я получил для текстурированной модели (немного сложно заметить полупрозрачность на скриншоте ...)

Текстурированная модель

Текстурированная модель

Вот что у меня с моделью без текстуры ...

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

Думаю, это результат рендеринга в альфа-режиме. Я пытался установить BlendState, но получаю некоторые исключения, так как я не использую правильные параметры.


person Lionnel Afangbedjee    schedule 09.04.2014    source источник
comment
Похоже на проблему с буфером трафарета глубины, поскольку образец ModelRendering работает, вам следует начать с него заново и постепенно проверять, что было нарушено вашими изменениями.   -  person xoofx    schedule 10.04.2014


Ответы (1)


Хорошо, после нескольких постепенных проверок, предложенных @xoofx (спасибо :))

Я обнаружил, что при использовании SharpDx возникают некоторые проблемы.

  • Образец ModelRendering поставляется с моделями .dae. Когда я запускаю этот образец, все работает нормально и нет никаких проблем.

  • Когда я загружаю свою модель, экспортированную в .dae, .fbx и .obj, транслируемость появляется с .dae, .fbx, но компилятор инструментария не может скомпилировать файлы .obj, связанные с .mtl, поскольку некоторые примитивы и теги файлов не являются t в правильном формате. (даже если я проверю совместимость с XNA в Blender при экспорте)

Итак, что я сделал, чтобы решить свою проблему?

1 - Уменьшите или убедитесь, что мой графический профиль является правильным, поскольку я использую графический процессор Intel 4000, который еще не поддерживает DirectX 11.1 ...

 graphicsDeviceManager.PreferredGraphicsProfile = new FeatureLevel[] { FeatureLevel.Level_11_0, };

2 - Удалите все, что компилятор инструментария сгенерировал в каталоге Debug. Я думаю, что компилятор не генерирует дважды файл, когда он уже существует / скомпилирован.

3 - Наконец, я заметил, что все части белого / прозрачного цвета на изображениях в моем вопросе все текстурированы. Такой цвет получается из такой комбинации:

  • Я применил текстуру к модели или части модели.
  • К сожалению, компилятор Toolkit не может найти текстуру или значение текстуры недействительно.
  • Но когда вы применяете текстуру к модели, активируется зеркальное выделение поверхности, особенно MaterialSpecular (которое вы можете увидеть в свойстве детали модели в VisualStudio. MaterialSpecular принимает 4 значения: R, G, B и A для Alpha всегда устанавливают Альфа до 1. Моя аплха иногда была 0 :().

Так что свет причудливо отражается и тадааа у нас получилась красивая полупрозрачная модель :)

Кроме того, я экспортирую свою модель в .fbx и проверяю отображение стандартного серого однотонного цвета на части, которая не текстурирована.

4 - И последнее, но не менее важное: включить молнию по умолчанию на модели.

 BasicEffect.EnableDefaultLighting(model, true); 
person Lionnel Afangbedjee    schedule 10.04.2014