С помощью библиотеки 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>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы