С помощью библиотеки DirectX написал программу для 3D модели сферы, но выдаёт ошибку - C#
Формулировка задачи:
Здравствуйте!
С помощью библиотеки DirectX написал программу для 3D модели сферы, но выдаёт ошибку:
"Сборка для смешанного режима построена на основе версии "v1.1.4322" среды выполнения и не может быть загружена в среде выполнения 4.0 без дополнительных конфигурационных данных."
Не могу понять в чём проблема, нашёл похожую вот по этому адресу:
http://stackoverflow.com/questions/1...-app-dont-hunt
Но и этой помощи оказалось маловато, не понял что и к чему нужно.
using System; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; using System.Diagnostics; namespace Kursovay_rabota1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private Device Sphere; Mesh SphereMesh; Material SphereMaterial; public bool InitializeGraphics() { PresentParameters parms = new PresentParameters(); parms.Windowed = true; parms.SwapEffect = SwapEffect.Discard; parms.EnableAutoDepthStencil = true; parms.AutoDepthStencilFormat = DepthFormat.D16; try { Sphere = new Device(0, DeviceType.Hardware, pic3d, CreateFlags.HardwareVertexProcessing, parms); Debug.WriteLine("Hardware, HardwareVertexProcessing"); } catch { } if (Sphere == null) { try { Sphere = new Device(0, DeviceType.Hardware, pic3d, CreateFlags.SoftwareVertexProcessing, parms); Debug.WriteLine("Hardware, SoftwareVertexProcessing"); } catch { } } if (Sphere == null) { try { Sphere = new Device(0, DeviceType.Reference, pic3d, CreateFlags.SoftwareVertexProcessing, parms); Debug.WriteLine("Reference, SoftwareVertexProcessing"); } catch (Exception ex) { MessageBox.Show("Error initializing Direct3D\n\n" + ex.Message, "Direct3D Error", MessageBoxButtons.OK); return false; } } // D3D Освещения. Sphere.RenderState.Lighting = true; // Z-буфер. Sphere.RenderState.ZBufferEnable = true; Sphere.RenderState.FillMode = FillMode.Solid; // Метод описания сферы. CreateSphere(); // Метод текстур. SetupMaterial(); // Метод освещения. SetupLights(); return true; } public void CreateSphere() { SphereMesh = Mesh.Torus(Sphere, 1, 2, 40, 40); //Параметры Тора. SphereMaterial = new Material(); SphereMaterial.Ambient = Color.White; SphereMaterial.Diffuse = Color.DarkGreen; } // Метод отрисовки сферы. public void Render() { // Отчистка буфера. Sphere.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1, 0); // Создание сцены. Sphere.BeginScene(); // Метод создания текстур. SetupMatrices(); // Отрисовка и вращение сферы. Sphere.Transform.World = Matrix.Translation (0, 1, 2); Sphere.Material = SphereMaterial; SphereMesh.DrawSubset(0); // Окончание сцены. Sphere.EndScene(); Sphere.Present(); } private void SetupMatrices() { Sphere.Transform.World = Matrix.Identity; const int Speed = 4000; //Скорость вращения. double a = Environment.TickCount * (2 * Math.PI) / Speed; const float b = 10; float x = (float)(b * Math.Cos(a)); //поворот по оси x. float y = (float)(b * Math.Sin(a-1)); //поворот по оси y. float z = (float)(b * Math.Sin(a)); //поворот по оси z. Sphere.Transform.View = Matrix.LookAtLH( new Vector3(x, y, z), new Vector3(1, 0, 0), new Vector3(0, 1, 0)); Sphere.Transform.Projection = Matrix.PerspectiveFovLH((float)(Math.PI / 4), 1, 1, 100); } // Метод для создания текстур. private void SetupMaterial() { Material mat = new Material(); mat.Diffuse = Color.Green; Sphere.Material = mat; } // Метод для создания освещения. private void SetupLights() { Sphere.Lights[0].Type = LightType.Directional; Sphere.Lights[0].DiffuseColor = new ColorValue(64, 64, 64); Sphere.Lights[0].AmbientColor = new ColorValue(32, 32, 32); Sphere.Lights[0].Direction = new Vector3(0, -1, 0); Sphere.Lights[0].Enabled = true; Sphere.Lights[1].Type = LightType.Directional; Sphere.Lights[1].DiffuseColor = new ColorValue(192, 192, 192); Sphere.Lights[1].AmbientColor = new ColorValue(64, 64, 64); Sphere.Lights[1].Direction = new Vector3(0, 0, 1); Sphere.Lights[1].Enabled = true; } private void Form1_Load(object sender, EventArgs e) { } } }
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace Kursovay_rabota1 { partial class Program { /// <summary> /// Главная точка входа для приложения. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); // Создание формы. Form1 frm = new Form1(); // Инициализация Direct3D. if (frm.InitializeGraphics()) { frm.Show(); while (frm.Created) { frm.Render(); Application.DoEvents(); } } } } }
Простите, тему можно удалять) нашёл подобную тут же)))
Решение задачи: «С помощью библиотеки DirectX написал программу для 3D модели сферы, но выдаёт ошибку»
textual
Листинг программы
<?xml version="1.0"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> </configuration>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д