Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
E-Mail-Adressen wurden anonymisiert, Passwort-Hashes wurden durch zufällige Werte ersetzt.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Insgesamt 26 Stimmen
15%
Ja, natürlich (4)
69%
Hä?? (18)
15%
Nein, zu aufwändig! (4)
Anonymous
unregistriert
Sheddex
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
#region Using directives #if DEBUG using NUnit.Framework; #endif using System; using System.Collections.Generic; using System.Text; using RocketCommander.Graphics; using Microsoft.DirectX.Direct3D; using RocketCommander.Helpers; using RocketCommander.Game; using Texture = RocketCommander.Graphics.Texture; using Microsoft.DirectX; #endregion namespace RocketCommander.Shaders { class SimpleShader : IGraphicObject { #region Variables Effect effect = null; #endregion #region Constructor public SimpleShader() { effect = Effect.FromFile(GraphicForm.DirectXDevice, Directories.ShadersDirectory + "\\SimpleShader.fx", null, null, ShaderFlags.None, null); GraphicForm.AddGraphicObject(this); } // SimpleShader() #endregion #region IGraphicObject Member public void OnResetDevice() { } public void OnLostDevice() { } #endregion #region IDisposable Member public void Dispose() { if (effect != null) effect.Dispose(); } #endregion #region Render mesh public void RenderMesh(Mesh someMesh, Texture texture) { GraphicForm.WorldMatrix = Matrix.Scaling(50, 50, 50); effect.SetValue("worldViewProj", GraphicForm.WorldMatrix * GraphicForm.ViewMatrix * GraphicForm.ProjectionMatrix); effect.SetValue("world", GraphicForm.WorldMatrix); effect.SetValue("viewInverse", GraphicForm.InverseViewMatrix); effect.SetValue("lightDir", new Vector4( GraphicForm.LightDir.X, GraphicForm.LightDir.Y, GraphicForm.LightDir.Z, 1.0f)); effect.SetValue("diffuseTexture", texture.D3DTexture); effect.Technique = "SpecularPerPixel"; int passes = effect.Begin(FX.None); for (int pass = 0; pass < passes; pass++) { effect.BeginPass(pass); someMesh.DrawSubset(0); effect.EndPass(); } // for effect.End(); } // RenderMesh(someMesh, texture) #endregion #region Unit Testing #if DEBUG [Test] public static void TestSimpleShader() { SimpleShader shader = null; Mesh teapot = null; Texture testTexture = null; GameForm.StartTest("Test SimpleShader.fx", delegate { shader = new SimpleShader(); teapot = Mesh.Teapot(GraphicForm.DirectXDevice); Model.GenerateNormalsAndTangentsIfNotPresent(ref teapot, false); testTexture = new Texture("Marble.jpg"); }, delegate { shader.RenderMesh(teapot, testTexture); }); } // TestSimpleShader #endif #endregion } // class SimpleShader } // namespace RocketCommander.Shaders |
Alter Hase
Zitat von »"Helmut"«
In VC ab ca Proffesional wird sowas auch direkt von der IDE unterstützt.
Anonymous
unregistriert
Alter Hase
Zitat von »"nix da"«
Für was braucht man sowas?! Wenn ich Programme teste, dann aber per Hand und bis sie verrecken.
Werbeanzeige