Laden...
Avatar #avatar-2293.gif
Ayke myCSharp.de - Member
Grafikdesigner, Programmierer Hamburg Dabei seit 28.06.2006 643 Beiträge
Benutzerbeschreibung

Forenbeiträge von Ayke Ingesamt 643 Beiträge

19.11.2015 - 09:26 Uhr

ja frech geht die Welt zugrunde. Danke für 99.

19.11.2015 - 09:16 Uhr

Suche nach einer Webseite wo Benutzer eine Anfrage nach Ihren wünschen posten können. Daraufhin erstellen Grafikdesigner die gewünschten Bilder. Am Ende sucht der Gewinner das beste Bild aus. Der Ersteller dieses Bildes bekommt einen geldlichen Betrag.

23.04.2015 - 03:41 Uhr

Hallo

so eine Freelancer Tätigkeit kann schnell mal trist werden. Ich suche ein mal Leute die Lust haben Sich auszutauschen. Das Fehlt doch meist völlig weg bis zum Wochenende.

Ich habe grade ein Teamspeakserver.

Muss keiner besonders Kommunikativ oder Aktiv sein. Es geht nur um dieses nette Gefühl von Gemeinschaftlichkeit. Wenn jemand grade keine Lust hat zu reden, dann redet er einfach nicht. Wie im Normalen leben. Also alles ganz locker. Vielleicht kann man sich auch mal gegenseitig helfen.
Ein Caffe streamen unsw. Vielleicht möchte jemand in wichtige Projekte einsteigen.

Sollte es Interesse gaben dann schreibt doch einfach ein kurzes OK. Werde dann die Teamspeakdaten freigeben.

😁 👍

Ich selber entwickle seit 9 Jahren und bin selbständig. Alles weitere aber gern ohne Wichtigtuerei direkt. Kurze PM oder OK als Beitrag wäre bei Interesse wünschenswert.

02.06.2014 - 04:45 Uhr

Suche nach einen Opensource Code Opfuscator. Also die Codezeichenfolgen vor der compilieren anpasst. Kennt da jemand was ?

19.03.2013 - 18:08 Uhr

Ahmm ein paar Kleinigkeiten könnte ich so abändern, was eingentlich offentsichtlich sein müsste 😃 Ich wollte dies glaub ich nicht direkt in meiner Entity Klasse machen, wofür es eingentlich keinen Grund gibt. Ich muss auch auf Events von von GPS reagieren und Eigenschaften nach den feuern zuweisen. Das leuft dann aber schon. Danke erstmal.

19.03.2013 - 17:44 Uhr

Hey Christian,

habe meine Frage im ersten Post nicht ganz klar formuliert.
Schau dir bitte mein vorletzten Post an. Mir geht es darum das meine Klassen mehrere Zuständigkeiten haben (was ja nicht sein sollte) und deshalb mir kein passender Name für Sie einfällt.

Einmal reagieren die Klassen auf Ereignisse und gleichzeitig initialisieren und weisen verschiedene Eigenschaften von anderen Klassen zu. Ich glaube so etwas ist schwer nachzuvollziehen ohne Quellcode, deshalb habe ich es mit einen Beispiel versucht.

19.03.2013 - 16:51 Uhr

Da es ein öffentliches Projekt wird muss ich das sehr ordentlich halten,
sonst würde ich die Klassen einfach SpaziergangManager... nennen.
Ich bleib ich bei meiner Event-Idee.

19.03.2013 - 02:02 Uhr

Hey Peter,

schön das ich so Kompetente Hilfe bekomme.

Ich versuche hier soviel Deutsch wie möglich zu verwenden, denn sonst muss man sich schon genug mit Englisch rumschlagen.

Es geht um eine Klasse die Informationen überwacht und bei Eintreffen eines Ereignisses, einen Verlauf dazu erstellt und Eigenschaften wie Datum, Ort speichert.
GPS wird zu Laufzeit initialisiert und hat Events die mich über weitere Informationen zum Verlauf versorgt.

public class Spaziergang : IEntity
{
	public string WoWilstDuHin { get; set; }
        public bool SpaziergangAktiv { get; set; }
	public GPS MeinGPS { get; set; }
	public Collection<Verlauf> Verläufe { get; set; }
}

public class Verlauf : IEntity
{
	public DateTime StartDatum { get; set; }
	public DateTime EndDatum { get; set; }
	public bool AllesGutGegangen { get; set; }
	public virtual Spaziergang { get; set; }
}

Ich habe jetzt 2 Repository's Spaziergänge und Verläufe.
Der Benutzer fügt neue Spaziergänge hinzu auf die geprüft werden soll.
Eine Klasse "SpaziergängeInitialisierer" macht ungefähr sowas (ist in Notepad geschrieben und soll nur zum Verständnis dienen)

public class SpaziergängeInitialisierer
{
	public SpaziergängeInitialisierer(Repository<Spaziergang> spaziergänge)
	{   
	    InitialisierereAlle(spaziergänge);
	    
		spaziergänge.CollectionChanged = (sender, e) => { 
			if (e.Event ==  NotifyCollectionChangedAction.Add)
			    InitialisierereEinen((Spaziergang)sender);
		};
		spaziergänge.PropertyChanged = (sender, e) => { 
			if (e.PropertyName ==  "SpaziergangAktiv")
			   ((Spaziergang)sender).MeinGPS.Activ = ((Spaziergang)sender).SpaziergangAktiv;
		};
	}
	
	private static void InitialisierereAlle(Repository<Spaziergang> spaziergänge)
	{
		foreach (var spaziergang in spaziergänge)
		{
			InitialisierereEinen(spaziergang);
		}
	}
	
	private static void InitialisierereEinen(Spaziergang spaziergang)
	{
		spaziergang.MeinGPS = new GPS();
		spaziergang.MeinGPS.Ort = spaziergang.WoWilstDuHin;
		spaziergang.MeinGPS.Activ = spaziergang.SpaziergangAktiv;
	}
}

public class VerlaufInitialisierer
{
	public VerlaufInitialisierer(Repository<Spaziergang> spaziergänge)
	{
		foreach (var spaziergang in spaziergänge)
		{
			spaziergang.MeinGPS.OrtErreicht = (sender, e) = {};
			//unsw................................................................
		}
	}
}

Ich hoffe damit kann man mehr anfangen.

18.03.2013 - 23:19 Uhr

Hallo Leute,

ich möchte gerne wissen ob es sinnvoll ist das Schreiben auf Entity bzw auf Daten zu entkoppeln.
Hab zum Beispiel folgendes Szenario :

class ProcessDaten : IEntity
{
	public int Id { get; set; }
	[NotMapped]
	public Process MeinProcess { get; set; }
	public bool CanBeEnabled { get; set; }
	//...............
}

Vom GUI Thread wird jetzt alles initialisiert, bis auf Informationen die nur zu Laufzeit bekannt sind.
Nun habe ich eine Klasse die sich darum kümmern soll.

ProcessDatenInitialisierer (auf eng) wollte ich Sie nennen, auch wenn der Aufgaben-Bereich nicht so ganz klar ist.
Sie initialisiert verschiedene Eigenschaften und tut das auch für jede neue Entity innerhalb meiner Repository automatisch.
Schon könnte ich Sie ProcessDatenInitialisiererAndBinder nennen. Außerdem passieren manche Zuweisungen nicht aus den GUI Thread.
Ich könnte jetzt den Dispatcher übergeben um das zu lösen. Jetzt hab ich mir überlegt Events zu verwenden,
um in einer anderen Klasse Objekte zu erstellen und zuzuweisen. Wirkt irgendwie alles dirty oder ?

16.03.2013 - 22:52 Uhr

Hallo Abt,

das weiss ich auch nicht mehr... Hätte ich mir mal die Definition angeschaut.
Proxy an und es funktioniert wie erwartet danke.

16.03.2013 - 22:03 Uhr

SQL Server CE, Entity Framework

Hallo liebe Community,

habe ein Problem mit den Entity Framework.
Ich habe 2 Tabellen angenommen Sie heißen: Firmen, Angestellte

Die einzelne Zeile innerhalb von Firma hat folgende Eigenschaften:

public string FirmenName { get; set; }
public virtual ICollection<Angesteller> Angestellte { get; set; } <- NULL nach Programm neustart.
[COLOR]public virtual ICollection<Angesteller> Angestellte ist null nach Programm neustart[/COLOR]

Die einzelne Zeile innerhalb von Angestellter hat folgende Eigenschaften:

public string Vorname  { get; set; }
public string Nachname  { get; set; }
public virtual Firma Firma { get; set; }

Meine Config

            DbContext.Configuration.ProxyCreationEnabled = false;
            DbContext.Configuration.LazyLoadingEnabled = true;
            DbContext.Configuration.ValidateOnSaveEnabled = false;

Jetzt erstelle ich ein Frima Objekt und initialisiere meine Angestellte Collection.
Füge der Angestellte Collection Angestellter Objekte hinzu und speicher das ganze mit SaveChanges.

Super, meine Angestellte Tabelle mit allen Angestellten hat jetzt Einträge die auf Frima verweisen.

Ich starte mein Programm neu und schaue mir die erste Firma innerhalb der Firmen an.
Eingentlich sollte meine ICollection<Angesteller> Angestellte Variable jetzte auf alle Angestellten der Frima zeigen.
Leider ist die Collection Null obwohl innerhalb Angestellte Tabelle diese Einträge vorhanden sind und einen korrekten Verweis haben.

25.12.2012 - 23:43 Uhr

Anderes encoding benutzen ?

25.12.2012 - 18:18 Uhr

Ich hab vor einiger Zeit etwas ähnliches gemacht. Ich glaube du musst die Assembly nur ins Appdomain laden. Dann mit AssemblyResolve auflösen. Das funktioniert bei jeder .NET Bibliothek egal ob Webforms oder sonst was. Ich habe Mono.Cecil benutzt weil ich noch die Assembly modifiziert habe. Wenn du aber Appdomain und Plugin in google eingibst findest auch einen einfachen Weg.

28.10.2012 - 20:27 Uhr

Hey,
ich wollte einfach mal dazu animieren, ein paar lustige oder auch interessante Links zu posten. Wikipedia, Bilder, Videos etc. was euch grade einfällt, mir fällt grade nähmlich selber nix ein und hab auch keine Glotze ^^

25.08.2012 - 06:40 Uhr

entweder warst du echt hacke oder irgend jemand muss sehr langweilig sein ^^

10.06.2012 - 18:29 Uhr

dank dir talla

10.06.2012 - 17:50 Uhr

Hi,

ich brauche eine speziellen Button.

Hab schon länger nix mehr mit WPF gemacht, dass heißt
ich kenne schon meine Möglichkeiten, weiß aber nicht mehr welche zu meinen
Anforderungen am besten passen. Brauch nur nochmal eine Bestätigung ?

Mein Button muss folgende Eigenschaften erfüllen.

1. Es gibt 4 verschiedene Styles die sich durch Farben unterscheiden.
2. Es wird ein Bild angezeigt.
3. Natürlich Text aber mehrmals und der sich unabhängig von einander ändert.
**Es wird eine Auswahl geben was diese Buttons anzeigen werden. **
4. Spielt in diesen Kontext glaub ich keine Rolle, aber der Button wird später als ein Drag and Drop element verwendet.
Auserdem hat er noch verschiedene Eigenschaften wie auf ein Klick reagiert wird.

Mit einer Template- Änderung habe ich immer noch nur einen Eigenschaft für Text.
Also ist ein Customcontrol notwendig, den Benutzercontrols haben kein Template ?

27.04.2012 - 11:32 Uhr

danke MrSparkle, Shaarigan vorallem für die Zeit damit habe ich mal eine Referenz.

23.04.2012 - 17:22 Uhr

Performance fresser... kanns doch nicht sein. Wie machen das den die Professionellen Spiele- Entwickler.

23.04.2012 - 17:20 Uhr

Ich bezahle 150 als nicht Selbständiger. Das ist wohl so...

18.04.2012 - 17:19 Uhr
        public static Vector3 ClientToWorld(int x, int y)
        {
            var viewport = new int[4];
            Matrix4 modelviewMatrix, projectionMatrix;
            GL.GetFloat(GetPName.ModelviewMatrix, out modelviewMatrix);
            GL.GetFloat(GetPName.ProjectionMatrix, out projectionMatrix);
            GL.GetInteger(GetPName.Viewport, viewport);

            var t = new float[1];
            GL.ReadPixels(x, Properties.ViewProperties.ViewPortHeight - y, 1, 1, PixelFormat.DepthComponent, PixelType.Float, t);

            return UnProject(new Vector3(x, viewport[3] - y, t[0]), modelviewMatrix, projectionMatrix, viewport);
        }

        private static Vector3 UnProject(Vector3 screen, Matrix4 view, Matrix4 projection, IList<int> viewPort)
        {
            var pos = new Vector4();

            pos.X = (screen.X - viewPort[0]) / viewPort[2] * 2.0f - 1.0f;
            pos.Y = (screen.Y - viewPort[1]) / viewPort[3] * 2.0f - 1.0f;
            pos.Z = screen.Z * 2.0f - 1.0f;
            pos.W = 1.0f;

            var pos2 = Vector4.Transform(pos, Matrix4.Invert(Matrix4.Mult(view, projection)));
            var posOut = new Vector3(pos2.X, pos2.Y, pos2.Z);

            return posOut / pos2.W;
        }
17.04.2012 - 16:44 Uhr

Ok das hilft mir zwar erstmal nicht weiter, da ich "zf, zn" nicht einordnen kann und ich noch nicht geforscht habe, ob es in OpenGL die Funktion auch gibt. Ich werd einfach mal einen simpleren weg gehen, bevor ich mich an so einer Kleinigkeit festhänge.

17.04.2012 - 16:39 Uhr

Hallo MrSparkle,
danke für den Leitfaden. Hilft mir bestimmt weiter.

17.04.2012 - 10:19 Uhr

hi herbivore,
hmm mir passt beides nicht, aber ansonsten hast du bestimmt recht.

17.04.2012 - 01:18 Uhr

Hallo,

weiss jemand wie ich ich die Width und Height parameter die ich zuvor übergeben habe zurückgeben kann ? Ich erstelle die Projektionmatrix in einen anderen Projekt. Möchte es aus Design- Gründen so regeln.

16.04.2012 - 22:59 Uhr

Hallo,

ich möchte Schaltflächen in OpenGL(OpenTK) erstellen.
Jetzt muss ich herausfinden, wann sich die Maus über meiner Schalfläche befindet.
Dazu bräuchte ich die 2d Client Koordinaten meines 3d Vectors. Wie ist es möglich ?
Auch anderes rum wäre es sehr Praktisch also 2d Client zu 3d. Würde mich über eure Hilfe sehr freuen.

22.03.2012 - 11:05 Uhr

ok das versteh ich 😃 Versuche ich mal dank dir.

22.03.2012 - 10:22 Uhr

Hallo MrSparkle,

hab mein Code jetzt angepasst. Vorher hatte ich eine rießige Collection mit Rectangles (mit einer Stern, Nebel Texture).
Jetzt habe ich es in Blöcke aufgeteilt. Jeder block hat seine eigene Collection. Wenn der Bildschrim über ein Block navigiert
wird nur seine Collection gerendert. Es sind jetzt ca 250 Sterne und 100x Nebel (2100 Vertices, hoffentlich leuft das auch auf den Handy).

Hallo MrHiggins,

um das zu verstehen bin ich noch zu leihenhaft in diesen Bereich. Bei mir hat eine Vertex nur ein Vector wie soll ich damit einen realtischen Stern erstellen ? Was ist eine Normale ? Hab zwar schon was gelesen, war aber ziemlich das Einsteiger Buch. Hab noch ein Buch angefangen, muss mich nur noch überwinden das durch zu pauken.

21.03.2012 - 07:57 Uhr

Habs jetzt ausprobiert und das verschieben von der Vertices zwingt mein PC in die Knie (ca 10000+ Vertices, Quadcore x ca. 2.0 Ghz).

[EDIT]
Hab grad einen Performance Profiler laufen lassen. Meine Zeichenroutine mit den Vertexbuffer hatte wohl einen kincken. Bereinigung hat leider keinen grossen Performance- Zuwachs gebracht.

20.03.2012 - 07:24 Uhr

Hallo MrSparkle,

da gibts kein Problem. Was ist aber wenn es ein paar tausend Objekte sind die ich verschieben muss sogar welche die ausserhalb der Projektion sind. Wäre es da nicht sinnvoller die Modelview Matrix zu verschieben ?

[EDIT]
Nein macht leider keinen Performance- Unterschied.

20.03.2012 - 07:14 Uhr

Hallo Thomas_1,

ja es ist von mir. Ist nix vollständiges ich wollte es nur schon mal testen.
Ich mache ein 2D Spiel. Habe nicht an den shadern rumgefuscht, weis auch nicht was mann da mit einer 2D Engine machen kann. Ich schalte nur Blend und Texture2D an.
Hab mich entschlossen es erstmal komplett zu machen und dann solche Probleme zu durchforsten.

15.03.2012 - 11:39 Uhr

Hab eben neusten Treiber aufgespielt. Hat nix genützt.
Ich habe ein GeForce 7900 GTO in beiden Vista Rechnern.

14.03.2012 - 22:25 Uhr

Keine Ahnung die neueste von OpenTK. Ich probiere mal die Grafikkarten Treiber zu updaten.

14.03.2012 - 15:08 Uhr

Hallo,

ich habe ein OpenGL Spiel an verschiedenen Rechnern getestet.

  1. Windows 7 Rechner funktioniert alles einwandfrei.
  2. Windows 7 ist das Bild so dunkel das fast nix zu erkennen ist.
  3. Windows Vista stellt meine Texturen nicht dar hab dann nur farbige Rectangles.
  4. Windows Vista stellt meine Texturen nicht dar hab dann nur Farbige Rectangles.

Ich verliere langsam die Motivation da noch weiter zu machen. Kann es sein das auf Windows Vista die OpenGL Bibliotheken upgedated werden müssen ?

07.03.2012 - 01:37 Uhr

Hallo Leutz,

mich würde Interessieren was so übern Daumen geschätzt mehr Performance verbrät.
Eine 4000 x 2000 Textur oder 8000 Vertices zu Rendern.
Beides könnte sich in einen 2D Raum bewegen (z.B Sterne)
Ich kann mir zwar fast denken das die Textur Ressourcen sparender ist, aber macht sich so ein Unterschied z.B bei einen 1000Mhz Rechner mit schlechter Grafikkarte bemerkbar?

20.02.2012 - 10:59 Uhr

Hallo MrSparkle,

es ist eine 2D Texture. Ich mache ein 2D Spiel. Der Spielraum soll unendlich gross sein d.h. die Textur soll sich jedesmal wiederholen. Die Objekte (Planeten, Nebel etc.) im raum werden zufällig generiert und letztere wieder verworfen wie bei einer Queue (first in, last out). Ist da eine Cubemap immernoch richtige für mich ?

18.02.2012 - 16:18 Uhr

Hallo,

ich mache grade ein kleines Spiel. Es spielt im Weltall.
Dazu habe ich ein 2D Hintergrund mit einer Textur aus Sternen. Die Textur wird verschoben wenn Sich mein Hauptobjekt (rot) bewegt. Das Hauptobjekt kann der Benutzer steuern. Es soll jedoch Nebenobjekte (blau) geben die Sich unabhängig vom Hauptobjekt bewegen (also mit der Textur). Die Texturkoordinaten gehen nur von z.B 0 - 1 oder 1 - 2 unsw... Wie bekomme ich die richtigen Nebenobjekt- Koordinaten relativ zur Textur. Ist das überhaupt der beste Weg mit der Texturverschiebung ?

                _background.SetTextureCoords(new Vector2(0.001f, 0));
                _planet.Move(new Vector2(-0.06f, 0));
        public void SetTextureCoords(Vector2 coordinates)
        {
            _movementCoord += coordinates;
            _background.TextureCoordinates =
                new Vector4(_movementCoord.X + 0.4f, _movementCoord.Y + 0.4f, _movementCoord.X + 0.8f, _movementCoord.Y + 0.8f);
        }


        public void Move(Vector2 amount)
        {
            _circle.PostionCoordinates = _circle.PostionCoordinates + amount;
        }
14.02.2012 - 02:27 Uhr

Danke sieht jetzt auf den ersten Blick sehr interessant aus.
Allgemein nochmal zu OpenGL, kann ich das noch empfehlen.

Buch: OpenGL Superbible 5

12.02.2012 - 16:12 Uhr

alles klar dank dir m0rius

12.02.2012 - 08:19 Uhr

ich schaue mir grade ein Beispiel zu OpenTK an. Dort wird eine Projektionsmatrix erstellt. Leider verstehe ich die Argumente nicht wirklich. Ich kann zwar lesen und Englisch, ein Buch zu OpenGL hab ich auch durch aber so richtig erschliesst sich der Sinn der Argumente trotzdem nicht.

var projection = Matrix4.CreatePerspectiveFieldOfView((float)Math.PI / 4, Width / (float)Height, 1.0f, 64.0f);

fovy
Specifies the field of view angle, in degrees, in the y direction.

aspect
Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).

zNear
Specifies the distance from the viewer to the near clipping plane (always positive).

zFar
Specifies the distance from the viewer to the far clipping plane (always positive).

09.02.2012 - 23:58 Uhr

Problem gelöst. War der Dispose der Bitmap.

        public void LoadTexture(string name, string path)
        {
            var bitmap = new Bitmap(path);
            var bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                                             ImageLockMode.ReadOnly, PixelFormat.Format32bppRgb);
            int textureId;
            Gl.glGenTextures(1, out textureId);
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, textureId);
            Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA8, bitmap.Width, bitmap.Height, 0, Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE, bitmapData.Scan0);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
            _textureStorage.Add(name, new Texture(textureId, path, bitmap.Width, bitmap.Height));

            //HIER LIEGT DER HUND BEGRABEN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            bitmap.UnlockBits(bitmapData);
            bitmap.Dispose();
        }
09.02.2012 - 16:42 Uhr

Hallo Pria,

Wird hier ein Alphawert gesetzt?, wen ja welcher?

1

Warum bindest du hier mehrmals dieselbe Textur?

Der TextureManager lädt zuerst alle Texturen die ich später benötigen werde.
Die Id der Texture speicher ich in einer Dictionary mit einen eindeutigen String zum abrufen.
Beim Rendern binde ich die TextureId erneut damit ich beim Zeichnen die richtige Textur verwende. Gibt es vielleicht sowas wie unbind texture ??

Warum setzt du hier mehrmals die Farbe?

Tue ich nicht, jeder Vertext bekommt eine Farbe verpasst.

Wann und wo rufst du Renderer auf?
Ich nehme mal an, dass du Renderer auch vor dem laden deiner Texturen aufrufst?

Den Renderer rufe ich ganz am Ende auf.

08.02.2012 - 22:11 Uhr

Doch nicht... wenn ich jetzt mehrere Texturen lade gibt es die nächsten Probleme 😦
Siehe Anhang...

Meine Textur Klasse

    public class TextureManager
    {
        private readonly Dictionary<string, Texture> _textureStorage;

        public TextureManager()
        {
            _textureStorage = new Dictionary<string, Texture>();   
        }

        public Texture GetTexture(string textureName)
        {
            return _textureStorage[textureName];
        }

        public void LoadTexture(string name, string path)
        {
            var bitmap = new Bitmap(path);
            var bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                                             ImageLockMode.ReadOnly, PixelFormat.Format32bppRgb);
            int textureId;
            Gl.glGenTextures(1, out textureId);
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, textureId);
            Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA8, bitmap.Width, bitmap.Height, 0, Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE, bitmapData.Scan0);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
            _textureStorage.Add(name, new Texture(textureId, path, bitmap.Width, bitmap.Height));

            bitmap.UnlockBits(bitmapData);
            bitmap.Dispose();
        }
    }

Das laden mit der Textur Klasse

        private void InitializeTextures()
        {
            _textureManager.LoadTexture("font_arial", @"Remove\font_arial.png");
            _textureManager.LoadTexture("stupid_smile", @"Remove\stupid_smile.png");
        }

Meine Render Klasse

        public Renderer()
        {
            Gl.glEnable(Gl.GL_TEXTURE_2D);
            Gl.glEnable(Gl.GL_BLEND);
            Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
        }

        private static void DrawImmediateModeVertex(Vector pos, Color color, Point uvs)
        {
            Gl.glColor4f(color.Red, color.Green, color.Blue, color.Alpha);
            Gl.glTexCoord2f(uvs.X, uvs.Y);
            Gl.glVertex3d(pos.X, pos.Y, pos.Z);
        }

        public void DrawSprite(Sprite sprite)
        {
            Gl.glBegin(Gl.GL_TRIANGLE_STRIP);
            {
                for (var i = 0; i < sprite.VertexAmount; i++)
                {
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, sprite.Texture.TextureId);
                    DrawImmediateModeVertex(sprite.VertexPositions[i], 
                        sprite.VertexColors[i], sprite.VertexUVs[i]);
                }
            }
            Gl.glEnd();
        }
08.02.2012 - 20:27 Uhr

Funktioniert wunderbar. Dank dir Pria.

08.02.2012 - 16:07 Uhr

Hier nochmal das Originalbild... weil es so schön ist

und hier sehe ich das ich den Alpha- Channel benutze xD Dann wird das wohl irgendwie damit zusammenhängen.

08.02.2012 - 16:05 Uhr

So... Jetzt bin ich schon mal ein Stück näher am Ziel. Leider habe ich jetzt um meinen Smiley diese Ecken. Woran kann das liegen ?

Was die 3 Methoden weis ich leider nicht. C&P

 Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGB8, bitmap.Width, bitmap.Height, 0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapData.Scan0);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
        public void LoadTexture(string name, string path)
        {
            var bitmap = new Bitmap(path);
            var bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                                             ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
            int textureId;
            Gl.glGenTextures(1, out textureId);
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, textureId);
            Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGB8, bitmap.Width, bitmap.Height, 0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapData.Scan0);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

            _textureStorage.Add(name, new Texture(textureId, path, bitmap.Width, bitmap.Height));

            bitmap.UnlockBits(bitmapData);
            bitmap.Dispose();
        }
08.02.2012 - 14:26 Uhr

Wie meinst du ich soll die Grafik selber laden. Mit der Bitmap Klasse oder wie ??
Es gibt keine Fehlermeldung es gibt nur Darstellungsfehler wie oben im Bild angehangen.

08.02.2012 - 08:38 Uhr

Guten Morgen,

ich lese grade ein Buch zu OpenGL und habe daraus Beispiele entnommen.
Um Texturen fur Sprites zu laden benutze ich die Devil Bibliothek die beim
Tao-Framework beiliegt. Eine Funktion bereitet jedoch Probleme "iluFlipImage".
Die ist notwendig da alle Grafiken spiegelverkehrt geladen werden.

Ich verwende .Net 4.0 mit den Tao-Framework 2.1
Bin mir sicher das es nicht an meinen Code liegt da ich es 1:1 übernommen habe und auch schon im Internet recherchiert habe. Vielleicht wisst ihr ja was.

        public void LoadTexture(string textureName, string path)
        {
            int devIlId;
            Il.ilGenImages(1, out devIlId);
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, devIlId);

            if (!Il.ilLoadImage(path))
            {
                System.Diagnostics.Debug.Assert(false,
                "Could not open file, [" + path + "].");
            }

            Ilu.iluFlipImage();

            var width = Il.ilGetInteger(Il.IL_IMAGE_WIDTH);
            var height = Il.ilGetInteger(Il.IL_IMAGE_HEIGHT);
            var textureId = Ilut.ilutGLBindTexImage();

            System.Diagnostics.Debug.Assert(textureId != 0);
            Il.ilDeleteImages(1, ref devIlId);
            _textureStorage.Add(textureName, new Texture(textureId, path, width, height));
        }
05.02.2012 - 02:49 Uhr

Buch: C# Game Programming for Serious Game Creation