Я использую управляемый DirectX9 с C#. Я сделал визуализацию машины cnc.DirectX 9 Затенение не линейно?
На компьютере 1 он работает отлично. круглая трубка ярко-серая с левой стороны, а штрихование линейно до темно-серого.
На компьютере 2 я получаю что-то другое (тот же код!): его просто белый слева, темно-серый справа, но его не линейный. Его еще белый до 45% трубки и темный при 55%. Затенение только между этими точками видимо ....
Любая идея ???
Похоже, я использую слишком яркий свет, но код в точности то же самое ...
/Edit Ok вот скриншот: Компьютер с проблемой является i3 + Intel бортовой графики + Win7 64Bit компьютер с правильной визуализации является старше Intel с onboardgraphic и XP 32Bit
Вот настройки для DirectX:
PresentParameters aPresentParams = new PresentParameters();
aPresentParams.Windowed = true;
aPresentParams.DeviceWindow = theControl;
aPresentParams.DeviceWindowHandle = theControl.Handle;
aPresentParams.SwapEffect = SwapEffect.Copy;
aPresentParams.EnableAutoDepthStencil = true;
aPresentParams.AutoDepthStencilFormat = DepthFormat.D16;
CreateFlags aCreateFlags = CreateFlags.HardwareVertexProcessing;
itsDevice = new Device(0, DeviceType.Hardware, theControl, aCreateFlags, aPresentParams);
itsDevice.RenderState.AntiAliasedLineEnable = true;
itsDevice.RenderState.CullMode = Cull.None;
//some materials...
itsMaterialBasic.Diffuse = Color.LightGray;
itsMaterialBasic.Ambient = Color.FromArgb(0, 80, 80, 80);
itsMaterialBasic.Specular = Color.Red;
itsMaterialBasic.SpecularSharpness = 1000.0f;
//...
itsDevice.RenderState.Lighting = true;
itsDevice.Lights[0].Type = LightType.Point;
itsDevice.Lights[0].Diffuse = Color.LightGray;
itsDevice.Lights[0].Range = 10000f;
itsDevice.Lights[0].Falloff = 10f;
itsDevice.Lights[0].Direction = new Vector3(-5, -28, 10);
itsDevice.Lights[0].Position = new Vector3(1000, 2000, 3350);
itsDevice.Lights[0].Attenuation0 = 0f;
itsDevice.Lights[0].Update();
itsDevice.Lights[0].Enabled = true;
itsDevice.RenderState.ShadeMode = ShadeMode.Phong;
itsDevice.RenderState.SpecularEnable = true;
itsDevice.RenderState.SpecularMaterialSource = ColorSource.Color1;
itsDevice.RenderState.Ambient = Color.FromArgb(110, 110, 110);
itsDevice.RenderState.AmbientMaterialSource = ColorSource.Color1;
Снимок экрана, возможно, небольшой список характеристик рендеринга и аппаратных средств на обеих машинах. – Ani
Вы пытались инициализировать ссылочный растеризатор (DeviceType.Reference) на проблемной машине? Если это устранит проблему - я бы прямо обвинил комбинацию драйверов/графических процессоров на этой машине. – Ani
Если вы используете собственные шейдеры: возможно, вы забыли скопировать некоторые файлы с шейдерным кодом? – miloszmaki