Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Tjaa, nun überfordere ich den Grafiktreiber wohl endgültig:
waiting.png
waiting.png (7.21 KiB) 2945 mal betrachtet
Die Anwendung verbringt nicht einmal ein Sechstel ihrer Auführungszeit in meinem Text … stattdessen zwei Drittel in WaitForSingleObject(), welches – so vermute ich – auf den Mutex des Direct3D-Devices auf irgendwas tief im AMD-Treiber wartet. Na, irgendwas müssen die hunderttausenden Draw-Calls pro Frame ja kosten.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Alexander Kornrumpf
Moderator
Beiträge: 2119
Registriert: 25.02.2009, 13:37

Re: Jammer-Thread

Beitrag von Alexander Kornrumpf »

Ich bin recht sicher dass ich WaitForSingleObject auch schon in sleepy Ergebnissen hatte wenn auch nicht mit so einem extremen Anteil. Und wenn das wirklich so war, dann war das nicht auf AMD Hardware. Aber mein Gedächtnis ist das vielleicht auch nicht ganz zuverlässig.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Ich kann mein Programm nicht mehr auswählen um damit einen bestimmten Dateityp zu öffnen. Wenn ich Öffnen mit… auswähle (oder den Dialog über Systemsteuerung -> Standardprogramme -> Dateizuordnungen festlegen aufrufe) und dort auf Durchsuchen gehe um meine Exe auszuwählen, wird sie nicht übernommen und der Explorer öffnet die Datei mit dem Standardprogramm. Was ziemlich beschissen ist, weil es bis gestern abend noch funktionierte und heute eine Beta raus muss.

Drag'n'Drop funktioniert aber noch. Toll gemacht, dieser Explorer.

Nachtrag: Der Pfad des vorherigen Standardprogramms hatte sich geändert und damit kam der Explorer nicht zurecht. Ich habe in der Registry alle Einträge zum Dateityp und zu dem früheren Standardprogramm gelöscht; nun funktioniert der Dialog wieder -.-
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
joggel

Re: Jammer-Thread

Beitrag von joggel »

Krishty hat geschrieben:... und heute eine Beta raus muss.
Um was handelt es sich denn, wenn ich mal so direkt fragen darf?

Achso, Jammern:
Ich jammer mal, dass ich echt wenig Geld habe... und das in meinem Urlaub :(
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Nischensoftware für ein uraltes Legacy-3D-Format … falls du noch nicht davon gehört hast, brauchst du es auch nicht :)

————

Boah ich hasse Zero Padding bei der Initialisierung von POD. Like, really. Mal ein Beispiel:

Eine Funktion soll zu diesem enum einen Dateinamen ausspucken:

enum colorMode {
    bright, // erster Wert per Definition immer 0
    dim, // und dann aufsteigend, also 1
    _num // und 2 – die Anzahl von Werten, die wir hier aufzählen
};

char const * paletteName(colorMode mode);


So. Das könnte man jetzt mit if/else machen, aber normalerweise sind enums auch mal umfangreicher, da muss man dann schon mindestens auf switch ausweichen. Ich für meinen Teil benutze für sowas fast ausschließlich Tabellen:

char const * paletteName(colorMode const mode) {
    char const * const paletteNamePerColorMode[_num] = {
        "pal\\bright.pal",
        "pal\\dim.pal"
    };
    return paletteNamePerColorMode[mode];
}


Dass ich als Array-Größe [_num] angegeben habe sorgt nun dafür, dass das Array immer so viele Elemente enthält wie das enum enthält, minus dem _num am Ende. Super!

Bis wir einen Dritten enum-Wert hinzufügen.
Bild

Wir nennen diesen Wert brilliant und kompilieren, und … es passiert nichts. Der Compiler erinnert uns nicht daran, der Tabelle einen dritten String hinzuzufügen. Und bei der Ausführung kracht es dann (entweder mit Nullzeigerdereferenzierung oder durch den Debugger, falls man klug genug war, ein assert um den Aufruf zu wickeln).

Was ist passiert? Das Array ist nun tatsächlich drei Elemente groß statt vorher zwei, aber C geht den bescheuertmöglichsten Weg und füllt die zusätzlichen Elemente mit Nullen auf. Der Inhalt der Tabelle ist nun also "pal\\bright.pal", "pal\\dim.pal", nullptr. Heureka!

Wie jemand auf so eine Scheiße kommen kann ist auch nicht schwer zu verstehen – in irgendeinem Kellerverlies 1975 hat ein bekiffter Filzhippie mit Zugriff auf den Compiler-Quelltext gedacht, dass es ja unheimlich knorke wäre, wenn er zwei Zeilen sparen könnte indem alles, was man nicht explizit initialisiert, genullt wird. Jedenfalls ist mir das gerade schon wieder passiert, und ich musste drei Stellen in meinem Text korrigieren die einwandfrei kompiliert, aber nicht funktioniert haben, und muss mir endlich den Workaround angewöhnen:

    char const * const paletteNamePerColorMode[] = {
        "pal\\bright.pal",
        "pal\\dim.pal",
        "pal\\brilliant.pal"
    };
    static_assert(_num == sizeof(paletteNamePerColorMode) / sizeof(paletteNamePerColorMode[0]), "Einer von uns beiden hat einen Palettenpfad vergessen.");


Das funktioniert natürlich nicht, wenn man eine Forward-Declaration braucht und das Array noch in einem Template verwenden will. Weil man dann ja leer angeben muss und immer nur die erste Größe zählt. Oder wenn man was mit mehr Dimensionen macht.

Ich liebe C++!
Zuletzt geändert von Krishty am 19.07.2011, 13:22, insgesamt 3-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

joggel hat geschrieben:

Code: Alles auswählen

switchTo(holydayMode);
Interessanterweise steckt da das Wort "holy" drinn ^^
Nicht, wenn man es wie die Engländer als "holiday" schreibt :-)

Ich hab dieses Jahr wohl auch kein Geld für einen Urlaub.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
joggel

Re: Jammer-Thread

Beitrag von joggel »

Schrompf hat geschrieben:
joggel hat geschrieben:

Code: Alles auswählen

switchTo(holydayMode);
Interessanterweise steckt da das Wort "holy" drinn ^^
Nicht, wenn man es wie die Engländer als "holiday" schreibt :-)
Damn... mann mann mann. :oops:
Man merkt das ich Urlaubsmodus bin!
Ich hab dieses Jahr wohl auch kein Geld für einen Urlaub
Naja, wenigstens biste dein eigener Scheff :)
Benutzeravatar
rüp
Establishment
Beiträge: 202
Registriert: 13.09.2010, 20:44

Re: Jammer-Thread

Beitrag von rüp »

Schrompf hat geschrieben:
joggel hat geschrieben:

Code: Alles auswählen

switchTo(holydayMode);
Interessanterweise steckt da das Wort "holy" drinn ^^
Nicht, wenn man es wie die Engländer als "holiday" schreibt :-)
Joggel hat trotzdem Recht, es bedeutet nämlich nichts anderes als "holy day". ;-)
Visit my personal page, and follow the Rat King on Facebook & Twitter!
joggel

Re: Jammer-Thread

Beitrag von joggel »

rüp hat geschrieben:
Schrompf hat geschrieben:
joggel hat geschrieben:

Code: Alles auswählen

switchTo(holydayMode);
Interessanterweise steckt da das Wort "holy" drinn ^^
Nicht, wenn man es wie die Engländer als "holiday" schreibt :-)
Joggel hat trotzdem Recht, es bedeutet nämlich nichts anderes als "holy day". ;-)
Aaaarghhh!!
Na jetzt kann ich wieder meine Signatur ändern...
Aber diesmal schreiben ich "HolyDay" ^^... basta!!
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Allgemeines Grmpf. Es reicht nicht, einfach Sprites mit Normalen in die Landschaft zu pappen, man muss die Normalen auch im Fragment Shader mitrotieren! Verdammich.

Dieser Normal Mapping-Gedanke zieht echt Kreise.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Diese Rotationen dürften aber doch ziemlich günstig sein, weil du nur eine einzige Achse hast, oder? Möglicherweise wäre sincos im Shader sogar schneller, als dafür extra eine Transformation in den Konstanten zu übergeben.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Sei froh, dass es nur eine Rotation ist. Allgemein muss man für eine Transformation A auf die Vertices die Matrix (A^(-1))^T auf die Normalen anwenden. Für die Rotation ist A^(-1) = A^T, d.h. man wendet einfach nur wieder (A^(-1))^T = (A^T)^T = A auf die Normalen an. Wie Krishty schon sagte, da man hier wohl den Spezialfall mit nur einer Achse hat, geht das wohl noch schneller.

(Cool, das steht mittlerweile auch auf Wikipedia)
Zuletzt geändert von eXile am 22.07.2011, 15:55, insgesamt 1-mal geändert.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Ja, das stimmt schon. Aber ich werde eh mal den Sprite-Renderer hier umbauen müssen, damit der ganze Rotations- und Skalierungskram zur Berechnung der Vertizes in den VertexShader wandert. Dann hab ich da auch die Daten da, um eine kleine 2x2-Matrix in den PixelShader runterzureichen. Ist schon in der Projektverwaltung eingetragen :-)
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

eXile hat geschrieben:Sei froh, dass es nur eine Rotation ist. Allgemein muss man für eine Transformation A auf die Vertices die Matrix (A^(-1))^T auf die Normalen anwenden. Für die Rotation ist A^(-1) = A^T, d.h. man wendet einfach nur wieder (A^(-1))^T = (A^T)^T = A auf die Normalen an.
Was immer noch (fast?) nirgends erwähnt wird, ist allerdings, dass der Orientierungsanteil der transponierten Inversen für praktisch jede gängige Transformationsmatrix (Translation, Rotation, Skalierung) extrem einfach zu berechnen ist, indem man einfach die Skalierung umkehrt (jede Zeile der oberen linken 3x3-Matrix durch das Quadrat ihrer Länge dividieren, trivial!). Die Transponierung entfällt auch hier ganz, weil sie sich mit der Inversen des orthogonalen Matrixanteils auslöscht.

Nein zu lange nicht mehr mit Matrizen hantiert, in dieser Allgemeinheit habe ich eben ein Vertauschungsgesetz missachtet. Dennoch lässt sich für skalierte Objekte die transponierte inverse Matrix in der Regel extrem einfach berechnen, indem man in der transponierten Matrix einfach die Skalierung umkehrt, sofern man getrenntes Wissen über die Skalierung zur Verfügung hat, und die Skalierung nicht erst per Betrag aus den Zeilen berechnen muss. Die transponierte Inverse ergibt sich dann als diag(1/sx, 1/sy, 1/sz) * Rot.

Und ob das gilt, ich hatte das Vertauschungsgesetz beim nachrechnen nur kurz übersehen.
Zuletzt geändert von CodingCat am 22.07.2011, 18:29, insgesamt 1-mal geändert.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Nachdem ich mich nun so perfekt demontiert habe, hier nochmal bereinigt: Der Orientierungsanteil O der transponierten Inversen praktisch jeder gängigen Transformationsmatrix T (Translation, Rotation, Skalierung, immer Skalierung zuerst wegen Orthogonalität) lässt sich extrem einfach berechnen, indem man die Skalierung umkehrt (jede Zeile der oberen linken 3x3-Matrix durch das Quadrat ihrer Länge dividieren, trivial!). Die Transponierung entfällt auch hier ganz, weil sie sich mit der Inversen des orthogonalen Matrixanteils auslöscht. Herleitung:

Code: Alles auswählen

O((T^-1)^T) = (O(T)^-1)^T
= ((diag(sx, sy, sz) * Ortho)^-1)^T
= (Ortho^-1 * diag(sx, sy, sz)^-1)^T
= (Ortho^T * diag(1/sx, 1/sy, 1/sz))^T
= diag(1/sx, 1/sy, 1/sz) * Ortho
= diag(1/sx^2, 1/sy^2, 1/sz^2) * O(T)
Zuletzt geändert von CodingCat am 22.07.2011, 19:10, insgesamt 1-mal geändert.
Grund: Ergänzung um Hinweis zur Transformationsreihenfolge
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

CodingCat hat geschrieben: Was immer noch (fast?) nirgends erwähnt wird, ist allerdings, dass der Orientierungsanteil der transponierten Inversen für praktisch jede gängige Transformationsmatrix (Translation, Rotation, Skalierung) extrem einfach zu berechnen ist, indem man einfach die Skalierung umkehrt (jede Zeile der oberen linken 3x3-Matrix durch das Quadrat ihrer Länge dividieren, trivial!). Die Transponierung entfällt auch hier ganz, weil sie sich mit der Inversen des orthogonalen Matrixanteils auslöscht.
Das Problem ist, dass sobald man eine Rotationsmatrix R und eine Translationsmatrix T zusammenmultipliziert hat, man die entstandene Matrix M = R * T nicht mehr eindeutig in eine Rotation und Translation zerlegen kann. Meist entscheidet man sich entweder für zuerst Rotation, dann Translation; oder umgekehrt.

Aber ja, dass Matrizen, welche nur aus zuerst Rotation, dann Translation bestehen, einfach zu invertieren sind, ist bekannt. Das kann man tatsächlich auch auf Matrizen der Form M = T * R * S erweitern, indem man beobachtet: Die erste Spalte der entstandenen Matrix ist mit sx multipliziert, die zweite mit sy, die dritte mit sz. Da die Spalte normal ist, ist sx die Länge der ersten Spalte, usw. Um die Matrix M = T * R * S zu invertieren, machen wir das einfach so wie im Link, und divideren die erste Zeile anschließend durch sx, die zweite durch sy, die dritte durch sz.

Ich bin nur gerade unschlüssig, was passiert, wenn man andere Matrixreihenfolgen vorliegen hat.

Nachtrag: Ich habe bisher Cats letzten Beitrag noch nicht gelesen, kommt gleicht.
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Ich hab das Verfahren nun einmal einfach implementiert:

Code: Alles auswählen

clear all

% Create random rotation R
M = rand(3, 3);
[R, ~] = qr(M);
R = horzcat(R, [0, 0, 0]');
R = vertcat(R, [0, 0, 0, 1]);
R

% Create random translation T
t = [rand(3, 1); 1];
T = eye(4);
T(:, 4) = t';
T

% Create random scaling S
S = eye(4);
S(1, 1) = rand();
S(2, 2) = rand();
S(3, 3) = rand();
S

% Create final matrix
M = T*R*S

% Reconstruction
Minv = M;

sxsqr = dot(Minv(:, 1), Minv(:, 1));
sysqr = dot(Minv(:, 2), Minv(:, 2));
szsqr = dot(Minv(:, 3), Minv(:, 3));

tx = Minv(1, 4);
ty = Minv(2, 4);
tz = Minv(3, 4);

Minv(1:3, 1:3) = Minv(1:3, 1:3)';
Minv(1, 4) = -dot([tx, ty, tz], Minv(1, 1:3));
Minv(2, 4) = -dot([tx, ty, tz], Minv(2, 1:3));
Minv(3, 4) = -dot([tx, ty, tz], Minv(3, 1:3));

Minv(1, :) = Minv(1, :) ./ sxsqr;
Minv(2, :) = Minv(2, :) ./ sysqr;
Minv(3, :) = Minv(3, :) ./ szsqr;

% Observe: id is an identity matrix
id = M * Minv
Man kann prinzipiell für eine Rotationmatrix R, eine Translationsmatrix T und eine Skalierungsmatrix S die folgenden sechs Kombinationen haben:

Code: Alles auswählen

T*R*S
R*T*S
R*S*T
T*S*R
S*T*R
S*R*T
Davon funktioniert das Verfahren in den ersten drei Fällen. Mehr noch; für eine Matrix A als beliebige Zusammenmultiplikation von Rotations- und Translationsmatrizen in beliebiger Reihenfolge können wir mit dem Verfahren die folgenden zwei Problemklassen lösen:

Code: Alles auswählen

A*S
R*S*T
d.h. immer, wenn wir eine Matrix invertieren wollen, und dabei die Skalierungen vor den Rotationen angewendet wurden.

Ungelöst bleiben

Code: Alles auswählen

T*S*R
S*A
für welche man aber ein analoges Verfahren implementieren kann!
Zuletzt geändert von eXile am 22.07.2011, 22:40, insgesamt 1-mal geändert.
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Danke fürs umfangreiche Testen. ;-)

Ich habe meinen bereinigten Post entsprechend um einen Hinweise zur Reihenfolge ergänzt. Dass das Verfahren bei nach Rotation angewandter nicht-uniformer Skalierung nicht mehr funktioniert liegt anschaulich übrigens daran, dass in diesem Fall die in der resultierenden Matrix gespeicherten Transformationsbasisvektoren nicht mehr orthogonal aufeinander stehen. Man beachte auch, dass eXile im geposteten Test die Invertierung der Skalierung durch Bestimmung der Norm und anschließende Multiplikation mit dem quadrierten Kehrwert duchführt, um von maximaler Effizienz gegenüber allgemeingültiger Invertierung zu profitieren, würde man direkt das Quadrat der Basislängen mittels eines Skalarproduktes mit sich selbst bestimmen. :-)
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Ist nun eingebaut :)

Nachtrag: Ich jammere zu wenig. Bevor also Krishty seinen big Lebowski auspackt, hier mal wieder was: Warum müssen so viele Leute ihren Kram patentieren? Sind die schon so sehr ans Pensionsalter herangerückt, dass sie Panik kriegen, nirgends mehr einen Job zu finden und sie somit nicht mehr ihren Internetanschluss bezahlen können?
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Warum bringt RTL Wiederholungen von Bramilien im Fennpunkt?! Ich meine: Die Folgen werden doch so billig produziert, dass mir für die 10 Minuten Knatterdate-Werbung, die ich zwischendurch ertrage, auch täglich neue Hartzer zustehen …

Außerdem:
if(auto x(foo())) { // error
if(auto x = foo()) { // OK
So ein Mist
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Counter-Strike laggte mittendrin 8 s weil ich eine Waffe aufgesammelt habe, die ich lange nicht in der Hand hatte, und erst die Festplatte aus dem Standby geholt werden musste um sie zu laden.

(Kein herkömmliches Jammern weil ich ausnahmsweise nicht weiß, wie man es besser machen könnte.)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

Krishty hat geschrieben:(Kein herkömmliches Jammern weil ich ausnahmsweise nicht weiß, wie man es besser machen könnte.)
Waffen vorladen?
klickverbot
Establishment
Beiträge: 191
Registriert: 01.03.2009, 19:22
Echter Name: David N.

Re: Jammer-Thread

Beitrag von klickverbot »

So viele gibt es davon ja auch wieder nicht – bei dein heutigen (V)RAM-Größen sollte das doch kein Problem sein… ;)

Zum Thema: OS X 10.7 ist nicht nur ein Downgrade in Sachen Benutzbarkeit (was sie mit der einst angenehmsten Virtual Desktop-Implementierung angestellt haben ist schauderhaft) und ist (noch?) ohne Treiber für meine externe Soundkarte, sondern schafft es dank der neuen ASLR-Implementierung irgendwie, meine D-Programme zum Abstürzen zu bringen. Wahrscheinlich ist das nicht mal unbedingt die Schuld von Apple, aber a) sowas zu debuggen ist unlustig, b) ein Backup zurückspielen zu müssen ist trotzdem nervig und c) f$%#, mein Pre-Upgrade-Backup ist korrupt… :(
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

GameDev.net hat nicht mehr genügend IOTD-Einsendungen. Liegen denn wirklich alle Communities im Sterben? :(
Wenn ihr was habt, schickts hin, mindestens 100 Betrachter sind meist doch noch drin!
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Aramis »

Ehrlich gesagt hab ich seit dem Wechsel auf dieses affenscheussliche, disfunktionale neue Layout jegliches Interesse an der Seite verloren. Wenn man bedenkt, dass sie mal zu einen Favoriten zaehlte, bin ich mit diesem Gestaendnis im Jammer-Thread wohl richtig.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

Wir können ja mal fragen ob sie auf ZFX verweisen wollen, wir können ihre alten Sachen auch als Archiv anbieten und ihre User übernehmen :D Die bezahlte Mitgliedschaft und so würde halt wegfallen... :D Nen Artikelsystem könnten wir hier wohl einbauen ^^ Das mit der Sprachbarriere kriegen wir auch noch hin :D
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Aramis hat geschrieben:Ehrlich gesagt hab ich seit dem Wechsel auf dieses affenscheussliche, disfunktionale neue Layout jegliches Interesse an der Seite verloren. Wenn man bedenkt, dass sie mal zu einen Favoriten zaehlte, bin ich mit diesem Gestaendnis im Jammer-Thread wohl richtig.
Geht mir ganz genauso, die Artikelsektion ist (genau wie auf developer.nvidia.com, Vollidioten!) SO unzugänglich geworden, die Startseite als simpler redundanter Kanal für alle auch nur irgendwie verwandten Newsseiten SO unübersichtlich (News über 7, in Worten SIEBEN Tage hinweg nach Bewertung statt Datum zu sortieren, NEWS, WTF, OLDS!) und zugleich von jeglichem eigenen Inhalt befreit worden, dass kaum noch ein Grund bleibt, die Seite überhaupt zu besuchen.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Ich vermisse Template-Aliase. Und ich fürchte, dass mir auch C++0x nicht geben können wird, wonach ich mich verzehre. Nämlich:
// Template
template <typename T> void foo() { … };
// Spezialisierung
template <> void foo<int>() { … };
// foo<unsigned int> soll sich genau so verhalten wie die Spezialisierung foo<int>
typedef foo<int> foo<unsigned int>;


Wenn man nämlich mal ein Template hat, die vier Wege gehen kann, wovon aber je zwei gleich sind, kommt man um Redundanzen nicht herum. Falls das Template eine Klasse ist, kann man noch mühsam was mit Vererbung retten; falls es eine Funktion ist, muss man bei viel Kopiererei weiterleiten.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Ach du liebe Güte, der Super Mario Bros.-Realfilm kommt im TV

Dabei ist das Thema doch viel zu ernst für eine plumbe Buddy-Actionkomödie

Bild

Bild

Bild
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

There will be Brawl ist in Sachen Real-Verfilmung eh ungeschlagen :).
Antworten