Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von userid11997
Thema: [erledigt] devil, tao-framework, funktion iluFlipImage bereitet Darstellungsfehler
Am im Forum: Grafik und Sound

Alles klar, dann mach doch folgendes:

1. Den Renderer (also deine methode, in der du blending und so setzt) ganz am ANFANG deiner Darstellungsschleife aufrufen, da du sonst erst auf Texturen zugreifst und diese dann erst verfpgbar machst.

2. Wenn du einen Alphawert setzt, überschreibst du die Farbe deiner Textur und diese wird wiederum sichtbar. Verwende statdessen Color3f

3. Etwas grundlegendes über OpenGL "OpenGL ist eine Zustandmaschine, dass heißt, dass ein gesetzter Zustand bis zu dessen Aufhebung aktiv bleibt".
Du musst lediglich ein mal vor dem Aufruf von Gl.Begin eine Textur binden, die dann auf die in Gl.Begin definierte Struktur angewendet wird. Um eine Textur wieder zu "entladen" verwende einfach Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0);

4.

Zitat
Zitat
Warum setzt du hier mehrmals die Farbe?
Tue ich nicht, jeder Vertext bekommt eine Farbe verpasst.

Dann solltest du keine Texturen verwenden oder eben die Farbe auf 3 Komponenten reduzieren.

Thema: DLL während Programm-Laufzeit einbinden, Problem.
Am im Forum: Rund um die Programmierung

Verushc doch einfach mal statt zwei TYPINSTANZEN die WERTE für den Construktor anzugeben. Was vermutlich passiert ist folgendes, du übergibst 2 dem Activator zwei Typinstanzen mit typeof(), dieser such dann nach einem passenden Constructor mit den Parametern Type,Type und das schlägt dann fehl.

Thema: OpenGL Pipeline reset bei selbem Shader?
Am im Forum: Grafik und Sound

Moin,

nur eine kurze Frage:
Wenn ich einen Satz Shader habe, der beispielsweise ein Partikelsystem darstellt und mit jedem Frame die Partikel in Größe, Farbe und Position verändert, werden die Variablen, wenn ich sie innerhalb meiner Main setze, bei jedem Durchlauf der Pipelin wieder zurückgesetzt oder bleiben diese auf dem Wert des letzten durchlaufs stehen?

Wenn ja, ist dies bei allen Typen so oder nur bei Uniforms?

Thema: [erledigt] devil, tao-framework, funktion iluFlipImage bereitet Darstellungsfehler
Am im Forum: Grafik und Sound

Schau dir bitte die Fragen in deinem Quellcode einmal an und versuche diese zu beantworten.


private static void DrawImmediateModeVertex(Vector pos, Color color, Point uvs)
        {
            //Wird hier ein Alphawert gesetzt?, wen ja welcher?
            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++)
                {
                    //Warum bindest du hier mehrmals dieselbe Textur?
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, sprite.Texture.TextureId);
                    DrawImmediateModeVertex(sprite.VertexPositions[i],
                    //Warum setzt du hier mehrmals die Farbe?
                        sprite.VertexColors[i], sprite.VertexUVs[i]);
                }
            }
            Gl.glEnd();
        }

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

Vor allem bei mir funktionierts einwandfrei. Das Logo in der Mitte und der Text sind jeweils texturierte Quads.

Thema: [erledigt] devil, tao-framework, funktion iluFlipImage bereitet Darstellungsfehler
Am im Forum: Grafik und Sound

Verwende einfach folgendes um eine 32bpp Alphachaneltextur zu laden

var bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                                             ImageLockMode.ReadOnly, PixelFormat.Format32bppRgb);

            Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA8, bitmap.Width, bitmap.Height, 0, Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE, bitmapData.Scan0);

Dann aber die Belndfunction nicht vergessen (sowohl beim erzeugen, als auch beim rendern)

GL.Enable(Blend);
                    GL.BlendFunc(SrcAlpha, OneMinusSrcAlpha);

Da zwar der Alphakanal gesetzt ist, der aber den alpha nicht verwendet. Hier wird dann der alphasource zum blenden verwendet.

Thema: [erledigt] devil, tao-framework, funktion iluFlipImage bereitet Darstellungsfehler
Am im Forum: Grafik und Sound

Einfach wie in Texture Mapping die Bitmapdaten laden, den Pointer an OGL und wieder freigeben.

Wenn die Darstellung fehlschläg, bist du sicher, dass deine Texturkoordinaten richtig sind?
Ansonsten kanns nurnoch n Parameterfehler in der Methode sein.

Thema: [erledigt] devil, tao-framework, funktion iluFlipImage bereitet Darstellungsfehler
Am im Forum: Grafik und Sound

Am besten lädst du dir die Textur selber. Da das ja nur in seltenen fällen mehr als ein 4 Zeiler ist und das in jedem Tutorial irgendwannd rann kommt, würd ich das lieber so machen.

Was ist denn genau die Fehlermeldung?

Thema: Flexibler ErrorManager
Am im Forum: Rund um die Programmierung

Moin,

ich habe mir überlegt einen flexiblen ErrorManager zu schreiben. Dazu möchte ich sowas machen wie


ErrorManager.Begin(SektionID);

//critical Code
...
ErrorManager.Log("some log message");

ErrorManager.End(SektionID);

Gibt es da eine Möglichkeit fehler abzufangen, die auf den Try-Catch-Block verzichtet?

Thema: Intelligente Neuronale Netze: Börsenkurse mit NN voraussagen, ohne vorher Indikatoren zu berechnen
Am im Forum: Rund um die Programmierung

Du könntest es dem NN etwas einfacher machen, schließlich lernt ein Mensch auch nur durch Erfolg und Misserfolg. Du könntest also ein paar einfachere testformeln erzeugen, die du dein NN solange machen lässt bis esdas richtige Ergebnis ausspukt.
Um sich das merken zu können bräuchte dein NN ein Gedächtnis, in das es positive (also erfolgreiche) Ergebnisse ablegt um es dann mit anderen Aufgaben assoziieren zu können.

Thema: OpenGL Grafikhardwareinformation auslesen
Am im Forum: Grafik und Sound

Kurz gesagt, alles was dem Anwender/Entwickler der Engine interessiert. Dazu zählt sicherlich die Menge des VRam zu entwicklungs/initialisierungs Zeiten für die größe der Modelle und die Detailtiefe von Texturen/Texturlevels, oder eben die Temperatur oder der Akkustatus (gehört jetzt nicht zur GH) im Spiel oder in der Anwendung, dass die Anwendung Crashes bereits vorhersagen und entsprechend reagieren kann.

Bisweilen beschränkt auf den Windows-Treiber, Linux und Mac kommt später.

Thema: OpenGL Grafikhardwareinformation auslesen
Am im Forum: Grafik und Sound

Klar, OpenCl haben wir natürlich implementiert, das Problem ist nur, wenn die Grafikhardware kein OpenCl unterstützt, weil einfach zu alt, gibts natürlich auch keine Informationen dazu. Auf meinem System wird beispielsweise die HD 2400 XT nicht unterstützt und ich erhalte lediglich einen CPU Context.

Thema: OpenGL Grafikhardwareinformation auslesen
Am im Forum: Grafik und Sound

was ist mit Intel?

Thema: OpenGL Grafikhardwareinformation auslesen
Am im Forum: Grafik und Sound

Moin,

ich schaue gerade, ob es nicht einen API-Call gibt, der mir Information meiner Grafikhardware wie Temperatur, VRAM-Größe etc. ausgibt und zwar unabhängig von Hersteller und Modell. Das Ganze soll in OpenGL bzw. Win-API als Teil des Windows-Treibers für unsere Engine geschehen, DX ist also absolut garkeine Option.

Thema: Mithelfer für Game SDK-Projekt gesucht
Am im Forum: Projekte

Zur Entwicklung des 3D Zeichenprogramms Depict suchen wir Entwickler in C#/C++ mit erfahrung in GUI und 3D Programmierung (OpenGl).

Das Programm soll dazu dienen mit Modellbibliotheken 3D Scene zu erzeugen und mit den üblichen Grafikbearbeitungsoptionen wie Ebenen, Filter etc. diese Scene zu modifizieren. Dies kann beispielsweise für Wallpaper von Spielen oder Bildergeschichten nützlich sein.

Thema: Mithelfer für Game SDK-Projekt gesucht
Am im Forum: Projekte

und noch einer weils so schön aussieht

Thema: Mithelfer für Game SDK-Projekt gesucht
Am im Forum: Projekte

Zur Anregung der Phanatsie noch ein Screenshot von einer Testscene.

Thema: Reflection: MethodInfo zu performantem Delegate umwandeln
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Da tut sich zum release nicht viel zwischen dem Delegaten und dem Invoke. Das Problem bei delegate.CreateDelegate ist der verlangte Typ, der wiederum ein Delegate mit exakt definiertem Typ sein muss, der eben nicht genau bekannt ist.

Thema: Reflection: MethodInfo zu performantem Delegate umwandeln
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Moin,

ich hab mir mal die ganzen Post zu Reflection angesehen, darunter auch ein Blogpost, der zeigen sollte, wie man aus einem Objekt MethodInfo einen delegatentypen erhalten kann, wenn der Typ nicht bekannt ist. Die Ansätze in allen Ehren, aber meine Tests mit diesem Quellcode

using System;
using System.Reflection;
using System.Text;
using System.Diagnostics;

public class Test
{
    public delegate W Func<T, V, W>(T arg, V val);
    public delegate int IndexOFDelegate(char c);


    static void Main()
    {

        MethodInfo indexOf = typeof(string).GetMethod("IndexOf", new Type[] { typeof(char) });
        IndexOFDelegate indexOfDelegate = (IndexOFDelegate)Delegate.CreateDelegate(typeof(IndexOFDelegate), "Hallo" ,typeof(string).GetMethod("IndexOf", new Type[] { typeof(char) }));

        MethodInfo getByteCount = typeof(Encoding).GetMethod("GetByteCount", new Type[] { typeof(string) });

        Func<string, object, object> indexOfFunc = MagicMethod<string>(indexOf);

        Func<Encoding, object, object> getByteCountFunc = MagicMethod<Encoding>(getByteCount);

        Stopwatch sw = new Stopwatch();
        sw.Start();
            indexOf.Invoke("Hello", new object[] { 'e' });
        sw.Stop();

        Console.WriteLine("Invoked MethodInfo " + sw.Elapsed.TotalMilliseconds.ToString());
        sw.Reset();
        sw.Start();
            indexOfFunc("Hello", 'e');
        sw.Stop();

        Console.WriteLine("Created Delegate " + sw.Elapsed.TotalMilliseconds.ToString());

        sw.Reset();
        sw.Start();
            indexOfDelegate('e');
        sw.Stop();

        Console.WriteLine("Declared Delegate " + sw.Elapsed.TotalMilliseconds.ToString());
        Console.ReadKey();

    }

    static Func<T, object, object> MagicMethod<T>(MethodInfo method) where T : class
    {

        // First fetch the generic form

        MethodInfo genericHelper = typeof(Test).GetMethod("MagicMethodHelper",

            BindingFlags.Static | BindingFlags.NonPublic);

        // Now supply the type arguments

        MethodInfo constructedHelper = genericHelper.MakeGenericMethod

            (typeof(T), method.GetParameters()[0].ParameterType, method.ReturnType);

        // Now call it. The null argument is because it's a static method.

        object ret = constructedHelper.Invoke(null, new object[] { method });

        // Cast the result to the right kind of delegate and return it

        return (Func<T, object, object>)ret;

    }

    static Func<TTarget, object, object> MagicMethodHelper<TTarget, TParam, TReturn>(MethodInfo method)

        where TTarget : class
    {

        // Convert the slow MethodInfo into a fast, strongly typed, open delegate

        Func<TTarget, TParam, TReturn> func = (Func<TTarget, TParam, TReturn>)Delegate.CreateDelegate

            (typeof(Func<TTarget, TParam, TReturn>), method);

        // Now create a more weakly typed delegate which will call the strongly typed one

        Func<TTarget, object, object> ret = delegate(TTarget target, object param) { return func(target, (TParam)param); };

        return ret;

    }

}

haben angehängtes Ergebnis auf einer 32b XP-Maschine unter 2.0 geliefert, wobei ich mich dann doch fragen muss, was sich die ganzen Programmierer über die schlechte Performance von MethodInfo.Invoke() beschweren.


Gibt es denn noch irgendeine andere Möglichkeit unter 2.0 zur Laufzeit einen delegaten aus einem MethodInfo-Objekt zu erzeugen, dass an die Geschwindigkeit eines zur Buildzeit definierten delegaten herankommt?

EDIT: Eventuell indem man einen Methodenpointer in einen delegaten castet?

Thema: Projektabhängigkeiten Strukturieren
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Moin,

wenn ich ein Projekt habe, dass mit verschieden gekapselten Komponenten arbeitet, gibt es da eine Möglichkeit mehrfach verwendete Funktionen so auszulagern, dass ich diese nicht explizit in jede Komponente einbauen muss, aber dennoch jede Komponente sozusagen "stand alone" verwenden kann?

Thema: Performance von Anwendung maximieren (inline assembler?)
Am im Forum: Rund um die Programmierung

Wie gesagt, da ich im momment im Spielebereich mit beidem zu tun habe und unser Prof natürlich größe Stücke auf C++ hält, bin ich im Momment etwas nachdenklich. Mit der Performance von unserem Script (was nahezu wenn nicht sogar exakt an die geschwindigkeit von C# heran kommt) bin ich relativ zufrieden, was die OpenGL basierte Grafik angeht, bin ich mir nicht sicher. Klar, die 8000fps von javas slick sind schon beeindruckend und die 6000 von ATIs performancetest sind auch nicht zu verachten, obwohl ich natürlich weiß, dass es mit der Bildwiederholrate des Monitors absolut nicht zu machen ist, jedoch sind das erstmal beeindruckende zahlen. Da kann das OnPaint Ereignis von einem C# Form nicht mithalten, geschweigedenn mit dem renderloop in einer while(true) schleife, welcher öfter in c++ beispielen auftaucht. Unser Code ist noch kein Stück optimiert, jedoch sind uns bei Funktionen, die Daten über die Cpu an die Grafikkarte senden die Hände gebunden, da wir weder das direkt tun können, noch mal eben n par Register herumschieben können.

Wobei ich glaube, dass die Branche natürlich c++ und DirectX geprägt ist und sich das so schnell auch nicht ändern wird aber dem sei mal so dahin gestellt.

Ist eine Funktion mit unsafe eigentlich grundsätzlich schneller?

Thema: C++ gegenstück zu System.Reflection (nicht .NET)
Am im Forum: Rund um die Programmierung

Tja, .Net ist wohl schon luxus

Thema: Performance von Anwendung maximieren (inline assembler?)
Am im Forum: Rund um die Programmierung

Zitat
Aber da du ja schon P/Invoke ansprichst (Unmanaged Code in C# nutzen),

Naja ich meinte eigentlich so unsafe codeblocks wo man eben auch pointer nutzen kann aber gut.

BtW: Kann ich mit Visual Studio eigentlich auch Nicht-.NET-Bezogene C++ programme schreiben?

Thema: C++ gegenstück zu System.Reflection (nicht .NET)
Am im Forum: Rund um die Programmierung

Moin,

gibt es eigentlich ein natives c++ gegenstück zu den Funktionen von System.Reflection oder etwas ähnliches?

Thema: Performance von Anwendung maximieren (inline assembler?)
Am im Forum: Rund um die Programmierung

Moin,

ich frage mich gerade wie es denn so um die Performance von C# bestellt ist, da es ja immer wieder etliche Personen gibt, die behaupten es wäre einfach keine echte Sprache weil es zu langsam ist.

Daher, was kann man denn alles aus seiner Anwendung herauskitzeln (an geschwindigkeit gegenüber nativem c++) und wo sind die grenzen?

Es ist ja möglich c++ code in eine c# anwendung zu integrieren (beispielsweise bei der Bildverarbeitung), ist das auch mit inline-assembler möglich oder irgendwie möglich zu machen?

Thema: GUI geht auf timeout
Am im Forum: Datentechnologien

Villeicht ist dein PC einfach so ausgelastet, dass der Server einen Timeout verursacht, weil er nicht schnell genug antwortet?

Thema: GUI geht auf timeout
Am im Forum: Datentechnologien

Ist die Verbindung durch irgendeinen Grund villeicht so langsam, dass eine der beiden Seiten dann einfach sagt ok, ich hab jetzt keine lust mehr. Wie sendest du die Anfrage genau?

Thema: Mithelfer für Game SDK-Projekt gesucht
Am im Forum: Projekte

Hallo,

leider war der Ansturm an Bewerbern nicht so groß, wie wir es erhofft hatten. Deswegen nochmals der Aufruf:

Wir suchen immernoch Mitarbeiter für die oben genannten Bereiche, gerne auch Schüler und Studenten mit etwas Erfahrung, nur zuverlässig müßen sie sein.

Thema: GlSl Shader für statische/dynamische Lichtquellen
Am im Forum: Grafik und Sound

Um meine Frage nochmal zu wiederholen

Zitat
Weiß jemand, wie das große Engines wie die Unreal- oder Source-Engine machen?

Thema: GlSl Shader für statische/dynamische Lichtquellen
Am im Forum: Grafik und Sound

Also du meinst wir "adden" jeweils eine routine für jedes erdenkliche Licht in der Scene zu unserem Shaderprogramm und aktivieren nur diejenigen (per id oder wie auch immer), die überhaupt gerade auf das Objekt angewendet werden könnten?

Wenn jetzt noch Wassereffekte oder so sachen wie Feuer etc. hinzukommen, muss ich die dann auch in mein mit den Lichtroutinen beklekkertes Programm hinzufügen?

Weiß jemand, wie das große Engines wie die Unreal- oder Source-Engine machen?

Thema: OpenGL Scene wird nach Treiberupdate nicht merh angezeigt
Am im Forum: Grafik und Sound

Moin,

habe gerade meinen Grafiktreiber aktualisiert und mal aus neugier eins meiner OpenGL-Programme aufgerufen. Ich musste feststellen, dass die Scene, bestehend aus einem VertexArray in einer Displayliste, nicht mehr bzw. nicht immer angezeigt wird.
Je nachdem wie ich die Kamera drehe, verschwindet das Modell oder wird halt wieder angezeigt.

Das Programm wirft mir jedoch keinerlei Exceptions.

Jemand ne Ahnung woran das liegen kann?

Nachtrag:

Das Problem bezieht sich wirklich nur auf die Konstelation VertexArray->Displaylist, bei meinen anderen Testprogrammen, die mit Displaylisten arbeiten, läuft alles wunderbar.