vor einiger Zeit kam mir in den Sinn mein DirectX Interface welches ich damals in WoWPlus verwendet hatte komplett neu aufzusetzen. Diesmal richtig mit HLSL, C++11 etc.
Die Entwicklung ist mittlerweile soweit, dass ich erste Bilder davon präsentieren kann. Die Komponenten sind aufgrund des aktuellen Aufbaus sehr leicht zu implementieren und stellen daher eigentlich kein Problem dar. Momentane Features:
- Farbmanipulation (Container können die Farben von Kindern beeinflussen)
- Unendliche Verschachtelbarkeit von Fenstern / Containern etc.
- Fade Effekte (Jede Komponente kann über einen linearen Fade seinen Farbmodifizierer verändern).
- Rendering und Logik komplett getrennt (leichte Erweiterbarkeit auf DirectX 10, 11, OpenGL).
- Sehr hohe Effizienz: Caching von Fonts / Clipping von nicht sichtbarem.
- In bislang jedem getesteten Spiel funktionsfähig (Skyrim, WoW, Diablo 3, Call of Duty, uvm.)
Aufgrund der vielen Hover / Fadeeffekte und dem dynamischen Schatten hinter den Fenstern (immer zur mitte des Bildschirms hin) werde ich eventuell später noch ein Video davon machen.
Das Projekt ist momentan OpenSource und kann hier gefunden werden:
Jeder kann mitmachen, momentan arbeite ich mit einem Kollegen daran.
Sieht doch schon richtig nett aus! Diesen stilistischen Ansatz hatte ich bei meinem UI-FW Anfang 2011 auch mal ausprobiert, aber irgendwie musste ich dann feststellen, dass mir eckige Fenster doch eigentlich viel besser gefallen. Inzwischen bin ich nun bei etwas raus gekommen, was ein wenig Ähnlichkeit mit Steam hat - zumindest im Default-Modus - hab bei mir eh praktisch alles justierbar gehalten.
Das UI von WoW+ hat mich immer total an das alte Mist-UI meines alten WoW-Hacks erinnert - hat Cen da zufällig etwas Einfluss auf dich gehabt? :P Vermutlich ist dieser Stil aber einfach das Erste, was einem in den Sinn kommt, wenn man mit minimalem Aufwand ein UI erstellen will.
Mit ID3DXFont wirst du noch Krämpfe kriegen, die hat so einige Macken. Das Font-Measurement funktioniert nur bei 'n paar Holz-Fonts korrekt und beim Rendern in ein Off-Screen-Surface "schlägt" die Font am Rand der Buchstaben "Löcher" in den Alpha-Kanal - ersteres ist ein dokumentiertes "Feature", letzteres wohl ein Fehler der Font-Klasse. Hab das Ganze inzwischen so gelöst, dass ich eine eigene Font-Klasse habe, die auf meinen abstrakten Sprites basiert und somit auch unabhängig vom verwendeten Graphics-Framework funktioniert. Solltest du auf die selben Probleme stoßen, meld' dich einfach bei mir; ich bin durchaus bereit, meine Klasse für das Projekt zur Verfügung zu stellen.
Hey, das Video kannte ich schon
Mir ist aufgefallen dir fehlte irgendwo ein Blend Renderstate (Mob Aggro).
Naja jedenfalls dachte ich schon daran eine eigene Font einzubauen war bisher aber immer zu faul. Der Fehler mit den "Löchern" in Offscreen Rendertargets ist mir auch schon aufgefallen und momentan präsent, eigentlich gehören die Texte alle ein wenig dicker, wenn ich das Caching weglasse stimmts.
Ich denke es liegt daran, dass da irgendwo intern Halfpixel entstehen. Die behebe ich in meinen Vertex Shadern einfach so:
Die Effizienz der Fontklasse ist mir im übrigen vollkommen egal weil eh alles in eine Cache gerendert wird. Ich nehme an du zeichnest jeden Buchstaben in eine Textur (GDI+) und speicherst dazu die Breite der einzelnen Buchstaben?
Wäre jedenfalls interessant zu sehen wie du das implementiert hast. Ich hab um ehrlich zu sein auch keine Ahnung wie ein Sprite aufgebaut ist :0
Whitespaces werden auch nie richtig kalkuliert das hab ich über nen dreckigen Hack gelöst gehabt:
Code:
// Replace whitespaces with a underscore to fix calculation issues.
for (auto itr = swText.begin(), end = swText.end(); itr != end; ++itr) {
if (*itr == L' ')
*itr = L'_';
}
EDIT:
Hier sieht man es beim großen Fenster (die Font erscheint dicker als beim Rest):
Das rechts soll ein TabControl darstellen mit nem Frame auf Page 2 :0
Mir ist aufgefallen dir fehlte irgendwo ein Blend Renderstate (Mob Aggro).
Jaa, das war damals noch alles ziemlich hacky. Hatte davon irgendwann die Schnauze voll und hab nun Tabellen von JEDEM Render-State, Blend-State und Texture-Stage-State mit den jeweiligen Default-Values und erstelle mir zu Anfang einen Stateblock damit. Jetzt läuft das Ganze auch tatsächlich in jedem Game ohne Probleme.
Die Möglichkeit mit den Vertex-Shadern ist natürlich auch nicht schlecht.
Sprites sind im Grunde nur Rechtecke mit einer Textur drüber.
Vielen dank, werde ich mir morgen direkt mal ansehen ^^
Die Sprites ziehst du dann einfach über n Rechteck auf und lässt es eventuell noch durch nen Shader laufen nehme ich an?
Die Sprites ziehst du dann einfach über n Rechteck auf und lässt es eventuell noch durch nen Shader laufen nehme ich an?
Exakt.
Die Glyphs der Font sind bei mir allerdings nur Alpha-Schablonen, die Farbe kommt dann durch die Diffuse-Color ins Spiel. So muss ich nicht für jede Schrift-Farbe extra cachen.
Das wichtigste was ich so mitgenommen hab beim überfliegen war einfach Font in GDI rendern, Farbwerte in die Textur packen (LockRect?) (Danke, der Ausschnitt war recht wichtig!) die Texturen und Dimensionen des Buchstabens anschließend speichern und dann einfach beim Text zeichnen glyphs[character]->texture rendern und halt den Offset vom Start anpassen.
Sehr einfach umzusetzen die Alphawerte in die Textur zu schreiben hätte mir denke ich dennoch Probleme bereitet, danke.
Btw:
Wie heißt die Erweiterung für die Kommentare die du da oben benutzt? Sieht gut aus!
(Ich hab keine Ahnung ob das maschinell kommentiert ist^^ z.B. am Ende jeder funktion nochmal ne Deklarationswiederholung. Mir wärs per Hand viel zu viel Arbeit, kommentiere wie du siehst eh selten bis nie...)
Inline ist übrigens unnötig und wird vom Compiler ignoriert. Alle Funktionen die direkt im Header implementiert sind werden direkt als inline angesehen, das schreibt der Standard vor. Für den ScopedMutex gibts std::lock_guard<std::mutex>
Wie heißt die Erweiterung für die Kommentare die du da oben benutzt? Sieht gut aus!
(Ich hab keine Ahnung ob das maschinell kommentiert ist^^ z.B. am Ende jeder funktion nochmal ne Deklarationswiederholung. Mir wärs per Hand viel zu viel Arbeit, kommentiere wie du siehst eh selten bis nie...)
Danke. ˆˆ Ist größtenteils Handarbeit, bin bei meinem Codestil recht penibel. Die Vorlagen für die Doxygen-Comments generiert mir ein Plugin, dessen Namen ich allerdings gerade vergessen haben. Ist aber kostenpflichtig und gekekst auch nicht erhältlich. Mit sinnvollem Inhalt muss man es allerdings meistens selbst füllen, da die automatisch generierten Texte halt oft Crap sind.
Quote:
Originally Posted by Master674b
Inline ist übrigens unnötig und wird vom Compiler ignoriert. Alle Funktionen die direkt im Header implementiert sind werden direkt als inline angesehen, das schreibt der Standard vor. Für den ScopedMutex gibts std::lock_guard<std::mutex>
Inline ist nur dann implizit, wenn die Funktionen auch IN der Klasse implementiert werden. Implementiert man Funktionen außerhalb der Klasse selbst, ist diese wieder vonnöten - auch im Header. Dieser Teil meines Frameworks ist noch mit VS10 entstanden, welches noch kein C++11-Threading unterstützt hat. Die range-based-fors sind nur deshalb schon drin, weil ich meine eigene for_each Funktion nach dem Umstieg auf VS12 removed hab, da sie nun ja nicht mehr benötigt wurde. Beim Threading bin ich noch nicht zum Updaten gekommen (hab das Update auf MSVC12 erst kürzlich vorgenommen).
Danke. ˆˆ Ist größtenteils Handarbeit, bin bei meinem Codestil recht penibel. Die Vorlagen für die Doxygen-Comments generiert mir ein Plugin, dessen Namen ich allerdings gerade vergessen haben. Ist aber kostenpflichtig und gekekst auch nicht erhältlich. Mit sinnvollem Inhalt muss man es allerdings meistens selbst füllen, da die automatisch generierten Texte halt oft **** sind.
Inline ist nur dann implizit, wenn die Funktionen auch IN der Klasse implementiert werden. Implementiert man Funktionen außerhalb der Klasse selbst, ist diese wieder vonnöten - auch im Header. Dieser Teil meines Frameworks ist noch mit VS10 entstanden, welches noch kein C++11-Threading unterstützt hat. Die range-based-fors sind nur deshalb schon drin, weil ich meine eigene for_each Funktion nach dem Umstieg auf VS12 removed hab, da sie nun ja nicht mehr benötigt wurde. Beim Threading bin ich noch nicht zum Updaten gekommen (hab das Update auf MSVC12 erst kürzlich vorgenommen).
Oh ja stimmt, mir ist gar nicht aufgefallen, dass du sie außerhalb der Klassen implementiert hast. Ich mache das bei kleinen Funktionen immer direkt in der Klasse. Selbst wenn du das inline weglässt wirst du merken, dass der Compiler es allerdings trotzdem so optimiert. Der benutzt inline wann es ihm passt.
Component zu HDMI Converter (HDpvr) 07/17/2012 - Technical Support - 0 Replies Hallo zusammen.
Ich habe eine Frage bezüglich eines Component zu HDMI Konverters.
Und zwar habe ich ihn gekauft um auf meinem PC-Monitor zu spielen, während ich
mit der Hauppage HDPVR, Xbox 360 Gameplay aufnehme.
Verkabelung also folgendermassen:
*
XBOX 360 (Component) >
HDPVR (Component) >
HDMI Konverter (HDMI) >
HP Monitor
PSP to Component mit uncracked version ? 03/05/2012 - Technical Support - 2 Replies Da ich eine HD PVR besitze dacht ich mir das ich gerne auch ab und zu mal ein paar PSP Games aufnehmen wollen würde.
Dazu gibts ja Kabel wie: Component Kabel HD-AV für PSP Slim / PSP 3000: Amazon.de: Computer & Zubehör
Die Frage ist ob es eine Hardwareseitige Sperre auf der PSP gibt die dies verhindert falls sie nicht cracked ist ? Hatte nämlich nicht vor diese zu "cracken"
Shaiya Server Enhance Component for EP70 12/19/2011 - Shaiya - 11 Replies First of all, what I’m selling is not a complete Shaiya PServer program or its database. I’m selling an add-in DLL of ps_game.exe which written by myself. This component’s name is PsGameSuperExt.dll.
I think the most fascinating place of Shaiya is the PVP-battle-zone. So I wrote this add-in to improve some game experiences of PVP, this is the main purpose. And everything listed blow is related with PVP more or less. Now, let us take a look at the main features:
1. Extend the max team...
May I post an advertisement of PServer Component here? 12/14/2011 - Shaiya Private Server - 2 Replies I have a PServer Component on sale now.
And may I post an advertisement of my PServer Component here? I'm a PServer-Developer.
The PServer Component would bring your server some more fun than the original one.
If I could post this , I would bring all the details of the Component. :D:D:D
[REQUEST] NET FRAMEWORK COMPONENT INSTALLATION 01/17/2010 - EO PServer Hosting - 5 Replies im always get problem on this..so for who have a component installation please share with me..i dont want to open my internet connection while installing NET..
Problem....
1.Virus Attacking when i turn on my IE..im not using antivirus coz after im open my ACC it will detect SALITY viruses to at pc and all exe file will be quarantine(also exe from windows) so im use deepfreeze..im also have make a exclusion to my antivirus but it still same..it will detect all exe as SALITY
2.Noob Internet...