Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
TAK2004 hat geschrieben:
Die Technik die ich als Demo verfügbar machen würde, wäre Distance field based font render.
Den finde ich für User Interfaces nicht so hilfreich.
TAK2004 hat geschrieben:
Ich würde aber nicht empfehlen, dass du RF nutzt, da ich noch keine Major Version habe und damit du allen API Änderungen hilflos gegenüber stehst.
Hm… Man muss aber sagen dass es schon ein verlockend großes Stück Software ist.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2621 Wohnort: Berlin
Programmiersprache: Go, C/C++
Lord Horazont hat geschrieben:
TAK2004 hat geschrieben:
Die Technik die ich als Demo verfügbar machen würde, wäre Distance field based font render.
Den finde ich für User Interfaces nicht so hilfreich.
Das kann ich jetzt nicht nachvollziehen, da ich es gerade für UI praktisch finde, man kann AA fonts rendern und muss nicht für jede Schriftgröße weitere Texturen bereit stellen. Ich würde mich dafür entscheiden, weil ich viel Wert auf Performance lege aber ich würde auch keine feste Lösung mit RF mit liefern, weil das zu Anwenderspezifisch ist.
Lord Horazont hat geschrieben:
TAK2004 hat geschrieben:
Ich würde aber nicht empfehlen, dass du RF nutzt, da ich noch keine Major Version habe und damit du allen API Änderungen hilflos gegenüber stehst.
Hm… Man muss aber sagen dass es schon ein verlockend großes Stück Software ist.
Es ist wirklich viel drin, es sind auch schon Projekte mit älteren Versionen realisiert wurden aber ich war bei diesen Projekten auch beteiligt und habe dann auch die Entwicklung von RF an die Projekte angepasst. Aktuell verschiebe ich ja ne menge Code, weil ich die Systemspezifischen Code zentralisiere. Wenn man was kleines macht, dann ist es natürlich kaum merkbar aber trotzdem nervig, wenn man ein Bug hat, der gefixt wurde aber man erstmal ein paar Minuten Code umschreiben muss, weil sich auch die Namespaces geändert haben. Ich sag auch nicht, dass es nicht Möglich ist mit dem Trunk zu arbeiten, es ist nur nicht so sorgenfrei wie z.B. die letzte Version von http://www.sfml-dev.org/ zu verwenden und du kommst nicht um Fragen und Konversation drum rum. Ich erweiter in der Regel das RF um Funktionalität, die ich bei reellen kleinprojekten(die Demos im RF) benötige und nicht zu spezifisch ist.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
TAK2004 hat geschrieben:
Ich sag auch nicht, dass es nicht Möglich ist mit dem Trunk zu arbeiten, es ist nur nicht so sorgenfrei wie z.B. die letzte Version von http://www.sfml-dev.org/ zu verwenden und du kommst nicht um Fragen und Konversation drum rum.
Das sieht auch interessant aus. Wir haben sowieso überlegt, eine Menge mit Python zu machen. Eventuell ist für uns dann aber pyglet sinnvoller… naja, mal sehen. Danke für den Link jedenfalls .
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2621 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich arbeite Aktuell an einem Converter, welcher folgende Aufgaben erledigen soll.
-laden diverser intermediate formate(bild/models/audio) -konfigurierbares postprocessing(mesh auf cache hits optimieren, quantisieren, audio pitchen, bild abdunkelns,...) -export in native format -automatische erkennung von änderungen und triggern der pipeline -bei änderungen allen verbundenen Clients den namen des geänderten Asset geben
Dafür hab ich ein FileWatcher in Radon Framework eingebaut, welcher den aktuellen Ordner überwacht. Es wird eine json Konfigurationsfile im aktuellen Ordner gesucht und geladen. Diese konfiguriert den FileWatcher(welche extensions/Datein sind erlaubt), auf welches Format/Datei soll welche Loader und Postprocessor angewendet werden. Wenn ich also aktuell eine BMP im Ordner änder, dann wird diese über DevIl geladen und in ein native format(aktuell BGRA) konvertiert und dann an mein telnet client eine Nachricht geschickt.
Statt Telnet würde man natürlich sein eigenes Programm benutzten, welches dann ein reload triggered.
Worum es mir nun eigentlich geht ist das native Format. Ich bin mir nicht sicher, welche Lösung "die beste" ist. Das native Format ist in der Regel ein Hardwarenahes Format, z.B. pixelbreite, höhe, pixelformat, bilddaten. Nun will ich aber nicht auf 2D Bilder ohne MipMap beschränken und damit müsste eigentlich ein Exporter her. Ich bin mir nicht sicher, ob ich es über eine description File oder ein shared library plugin lösen sollte. Ein Pluginsystem nimmt mir viel Arbeit ab, da ich ledeglich 3-4 callbacks in ner dll prüfen und ausführen muss, während ich für ne Descriptionfile das ganze mapping schreiben müsste. Ein Pluginsystem ist auch schneller aber auch wesentlich aufwendiger, da man eine c ABI kompatiblen Compiler braucht, um es für die eigenen bedürfnisse an zu passen. Das Pluginsystem müsste auch für diverse Platformen neu kompiliert werden. Ich hab auch schon mit dem gedanken gespielt, es über eine Scriptsprache wie JavaScript zu lösen, da man dort flexibel ist, kein Compiler braucht. Allerdings kenn ich die Problematik zu gut, dass nicht jeder JavaScript kann und ich mich schon zig mal geärgert hab, als ich mit python, blender, mel, maya exporter gebastelt habe.
Hat da wer ne Meinung zu, Vorschläge, Alternativen, Beispiele oder gar Lösungen parat ?
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2621 Wohnort: Berlin
Programmiersprache: Go, C/C++
Es ist keine VM. Ich abstrahiere tatsächlich die ganze System API aber das machen auch SDL, .net und ähnliche API's. Der unterschied ist ledeglich, dass ich erst zum Start die Funktionen patch, statt sie beim kompilieren fest zu verdrahten. So hab ich rein Theoretisch die Möglichkeit auch unterschiedliche Versionen eines OS zu nutzen aber ich kann z.B. nicht ein Binary unter Windows und Linux laufen lassen, da der PE Header ein ganzer anderer ist.
Ich hab dies getan, weil ich somit auf jegliche Platform kann und nur die Systemfunktionen Implementieren muss, die ich auch tatsächlich aufrufe. Radon Framework hat beim aktuellem Stand nur eine System Funktion, die es immer braucht und das ist die Anzahl der Logischen Prozessoren zu bekommen. Diese benutzt der Threadpool, um die Worker Threads zu erstellen. Alle anderem System Funktionen werden nur duch User Code getriggered.
Ich hab aber an einer anderen Stelle tatsächlich eine VM im Radon Framework, unzwar für OpenGL. Vor einiger Zeit hab ich mal geschrieben, dass ich meine OpenGL Bindings entfernt hab und durch eine VM ersetzt hab. Diese wird durch die Spezifikation Datein, die von Khronos gestellt werden, genegiert und man hat dann Bytecode, der dafür sorgt, dass am Ende OpenGL Befehle angesprochen werden.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Wegen ++/--: Das sollte aber doch hinreichend egal sein, oder? Die Operatoren werden für die int-Familie der Datentypen doch gnadenlos zusammengefaltet, geinlined und auf maschineninstruktionen gemappt. Da sollte man doch das jeweils beste für den Integerdatentyp bekommen, oder hast du da anderes beobachtet?
grüße
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2621 Wohnort: Berlin
Programmiersprache: Go, C/C++
Nein, was du sagst trifft zu aber es ist halt nicht im Standard fest gelegt und gcc, clang und vc++ compiler haben auch alle andere Typen wie long long akzeptiert aber gcc und clang, sowie cppcheck werfen Warnungen, dass dies Falsch ist.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Code:
int main()
{
longlong a =0;
long c =0;
int d =0;
++a;
a++;
++c;
c++;
++d;
d++;
return(int)(a+c+d);
}
Das kompiliert (mit clang/gcc bzw. clang++/g++) bei mir anstandslos mit -Wall -Wextra -pedantic -Werror, sofern -std=c++11, -std=c11 oder -std=c99. Bei -std=c++03 oder -std=c++98 oder -std=c89 beschwert er sich über die nichtexistenz von long long im Standard bei Zeile 3, was aber erstmal wenig mit den Operatoren zu tun haben dürfte?
grüße
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Achso… Redest du von den operator--/++ überladungen? Entschuldige, das war für mich nicht klar. Aber wo braucht man da ints?
grüße
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2621 Wohnort: Berlin
Programmiersprache: Go, C/C++
Mh okey, mein Fehler :\
Um ein post increment operator zu verwenden muss man int als Parameter angeben aber natürlich wird dieser nicht genutzt und damit ist das garnicht schlimm. Um post und pre definition zu unterscheiden, hat prefix operator keinen Parameter und postfix ein int Parameter(ja es muss ein int laut specs sein). Hätte ich mal genauer in mein Code geguckt, dann hätte ich natürlich gemerkt, dass ich den Parameter nicht verwende, weil er vom Compiler eh mit irgend ein festgelegten Wert belegt wird und somit garnicht in die Size Problematik fällt.
Ich werde das mal in meinem Post korrigieren.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich nehme an, du baust CSS für deine UI. In dem Fall solltest du einen Blick auf das CSS3 Modul für Flexible Box Layout werfen. Damit bauen auch Firefox und Thunderbird (und alle anderen Xulrunner-Anwendungen) ihre UIs.
// Edit: Ich sehe gerade, librocket ist 3rd party. In dem Fall kannst du entweder schauen ob sie's unterstützen (== awesome) oder es ggfs. selber bei denen einbauen. Freuen die sich bestimmt, das ist eigentlich ein Must-Have für User Interfaces.
// Edit2: Danke für den Pointer auf librocket, muss ich im Auge behalten!
grüße
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2621 Wohnort: Berlin
Programmiersprache: Go, C/C++
Danke für die Info. LibRocket kann nur css2, es gibt einige branches, welche css3 features implementieren aber flexbox ist noch nicht dabei. Ich hab ein 3Jahre alten Versuch gefunden, der vor 2Jahren eingestellt wurde.
Da ich bei libRocket bleiben will aber auch genau die Funktionalität von flexbox brauche, werde ich wohl oder übel ein passenden branch auf machen und mal gucken, dass es nicht zu lange dauert. Was ich allerdings so von dem ersten Versuch gelesen hab, wird das wohl schon ein weilchen dauern :\ Naja immer noch besser als alles selber schreiben
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2621 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab bis heute Morgen noch dran gesessen und gute Fortschritte gemacht. Es werden nun alle CSS3 Flexbox properties korrekt gelesen, interpretiert und habe mit dem layouting begonnen. Aktuell werden schon alle Kinder nach dem order property sortiert und dann läuft das standard box layouting(9.1 ist damit schon fertig). Als nächstes werde ich 9.2 bis 9.7 aus den Specs umsetzen müssen, um die Specs vollständig zu implementieren.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.